This document defines the pre-registered policy that gates any OpenAMP recalibration.
The machine-readable contract lives in configs/recalibration_policy.yaml.
The policy exists because the most dangerous failure mode in a feedback-loop discovery system is silent self-rewriting after seeing outcomes.
Synthetic lab results must not influence recalibration decisions or raise any candidate's proof_ladder_level. Only qualified wet-lab outcomes may trigger recalibration or elevate evidence levels. See VIRTUAL_ASSAY_SCOPE.md for the full synthetic-data policy.
The intake report classifies explicit SYNTHETIC labels by result ID. Those
records remain available for demonstration and audit, but the recalibration
gate rejects any report containing them, even if every quantitative minimum
condition passes. Records without a synthetic label remain unclassified; the
workflow does not infer that they are real or independently validated.
Lab-result intake may describe what happened. It may not change ranking behavior unless the recalibration gate permits it and a qualified human review records the decision.
A may_recalibrate=true verdict is permission to consider a change.
It is not a command to change the model.
OpenAMP’s long-term goal is wet-lab compression: learn which experiments are worth running next.
That requires learning from outcomes.
But naive learning creates cherry-picking risk:
see result
-> adjust weights to make past result look expected
-> claim improvement
-> lose scientific validity
The recalibration policy prevents that failure by separating:
- result intake;
- gate evaluation;
- weight-change proposal;
- human review;
- documented decision;
- future-batch selection.
The gate protects against:
- too-small cohorts;
- failed or missing controls;
- orphan results;
- post-hoc success redefinition;
- relaxing safety floors;
- relaxing novelty floors;
- activity-only optimization;
- excessive weight movement;
- too-frequent recalibration;
- undocumented reviewer decisions.
Calibration intake keeps control-failed observations in the report so the failure cannot be hidden, but excludes them from the per-assay actual predicates and retrospective cohort metrics. The recalibration gate still rejects any intake containing a control failure. This is an input-integrity boundary, not a claim that the underlying assay is valid.
lab result files
-> calibration intake
-> intake report
-> recalibration gate
-> gate verdict
-> recalibration engine proposal, if allowed
-> human review
-> decision log
-> next-batch selection
The engine is subordinate to the gate.
If the gate rejects recalibration, the engine must not change ranking behavior.
The gate:
- Loads and validates
configs/recalibration_policy.yaml. - Rejects the policy if canonical prohibited actions are missing.
- Loads the calibration intake report.
- Evaluates minimum conditions.
- Surfaces prohibited actions as non-negotiable floors.
- Evaluates rate limits where inputs are available.
- Reports missing reviewer artifacts.
- Emits a binary verdict plus reasons.
Exit codes:
| Code | Meaning |
|---|---|
| 0 | Gate permits recalibration consideration. |
| 3 | Gate rejects recalibration. |
| 2 | Input missing or malformed. |
| Rule | Purpose |
|---|---|
MIN_COHORT_SIZE |
Prevent one-off cherry-picking. |
MIN_POSITIVES_IN_COHORT |
Require positive evidence before learning from hits. |
MIN_NEGATIVES_IN_COHORT |
Require negative evidence before learning from failures. |
POSITIVE_CONTROLS_ALL_PASS |
Prevent interpreting a failed experiment as model evidence. |
NEGATIVE_CONTROLS_ALL_PASS |
Prevent false-positive interpretation. |
NO_ORPHAN_LAB_RESULTS |
Require every result to map to a known panel candidate. |
COHORT_METRICS_AVAILABLE |
Require enough data to interpret cohort behavior. |
Every rule should be listed in locked_changes in the policy YAML.
Relaxing any rule requires a policy version bump and decision record.
These floors are not normal tunable parameters.
| ID | Meaning |
|---|---|
NO_TOXICITY_RELAXATION |
Do not improve apparent activity by allowing more toxic candidates. |
NO_HEMOLYSIS_RELAXATION |
Do not relax hemolysis-related safety floors to rescue hits. |
NO_NOVELTY_RELAXATION |
Do not make rediscovery look like novelty. |
NO_DANGEROUS_PATHGEN_OPTIMIZATION |
Do not optimize harmful biological capability. |
NO_POST_HOC_SUCCESS_REDEFINITION |
Do not change success definitions after seeing outcomes. |
A policy file that omits canonical prohibited actions should fail validation.
Rate limits prevent overfitting to a small or noisy batch.
| Rule | Purpose |
|---|---|
WEIGHT_CHANGE_L1_BUDGET |
Limits total weight movement per event. |
COOLDOWN_DAYS |
Prevents repeated rapid recalibration. |
If rate-limit inputs are missing, the verdict should surface uncertainty rather than pretending the rate limit was evaluated.
A recalibration decision should have:
- intake report JSON;
- intake report Markdown;
- gate verdict;
- proposed weight update if any;
- human decision log;
- explanation of why the update is allowed or rejected;
- next-batch impact statement;
- claim-boundary statement.
Missing reviewer artifacts should be visible.
Human review must answer:
- Did the gate permit recalibration?
- Are controls interpretable?
- Does the result beat relevant baselines?
- Does the proposed change preserve safety floors?
- Does the proposed change preserve novelty floors?
- Does the proposed change respect the L1 budget?
- What claim, if any, becomes stronger?
- What claim must remain unchanged?
- What next-batch decision changes?
- What would make this update wrong?
A rejected recalibration is not a failed system.
It means the evidence was not strong enough to justify changing behavior.
The gate should reject often when data are weak, noisy, uncontrolled, too small, unsafe, or ambiguous.
This policy is not:
- proof that a candidate works;
- proof that OpenAMP improves discovery;
- a replacement for human review;
- a benchmark regression gate;
- a safety review by itself;
- a license to optimize activity at the expense of safety;
- a way to change success definitions after the fact.
To update the policy:
- State the reason for change.
- Identify whether the change tightens, relaxes, or clarifies a rule.
- Bump
policy_version. - Update
locked_at. - Add or update
locked_changesentries. - Write a dated decision log entry.
- Run policy validation tests.
- Update docs if interpretation changes.
- Require human review for any relaxation.
- Stop if the change removes a canonical prohibited action.
Recalibration gates cohort-driven updates.
Benchmark governance gates model and benchmark claims.
Both are required.
A recalibration may be allowed by cohort evidence but still rejected if it worsens benchmark honesty or violates safety boundaries.
Recalibration can improve the system’s internal decision policy.
It does not automatically move a candidate up the proof ladder.
A candidate moves up the proof ladder only through the relevant evidence, especially qualified experimental results and independent replication.
The recalibration policy should make OpenAMP capable of learning from biology without letting the project rewrite its past to look smarter than it was.