Commit Graph

463 Commits

Author SHA1 Message Date
Drew T 5fc7f16978 feat(phase-30 S49): propagate func_8018B388 to its cousins (wave 7a) 2026-08-13 06:53:52 -06:00
Drew T dabd2d4cb7 feat(phase-30 S49): propagate func_80183838 to its cousins (wave 7a) 2026-08-13 06:52:50 -06:00
Drew T ad7ffe5e6e feat(decomp): worker gate — +1 fns x7 propagated (fleet 95.1%) 2026-08-13 04:36:57 -06:00
Drew T 7f82d95468 feat(decomp): worker gate — +1 fns x8 propagated (fleet 95.1%) 2026-08-13 04:34:15 -06:00
Drew T 49cf2dc15a feat(decomp): worker gate — +1 fns x17 propagated (fleet 95.1%) 2026-08-12 22:56:40 -06:00
Drew T 527c7ffa7d feat(decomp): worker gate — +1 fns x1 propagated (fleet 95.1%) 2026-08-12 22:51:00 -06:00
Drew T 63bb8f8959 feat(decomp): worker gate — +1 fns x36 propagated (fleet 95.1%) 2026-08-12 22:47:24 -06:00
Drew T 019fd51883 feat(decomp): worker gate — +1 fns x9 propagated (fleet 95.1%) 2026-08-12 22:22:06 -06:00
Drew T ebc2da001a feat(phase-30 S49): jr lane — func_80183bac banked via jtbl_family_bank (lane-A re-sweep) 2026-08-12 21:25:02 -06:00
Drew T dfd6be8b38 feat(phase-30 S49): jr lane — func_80185440 banked via jtbl_family_bank (lane-A re-sweep) 2026-08-12 21:24:24 -06:00
Drew T a194268e01 feat(phase-30 S49): jr lane — func_80180b04 banked via jtbl_family_bank (lane-A re-sweep) 2026-08-12 21:21:29 -06:00
Drew T f93ad8cd2f feat(phase-30 S49): jr lane — func_80189030 banked via jtbl_family_bank (lane-A re-sweep) 2026-08-12 21:16:23 -06:00
Drew T 24b866789b feat(phase-30 S49): jr lane — func_8018cc40 banked ×9 via jtbl_family_bank
- 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.
2026-08-12 21:13:46 -06:00
Drew T 46a2bf56af feat(phase-30 S48-T6): propagate func_80181948 to its zero-crack siblings 2026-08-12 18:28:00 -06:00
Drew T a4fafab85e feat(phase-30 S48-T6): propagate func_80183834 to its zero-crack siblings 2026-08-12 18:27:17 -06:00
Drew T c55ad64614 feat(phase-30 S48-T6): wave 6 — 24 exemplars banked; the gate-refusal ROOT CAUSE found
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%.
2026-08-12 18:13:19 -06:00
Drew T c36ae5f6bc feat(phase-30 S48-T6): propagate func_801874C0 to its zero-crack siblings 2026-08-12 16:20:01 -06:00
Drew T 874f942fed feat(phase-30 S48-T6): wave 5 — 29 exemplars banked (73%)
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%.
2026-08-12 16:13:05 -06:00
Drew T 317bde5403 feat(phase-30 S48-T6): propagate func_80185B44 to its zero-crack siblings 2026-08-12 12:59:49 -06:00
Drew T 43e9e6bc9b feat(phase-30 S48-T6): propagate func_80180C90 to its zero-crack siblings 2026-08-12 12:58:09 -06:00
Drew T 2980e90a70 feat(phase-30 S48-T6): propagate func_8018308C to its zero-crack siblings 2026-08-12 12:57:27 -06:00
Drew T 043532b475 feat(phase-30 S48-T6): wave 4 — 18 exemplars banked; + a 4th comment-blindness fix
Wave 4 (wf_05895a19-121, 75 agents, 7.9M tok): 40 targets -> 35 agent-MATCH,
0 refuted, 5 NEAR, 0 FAIL, 0 drafts lost. 18 banked so far on the whole-binary
gate across 9 binaries; the other 17 are re-gating on a clean tree (see below).

PRIOR-NOTES SEEDING HELD AT SCALE: 10 of 12 seeded targets confirmed (wave 3
was 7 of 9). func_8017C294 — the x16 family, the largest single item on the
board — is now NEAR at **2 ins** (18 -> 11 -> 2 across three seeded attempts).

THE 4th COMMENT-BLINDNESS DEFECT OF THE SESSION, and the first with blast
radius. A crack agent annotated a decl in its draft:

    extern void func_801842DC(s32 a0);   /* TU:4023 INCLUDE_ASM (no decl) */

`corpus._INCLUDE_ASM_CAND` only skips lines that BEGIN with a comment marker,
so it read `INCLUDE_ASM (` out of the trailing PROSE, found no quoted path, and
refused the whole binary's stub oracle — correctly, by its own R32 contract.
That then failed gate_stage for every LATER binary in the run, because they all
walk the corpus: 12 binaries banked, then 5 were blocked by one comment in a
13th. Fixed the same way as the other three today: decide candidacy on
cdecl._mask'ed text, PARSE FROM THE ORIGINAL (the mask blanks string content
and would erase the asm path). Verified on 4 binaries incl. main (2,002 stubs).

AND THE DAMAGE IT LEFT: gate_stage raised out of the CorpusError BEFORE its
revert, stranding failed drafts spliced in src/. The 17 solo re-gates that
followed all read 0/17 — they were building a POISONED TREE, not judging their
own drafts. Residue reverted here; the 17 re-gate clean next.

The pattern is now sharp enough to state: any scanner that greps C source for a
token must mask comments and strings FIRST — and agent-authored drafts make it
far likelier, because their prose mentions the exact tokens our tools hunt for.
2026-08-12 12:25:20 -06:00
Drew T 5ea17c2f8e feat(phase-30 S48-T6): propagate func_80184938 to its zero-crack siblings 2026-08-11 23:01:29 -06:00
Drew T a0a122cbe2 feat(phase-30 S48-T6): propagate func_80191320 to its zero-crack siblings 2026-08-11 23:00:56 -06:00
Drew T 077cd0cda7 feat(phase-30 S48-T6): propagate func_8018FF98 to its zero-crack siblings 2026-08-11 23:00:39 -06:00
Drew T 5a97bbdc2a feat(phase-30 S48-T6): propagate func_80183324 to its zero-crack siblings 2026-08-11 22:59:47 -06:00
Drew T e93922ffce feat(phase-30 S48-T6): propagate func_8017F83C to its zero-crack siblings 2026-08-11 22:58:05 -06:00
Drew T 526d512497 feat(phase-30 S48-T6): propagate func_801844C8 to its zero-crack siblings 2026-08-11 22:57:07 -06:00
Drew T 4fe07faf0b feat(phase-30 S48-T6): propagate func_8017EB44 to its zero-crack siblings 2026-08-11 22:54:54 -06:00
Drew T 50dd6b3c3f feat(phase-30 S48-T6): wave 3 — 27 exemplars banked, 0 drafts lost
Wave 3 (wf_2680d8ff-539, 74 agents, 8.08M tok): 39 targets -> 35 agent-MATCH,
0 refuted, 4 NEAR, 0 FAIL -> 27 BANKED on the whole-binary gate (69%).

THE HARDENED HARNESS HELD: 0 drafts missing on disk (wave 2 lost 21 of 26 to a
shared output dir). Per-agent dirs + "never touch anything outside your own
directory" + a verifier that re-runs sha1sum LAST.

PRIOR-NOTES SEEDING IS THE SESSION'S BEST LEVER: 7 of 9 seeded targets
converted, including all three wave-2 whole-binary-gate misses and both big
NEARs — func_80189540 (551 ins, was NEAR +2) and func_8017C3BC (407 ins, was
NEAR 17). func_8017C294 (the x16 family) went 18 -> 11 ins: narrowing, not a
wall.

func_80189540 also required the one host edit its agent byte-probed:
  src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c:3093
  extern s32 func_80189540(s32 a0, s16 a1)  ->  (s16 a0, s16 a1)
That TU has no call site, so the edit is inert; the OTHER TUs' (s32,s16) decls
are deliberately left alone (real call sites, and an s16 prototype there would
force caller-side truncation and could de-match banked callers).

Its agent also recovered a better draft that already existed at
.run/backlog_drafts/func_80189540.c — a 551-ins MATCH that had been DE-matched
to 549 by "fixing" the definition's s16 first parameter to s32, the exact
inverse of that draft's own warning. Restoring s16 recovered the match.
2026-08-11 22:51:32 -06:00
Drew T b68486dfd0 feat(phase-30 S48-T6): propagate func_80188B84 to its zero-crack siblings 2026-08-11 21:03:21 -06:00
Drew T 2c05b5a66d feat(phase-30 S48-T6): propagate func_801818F0 to its zero-crack siblings 2026-08-11 21:02:36 -06:00
Drew T 62758e231e feat(phase-30 S48-T6): propagate func_8017ED5C to its zero-crack siblings 2026-08-11 21:01:53 -06:00
Drew T 0ec7d4c052 feat(phase-30 S48-T6): wave 2 — 5 exemplars banked; 21 verified drafts LOST to a harness defect
Wave 2 (wf_d804f25a-f6f, 54 agents, 6.76M tok, 66 min): 28 targets ->
26 agent-MATCH (93%, vs wave 1's 75%), 0 refuted, 2 NEAR, 0 FAIL.

Then only 5 of the 26 drafts still existed on disk. The verifiers were NOT
lying — their evidence quotes exact instruction counts matching each target
(101/187/108/77 ins), so the files existed when they ran. Later crack agents
DELETED them while tidying the SHARED .run/wave2/ directory; one agent's own
notes say "scratch dir removed afterwards so .run/wave2/ contains only draft
.c files". 28 agents, one output dir, and a prompt line ("drafts to .run/wave2
ONLY") that invited cleanup.

Zero-token recovery: re-gated every surviving .c under .run/wave2/** whose
text DEFINES the target function -> 2 of 21 recovered.

Banked (5/5 through the whole-binary gate — every draft that survived passed):
  ov_SC01_005  func_8017ED5C x5  func_8017DEFC x5
  ov_SC03_093  func_801818F0 x5
  ov_SC04_018  func_80188B84 x5
  ov_SC06_018  func_80183F50 x6

The 21 lost cracks keep their full agent notes in .run/jr48/wave2_lost.json —
idioms, integration surface, family maps. They are re-runnable from those
notes at a fraction of a cold crack.
2026-08-11 20:37:35 -06:00
Drew T e4471fd039 feat(phase-30 S48-T6): propagate func_80188E1C to its zero-crack siblings 2026-08-11 18:38:06 -06:00
Drew T b1f03be9ea feat(phase-30 S48-T6): propagate func_80187AEC to its zero-crack siblings 2026-08-11 18:36:23 -06:00
Drew T c824c19a3d feat(phase-30 S48-T6): propagate func_80185F58 to its zero-crack siblings 2026-08-11 18:35:20 -06:00
Drew T 65204c205a feat(phase-30 S48-T6): propagate func_80186270 to its zero-crack siblings 2026-08-11 18:34:44 -06:00
Drew T b83babbff5 feat(phase-30 S48-T6): Stage-1 probe wave — 8 exemplars banked, R22 213/213
Probe-12 wave (workflow wf_45e34026-aed, 21 agents, 3.36M tok, 70 min):
12 top-weight zero-crack sibling families cracked against match_one, every
claimed MATCH re-gated by an independent adversarial verifier.

  crack-agent MATCH   9/12 (75%)   adversarially refuted 0
  whole-binary gate   8/12 (67%)   NEAR 3, FAIL 0

Banked (exemplars, 1,941 ins; ~10k templatable ins across 42 member slots):
  ov_SC06_018  func_80186270 x6  func_80185F58 x6  func_80187AEC x6
  ov_MAIN_012  func_8017D730 x5  func_8017D2A4 x5  func_8017CF3C x5
               func_8017CBC8 x5
  ov_SC04_018  func_80188E1C x5

NOT banked, ledgered:
  func_8017F2D4 (ov_SC01_005) — match_one MATCH, verifier confirmed, and the
    WHOLE-BINARY gate still classifies DIFF. The §52b gap made concrete: the
    per-function gate is a candidate filter, the binary gate is the arbiter.
  func_8017C294 (x16, the largest single item on the board) NEAR 18 ins
  func_8017C3BC NEAR 17 ins · func_80189540 NEAR +2 ins / 4 sites

R22 clean-fleet after banking: 213 passed / 0 failed of 213.
2026-08-11 18:09:02 -06:00
Drew T 4913ac6a2c feat(phase-30 S48-0b): jtbl family func_8017A4AC — 1/1 blocked-binary siblings banked 2026-08-11 16:09:43 -06:00
Drew T 58b1d7aeea feat(phase-30 S48-0b): jtbl family func_8015C32C — 2/2 blocked-binary siblings banked 2026-08-11 16:09:34 -06:00
Drew T 19fee49f56 feat(phase-30 S48-0b): jtbl family func_8015B950 — 2/2 blocked-binary siblings banked 2026-08-11 16:09:23 -06:00
Drew T ef31c895b6 feat(phase-30 S48-0b): jtbl family func_8015AE2C — 2/2 blocked-binary siblings banked 2026-08-11 16:09:08 -06:00
Drew T d84e4f84ae feat(phase-30 S48-0b): jtbl family func_801734BC — 3/3 blocked-binary siblings banked 2026-08-11 16:08:57 -06:00
Drew T f0ecebd81f feat(phase-30 S48-0b): jtbl family func_80159A20 — 3/3 blocked-binary siblings banked 2026-08-11 16:08:39 -06:00
Drew T d8b84b75de feat(phase-30 S48-0b): jtbl family func_80171B4C — 3/3 blocked-binary siblings banked 2026-08-11 16:08:19 -06:00
Drew T c679a406b0 feat(phase-30 S48-0b): jtbl family func_801594E8 — 3/3 blocked-binary siblings banked 2026-08-11 16:07:30 -06:00
Drew T 63aa207c15 feat(phase-30 S48-0b): jtbl family func_8016AE5C — 3/3 blocked-binary siblings banked 2026-08-11 16:06:41 -06:00
Drew T 58a2339f54 feat(phase-30 S48-0b): jtbl family func_80154C24 — 3/3 blocked-binary siblings banked 2026-08-11 16:04:25 -06:00
Drew T 5a42473c6e feat(phase-30 S48-0b): jtbl family func_80182BCC — 1/1 blocked-binary siblings banked 2026-08-11 15:54:24 -06:00