Count-Walk Replay Compound (Stage 8)
The one idea you need
The team has spent months building one model through a documented chain of training rounds, like coats of varnish: each round trains a small add-on on top of the current model and folds it in, and each documented round so far has raised the model's overall score on sealed exams. One reliable trick in that chain is the 'replay round': re-teach the model its own accumulated practice problems (nothing new, just the full review deck) and fold that in. At the last stage this exact trick added about two points even as a control. The open question is whether the trick has run out: the current model is the best in the chain, and re-teaching an already-good student their old notes must stop helping at some point.
The question
Does an eighth coat of varnish still shine - if the current best model gets one more replay round over the full 2,240-problem review deck, does its sealed-exam score go up without any subject collapsing, or has the replay trick hit diminishing returns?
What we found
The believed-likelier outcome, delivered cleanly. 'Replay compounding' — retraining on the accumulated replay mixture — had lifted the aggregate score at every previous link in this model's build chain, so it was the safest broad move available. On the eighth link it stopped working: the new model scored 0.342 versus the parent's 0.363, a genuine drop, and one task family (warren) fell far enough to trip the guardrail on its own. The pre-registered rule reads that as BOUNDED: the move has hit diminishing returns on this particular parent, which is already saturated with replay data, so more of the same just reshuffles strength between families instead of adding it (two families up, three down, net negative). The parent model stays the reference. The useful part is the knowledge: we now know the cheap reliable lever has a ceiling here, so the next push has to be a different KIND of move, not another dose of the same one. The new model still crushes the raw base model by 0.238 and wins 8 of 10 families against it.
Why it matters
The chain is the program's flagship artifact: a fully documented, contamination-free recipe that turned a 0.08 base into a 0.36 model. Knowing exactly where its cheapest move stops working is worth one sealed exam: if replay still compounds, the floor rises for free; if it is bounded, the program stops burning exams on re-rolls and must invent a genuinely new move class.
On this page
Results at a glance 1
aggregate score · arm →
Data table
| arm | aggregate at sealed seed 78168 |
|---|---|
| base | 0.104 |
| count_walk (parent) | 0.363 |
| replay_compound (candidate) | 0.342 |
Numbers from experiments/qwen35_4b_count_walk_replay_compound/runs/benchmark/medium_tb1024_seed78168_compound/summary.json
In the author’s words from the Overview
Program: agentic_breadth_installation Program question: can DESIGNED synthetic curricula install universal, transferable agentic skills into the one 4B — provably, on fully documented lineage? Prior anchors: lifecycle 27 (qwen35_4b_count_dont_walk_enumeration — built the count_walk parent, tree d5fdc55c…; its replay control replay_ctl7 is the direct precedent: a pure replay stream onto the stage-6 composite beat the parent on 4 of 5 sealed draws, mean +0.018), lifecycle 28 (qwen35_4b_count_walk_menders_confirmation — AMBIGUOUS on menders, contrast closed; count_walk topped the aggregate on 2 of 4 seeds, mean 0.3634 over the four), and lifecycle 22 (qwen35_4b_zero_root_lineage_rebuild — the contamination-free six-stage chain this cell extends). … Read the full result →
Overview
Lifecycle 29 — stage 8 of the documented zero-root chain: REPLAY COMPOUNDING onto the count_walk composite. ONE fresh rank-32/alpha-64 adapter trains on the FULL 2,240-row replay pool (data/sft_blend.jsonl, sha 25a9595f…) from the count_walk composite parent at fresh seed 86 with the chain's established replay-refresh recipe, merges through the vendored external merger, must pass a two-arm three-screen pooled_k3 retention non-drift gate, and only a locally promoted candidate may consume the ONE sealed medium seed 78168 under the frozen two-directional COMPOUNDED / BOUNDED consequence.
Research Program
- Program:
agentic_breadth_installation - Program question: can DESIGNED synthetic curricula install universal, transferable agentic skills into the one 4B — provably, on fully documented lineage?
- Prior anchors: lifecycle 27 (
qwen35_4b_count_dont_walk_enumeration— built the count_walk parent, treed5fdc55c…; its replay controlreplay_ctl7is the direct precedent: a pure replay stream onto the stage-6 composite beat the parent on 4 of 5 sealed draws, mean +0.018), lifecycle 28 (qwen35_4b_count_walk_menders_confirmation— AMBIGUOUS on menders, contrast closed; count_walk topped the aggregate on 2 of 4 seeds, mean 0.3634 over the four), and lifecycle 22 (qwen35_4b_zero_root_lineage_rebuild— the contamination-free six-stage chain this cell extends).
Question
Does replay compounding still add aggregate at stage 8 — a fresh adapter over the full replay pool trained ON the count_walk composite and merged back — or does the replay-compounding law hit diminishing returns on this parent? Frozen two-state consequence; the modal BOUNDED path (aggregate up but one family dipped by more than an episode) is a finding about the law's boundary, not a failure.
Hypothesis
The chain added aggregate at every documented stage, and the stage-7 replay control proved the exact move class (replay pool onto a composite) adds ~+0.02 mean aggregate. If the pool's value is not yet exhausted at a 0.357-mean parent, the candidate lands COMPOUNDED and becomes the program reference artifact feeding the raised-floor confirmation. Honest priors (preregistration): P(aggregate strictly > parent) ≈ 0.5-0.6, but the strict no-family-below-by->0.1 clause historically binds on ~4 of 5 draws, so P(COMPOUNDED) ≈ 0.25-0.40 and BOUNDED is the believed-likelier verdict.
Setup
- Model: Qwen/Qwen3.5-4B (revision
851bf6e8…), always. - Treatment:
replay_compound— fresh r32/a64 QLoRA ondata/sft_blend.jsonl(2,240 rows, sha-pinned, zero skips enforced) via--model-pathon the count_walk composite; epochs 1, lr 1e-5, bs 1, ga 8, maxlen 4096, w_think 0.2, w_close 0.2, seed 86, 280 optimizer steps (scripts/train_trial.py, fail-closed). - Parent:
large_artifacts/qwen35_4b_count_dont_walk_enumeration/merged/count_walk(treed5fdc55c…, weightsddd7bc4b…), authenticated fail-closed pre-training and pre-merge against the IN-CELL sha-pinned provenance copy of lifecycle 27's merge receipt (840edca0…,data/provenance/count_walk_merge.json; the committed sibling original is a verification aid — byte-identical when present, skipped with a recorded note when absent) plus the full 9 GB weights hash at BOTH stage boundaries (train_trial.py and merge_trained_arm.py). - Merge:
scripts/merge_trained_arm.py→scripts/merge_adapter.py(cb9af8b4…)--base-modelcount_walk →large_artifacts/qwen35_4b_count_walk_replay_compound/merged/replay_compound. - Local gate: retention-only (no axis kind exists), TWO arms (parent vs candidate), three pooled_k3 screens at fresh seeds 88060/88061/88062 (104 rows each, 8 per each of 13 skills), TWO-SIDED bands on integer screen sums: correct ±15, parsed ±9, cap contacts ±9. All three must hold to promote. Freshness audit against sha-pinned in-cell copies of the two reference cells' eight gate files (
data/predecessor_gates/, seeds 88052-88059). Write-ahead local ledger (runs/local/local_events.jsonl): every engine event opens before launch and sha-pins its raw artifacts after validation; a torn or discarded attempt refuses any new local pass. - Sealed event: medium, tb 1024, fresh seed 78168, three arms in frozen order base → count_walk → replay_compound through the trusted gateway (
53cf6533…); three TODO-pin slots for the candidate (tree/weights/committed merge receipt) fail closed while unfilled;run_benchmark.pyfrozen bycheck_design.py's three-slot NORMALIZED hash (11a6cc14…), withtrain_trial.py(97c06297…) andeval_local_vllm.py(1b294792…) pinned symmetrically on their own fill slots; one-seed write-ahead ledger with byte-equal crash reconciliation. - FROZEN CONSEQUENCE (no third state): COMPOUNDED iff candidate aggregate strictly > parent AND no family below parent by more than 0.1 (
candidate_family >= parent_family - 0.1 - 1e-9; every family independently gets at most one episode of slack — the rule caps depth per family, not the number of families using slack) AND candidate aggregate strictly > base; aggregate comparisons carry a 1e-12 tie guard on the gateway-reported floats (a true rational tie rendered one ulp apart resolves BOUNDED) — claim: "replay compounding holds at stage 8; the composite becomes the program reference artifact and feeds the raised-floor confirmation." BOUNDED otherwise — claim: "the replay-compounding law hits diminishing returns at stage 8 on this parent; the count_walk composite remains the reference; further aggregate pushes need a different move class." Goal gate vs base (10/10 strict wins) recorded descriptively for both treated arms. - Hidden-label boundary: only
scripts/run_benchmark_aggregate.pyruns;benchmarks/contents are never parsed or read as data (audited bycheck_design.py --checkand a unit test).
Run
Smoke (fast, no GPU; verifies every pin, the lineage package, the gate design, and runs the unit tests):
PYTHONDONTWRITEBYTECODE=1 .venv/bin/python -B experiments/qwen35_4b_count_walk_replay_compound/scripts/run.py --smokeStaged (each requires clean pushed green main plus its committed review verdict; receipts committed between stages):
# needs reports/compute_review.md with PASS_CONTROL_TRAINING (~45min GPU)
.venv/bin/python -B experiments/qwen35_4b_count_walk_replay_compound/scripts/run.py --stage train
# needs reports/local_design_review.md with PASS_CONTROL_MERGE (~10min)
.venv/bin/python -B experiments/qwen35_4b_count_walk_replay_compound/scripts/run.py --stage merge
# fill the three TODO pins from the committed merge receipt, commit, then:
# needs reports/local_design_review.md with PASS_LOCAL_EVENT (~30min GPU)
.venv/bin/python -B experiments/qwen35_4b_count_walk_replay_compound/scripts/run.py --stage local
# needs reports/benchmark_design_review.md with PASS_BENCHMARK_EVENT + promotion (~10min GPU)
.venv/bin/python -B experiments/qwen35_4b_count_walk_replay_compound/scripts/run.py --stage benchmarkStandalone lineage verification (also inside smoke):
.venv/bin/python -B experiments/qwen35_4b_count_walk_replay_compound/scripts/rebuild_lineage.py --verify-inputs
# full GPU rebuild of stages 1-8 (~4h):
.venv/bin/python -B experiments/qwen35_4b_count_walk_replay_compound/scripts/rebuild_lineage.pyOps note (torn ledger / partial receipts): never edit receipts by hand; audit the preserved artifacts, then --stage benchmark --resume — the summary regenerates deterministically and must reconcile byte-identically before the ledger closes.
Results
Pending: the GPU stages have not run. The terminal artifact will be runs/benchmark/medium_tb1024_seed78168_compound/summary.json carrying the frozen COMPOUNDED / BOUNDED consequence.
Interpretation
Design-frozen. COMPOUNDED promotes the composite to program reference artifact and funds the raised-floor confirmation cell; BOUNDED closes the replay-compounding move class at stage 8 on this parent and redirects aggregate pushes to a different move class. Either way the chain's stage-8 boundary becomes a measured fact instead of an assumption.
Knowledgebase Update
- Program evidence updated: pending the sealed event.
- Program backlog updated: pending.
- Claim ledger updated: pending.
Artifacts
scripts/— fail-closed staged harness (run.py), trainer wrapper (train_trial.py), merge wrapper (merge_trained_arm.py), gate design/generator (gen_local_gate.py), gate rule (check_local.py), evaluator (eval_local_vllm.py), sealed-event runner (run_benchmark.py), design checker with the three-slot normalized pin (check_design.py), lineage rebuilder (rebuild_lineage.py), vendored production copies (train_think.py,merge_adapter.py,lineage_trainers/,stage7_wrappers/,rebuild_clean_chain.py,gen_curriculum.py).data/— the standalone lineage package (lineage/), stage-7 production inputs, the stage-8 training pool (sft_blend.jsonl), the parent provenance copy (provenance/count_walk_merge.json), the two reference cells' eight sha-pinned gate-file copies (predecessor_gates/), and the frozen local gate (local_design_receipt.json,local_tasks_seed8806*.jsonl,local_input_seed8806*.jsonl).reports/preregistration.md— the frozen contract with honest priors.reports/artifact_manifest.yaml— external artifacts and reproduction paths.tests/— 176 unit tests (consequence truth table + lattice sweeps + the 1e-12 aggregate tie guard over the demonstrated 1-ulp rational-tie pairs, two-sided retention bands, benchmark ledger open/close/reconcile/ double-consume, local write-ahead ledger open/refuse/complete, arm authentication tamper drills, sibling-original absent/divergent drills, normalized-pin probes for all three fill-slot files, stage-prerequisite one-line refusal drills, lineage package integrity, cross-module frozen constants, vLLM runner contract).
Report
Rendered from reports/report.md
Lifecycle 29. Model-free construction is complete and frozen; no GPU stage has run and no seed has been consumed. This report records the frozen design; the results section fills only after the sealed event.
What this cell asks
Stage 8 of the documented zero-root chain: does REPLAY COMPOUNDING — one fresh rank-32/alpha-64 adapter trained on the FULL 2,240-row replay pool (data/sft_blend.jsonl, sha 25a9595f…) ON the count_walk composite parent (tree d5fdc55c…) at fresh seed 86, merged back onto that composite — still add held-out aggregate, or does the replay-compounding law hit diminishing returns on this parent?
The frozen design
- Treatment. The chain's established replay-refresh recipe, unchanged: epochs 1.0, lr 1e-5, rank 32/alpha 64, batch 1, grad-accum 8, max-length 4,096, w_think 0.2, w_close 0.2, via the vendored stage-7 trainer (
train_think.py, shae0eca2a2…) with--model-pathon the composite; 280 optimizer steps; zero row skips enforced (pool max forward 3,193 < 4,096). Fresh training seed 86 (grep-fresh; chain seeds 42/43/44/47/51/55/85 are taken). - Fail-closed authentication. The parent authenticates pre-training and pre-merge against the committed lifecycle-27 merge receipt (sha
840edca0…, byte-identical in-cell copy) plus tokenizer/size pins and the full 9 GB weights hash; the benchmark runner recomputes the full on-disk tree sha256 of every arm at the seed-consuming boundary. - Local gate. Retention-only, TWO arms (parent vs candidate; no axis kind exists for a pool treatment): three pooled_k3 screens at fresh seeds 88060/88061/88062, 104 rows each; TWO-SIDED bands on integer screen sums (correct ±15, parsed ±9, cap contacts ±9). Promotion only if all three hold; the aggregate question belongs exclusively to the sealed event.
- Sealed event. Medium / tb1024 / fresh seed 78168, three arms in frozen order (base → count_walk → replay_compound) through the trusted gateway (
53cf6533…). Three TODO-pin slots (candidate tree / weights / committed merge receipt) fail closed while unfilled;run_benchmark.pyis frozen by a three-slot NORMALIZED hash (d619d5df…) so every guard call site is byte-frozen pre- and post-fill. One-seed write-ahead ledger; byte-equal crash reconciliation (the summary is a pure function of the receipts). - Frozen consequence (no third state). COMPOUNDED iff candidate aggregate strictly > parent AND no family strictly below parent by more than 0.1 (
candidate_family >= parent_family - 0.1 - 1e-9, exact at both lattice boundaries) AND candidate aggregate strictly > base. BOUNDED otherwise. The frozen claims and the goal-gate-vs-base descriptive reading are in the preregistration.
Honest priors (frozen before the event)
The stage-7 replay control is the exact move-class precedent: it beat its parent on 4 of 5 sealed draws (mean +0.018). But the per-family slack clause historically binds: dips beyond one episode appeared on ~4 of 5 candidate-vs-parent draws across the chain's sealed history. Frozen priors: P(aggregate strictly > parent) ≈ 0.5-0.6; P(COMPOUNDED) ≈ 0.25-0.40; BOUNDED is the believed-likelier verdict and is a finding about the law's boundary (the modal path: aggregate up, one family down by two episodes), not a failure.
Verification state at freeze
run.py --smokegreen: check_design (normalized pin, gateway sha, frozen corpora, no-benchmark-reads audit),rebuild_lineage.py --verify-inputs(extended manifest45d1a0d9…; 7 stage datasets + 2 arm streams + the stage-8 pool + 7 provenance receipts + trainers/merger/wrappers),gen_local_gate.py --check(instruments + freshness + code pins), and all 127 unit tests.- Boundary drills refuse: every staged gate without its committed review verdict; the sealed runner with unfilled TODO pins; a tampered parent merge receipt in a scratch copy; fake/incomplete composite trees; NaN gateway scores; ledger double-consume.
Results
Pending the staged reviews and GPU stages. Terminal artifact: runs/benchmark/medium_tb1024_seed78168_compound/summary.json with the frozen verdict, claims, per-family tables, and the descriptive goal gate.
Interpretation
Pending. Both branches are priced in the preregistration: COMPOUNDED promotes the composite to program reference artifact and feeds the raised-floor confirmation; BOUNDED closes the replay-compounding move class at stage 8 on this parent and redirects further aggregate pushes to a different move class.
Experiment log 3
Show the running log (3 entries, 2026-07-17)
2026-07-17 — design freeze (lifecycle 29; model-free, no seed consumed)
Stage 8 of the documented zero-root chain: REPLAY COMPOUNDING onto the count_walk composite. Everything below is model-free construction; no GPU stage has run, no review has been sought yet, and the sealed seed 78,168 is unconsumed.
- Treatment frozen. One fresh rank-32/alpha-64 adapter (
replay_compound) on the FULL 2,240-row replay pool (data/sft_blend.jsonl, sha25a9595f…, byte-identical lifecycle-27 copy; max forward 3,193 tokens, zero skips enforced) from the count_walk composite parent via--model-path, with the chain's established replay-refresh recipe (epochs 1, lr 1e-5, bs 1, ga 8, maxlen 4096, w_think 0.2, w_close 0.2 — identical to stages 1/4 and the stage-7 arms) at the fixed FRESH training seed 86. Seed audit: 42/43/44/47/51/55/85 are the chain's taken training seeds; 86 verified grep-fresh in training-seed contexts repo-wide; no substitution required. - Parent authentication frozen. Fail-closed pre-training and pre-merge: committed lifecycle-27 merge receipt (sha
840edca0…), byte-identical in-cell provenance copy (data/provenance/count_walk_merge.json), inner receipt / tokenizer / size pins, then the full 9 GB weights hash (ddd7bc4b…). Cloned from the reference cell's train_trial.py / merge_trained_arm.py pattern, adapted to this parent. - Local gate frozen and generated. Retention-only (no axis kind exists for a pool treatment), TWO arms (count_walk parent first, then the candidate), three pooled_k3 screens at fresh seeds 88060/88061/88062 (104 rows each, 8 per each of 13 skills, canonical gen_curriculum.py). Seed audit: everything <= 88059 known-taken (reference cell holds 88056-88059); 88060/88061/88062 verified grep-fresh; no substitution. TWO-SIDED bands on integer screen sums: correct ±15, parsed ±9, cap contacts ±9 (means ±5/±3/±3). Design receipt + task files + runner inputs generated model-free and pinned (
gen_local_gate.py --checkgreen); freshness audit: zero canonical-user-message overlap with every in-cell corpus (including the training pool), the reference cell's four frozen gate files, and regenerated prior local seeds 88000-88059. - Sealed event frozen. Medium / tb1024 / fresh seed 78168 (benchmark seeds spent through 78,167; grep-fresh; no substitution), three arms in frozen order base → count_walk → replay_compound through the trusted gateway (
53cf6533…). The candidate's tree/weights/committed-receipt pins are three fail-closed TODO slots;run_benchmark.pyis frozen bycheck_design.py's three-slot NORMALIZED hash (d619d5df…) — every byte outside the slots, every guard call site included, is byte-frozen pre- and post-fill. One-seed write-ahead ledger; byte-equal crash reconciliation (the summary payload is a pure function of the receipts; a preserved summary must reconcile byte-identically before the ledger closes). - Consequence frozen (two-directional, no third state). COMPOUNDED iff candidate aggregate strictly > parent AND no family strictly below the parent by more than 0.1 (
candidate_family >= parent_family - 0.1 - 1e-9; exactly 0.1 below passes, 0.10000001 fails; unit-tested over the full k/10 and k/60 lattices) AND candidate aggregate strictly > base. BOUNDED otherwise. Frozen claims in the preregistration. Goal gate vs base (10/10 strict wins) recorded descriptively for both treated arms. - Honest priors frozen. The stage-7 replay control is the exact move-class precedent (beat its parent 4/5 sealed draws, mean +0.018), but the family-slack clause historically binds (~4/5 draws show a dip beyond one episode): P(aggregate > parent) ≈ 0.5-0.6, P(COMPOUNDED) ≈ 0.25-0.40; BOUNDED is the believed-likelier verdict and is a finding about the law's boundary, not a failure. Menders is NOT re-litigated (lifecycle 28 closed that contrast); it appears only descriptively.
- Standalone package extended. Copied byte-identically: the full
data/lineage/package (six stage datasets + seven provenance receipts), the stage-7 production inputs,lineage_trainers/×3,train_think.py,merge_adapter.py,rebuild_clean_chain.py, and lifecycle 27's wrappers intoscripts/stage7_wrappers/(shasa83240a0…/b566c486…unchanged). The manifest was extended with thestage8_replay_compoundblock (arm, pool sha, seed 86, trainer/merger shas, parent pins, recipe, three null post-merge TODO slots) and the stage-7 block's wrapper paths re-pointed; new byte pin45d1a0d9….rebuild_lineage.pynow replays stages 1-8;--verify-inputsgreen. - Verification at freeze.
run.py --smokegreen end-to-end (check_design --check, rebuild_lineage --verify-inputs, gen_local_gate --check, 127 unit tests). Boundary drills refuse: every staged gate without its committed review verdict, the sealed runner with unfilled TODO pins, a tampered parent merge receipt in a scratch copy, fake and incomplete composite trees, NaN gateway scores, and ledger double-consume.
Next: commit + push, seek the adversarial compute review (PASS_CONTROL_TRAINING) for --stage train.
2026-07-17 — review-driven design hardenings (pre-freeze; still model-free, no seed consumed)
Construction review surfaced two majors and six minors against the still-uncommitted cell; all applied before the first commit. Frozen task and corpus content is UNCHANGED (all six gate task/input files regenerated byte-identically: sources 836c971b…/4149e399…/ 7a143b41…, runner inputs 122c631e…/e2b6acb4…/26b3761a…); only code, receipts, and docs moved.
- MAJOR 1 — aggregate tie guard. The strict aggregate comparisons in
run_benchmark.consequence_readingwere unguarded against ulp-level rendering of TRUE rational ties: distinct per-family multisets with exactly equal rational aggregates float-render 1 ulp apart (demonstrated: parent[1.0,0.1,0.6,0.8,0.1,0.0,0.1,1.0,0.8,0.1]vs candidate[0.9,0.2,0.6,0.8,0.1,0.0,0.1,1.0,0.8,0.1], both exactly 0.46, rendering0.45999999999999996vs0.46000000000000008), flipping BOUNDED to COMPOUNDED. Python 3.12sum()is Neumaier-compensated (order is not the mechanism) andmath.fsumdoes not fix it; the fix is the explicitAGG_TIE_EPSILON = 1e-12: strictly-above means(candidate - other) > 1e-12,|delta| <= 1e-12is a tie and ties are BOUNDED. Real aggregate differences are >= ~1.7e-3. Truth-table unit tests added over both demonstrated 1-ulp flip orderings (both must read BOUNDED) and a genuine +0.002 win (stays COMPOUNDED); the frozen-semantics sentence added to the preregistration. - MAJOR 2 — standalone reproduction path (owner's standalone directive: cross-experiment files are verification aids, NEVER the reproduction path). Every sibling-original requirement became: the IN-CELL sha256 pin is the hard fail-closed gate; a PRESENT sibling must be byte-identical (divergence fails loudly as tamper evidence); an ABSENT sibling is skipped with a recorded note ("absent, in-cell pin authoritative"). Applied to
rebuild_lineage.py(verify_provenance_receipts),gen_local_gate.py(parent receipt + predecessor gates),train_trial.py(check_parent_provenance, note recorded in the training receipt),eval_local_vllm.py(inherited-arm receipt now the in-cell copy), andrun_benchmark.py(require_count_walk_parent_provenance; the sibling is HEAD-checked only when present). The four predecessor gate files gained sha-pinned in-cell copies underdata/predecessor_gates/so the overlap audit runs identically without siblings. Drills: a sibling-free checkout passesrebuild_lineage.py --verify-inputsANDgen_local_gate.py --check(verified live by temporarily relocating the three sibling cells); divergent-present still fails (unit drills). - Minors. (1) Slack-gloss wording corrected everywhere: every family independently gets at most one episode (0.1) of slack below the parent — the rule caps depth per family, not the number of families using slack. (2) Local write-ahead ledger (
runs/local/local_events.jsonl): anopenedrecord (arm, seed, seed list, design-receipt sha, monotonic index) appended BEFORE every engine event, areceiptsrecord sha-pinning the raw artifacts after validation; a torn/discarded attempt refuses any new local pass; open/refuse/complete unit-tested. (3)merge_trained_arm.pypreflight now hashes the full 9 GB merge-base weights againstddd7bc4b…(mirroringtrain_trial.py); README now matches reality. (4) Overlap audit extended with the enumerative-repair cell's four gate files (seeds 88052-88055), same load pattern, in-cell copies; local design receipt regenerated (bd6a8f47…). (5)run.py require_pushed_checkpointcatches the git cat-file probe and refuses one-line (stage prerequisite is not committed at HEAD: <path>); the three stage drills re-run green (one-line refusals, no tracebacks). (6) Pin symmetry:check_design.pynow normalized-hash-pins ALL three fill-slot files —run_benchmark.py(three slots, re-frozen11a6cc14…after the tie guard),train_trial.py(PUBLISHED_ARM_HASHESsingle-line sorted-key dict slot,97c06297…),eval_local_vllm.py(EXPECTED_TRAINED_TREE_SHA256slot,1b294792…) — one-byte non-slot edits fail--check, legal slot fills do not (probed in tests). - Verification after the fixes.
check_design.py --checkgreen twice;gen_local_gate.py --checkgreen; task files byte-identical (shas above); unit tests 127 → 176, all green;run.py --smokegreen end-to-end;rebuild_lineage.py --verify-inputsgreen (now reporting sibling-original status);make checkgreen from repo root.
2026-07-17 — Sealed event 78168: BOUNDED; cell closed
- Three arms at 78168 (medium tb1024): base 0.1040, count_walk parent 0.3626, replay_compound candidate 0.3420. The candidate's aggregate fell 0.0206 BELOW the parent (aggregate_strictly_beats_parent=False, tie guard inactive — a real loss, not a tie) AND warren dipped 0.15 below parent (families_below_slack=[warren]). Either condition alone fires BOUNDED; both did.
- Frozen consequence: BOUNDED — "the replay-compounding law hits diminishing returns at stage 8 on this parent; the count_walk composite remains the reference; further aggregate pushes need a different move class." This is the first chain stage where replay compounding failed to add aggregate.
- Descriptive (never gating): the candidate still beats base by 0.238 (goal gate vs base 8 strict wins, tie on menders, one loss on rites); per-family vs parent it is a net-negative reshuffle (lockpick +0.1, toolsmith +0.07; menders -0.1, mirage -0.1, warren -0.15, stockade -0.025). Replay on an already replay-saturated parent redistributes rather than adds.
Data files 1
Result tables and metrics copied from the experiment folder — preview inline or open the raw file.
Reproduce
Smoke test
PYTHONDONTWRITEBYTECODE=1 .venv/bin/python -B experiments/qwen35_4b_count_walk_replay_compound/scripts/run.py --smokeFull run
.venv/bin/python -B experiments/qwen35_4b_count_walk_replay_compound/scripts/run.py --stage train|merge|local|benchmark (staged; each needs clean pushed main plus its committed review verdict)Run steps are documented inside the experiment folder (README and scripts).