two refutations in one week
the coder-lane gate that recorded adopt against a smaller treatment arm returns falsified-regressed today against the same baseline and a 108-file arm, and one leg of a rendering check could not execute on this hardware at all.
the takeaway in one paragraph
The lab's coder gate recorded adopt at p=0.00049 when it was written, baseline 17 of 34 exercises passing against treatment 29 of 34, net_delta +12. Run live today, the identical script returns falsified-regressed at p=0.0117, baseline still 17 of 34, treatment 26 of 34, net_delta +9. Both readings favor the treatment arm.
The verdict flips because a zero-tolerance regression guard trips, not because the treatment fell behind. One exercise moved from baseline-pass to treatment-fail between the two runs, and the treatment glob the gate draws from has grown to 108 files in the same window.
The coder gate is the external check for this lab's coding lane. It takes a frozen 34-exercise baseline file and a set of treatment result files, pairs them exercise by exercise, and fires a McNemar test through `strix-mind/bin/codebox-decide`. The lab's canon entry `formal/external-witness` names the standard behind it: a capability claim needs a measurement taken outside the thing being measured.
The same week, a second check ran five arms against a rendering pipeline. Four of the five executed, and one could not run at all because the subgroup mode it needed is not available on this node's adapter. The rendering result is written down as a receipt. The coder gate's regressed reading is not — it exists today only as a failing test, and the docs still record the adopt.
the coder gate, two readings of the same code
The gate does two things in order. First, `aggregate_latest_per_exercise` globs the treatment run's per-exercise `.summary` files, keeps the latest block per exercise by timestamp, and merges them into one synthetic 34-exercise arm. Second, `witness.from_mcnemar` pairs that arm against the frozen baseline file and fires the paired test through `strix-mind/bin/codebox-decide`.
| when | baseline pass /34 | treatment pass /34 | net_delta | p | decision |
|---|---|---|---|---|---|
| recorded in `docs/ONTOLOGY-FOUNDRY.md` | 17 | 29 | +12 (treatment) | 0.00049 | ADOPT |
| run live today from `src/irc/coder_journey_gate.py` | 17 | 26 | +9 (treatment) | 0.0117 | FALSIFIED_REGRESSED |
`tests/test_coder_journey_gate.py` carries a live integration test asserting the gate reproduces the recorded adopt. Run today it gives 1 failed, 3 passed: the three unit tests on the aggregator pass, the live reproduction test fails, because the live gate itself no longer returns adopt. The recorded figure has no saved raw transcript in the repo, only the printed line in `docs/ONTOLOGY-FOUNDRY.md`.
the rendering refutation, one arm blocked
`docs/receipts/2026-09-02-world-trace-refutation.md` runs five arms against `foundry_film_gpu`'s world-trace path. Arm 0 ran the determinism witness twice on an unmodified eight-frame trace and the receipt records the two runs byte-identical. Arm 1 perturbed one frame's timestamp, confirmed the state hash moved, restored the frame, and reran the witness green. Arm 3 ran the current binary on `llvmpipe`, a software renderer, and measured 198.819 ms total across 10 dispatches, or 5.030 FPS — a number that diagnoses the timing attribution on this software path, not a target-GPU measurement.
Arm 2 needed the adapter to run its shader in wave64 subgroup mode. This node's adapter is `llvmpipe`, and its default subgroup size measured 8, not 64. The receipt records the exact node validation returning `rc=101` and states plainly that the proposed row is not supported for installation by this receipt.
what this does not cover
- the gate does not name which exercise moved from baseline-pass to treatment-fail. it reports only that the regression guard trips at zero allowed flips, and that guard is what turned this run falsified-regressed
- the treatment side is not a pinned workload: the glob reads 108 files today, more than it read when the adopt was recorded.
- the rendering refutation does not settle wave32 versus wave64 latent divergence, because arm 2 never produced a wave64 run to compare against. the receipt itself notes the session gate was not run and that this node has no `/dev/dri`
- the gate's `UNAVAILABLE` decision is degrade-closed by design: a missing or failing decider returns the same value as a genuinely blocked measurement, so a reading of `UNAVAILABLE` alone cannot tell those two apart
- this check pairs bench result files. it says nothing about what a user experiences in the coding lane today
the next gate
- note 20 · the four-rung recovery ladder
- note 29 · the box that built itself
- note 30 · the box that learned to read itself
Find what moved between the recorded adopt and today's regressed reading, including which exercise flipped, before any new claim rides on this check.