- lane-A jr re-sweep: 9/9 siblings banked (SC03_001/002/124/125, SC04_015/019/020,
SC05_017/018), per-binary SHA-gated by the carve driver; new jr splits + yaml carves.
- func_80189540 family 0/4: reconcile-transform defect ('syntax error before *') — tool
class, ledgered, NOT codegen. §154-A md probe x4: fresh refusal 'jump tables only, not
an island of mixed included data' — 20 md jr members ledgered as the known structural gap.
Wave 6 (wf_9729fd89-c16, 76 agents, 6.7M tok): 40 targets -> 35 agent-MATCH,
1 refuted, 0 UNVERIFIED (the new field works), 4 NEAR -> 24 BANKED.
*** THE FINDING OF THE CAMPAIGN, and it is not a compiler idiom ***
func_8017F2D4 had been "MATCH standalone / DIFF at gate" SEVEN times across
five waves. Every attempt hunted codegen. The body was byte-correct the whole
time. The fault was that the prior notes named the WRONG DESTINATION TU:
..._jr_8017C340.c holds only a CALLER and a prototype; the INCLUDE_ASM lives in
..._jr_8017ED5C.c. Splicing into the wrong file is a no-op, the binary differs,
and harvest recorded its canned string "match_one MATCH but gate rejected
(declaration/TU plumbing)" — A GUESS, NOT A MEASUREMENT. No declaration
conflict ever existed.
NEW LAW (zero-cost oracle): THE SPLAT ASM SUBDIR NAMES THE DESTINATION TU.
asm/<overlay>/nonmatchings/<TU_basename>/<fn>.s => the INCLUDE_ASM is in
src/<overlay>/<TU_basename>.c, always — the third path component IS the TU
stem. Never accept a prose TU citation that disagrees with the --asm-subdir you
were handed: a grep for the function name also hits callers and prototypes in
OTHER TUs and reads exactly like a destination hit. Corollary: re-derive the TU
path from the asm subdir BEFORE hunting codegen on any gate-refused backlog
entry.
The agent proved it properly: in-situ splice into BOTH TUs, full pinned triple,
279/279 with 0 masked diffs, plus a collateral-drift check (71/71 other sized
symbols byte-identical). It also corrected the reach to x2 (only two .s files
for that function exist, byte-identical modulo the overlay name).
Bank rate across six waves: 67% -> 79% -> 69% -> 68% -> 73% -> 60%.
Wave 5 (wf_7bce6c28-9f4, 78 agents, 11.4M tok across both halves): 40 targets
-> 36 agent-MATCH, 2 refuted, 2 NEAR, 0 FAIL, 0 drafts lost -> 29 BANKED.
RESUMED THROUGH A USAGE-LIMIT OUTAGE. The first run lost 40 agents mid-wave
(18 cracks + 22 verifiers). Resuming with byte-identical args replayed the 22
completed cracks from cache and re-ran only the dead ones — a limit outage
costs the unfinished work only.
⚠ THE INTERRUPTED RESULT WAS MISLEADING AND THAT IS MY BUG: crack_wave.js
classifies anything without verdict_check.confirmed as `refuted`, so 22 drafts
whose VERIFIER DIED read as 22 refutations. A dead oracle must not be
indistinguishable from a negative verdict — split `refuted` from `unverified`.
Two prior-seeded agents did better than asked:
- func_8017F2D4: found the prior draft SURVIVED in .run/wave3/, recovered it,
then gated it IN SITU — spliced into the real destination TU, full pinned
triple, masked-diff of the function out of the whole-TU object: 0 mismatched,
279/279. That closes the §52b gap instead of trusting a standalone match. It
also byte-confirmed the x5 reach on three symbol-remapped siblings and fixed
the prior notes' TU pointer (they named a file holding only a caller).
- func_8017FFD0: VALIDATED its predecessor's claim rather than assuming it —
built a no-barrier variant and reproduced the predicted -7 ins drift exactly,
proving the __asm__ __volatile__("") cross-jump barrier is a real lever.
Bank rate across five waves: 67% -> 79% -> 69% -> 68% -> 73%.