Semantic-policy headroom tournament
The one idea you need
A coding agent can know how to fix a clearly reported failure yet still patch too early when the requirement is ambiguous. The missing skill can be gathering the decisive evidence before writing code.
The question
Which malformed-input rules still challenge the transaction-trained model after a visible failure, and where in the coding loop does the remaining difficulty actually appear?
What we found
No rule produced a stable training target after a failed test: every one of 72 cases reached a correct patch. But before seeing test output, the model got zero of 54 ambiguous first patches fully right and never opened the visible tests first. The run formally stopped because answers also exceeded their length allowance too often.
Why it matters
More post-failure practice would teach behavior the model already has. The promising strategy is to teach it to inspect the evidence that distinguishes two plausible requirements, then make its first patch follow what it found.
On this page
Results at a glance 3
How to read
Each group is one hidden rule, with one bar for each fresh block. Taller means the model ended with the correct behavior more often after seeing the failed test.
Takeaway → Negative and non-integer handling were perfect in both blocks; blank-resource misses moved between data shapes and did not form a stable lesson.
Data table
| inferred semantic policy | headroom A | headroom B |
|---|---|---|
| negative quantity | 100% | 100% |
| non-integer quantity | 100% | 100% |
| blank resource | 88.9% | 77.8% |
Numbers from experiments/qwen35_4b_semantic_policy_headroom_tournament/reports/result_receipt.json
Technical framing
Direct failed-test evidence leaves no replicated policy axis — Negative and non-integer recovery are 9/9 in both blocks. Blank recovery is 8/9 and 7/9, but only one of three representations enters the frozen headroom band in either block, and the supported representation changes.
How to read
The first bar asks whether a correct patch ever appeared after test output. The other bars ask whether the model got an ambiguous first patch right or read the tests before making it.
Takeaway → The model can act on decisive failure evidence, but it does not seek that evidence before committing to a guess.
Data table
| trajectory event | share of cases |
|---|---|
| after failure: ever correct | 100% |
| ambiguous first patch correct | 0% |
| tests read before first patch | 0% |
Numbers from experiments/qwen35_4b_semantic_policy_headroom_tournament/reports/result_receipt.json
Technical framing
The capability gap moves earlier than failed-test revision — All 72 failed-test trajectories reached a full-correct patch. Without test output, 0/54 inferred-contract cases made a full-correct first patch and 0/72 rejected trajectories read visible tests before first patching.
How to read
The first two bars are the share of tool turns that filled the answer allowance; the last bar is the maximum allowed rate. Shorter is better.
Takeaway → The formal result remains an instrument failure even though most long answers contained a usable tool call.
Data table
| qualification block or gate | cap contacts per turn |
|---|---|
| headroom A | 12.1% |
| headroom B | 12.7% |
| frozen ceiling | 5% |
Numbers from experiments/qwen35_4b_semantic_policy_headroom_tournament/reports/result_receipt.json
Technical framing
Both qualification blocks fail the answer-cap gate — The registered 5% ceiling is exceeded in both blocks. Most capped turns still begin with a parseable tool call, but every terminal failure contacts the cap, so the formal verdict remains INSTRUMENT_FAIL.
In the author’s words from the Overview · “Result”
Blank-resource repair was uneven: record was the only shape inside the 15–80% band in A, while tuple was the only one in B. Thus no axis met the frozen requirement for two supported shapes in both blocks even apart from the interface failure. Explicit controls passed at 9/9 and 8/9, and invalid actions stayed at 1.69% and 1.38% of turns. The cap gate failed at 43/356 turns (12.08%) in A and 46/363 (12.67%) in B, against a 5% ceiling. Forensics localize the problem: 78/89 capped answers contained a valid first tool call, and 77 of those continued with post-call run-on. All capped cases still retained the targeted recovery transition, but all 12 end-to-end failures contacted the cap. … Read the full result →
Overview
This no-training tournament found no replicated post-failure semantic axis and stopped on its answer-cap instrument gate. Its trajectory contrast moves the capability target earlier, to evidence acquisition before the first patch.
Research program
- Program:
agentic_breadth_installation. - Direct predecessor:
qwen35_4b_validation_policy_counterexample_curriculum. - Parent: its unchanged learned transaction checkpoint, exact weight SHA-256
1cf5fb...41ba3.
Question
Which validation-policy conflicts still produce replicated failed-test headroom in the transaction-trained model, under the exact looping coding harness, and are therefore legitimate substrates for a later counterexample curriculum?
Design
This experiment trains nothing and cannot invoke Menagerie. It crosses three conflicts with three public representations:
- negative quantity: malformed
ValueErrorversus ordinary insufficiencyFalse; - non-integer quantity: malformed
TypeErrorversus ordinary insufficiencyFalse; - blank resource: malformed
ValueErrorversus ordinary unknown resourceFalse; - bundle mappings, record dictionaries, and tuple sequences.
Nine inferred-contract families state the valid input domain and ordinary rejection policy but require the agent to infer malformed behavior from visible tests/failure output. Three explicit-contract controls state the exception verbatim. Every partial implementation is otherwise correct and fails visible and hidden tests only at the semantic conflict; every oracle passes.
Two content-disjoint blocks each contain 36 unique repositories (12 families × three tasks) and 72 controlled recovery cases. An inferred axis qualifies only if failed-test success is 15–80% in both blocks, at least two of three shapes are individually inside that band in each block, explicit-control success is ≥85%, and invalid/cap contacts remain ≤5%. At least one replicated axis must qualify.
Why this is different
The predecessor trained before proving that its rewritten substrate retained the historical failure. Parent and control were already 48/48, so the treatment effect was unidentifiable. Here, exact-substrate parent headroom is the only outcome. Eligible axes and families are emitted mechanically by frozen rules for use in a separate future experiment; no update, threshold change, or benchmark escalation occurs here.
Firewall and compute
All repositories are fresh procedural fixtures. Hidden tests and repair objects stay host-side; only public issue/source/test/tool output reaches the model. Both blocks use the same merged checkpoint, copied vLLM 0.24 runner, 512 think
- 512 answer tokens, one greedy trajectory, and six turns. Nothing under
benchmarks/ is read/imported, and Menagerie authorization is hard-coded false.
Run
python experiments/qwen35_4b_semantic_policy_headroom_tournament/scripts/run.py --smoke
.venv/bin/python experiments/qwen35_4b_semantic_policy_headroom_tournament/scripts/run.py --lock-design <commit>
.venv/bin/python experiments/qwen35_4b_semantic_policy_headroom_tournament/scripts/run.py --gpu-smoke
.venv/bin/python experiments/qwen35_4b_semantic_policy_headroom_tournament/scripts/run.py --fullResult
Verdict: INSTRUMENT_FAIL. The preregistered answer-cap gate failed in both parent blocks, so no semantic axis is licensed for training. The runner stopped with its registered gate code; no checkpoint was trained and Menagerie remained sealed.
| Inferred axis | Headroom A failed-test success | Shapes in band | Headroom B failed-test success | Shapes in band |
|---|---|---|---|---|
| negative quantity | 9/9 | 0/3 | 9/9 | 0/3 |
| non-integer quantity | 9/9 | 0/3 | 9/9 | 0/3 |
| blank resource | 8/9 | 1/3 | 7/9 | 1/3 |
Negative and non-integer handling were saturated after direct failed-test evidence in both blocks. Blank-resource repair was uneven: record was the only shape inside the 15–80% band in A, while tuple was the only one in B. Thus no axis met the frozen requirement for two supported shapes in both blocks even apart from the interface failure. Explicit controls passed at 9/9 and 8/9, and invalid actions stayed at 1.69% and 1.38% of turns.
The cap gate failed at 43/356 turns (12.08%) in A and 46/363 (12.67%) in B, against a 5% ceiling. Forensics localize the problem: 78/89 capped answers contained a valid first tool call, and 77 of those continued with post-call run-on. All capped cases still retained the targeted recovery transition, but all 12 end-to-end failures contacted the cap. The formal stop therefore stands; the association cannot be dismissed or interpreted as the semantic mechanism.
Interpretation
This qualification does not support another post-failure policy curriculum. The parent usually converts explicit verifier evidence into the correct semantic revision already, and the remaining blank-resource misses do not replicate across representations. The more promising frontier is earlier in the loop: acquiring ambiguous public evidence and binding it to the initial proposal before a failed test supplies the answer.
The trajectory contrast makes that pivot concrete. Every one of 72 failed-test cases reached a fully correct patch; the four terminal misses were destructive regressions after correctness. In the rejected-patch condition, by contrast, none of 54 inferred-contract cases produced a fully correct first patch, and zero of 72 rejected trajectories inspected visible tests before first patching. The model can use decisive evidence once handed to it, but does not acquire that evidence before committing to an ambiguous proposal.
A successor should use counterfactual pairs whose issue and source are held constant while visible evidence flips the required policy, then balance the inspect→patch, rejected_patch→changed_patch, and failed_test→diagnose/revise transitions. It should repair the measurement with a payload-safe, parse-aware answer allowance, while keeping response closure diagnostic rather than turning slop suppression into the capability objective. Exact metrics and hashes are in reports/result_receipt.json.
Knowledgebase update
Program evidence, backlog, scorecard, and shared synthesis record the formal instrument failure and the earlier-loop pivot. The claim ledger is unchanged: this no-training qualification produced no checkpoint or benchmark result.
Artifacts
Committed design and compact receipts live here. Detailed parent trajectories will live under large_artifacts/qwen35_4b_semantic_policy_headroom_tournament per reports/artifact_manifest.yaml.
Report
Rendered from reports/report.md
Verdict
INSTRUMENT_FAIL. The exact transaction-trained parent was evaluated on both frozen blocks, but answer-cap contacts reached 12.08% and 12.67% of turns, above the preregistered 5% ceiling. No axis independently met the replicated headroom rule. Training, checkpoint creation, and Menagerie were never authorized.
What ran
The immutable design at 391dadc1 and lock receipt at 9cc90db4 evaluated the unchanged Qwen3.5-4B transaction checkpoint on two content-disjoint blocks. Each block contained 36 fresh procedural repositories and two controlled states per repository, for 72 trajectories. Nine inferred-contract cells crossed negative-quantity, non-integer-quantity, and blank-resource policies with bundle, record, and tuple representations. Three explicit-contract cells served as instrument controls.
The model received one greedy six-turn trajectory per case with 512 thinking and 512 answer tokens per turn. The host alone executed hidden tests. No benchmark source, item, transcript, or result entered the run.
Primary qualification
An axis required 15–80% failed-test success in both blocks and at least two of three shape-family rates inside that band in each block.
| Axis | A failed-test success | A shapes in band | B failed-test success | B shapes in band | Qualified |
|---|---|---|---|---|---|
| negative quantity | 9/9 | 0/3 | 9/9 | 0/3 | no |
| non-integer quantity | 9/9 | 0/3 | 9/9 | 0/3 | no |
| blank resource | 8/9 | 1/3 | 7/9 | 1/3 | no |
The shape-level failed-test rates were:
| Axis / representation | Headroom A | Headroom B |
|---|---|---|
| negative / bundle | 3/3 | 3/3 |
| negative / record | 3/3 | 3/3 |
| negative / tuple | 3/3 | 3/3 |
| non-integer / bundle | 3/3 | 3/3 |
| non-integer / record | 3/3 | 3/3 |
| non-integer / tuple | 3/3 | 3/3 |
| blank / bundle | 3/3 | 3/3 |
| blank / record | 2/3 | 3/3 |
| blank / tuple | 3/3 | 1/3 |
Negative and non-integer recovery were descriptively saturated. Blank-resource recovery had nontrivial misses, but its supported representation changed from record in A to tuple in B. This is not the replicated two-shape substrate the frozen rule required.
Global controls and interface
| Metric | Frozen gate | Headroom A | Headroom B | Result |
|---|---|---|---|---|
| explicit-control failed-test success | ≥85% | 9/9 | 8/9 | pass |
| invalid actions / turn | ≤5% | 6/356 (1.69%) | 5/363 (1.38%) | pass |
| answer-cap contacts / turn | ≤5% | 43/356 (12.08%) | 46/363 (12.67%) | fail |
| content manifests differ | required | yes | yes | pass |
| eligible axes | ≥1 | 0 | 0 | fail |
Because the preregistration gives instrument failures precedence, the terminal label is INSTRUMENT_FAIL, not the cleaner NO_QUALIFIED_AXIS label.
Answer-cap forensics
Across both blocks, 89/719 turns reached the 512-token answer allowance. This was usually not an unusable truncation: 78/89 capped turns contained a complete parseable tool object, and 77/78 then continued with post-call run-on. Eleven capped turns were invalid. Capped answers comprised 41 inspections, 35 patches, 11 invalid calls, one verification, and one commit.
At case level, 54/66 cap-contact trajectories succeeded versus 78/78 without a cap contact. Every one of the 12 failures contacted the cap. Yet all targeted local transitions still occurred among cap-contact cases: failed-test changed- patch-within-two was 38/38 and rejected-patch valid-changed-within-two was 28/28. Failures instead exhausted six turns without a successful workspace or submission.
This supports two bounded conclusions. First, the cap gate is partly measuring valid-call run-on rather than parser failure. Second, cap contact remains associated with every end-to-end miss, so it cannot be waived after seeing the data. A fresh successor should use a parse-aware payload allowance and preserve both raw cap and validity diagnostics.
Earlier-proposal forensics
The raw trajectories expose a cleaner state contrast than the terminal score. All 72 failed-test cases reached a fully correct executable patch at some point; the four failed-test endpoint misses were destructive regressions after an earlier correct workspace. First-patch correctness was already 29/36 in A and 30/36 in B.
The rejected-patch condition provided no test output. Across its 54 inferred- contract cases, the first changed patch was fully correct 0 times. Across all rejected cases, only 6/36 first patches per block were fully correct, all from the explicit negative/non-integer controls. None of the 72 rejected trajectories inspected visible tests before first patching; the usual action was another source read. Nevertheless, 64/72 eventually reached a correct workspace after later verifier evidence.
This localizes the capability gap to specification acquisition and evidence- conditioned proposal formation. It is not a missing ability to write the correct patch once the public failure states the distinction, and it is not a deleted recovery transition.
Interpretation
Direct failed-test evidence is no longer the best place to seek this capability. The transaction-trained parent repaired negative and non-integer semantic conflicts in every inferred-contract cell, while blank-resource errors did not replicate across shapes. Training on these states would either target already-mastered behavior or chase an unstable representation-specific residual.
The unresolved seam lies earlier: deciding when public evidence must be inspected and binding that evidence to an initial proposal before the verifier states the discrepancy. The strongest next strategy is counterfactual evidence binding. Hold issue and source nearly constant, flip visible tests between opposed but equally plausible policies, and require the model's patch to flip with the evidence. Train complete, transition-balanced trajectories only after the exact parent shows replicated initial-proposal headroom on fresh families. Compare against matched extra replay and equal-compute sampling, then require locality, conditional transition retention, family-held-out transfer, and only then paired Menagerie.
Exposure ledger
- Training: not run.
- New checkpoint: none.
- Menagerie: not invoked; no benchmark seed was consumed.
- Claim ledger: unchanged.
- Compact qualification and result receipts: committed.
- Detailed trajectories: external and checksummed in the artifact manifest.
Experiment log 7
Show the running log (7 entries, 2026-07-13)
2026-07-13 — intake
- Created immediately after the validation-policy curriculum stopped at parent 48/48 calibration saturation.
- Attached to
agentic_breadth_installation; no new program or claim. - Copied the exact procedural repo, loop agent, and vLLM runner into a new self-contained experiment; no result-bearing predecessor was modified.
2026-07-13 — substrate design
- Added negative, non-integer, and blank-resource conflicts across bundle, record, and tuple representations.
- Inferred families state the valid domain but leave malformed-input exception behavior to public tests; explicit controls state it verbatim.
- Every partial is correct on copy, ordinary rejection, atomic application, and input nonmutation. Only the selected malformed-input behavior differs.
- Frozen two disjoint seeds, a 15–80% replicated eligibility band, two-of-three shape support, explicit-control and interface gates, and zero benchmark authorization.
2026-07-13 — deterministic preflight
- 19/19 tests and CPU smoke pass.
- Headroom A/B each contain 36/36 unique public contents with zero overlap.
- Initial and partial fail visible+hidden; oracle passes visible+hidden for all 12 family cells.
- No Qwen output or training exists before the design boundary.
2026-07-13 — immutable design boundary
- Rebased and pushed the complete design directly to
mainat391dadc1. - Wrote
runs/preregistration_receipt.jsonover nine design-critical files; it recordsmodel_output_precedes_lock: falseand fails closed on digest or ancestry drift.
2026-07-13 — GPU smoke
- Exercised all 12 family/state cells through the exact merged parent and vLLM looping harness: 22/24 terminal success, 12/12 failed-test success, and 10/12 rejected-patch success.
- The smoke already showed a 6.96% answer-cap rate, above the later full-run gate; this remained diagnostic until the frozen blocks ran.
2026-07-13 — full qualification and stop
- Generated both locked 72-case parent blocks and wrote
analysis/qualification.json. - Formal verdict:
INSTRUMENT_FAIL. Answer-cap contacts were 43/356 turns (12.08%) in A and 46/363 (12.67%) in B versus the frozen 5% ceiling. Explicit controls, invalid actions, and content disjointness passed. - No inferred axis qualified independently. Negative and non-integer failed-test recovery were 9/9 in both blocks. Blank was 8/9 and 7/9, with only one shape inside the band per block and a different supported shape in each.
- The registered exit code 4 is a scientific stop, not a runtime crash. No training, checkpoint, benchmark, or Menagerie seed was exposed.
2026-07-13 — trajectory forensics and routing lesson
- Of 89 capped turns, 78 contained a valid tool call and 77 then ran on after it. All 12 terminal failures contacted the cap, so the frozen interface stop cannot be waived even though most cap events remained parseable.
- Every failed-test case reached a fully correct patch; four later regressed. Across 54 inferred-contract rejected-patch cases, first-patch correctness was 0/54, and zero of all 72 rejected trajectories inspected visible tests before first patching. Sixty-four eventually became correct after verifier evidence.
- Route the successor earlier: qualify and train ambiguous-state → discriminating evidence inspection → evidence-faithful first patch, with complete transition replay. Use entropy/varentropy only to mine and stratify ambiguous forks, not as correctness labels or token weights.
Data files 1
Result tables and metrics copied from the experiment folder — preview inline or open the raw file.
Reproduce
Smoke test
python experiments/qwen35_4b_semantic_policy_headroom_tournament/scripts/run.py --smokeFull run
.venv/bin/python experiments/qwen35_4b_semantic_policy_headroom_tournament/scripts/run.py --fullRun steps are documented inside the experiment folder (README and scripts).