On-Policy Failure-Prefix Universal Curriculum
The one idea you need
A repair lesson can start from the exact point where a worker went wrong, instead of showing a perfect solution from the beginning.
The question
Can corrections attached to the model's own fresh mistakes teach it to reason, stop, and answer more reliably than equal extra practice?
What we found
No. The unmodified parent solved 16 of 26 fresh tasks and equal-compute replay solved 18, while training corrections after the model's own real failures solved only 15. The repair model got none of the six targeted execution, induction, or probing cases right, and it hit the answer limit three times. Broad evaluation stayed sealed.
Why it matters
Collecting real failures is not enough if training begins after a long mistake-filled trajectory. Teach the short decision that causes the failure, and match how many answer-bearing tokens the comparison models actually learn from.
On this page
Results at a glance 4
How to read
For parent, replay, and prefix repair, the tall bars count all correct answers out of 26 and the short bars count correct answers on the six targeted execution, induction, and probing cases.
Takeaway → Replay leads overall at 18, parent follows at 16, and prefix repair falls to 15 while scoring zero on all six target cases.
Data table
| same-backend merged-composite arm | correct of 26 | target correct of 6 |
|---|---|---|
| parent | 16 | 2 |
| replay | 18 | 1 |
| prefix repair | 15 | 0 |
Numbers from experiments/qwen35_4b_universal_on_policy_prefix_repair_token_match/runs/local/seed88009_promotion.json
Technical framing
Prefix repair loses to replay and erases every target win — All arms saw the same 26 fresh seed-88009 tasks. Prefix repair also parsed 23/26 and hit three caps, versus replay 23/26 and three and parent 24/26 and two. Candidate failed every strict relative check, so aggregate seed 78139 remained sealed.
How to read
The groups run from intake and design through parent deployment, parent rollout, failure mining, exact token matching, training, local testing, and broad testing. A bar at one means that checkpoint is complete.
Takeaway → The first eight checkpoints completed, but the candidate failed local testing, so broad evaluation correctly remains unopened.
Data table
| preregistered experiment stage | completed checkpoint |
|---|---|
| intake | 1 |
| CPU design | 1 |
| parent deploy | 1 |
| parent rollout | 1 |
| prefix mine | 1 |
| compute freeze | 1 |
| training | 1 |
| local gate | 1 |
| broad gate | 0 |
Numbers from experiments/qwen35_4b_universal_on_policy_prefix_repair_token_match/runs/local/seed88009_promotion.json
Technical framing
The failed local gate stops the ninth checkpoint — Every design, training, and deployment checkpoint completed. The candidate then failed six absolute and all four relative local checks; no benchmark data was read and the broad gate remains sealed.
How to read
Each group is one kind of failure. The taller bar is the number of usable parent failures found, and the shorter bar is the fixed requirement of ten.
Takeaway → Even the smallest pool has 24 usable failures, so the negative result is not a shortage of real parent failures.
Data table
| registered failure class | reachable failures | required quota |
|---|---|---|
| declaration | 35 | 10 |
| state transition | 41 | 10 |
| bounded induction | 46 | 10 |
| probe scoring | 24 | 10 |
| repair propagation | 36 | 10 |
| commit serialization | 48 | 10 |
Numbers from experiments/qwen35_4b_universal_on_policy_prefix_repair_token_match/data/prefix_failure_inventory.json
Technical framing
Every failure class exceeds its quota — The frozen miner selected exactly 10 rows per class from 230 total reachable failures. Every quota cleared, yet the candidate lost locally, so failure availability was not the binding constraint.
How to read
Each pair compares replay control with prefix repair for forward tokens, masked context, thinking targets, answer targets, and tokens carrying nonzero loss. Forward totals match exactly; the repair stream puts more tokens in context and fewer under supervision.
Takeaway → Equal forward compute masks 33,421 fewer supervised tokens for the candidate, so the negative rejects this full recipe without isolating prefix conditioning from target exposure.
Data table
| per-epoch encoded exposure | replay control | prefix repair |
|---|---|---|
| forward tokens | 304.3k | 304.3k |
| masked context | 119.3k | 152.7k |
| think target | 181.6k | 147.6k |
| answer target | 2788 | 3316 |
| nonzero weight | 145.4k | 112k |
Numbers from experiments/qwen35_4b_universal_on_policy_prefix_repair_token_match/data/stream_token_receipt.json
Technical framing
Forward compute matches while supervised exposure differs — The registered match is exact unpadded forward compute. Long masked parent prefixes leave the losing candidate with 33,421 fewer target and nonzero-weight tokens, so prefix conditioning and target exposure remain coupled.
In the author’s words from the Overview · “Results”
From pushed-green commit 21e1eb59, one frozen same-backend parent event produced all 288/288 greedy natural-thinking rollouts, 170,252 sampled tokens at 849.9 tokens/s. Rollout/metadata/log/receipt hashes are 8010632f...3b17f / 9fe81276...664 / ed0d4fc4...26b7 / c6b98b79...74fa. The original postvalidator rejected only an impossible post-open git_dirty=false assertion; an explicit no-generation recovery path authenticated every other frozen field and wrote the receipt without rerunning the model. The frozen miner has now graded the experiment-owned substrate. It found 230 failed and 58 passing parent rows; all 230 failures had a reachable clean prefix. … Read the full result →
Overview
This result-separated successor tests whether training corrective continuations from the model's own fresh procedural failure prefixes installs a reusable reasoning and commit policy better than another idealized trace curriculum or exact-token replay.
Research Program
- Program:
agentic_breadth_installation - Program question: can a contamination-free installed mechanism improve every held-out benchmark family rather than redistribute wins?
- Closest near-duplicate:
qwen35_4b_universal_state_table_compiler_token_match. - Additional anchors:
qwen35_4b_gauntlet_breadth_round1,qwen35_4b_interactive_policy_curriculum,qwen35_4b_verifier_conditioned_recovery_bank, C53, C56, and C59.
Question
Do masked corrective continuations attached to the authenticated parent's actual failure prefixes teach bounded execution, induction, scoring, and exact commitment at the deployed interface while preserving its broad replay policy?
Hypothesis
The state-table predecessor was executable and truth-audited but off-policy: its ideal traces did not resemble the model's actual declaration confusion, repeated induction, score-count errors, or correct-state-without-commit prefixes. Fresh parent rollouts plus executable-oracle continuations should place supervision exactly at those states. The mechanism is false unless the sole candidate strictly beats both the unchanged parent and a same-parent exact-forward-token replay continuation on a fresh paired local gate, overall and on execute/induct/probe.
Setup
- Model: only
Qwen/Qwen3.5-4B, pinned revision851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a. - Proposed parent: authenticated
close_xiadapter; the failed scaffold and state-table candidates are not inherited. - Proposed data source: fresh experiment-owned procedural tasks, followed by authenticated parent rollouts and executable-oracle failure localization. No prior local-gate item may enter training.
- Proposed treatment: masked assistant-prefix correction at first observable failure states, including bounded commit, declaration-versus-operation parsing, induction loop termination, probe-score recomputation, repair propagation, and exact answer serialization.
- Mechanism-falsifying control: independent same-parent replay continuation matched on encoded forward tokens, optimizer steps, seed, backend, and aligned shared replay positions.
- Hidden-label boundary:
benchmarks/remains read-forbidden. Only an aggregate gateway may run after local promotion; all-family lift, higher-tier confirmation, and matched-compute sample-more remain required for a universal claim. - Reserved seeds: construction
77113, parent rollout66113, training47, fresh local88009, and conditional aggregate78139.
Run
Model-free design smoke:
PYTHONDONTWRITEBYTECODE=1 .venv/bin/python -B experiments/qwen35_4b_universal_on_policy_prefix_repair_token_match/scripts/run.py --smokeThe design, parent merge, parent rollout, failure inventory, and exact-token freeze are separate published checkpoints. Verify every model-free derived artifact with:
PYTHONDONTWRITEBYTECODE=1 .venv/bin/python -B experiments/qwen35_4b_universal_on_policy_prefix_repair_token_match/scripts/run.py --smokeThe terminal local event is preserved and authenticated by the same smoke command. Do not rerun it or open an aggregate stage in this directory. Any successor needs a new result-separated experiment and fresh seeds.
Results
CPU feasibility passed. Construction seed 77,113 deterministically freezes 288 truth-audited tasks, 48 for each of six failure classes. The model-facing JSONL omits hidden oracle and answer fields. Tests cover exact prefix masking, failure-only selection, delayed-commit cutoff, declaration misuse, generation caps, and the merged-Qwen architecture gate. The authenticated close_xi adapter was explicitly merged into a full composite: 128/128 applied LoRA modules were nonzero, the merged weight hash is 4933f2dd...eb373, and the external merge-receipt hash is 1fbc84b3...5557. From pushed-green commit 21e1eb59, one frozen same-backend parent event produced all 288/288 greedy natural-thinking rollouts, 170,252 sampled tokens at 849.9 tokens/s. Rollout/metadata/log/receipt hashes are 8010632f...3b17f / 9fe81276...664 / ed0d4fc4...26b7 / c6b98b79...74fa. The original postvalidator rejected only an impossible post-open git_dirty=false assertion; an explicit no-generation recovery path authenticated every other frozen field and wrote the receipt without rerunning the model.
The frozen miner has now graded the experiment-owned substrate. It found 230 failed and 58 passing parent rows; all 230 failures had a reachable clean prefix. Available failures by bounded-induction/commit/declaration/probe/repair/state class were 46/48/35/24/36/41, so every fixed quota cleared without borrowing. It selected exactly ten per class. The 60-row repair source and complete inventory hashes are 30141538...d84b8 / 7230af52...dfe7. Selected prefixes contain 47,123 masked tokens total (33 minimum, 785.4 mean, 1,024 maximum); 42 selections cut at the generation cap, ten at the immediate-commit boundary, and eight at the answer boundary.
The separately frozen training streams now contain 320 rows and exactly 304,313 forward tokens apiece, with zero skips, 200 byte-identical position-aligned replay rows, and 40 optimizer steps. All repairs fit below the 4,096-token ceiling; the largest final row is 2,991 tokens. The candidate replaces 33,421 replay target tokens with masked context, leaving 111,983 nonzero-weight tokens and 25,049.4 absolute loss mass versus 145,404 and 31,311.2 for control. This is an explicit intervention caveat, not hidden behind the forward-token match. Token-receipt SHA-256 is eb08026f...e0cfc; the second review verdict is PASS_CONTROL_TRAINING.
From pushed-green commit a8529c04, the replay control then trained for exactly one epoch and 40 updates from the authenticated parent. It encoded 320/320 rows with zero skips, consumed the registered 304,313 forward tokens, and finished with training loss 0.4588 in 272.8 trainer seconds (292.4 wrapper seconds). The normalized log/receipt hashes are a49076ec...3501 / f78f2069...d6de; adapter config/weights are 0dfd9bda...120f / bb59d3bd...5154d. From separately pushed-green control checkpoint b690a4b3, the prefix-repair candidate independently restarted from the same authenticated parent and also completed 320/320 rows, zero skips, one epoch, and 40/40 updates over 304,313 forward tokens. Its final training loss was 1.288 in 282.4 trainer seconds (298.2 wrapper seconds). Candidate log/receipt hashes are e895c546...ca0 / 846d8107...7098; adapter config/weights are 91b7db57...37de / 85811191...0f14. Each 169,903,320-byte adapter has 256 tensors and 42,467,328 elements; every tensor is finite and nonzero. These are operational training results only. No capability measurement, local evaluation, or benchmark event exists.
Fresh local seed 88,009 is now frozen model-free after paired training. It contains 26 truth-audited tasks, two for each of 13 skills. Source/model-input/receipt hashes are 9682744e...acdee / ff407551...ce988 / 3982d5b8...6e85a; input rows expose neither answer nor oracle. Canonical messages have zero overlap with 658 training or parent-collection messages and 234 messages regenerated at prior reserved local seeds. A pre-outcome protocol amendment moves all three arms from the prospective Transformers path to the now-mandatory pinned vLLM runner. Each arm will use an explicit merged composite and identical greedy natural-thinking geometry. The absolute 24-parse/17-correct gate and strict total plus execute/induct/probe wins over both controls remain frozen. At that design checkpoint, review verdict PASS_CONTROL_MERGE authorized only the replay-control merge; no trained-arm merge, local model call, capability score, or benchmark event yet existed.
From pushed-green local-design commit 6dc0e677, the replay-control adapter was then explicitly merged into the Qwen3.5 composite. All 128 applied LoRA modules were nonzero. Tracked run-receipt/log hashes are bc78f332...d550 / 7ab404b8...8995; external merge-receipt/full-weight hashes are aa763255...45a3 / 7ab4c419...6e2e. The 9,078,620,536-byte shard passed the exact merged-Qwen architecture and frozen local engine-request gate. This is deployment lineage only. At that checkpoint no candidate merge, local model call, capability score, or benchmark event existed.
After that checkpoint was rebased, pushed, and passed Validate Repository run 29355088731 plus Publish Research Site run 29355089298, the candidate was merged from clean SHA 619f1e53. It likewise applied 128/128 nonzero LoRA modules and saved one 9,078,620,536-byte shard. Tracked run-receipt/log hashes are 3deff026...438d / 58c7c9ec...d9f6; external merge-receipt/full-weight hashes are baa2027e...6d5a / 376e2082...b528. Independent lineage, merged-Qwen architecture, and exact frozen engine-request validation passed. Both trained-arm deployments now exist, but no local model call, capability score, or benchmark event yet existed.
From pushed-green candidate-deployment commit a12e4758, one paired vLLM event ran on fresh seed 88,009. Parent/replay/candidate scored 16/18/15 correct, parsed 24/23/23, and contacted the generation cap 2/3/3 times. Their execute+induct+probe subtotals were 2/1/0 of six: candidate was 0/2 on all three target skills. It failed the accuracy, parse, cap, execute, induct, and probe gates and all four strict control-relative checks. Paired against replay, candidate won one task and lost four; no per-skill count improved, while order, probe, and trace each lost one. Local/promotion receipt hashes are b4b333ca...b8c8 / 1e048e75...f5c. All nine raw output/metadata/log hashes independently recomputed, benchmark_data_read=false, promotion is empty, and aggregate seed 78,139 remains sealed.
Interpretation
The on-policy source solved data availability, not installation. Teacher-forcing long realized failure prefixes did not teach the model to avoid or repair analogous states when it had to generate the prefix itself. Selection was dominated by cap boundaries, and the candidate sacrificed 33,421 supervised target tokens relative to replay; the result therefore rejects this complete matched-forward-compute recipe, not every possible on-policy correction objective. Retire long masked failure-prefix continuation as the next lever. A successor should move supervision before the failure—at short, prospectively detectable decision boundaries—and must preserve full target exposure or use an exact target-token control.
Knowledgebase Update
- Program evidence and shared synthesis: record the terminal local negative and the pre-failure/target-exposure design constraint it adds.
- Program backlog: retires this mechanism and keeps aggregate seed 78,139 sealed.
- Claim ledger: unchanged; no broad capability claim was exposed.
Artifacts
idea_intake.mdconfigs/default.yamlscripts/run.pyscripts/gen_rollout_tasks.pyscripts/mine_prefix_repairs.pyscripts/measure_source_tokens.pyscripts/materialize_streams.pyscripts/validate_streams.pyscripts/train_trial.pyscripts/gen_local_gate.pyscripts/check_local.pyscripts/merge_trained_arm.pyscripts/eval_local_vllm.pydata/design_receipt.jsondata/rollout_task_manifest.jsondata/prefix_failure_inventory.jsondata/prefix_repair_source.jsonldata/source_token_lengths.jsondata/stream_manifest.jsondata/stream_token_receipt.jsondata/replay_after_close.jsonldata/prefix_repair_after_close.jsonldata/local_tasks_seed88009.jsonldata/local_input_seed88009.jsonldata/local_design_receipt.jsonruns/parent_rollout/seed66113.receipt.jsonruns/training/replay_after_close.logruns/training/replay_after_close.jsonruns/training/prefix_repair_after_close.logruns/training/prefix_repair_after_close.jsonruns/merges/replay_after_close.logruns/merges/replay_after_close.jsonruns/merges/prefix_repair_after_close.logruns/merges/prefix_repair_after_close.jsonruns/local/seed88009.jsonruns/local/seed88009_promotion.jsonruns/local/seed88009_close_xi_parent.jsonlruns/local/seed88009_close_xi_parent.meta.jsonruns/local/seed88009_close_xi_parent.logruns/local/seed88009_replay_after_close.jsonlruns/local/seed88009_replay_after_close.meta.jsonruns/local/seed88009_replay_after_close.logruns/local/seed88009_prefix_repair_after_close.jsonlruns/local/seed88009_prefix_repair_after_close.meta.jsonruns/local/seed88009_prefix_repair_after_close.loganalysis/prefix_failure_inventory.mdreports/design_review.mdreports/compute_review.mdreports/local_design_review.mdreports/preregistration.mdreports/report.mdreports/artifact_manifest.yaml
Report
Rendered from reports/report.md
Summary
Model-free design, explicit parent deployment, authenticated rollout collection, failure-only mining, and the second exact-compute review are complete. Every fixed class quota passed, and two frozen 320-row streams match at exactly 304,313 forward tokens with zero skips. Both independently initialized arms have now trained and authenticated. The fresh same-backend local gate rejected prefix repair 15/26 versus replay 18/26 and parent 16/26; no benchmark event ran and aggregate remains sealed.
Research Program Fit
The experiment belongs to agentic_breadth_installation. It changes the intervention state from idealized truth traces to on-policy deployment prefixes while retaining the universal line's exact-token replay and strict promotion contract.
Method
Construction seed 77,113 produces 288 truth-audited tasks balanced across six failure classes. The authenticated close_xi adapter is explicitly merged because runtime vLLM LoRA is a verified silent no-op. One greedy natural-thinking vLLM event collected 288 parent outputs at seed 66,113 and cap 1,024. The frozen model-free miner selected ten reachable failures per class and masks every generated parent-prefix token from loss. Deterministic stream construction combines 200 position-aligned shared replay rows with either 60 repairs plus 60 replay fillers or 120 disjoint replay-control rows. The actual training encoder and pinned tokenizer measure every final row.
Results
CPU feasibility, deterministic generation, and adversarial design review passed. Source/model-input hashes are 32589348...1172 / 7a643e96...a5485c; design receipt hash is 98c6a168...5638. The parent composite merge then applied 128/128 nonzero LoRA modules. Its single weight shard is 4933f2dd...eb373 and its external merge receipt is 1fbc84b3...5557. The frozen parent event then completed all 288/288 rollouts with 170,252 sampled tokens at 849.923 tokens/s. Rollout/metadata/log hashes are 8010632f...3b17f / 9fe81276...664 / ed0d4fc4...26b7 and the authenticated receipt is c6b98b79...74fa. The initial postvalidator rejected only its own post-open dirty-tree condition; explicit recovery reran no generation and bound the completed event to commit 21e1eb59. At that rollout checkpoint, no failure grading or downstream event had run.
The separately published rollout then opened model-free grading. Of 288 rows, 230 failed at least one registered condition and 58 passed; all 230 failures had a clean reachable prefix. Available failures by bounded-induction/commit/declaration/probe/ repair/state class were 46/48/35/24/36/41, clearing every quota of ten. The 60-row repair source is 30141538...d84b8; full inventory is 7230af52...dfe7. Selected prefixes contain 47,123 masked tokens, with min/mean/max 33/785.383/1,024. Forty-two cut at the generation-cap boundary, ten at the first token beyond the commit budget, and eight at the answer boundary.
The final control/candidate hashes are 541805df...be6 / 9a43f3be...03f1, and the exact token receipt is eb08026f...e0cfc. Both arms contain 320 rows, 304,313 forward tokens, zero skips, 200 aligned common rows, and 40 updates. The longest row is 2,991 of 4,096 tokens. Forward compute is equal, but target composition is not: candidate minus control is +33,421 masked-context, −33,949 think-target, zero close-target, +528 answer-target, and −33,421 total target tokens. Candidate/control nonzero-weight tokens are 111,983/145,404; absolute loss masses are 25,049.4/31,311.2. The second review records this ambiguity and authorizes only the control. No model load, adapter training, capability measurement, or benchmark event ran during the freeze.
After compute-freeze commit a8529c04 passed both workflows, the replay control trained for one epoch and exactly 40 updates. It encoded 320/320 rows with zero skips, finished at loss 0.4588, and took 272.8 trainer seconds. Log/receipt hashes are a49076ec...3501 / f78f2069...d6de; adapter config/weights hashes are 0dfd9bda...120f / bb59d3bd...5154d. The 169,903,320-byte adapter contains 256 finite, nonzero tensors and 42,467,328 elements. This authenticates the control artifact but is not capability evidence.
After that control checkpoint passed both workflows as commit b690a4b3, the prefix-repair candidate independently restarted from the same parent. It likewise encoded 320/320 rows with zero skips and completed exactly 40 updates over one epoch. Final loss was 1.288; trainer/wrapper times were 282.4/298.2 seconds. Candidate log/receipt hashes are e895c546...ca0 / 846d8107...7098; adapter config/weights hashes are 91b7db57...37de / 85811191...0f14. Its 169,903,320-byte adapter also contains 256 finite, nonzero tensors and 42,467,328 elements. This completes the paired operational training stage, not a capability comparison.
After paired training, local seed 88,009 froze 26 truth-audited tasks, two per registered universal skill. Source/model-facing/receipt hashes are 9682744e...acdee / ff407551...ce988 / 3982d5b8...6e85a. Model input contains only ids, messages, and public metadata. It has zero canonical-message overlap with 658 training/collection messages and 234 regenerated messages at prior reserved local seeds. No model was called.
Before any local outcome, the active repository inference contract required a symmetric amendment from the prospective Transformers process to the pinned vLLM runner. Parent, replay, and candidate will all deploy as explicit composites with identical natural-thinking, greedy, seed, token cap, batch geometry, and runner bytes. The frozen absolute and strict control-relative promotion rules are unchanged. Local review verdict PASS_CONTROL_MERGE authorizes only the separately checkpointed replay-control merge.
After local-design commit 6dc0e677 passed both workflows, that replay-control merge applied 128/128 nonzero LoRA modules. Tracked receipt/log hashes are bc78f332...d550 / 7ab404b8...8995; external merge receipt and 9,078,620,536-byte weight shard hash to aa763255...45a3 / 7ab4c419...6e2e. The saved composite passes the exact Qwen3.5 architecture and frozen local engine-request gate. This is an authenticated deployment artifact, not capability evidence.
After that checkpoint passed Validate Repository run 29355088731 and Publish Research Site run 29355089298, candidate merge from clean SHA 619f1e53 applied 128/128 nonzero modules. Tracked receipt/log hashes are 3deff026...438d / 58c7c9ec...d9f6; external receipt and 9,078,620,536-byte weight shard hash to baa2027e...6d5a / 376e2082...b528. Independent lineage, architecture, and frozen engine-request validation passed. This too is deployment evidence only.
The single authorized local event then ran from pushed-green commit a12e4758. Parent/replay/candidate scored 16/18/15 correct, 24/23/23 parsed, and 2/3/3 cap contacts on the same 26 fresh rows. Execute+induct+probe subtotals were 2/1/0 of six; candidate scored zero on every target kind. It failed six absolute checks and all four strict relative checks. Against replay it flipped one miss to a win but four wins to misses; no skill count improved, while order, probe, and trace each fell by one. Local/promotion receipt hashes are b4b333ca...b8c8 / 1e048e75...f5c. Independent recomputation verified the promotion decision and all nine raw hashes. No benchmark data was read and aggregate seed 78,139 remains sealed.
Controls
Baseline is authenticated close_xi. The mechanism-falsifying control is an independent same-parent replay continuation matched on exact encoded forward tokens, optimizer steps, seed, and aligned shared replay. It must train and publish first. Both arms have now trained independently from the parent, and candidate preflight authenticated the committed control receipt, log, and external adapter before model load. The local deployment order is published parent composite, replay-control merge, candidate merge, then one three-arm vLLM local stage. Every transition completed and was preserved separately; the failed local gate terminates the experiment.
Oracle Versus Deployable Evidence
Executable truth is permitted only to construct tasks, grade parent failures, and build corrections or the fresh local gate. Hidden oracle fields are excluded from both rollout and local model input; commit tasks deliberately expose verified work as their public task substrate. Local seed 88,009 was materialized only after training, and its messages are disjoint from training and prior reserved local seeds. benchmarks/ remains read-forbidden and the aggregate gateway stays sealed.
Interpretation
The parent supplies enough failures in every registered class and exact forward compute is matched, so data availability and deployment do not explain the negative. Long realized failure-prefix teacher forcing did not transfer to generating or repairing analogous prefixes on fresh tasks. The selected set is dominated by capped states, while masking those contexts leaves 33,421 fewer supervised target tokens than replay. The result rejects the complete recipe but does not separate prefix conditioning from target-composition effects. “First failure” also remains the first machine-observable boundary, which can occur too late to teach the decision that caused it.
Next Experiments
Do not rerun seed 88,009 or open aggregate seed 78,139. A result-separated successor should intervene at short pre-failure decision boundaries and match supervised target exposure, with fresh local and conditional aggregate seeds.
Artifact Manifest
Parent identity, frozen task hashes, replay hashes, the staged external merged checkpoint, parent-rollout hashes, stream hashes, and both trained adapters are recorded in artifact_manifest.yaml; local task/input/protocol hashes and both merged-arm deployments are registered. The terminal local receipt, promotion receipt, and every raw arm artifact are tracked; no benchmark result exists.
Experiment log 12
Show the running log (12 entries, 2026-07-14)
2026-07-14 — Intake
- Opened only after state-table negative commit
003efebbwas pushed tomainand GitHub Validate Repository run29341508735and Publish Research Site run29341513334both completed successfully. - Ran
make relatedfor on-policy failure-prefix correction. Selected the existingagentic_breadth_installationprogram and namedqwen35_4b_universal_state_table_compiler_token_matchas the closest near-duplicate. - Anchored the pivot in C53's failure-forensics/on-policy direction, C56/C59's content-bearing serial-compute boundary, C50's deployment-state emission lesson, and the operator-capture negatives from interactive/recovery curricula.
- Proposed the same authenticated
close_xiparent; rejected inheritance from the failed scaffold and state-table candidates. - Reserved fresh construction/parent-rollout/training/local/conditional-aggregate seeds 77113/66113/47/88009/78139.
- Authorized intake and CPU design feasibility only. No parent rollout, data selection, GPU model generation, training, local capability, merge, or benchmark event ran.
2026-07-14 — Model-free collection design
- Published intake commit
10ae8923directly tomain; Validate Repository run29342538743and Publish Research Site run29342538693both passed. - Froze 288 fresh truth-audited tasks at construction seed 77,113: 48 each across declaration/operation, state transition, bounded induction, probe scoring, repair propagation, and commit serialization.
- Separated hidden oracle source (
32589348...1172) from model-facing rollout input (7a643e96...a5485c). Fresh local seed 88,009 remains unmaterialized. - Added exact generated-token prefix masking and model-free failure mining. Fixed ten reachable failures per class, a 32-token immediate-commit boundary, and fail-closed insufficient-quota behavior.
- Closed the documented vLLM runtime-LoRA silent no-op by requiring an explicitly merged
close_xicomposite with exact Qwen3.5-4B architecture fingerprinting. - Adversarial review verdict is
PASS_PARENT_MERGE; training, local evaluation, and benchmark access remain unauthorized pending observed prefix lengths and a second exact-compute review.
Next: commit/rebase/push this design and verify both workflows; then run only the explicit parent-merge stage and checkpoint its receipt.
2026-07-14 — Explicit parent composite merge
- Published design commit
3f75c992directly tomain; Validate Repository run29344691083and Publish Research Site run29344691096both passed. - From that clean checkpoint, ran only
--stage merge-parent. The explicit composite merger loadedQwen/Qwen3.5-4Brevision851bf6e8...d0aand authenticated theclose_xiadapter as weights/config16e9dc75...c179/de953bd5...7ff. - Applied 128 LoRA deltas on CUDA; all 128 were nonzero. Sum/max delta Frobenius norms were 159.990169 / 2.824141, with FP32 TF32 disabled and scale 2.0.
- Saved one 8.5-GiB composite shard with SHA-256
4933f2dd...eb373. Externalmerge_receipt.jsonSHA-256 is1fbc84b3...5557; durable log/experiment receipt hashes arefc0b938b...53d2/10c3870d...95b. - Re-ran the merge authenticator and the exact Qwen3.5-4B architecture-fingerprint gate against the saved composite. No generation, training, capability, local, or benchmark event ran.
Next: publish and CI-verify this merge receipt, then run only collect-parent.
2026-07-14 — Authenticated parent rollout collection
- Published parent-merge commit
21e1eb59directly tomain; Validate Repository run29345395690and Publish Research Site run29345395680both passed. - From that clean checkpoint, ran only
--stage collect-parent: the explicitly mergedclose_xicomposite generated one greedy natural-thinking completion for each of all 288 frozen prompts at seed 66,113 and a 1,024-token cap. The same vLLM event used max model length 4,096, max 16 sequences, max 8,192 batched tokens, and explicit CUDA-graph sizes 1/2/4/8/16. - Completed 288/288 rollouts with 170,252 sampled tokens, 61,981 unique/logical input prompt tokens, and zero injected or stage-two tokens. Model load plus generation took 311.869 seconds; generation throughput was 849.923 sampled tokens/s.
- Preserved rollout/metadata/normalized-log hashes
8010632f...3b17f/9fe81276...664/ed0d4fc4...26b7; the model runner hash is2099c674...32aafand metadata binds generation to commit21e1eb59. - Generation completed atomically, but the original wrapper's postvalidator exited only because it demanded runner
git_dirty=falseafter the wrapper itself had opened an untracked log. Every other frozen contract check passed. The collector now captures clean Git state before opening outputs and includes an explicit--recover-completedpath. That path authenticated the completed event, reran no generation, and wrote receipt hashc6b98b79...74fa. - Added a repository-wide operational guard and regression test for this self-dirty wrapper failure. No rollout outcome was graded, no prefix was selected, and no training, capability, local, or benchmark event ran.
Next: publish and CI-verify this rollout checkpoint, then run only the model-free mine-prefixes stage and preserve either the 60-repair inventory or the frozen insufficient-quota negative.
2026-07-14 — Model-free prefix quota satisfied
- Published rebased parent-rollout commit
dbd433e8directly tomain; Validate Repository run29346896317and Publish Research Site run29346896827both passed. - From that clean aligned checkpoint, ran only
--stage mine-prefixes. The miner authenticated the committed rollout receipt, metadata, runner, task source, and hidden-field boundary, then made zero model calls. - Graded 288 experiment-owned procedural rows: 230 met at least one frozen failure condition, 58 passed all registered conditions, and all 230 failed rows exposed a reachable clean thinking-channel prefix.
- Reachable failures for bounded induction, commit serialization, declaration / operation, probe scoring, repair propagation, and state transition were 46/48/35/24/36/41. Every preregistered quota of ten passed without borrowing or threshold changes; exactly 60 repair rows were selected.
- Preserved inventory/source hashes
7230af52...dfe7/30141538...d84b8. Selected prefixes contain 47,123 masked tokens total (33 minimum, 785.383 mean, 1,024 maximum). Boundaries were 42 generation caps, ten first tokens beyond the commit budget, and eight answer boundaries. - The severe-prefix mix is a compute-review risk, not a post-hoc reason to change selection. No exact-token stream, adapter training, capability measurement, local event, merge, or benchmark event ran.
Next: publish and CI-verify this failure-inventory checkpoint. Then materialize exact-token candidate/control streams and perform the second adversarial compute review in a separate model-free checkpoint; do not expose training before it passes.
2026-07-14 — Model-free exact-compute freeze
- Published rebased prefix-inventory commit
d16beeccdirectly tomain; Validate Repository run29347732698and Publish Research Site run29347732815both passed. - From that clean aligned checkpoint, measured all 60 frozen repairs with the exact pinned Qwen tokenizer and the actual training encoder. All 60 fit at length 4,096; no selected row was removed or replaced after lengths became visible.
- Deterministically materialized two 320-row streams. Each has exactly 304,313 unpadded forward tokens, zero skips, 40 optimizer steps, and the same 200 byte-identical replay rows at aligned positions. Candidate repair/filler blocks contain 76,953/28,000 tokens; the disjoint control-variable replay block contains 104,953.
- Preserved source-token/stream-manifest/control/candidate/final-receipt hashes
2ae6aded...654d/f836d0a1...93cd3/541805df...be6/9a43f3be...03f1/eb08026f...e0cfc. Final encoded lengths span 329–2,991. - Audited the non-compute match explicitly: candidate versus control has +33,421 masked-context tokens, −33,949 think targets, equal close targets, +528 answer targets, and −33,421 total target tokens. Nonzero-weight tokens and absolute loss mass are 111,983/25,049.4 versus 145,404/31,311.2. Any result must retain this target-composition caveat.
- Added a fail-closed training wrapper that authenticates stream receipt, bytes, warm start, output path, and hyperparameters; captures clean Git state before opening outputs; refuses overwrite; and preserves logs/receipts. Candidate training additionally requires the committed control receipt.
- Second adversarial verdict is
PASS_CONTROL_TRAINING. No model load, adapter training, capability measurement, local event, or benchmark event ran.
Next: commit/rebase/push this compute freeze and verify both workflows. Then run only train-control from that published clean checkpoint and immediately preserve its log and receipt before any candidate event.
2026-07-14 — Exact-compute replay control trained
- Published rebased compute-freeze commit
a8529c04directly tomainafter resolving a generated knowledge-index conflict by deterministic rebuild. Validate Repository run29350075815and Publish Research Site run29350075883both passed. - From that clean aligned checkpoint, ran only
--stage train-control. The wrapper reauthenticated design, mining, stream bytes, token receipt, parent adapter, and frozen hyperparameters before opening any output. - The exact trainer encoded 320/320 replay rows with zero skips and performed 40/40 updates over one epoch, 304,313 forward tokens, batch size one, gradient accumulation eight, learning rate
1e-5, and seed 47. Trainer/wrapper wall times were 272.8/292.4 seconds; final training loss was 0.4588. - Preserved normalized log/receipt hashes
a49076ec...3501/f78f2069...d6de. The external adapter config/weights hashes are0dfd9bda...120f/bb59d3bd...5154d; weights are 169,903,320 bytes. - Structural audit found 256 tensors and 42,467,328 elements, matching the reported trainable parameter count. Every tensor was finite and nonzero.
- The preflight Git status was empty at commit
a8529c04; the recorded post-training dirtiness contains only the newly created durable training directory. No candidate, capability, local, merge, generation, or benchmark event ran.
Next: publish and CI-verify this control log/receipt. Then run only train-candidate; its direct wrapper must authenticate the committed control receipt, committed log, and external adapter before loading the model.
2026-07-14 — Exact-compute prefix-repair candidate trained
- Published control checkpoint
b690a4b3directly tomain; Validate Repository run29351333012and Publish Research Site run29351333028both passed. - From that clean aligned checkpoint, ran only
--stage train-candidate. Before model load, the direct wrapper reauthenticated the committed control receipt and log, external control adapter, token receipt, candidate stream bytes, parent adapter, and all frozen hyperparameters. - The candidate independently restarted from
close_xi, encoded 320/320 rows with zero skips, and performed 40/40 updates over one epoch and 304,313 forward tokens. Batch size, gradient accumulation, learning rate, and seed remained 1/8/1e-5/47. Trainer/wrapper wall times were 282.4/298.2 seconds; final training loss was 1.288. - Preserved normalized log/receipt hashes
e895c546...ca0/846d8107...7098. The external adapter config/weights hashes are91b7db57...37de/85811191...0f14; weights are 169,903,320 bytes. - Structural audit found 256 tensors and 42,467,328 elements. Every tensor was finite and nonzero. The preflight Git status was empty at commit
b690a4b3; only the new candidate log and receipt were created in the tracked tree. - This completes paired training only. The candidate's lower supervised-token count and loss mass remain explicit causal caveats, and no capability measurement, local event, merge, generation, or benchmark event ran.
Next: publish and CI-verify this paired-training checkpoint. Then design and freeze the fresh paired local gate in a separate model-free checkpoint before evaluating the parent, replay control, or prefix-repair candidate.
2026-07-14 — Fresh same-backend local gate frozen
- Published candidate-training checkpoint
66da846fdirectly tomainafter fetching incoming work and resolving the sole generatedknowledge/artifact_index.mdconflict by deterministic rebuild. Validate Repository run29352595725and Publish Research Site run29352595744both passed. - Only then materialized fresh local seed 88,009 model-free: 26 truth-audited tasks, exactly two each across the 13 universal skills. Source/model-input/design-receipt hashes are
9682744e...acdee/ff407551...ce988/3982d5b8...6e85a. - Model-facing rows contain only id, messages, and public kind/surface/seed metadata. Canonical message bytes overlap zero of 658 frozen training or parent-collection messages and zero of 234 messages regenerated at prior reserved local seeds 88,000–88,008.
- Froze a pre-outcome protocol amendment required by the active repository guide: all three arms move symmetrically from the prospective Transformers process to the pinned experiment-local vLLM runner. Runtime LoRA remains forbidden; replay and candidate require explicit authenticated composite merges.
- Pinned identical natural-thinking, greedy, one-sample, seed-88,009, 1,024-token, 4,096-context, 16-sequence, 8,192-batched-token, CUDA-graph-1/2/4/8/16 geometry for every arm. Code hashes cover the generator, gate, evaluator, runner, trained-arm merge wrapper, external merger, curriculum, and training authenticator.
- Integerized the unchanged absolute gate at 24 parses, 17 correct, at most two caps, at most one route abstention, and at least one of two correct separately for execute/induct/probe. Promotion still requires strict total and target wins over both parent and replay. Review verdict is
PASS_CONTROL_MERGE. - Ran 55 experiment tests plus the complete deterministic smoke. No trained-arm merge, local model call, capability score, benchmark access, or aggregate event occurred.
Next: publish and CI-verify this local-design checkpoint. Then run only merge-control, preserve its full composite receipt, and repeat the publish gate before candidate merge.
2026-07-14 — Replay-control composite merged
- Published rebased local-design checkpoint
6dc0e677directly tomain; Validate Repository run29354204797and Publish Research Site run29354205108both passed. - From that clean aligned checkpoint, ran only
--stage merge-control. The harness reauthenticated both training checkpoints, fresh local receipt, review verdict, replay adapter bytes, and external merger before opening output. - The explicit merger loaded the pinned Qwen3.5-4B composite, applied 128/128 LoRA modules, and found every applied delta nonzero. It used CUDA FP32 LoRA products and saved one 9,078,620,536-byte full composite shard.
- Preserved tracked run-receipt/log hashes
bc78f332...d550/7ab404b8...8995. External merge-receipt/full-weight hashes areaa763255...45a3/7ab4c419...6e2e; the merger hash remainedcb9af8b4...96672. - Independently reran the trained-arm receipt authenticator and the experiment-local merged-Qwen architecture plus frozen engine-request gate against the saved composite. Both passed.
- Preflight Git status was empty at commit
6dc0e677; only the tracked control merge log/receipt and external gitignored composite were created. No candidate merge, local model call, capability score, benchmark access, or aggregate event ran.
Next: publish and CI-verify this replay-control merge. Then run only merge-candidate; it must require the committed control-merge receipt before opening output.
2026-07-14 — Prefix-repair candidate composite merged
- Published rebased replay-control checkpoint
619f1e53directly tomainafter resolving the sole generated-index conflict by deterministic rebuild. Validate Repository run29355088731and Publish Research Site run29355089298passed. - From that clean, origin-aligned SHA, ran only
--stage merge-candidate. Preflight reauthenticated the fresh local design, committed replay-control merge, candidate training receipt, adapter bytes, and external merger before opening output. - The explicit merger loaded only pinned Qwen3.5-4B revision
851bf6e8...d0a, used CUDA FP32 LoRA products with TF32 disabled, applied 128/128 modules, and found every applied delta nonzero. It saved one 9,078,620,536-byte full composite shard. - Preserved tracked run-receipt/log hashes
3deff026...438d/58c7c9ec...d9f6. External merge-receipt/full-weight hashes arebaa2027e...6d5a/376e2082...b528; the merger remainedcb9af8b4...96672. - Independently reran candidate lineage validation and the merged-Qwen architecture plus exact 4,096-context, 16-sequence, 8,192-batched-token, CUDA-graph-1/2/4/8/16 engine-request validation. Both passed.
- Preflight Git status was empty at
619f1e53; only the tracked candidate merge log/receipt and external gitignored composite were created. No local model call, capability score, benchmark access, or aggregate event ran.
Next: publish and CI-verify this candidate merge. Then run only the already frozen three-arm local event; aggregate access remains sealed unless every preregistered promotion gate passes.
2026-07-14 — Fresh local gate rejects prefix repair
- Published rebased candidate-deployment checkpoint
a12e4758directly tomain; Validate Repository run29355954273and Publish Research Site run29355954309both passed. - From that clean origin-aligned SHA, ran exactly one
--stage localevent. All arms used the pinned experiment-local vLLM 0.24.0 runner, explicit merged composites, natural thinking, greedyn=1, seed 88,009, 1,024 output tokens, 4,096 context, 16 sequences, 8,192 batched tokens, and CUDA graphs 1/2/4/8/16. - Parent/replay/candidate completed 26/26 rows and sampled 11,255 / 12,682 / 11,769 tokens. They scored 16/18/15 correct, 24/23/23 parsed, and 2/3/3 cap contacts. Execute+induct+probe subtotals were 2/1/0 of six; candidate was 0/2 on each target kind.
- Candidate failed accuracy, parse, cap, execute, induct, and probe checks plus all four strict relative checks. Paired versus replay, it won one task, lost four, retained 14 shared wins, and shared seven misses. No per-kind count improved; order, probe, and trace each lost one.
- Preserved local/promotion hashes
b4b333ca...b8c8/1e048e75...f5cplus raw output/metadata/log hashes for every arm. Independent promotion recomputation and all nine raw hashes passed. The wrapper's exit 1 is the preregistered failure signal, not an infrastructure error. benchmark_data_read=false, promotion is empty, no benchmark process ran, and aggregate seed 78,139 remains sealed.
Conclusion: terminal mechanism negative. Long masked on-policy failure-prefix continuations do not beat more replay under equal forward compute. Because the candidate also has 33,421 fewer supervised target tokens, retire this complete recipe without claiming that all on-policy correction is impossible. The next result-separated trial should move the intervention to short pre-failure decisions and match target exposure.
Reproduce
Smoke test
PYTHONDONTWRITEBYTECODE=1 .venv/bin/python -B experiments/qwen35_4b_universal_on_policy_prefix_repair_token_match/scripts/run.py --smokeFull run
none: terminal local negative; verify the preserved event with smoke_command and use a new experiment for follow-up workRun steps are documented inside the experiment folder (README and scripts).