Commit Graph

478 Commits

Author SHA1 Message Date
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
Drew T e4dd317572 feat(phase-30 S48-0b): jtbl family func_80179B74 — 1/1 blocked-binary siblings banked 2026-08-11 15:54:17 -06:00
Drew T a8bca8cf21 feat(phase-30 S48-0b): jtbl family func_80181CE4 — 1/1 blocked-binary siblings banked 2026-08-11 15:54:09 -06:00
Drew T 4ae63e7f6e feat(phase-30 S48-0b): jtbl family func_80178D40 — 1/1 blocked-binary siblings banked 2026-08-11 15:54:02 -06:00
Drew T dda26a3ea9 feat(phase-30 S48-0b): jtbl family func_8017AE2C — 2/2 blocked-binary siblings banked 2026-08-11 15:53:52 -06:00
Drew T 98d834ebf7 feat(phase-30 S48-0b): jtbl family func_8012ACE0 — 3/3 blocked-binary siblings banked 2026-08-11 15:53:39 -06:00
Drew T d4c6e3b2fc feat(phase-30 S48-0b): jtbl family func_801549F8 — 3/3 blocked-binary siblings banked 2026-08-11 15:53:22 -06:00
Drew T a1221881a0 feat(phase-30 S48-0b): jtbl family func_80135D20 — 3/3 blocked-binary siblings banked 2026-08-11 15:50:47 -06:00
Drew T aa2088c183 feat(phase-30 S48-0b): jtbl family func_80135888 — 3/3 blocked-binary siblings banked 2026-08-11 15:49:53 -06:00
Drew T 7259ad3d17 feat(phase-30 S48-0b): jtbl family func_80140608 — 3/3 blocked-binary siblings banked 2026-08-11 15:48:28 -06:00
Drew T b80ccb2012 feat(phase-30 S48-0b): jtbl family func_8012AAAC — 3/3 blocked-binary siblings banked 2026-08-11 15:48:09 -06:00
Drew T bda1adcd6e feat(phase-30 S48-0b): jtbl family func_801555F4 — 3/3 blocked-binary siblings banked 2026-08-11 15:47:52 -06:00
Drew T 60a3b3c6e9 feat(phase-30 S48-0b): jtbl family func_80135260 — 3/3 blocked-binary siblings banked 2026-08-11 15:47:05 -06:00
Drew T 2edb23a535 feat(phase-30 S48-0b): jtbl family func_801299C8 — 3/3 blocked-binary siblings banked 2026-08-11 15:45:47 -06:00
Drew T e14e0053c9 feat(phase-30 S48-0b): jtbl family func_80135A4C — 3/3 blocked-binary siblings banked 2026-08-11 15:44:44 -06:00
Drew T 45d08f208f feat(phase-30 S48-0b): jtbl family func_8014032C — 3/3 blocked-binary siblings banked 2026-08-11 15:43:58 -06:00
Drew T 7db73d89a0 feat(phase-30 S48-0b): jtbl family func_8015C32C — 1/3 blocked-binary siblings banked 2026-08-11 15:42:44 -06:00
Drew T b3e379faf4 feat(phase-30 S48-0b): jtbl family func_8015B950 — 1/3 blocked-binary siblings banked 2026-08-11 15:42:15 -06:00
Drew T 332ea1133c feat(phase-30 S48-0b): jtbl family func_8013FFD8 — 3/3 blocked-binary siblings banked 2026-08-11 15:41:12 -06:00
Drew T 44afe27544 feat(phase-30 S48-0b): jtbl family func_80135EB0 — 3/3 blocked-binary siblings banked 2026-08-11 15:40:54 -06:00
Drew T 7e9c6d53a4 feat(phase-30 S48-0b): jtbl family func_80159C84 — 3/3 blocked-binary siblings banked 2026-08-11 15:39:11 -06:00
Drew T 782186e598 feat(phase-30 S48-0b): jtbl family func_80131340 — 3/3 blocked-binary siblings banked 2026-08-11 15:37:38 -06:00
Drew T 9bf7c632e2 feat(phase-30 S48-0b): jtbl family func_801380E0 — 3/3 blocked-binary siblings banked 2026-08-11 15:36:47 -06:00
Drew T bb385208da feat(phase-30 S48-0b): jtbl family func_8013F350 — 3/3 blocked-binary siblings banked 2026-08-11 15:35:52 -06:00
Drew T 30f80d8a18 feat(phase-30 S48-0b): jtbl family func_8015A3C8 — 3/3 blocked-binary siblings banked 2026-08-11 15:35:04 -06:00
Drew T 374791d4be feat(phase-30 S48-0b): jtbl family func_8017A4AC — 2/3 blocked-binary siblings banked 2026-08-11 15:34:14 -06:00
Drew T f6c9867fbc feat(phase-30 S48-0b): jtbl family func_8015AE2C — 1/3 blocked-binary siblings banked 2026-08-11 15:33:32 -06:00
Drew T ec749fa584 fix(phase-30 S48-0b): JTBL_PADS follows its span through jr isolation
The 0b blocker was not "the pads line is left behind" alone — it fails two
different ways, and the second one is silent:

* bare isolate + `make build`: the stale line arms the pads filter on the
  RESIDUAL object, which emits no jump table ->
  `jtbl_rodata_pads: consumed 0 rodata .align(s) but 4 pad spec(s) given` (S47).
* isolate -> jtbl_carve (the jtbl_family_bank path): `set_pads_vars`
  regenerates the block keyed by the CURRENT subseg names, finds no prior spec
  under the new `_jr_<addr>` name, and DROPS the line. cc1's natural `.align 3`
  then pads the span's non-8-aligned interior tables and the image shifts —
  reported only as `built, bytes differ`.

- jr_isolate_all.repoint_overlays_mk: repoint the `build/src/<ov>/<sub>.o:
  JTBL_PADS` target with the `--order` leaf whenever a carve moves; refuse
  loud if the old object still hosts a .rodata piece (R32).
- jtbl_carve.set_pads_vars: second, disagreeing oracle (R34) — refuse when a
  spec would vanish for a subseg no longer in the carve set (rename/merge
  drift), instead of silently emitting a padless object.

R37 probe: func_801789AC -> ov_SC02_037 went `built, bytes differ` -> BANKED
on the whole-binary byte gate. ov_SC02_037's spec is 0,0,0,0 over tables
+0x0,+0x14,+0x34,+0x4c — load-bearing (span start is 4 mod 8).
2026-08-11 15:31:57 -06:00
Drew T d3f3d8ba22 feat(phase-30 S47-W1b/G2): 3 retries banked, 2 new rules; main signed for the first time
W1b — the 3 targets whose agents died on API rate limiting, retried with cookbook §160 in the
prompt: func_801EFBF4 (reach 12), func_801EFDC8 (12), func_8018CC40 (10, jr). 3/3 confirmed by an
independent verifier, all banked, R22 clean-fleet 213 passed / 0 failed of 213.

func_8018CC40 failed the first gate with `too many arguments to function func_80178970` — which its
own crack agent had PREDICTED in its report, naming the §17a-1 remedy. Dropped the draft's
empty-paren externs and cast 6 call sites instead; banked. Read the agent's integration notes
before diagnosing a gate failure — it has already seen the TU.

Cookbook §161a-c (index 469 sections):
 §161a case 0: break; is LOAD-BEARING when a jump table is indexed from zero. The natural
   case 1..5 makes gcc-2.7.2 pick minval=1, emit `addiu $v1,-1`, and shift every table index —
   58 of 77 mismatched on a byte-perfect body. Tell: the table's FIRST entry points at the
   function's own end address. Family-wide (10 members).
 §161b aliasing a parameter into a local can force a SECOND callee-saved register (+8 frame,
   +3 ins) even when uses are mutually exclusive. Suspect it before reaching for register pins.
 §161c loose-prototype engine helpers: don't fight the TU's (void) decl, cast at the call site.

G2 — THE MAIN EXPERIMENT. family_hseq excludes main as "structurally barren — zero h_exact
overlap". True and irrelevant: an h_exact claim guarding an h_seq tool. There is not even a
sig-main target — main had never been signed for this pipeline. Signed it (2,002 fns, seeded from
splat boundaries via corpus.stubs rather than --bootstrap, which glues functions around jtbl
dispatch and would have corrupted the hashes under test).

Result: main is ~85% singleton work, not 100%.
  internal h_seq families (>=2):  207 families / 748 fns / 11,537 ins (13.7%)
  shapes shared with the fleet:   161 fns / 1,346 ins (1.6%)
  genuine x1 remainder:           ~71,034 ins (84.6%)
IMMEDIATELY ACTIONABLE: 44 classes / 151 main functions / 1,239 ins already have a matched exemplar
in the fleet — free propagation, invisible only because main is not in the map.
Long-term: 748 of main's 2,002 functions (37%) are templatable once one exemplar per family is
cracked, which refutes "2,002 independent cracks" as the planning assumption for the 79k-ins tail.

OPEN, deliberately not done unilaterally: adding a sig-main target and dropping main's exclusion
from family_hseq.load() changes a fleet-shared oracle every targeting tool reads. Needs Drew's call.
2026-08-11 12:31:16 -06:00
Drew T cc3cb6e5c6 feat(phase-30 S47-W1d): jr family func_80185D70 banks 9/9 via jtbl_family_bank
The reach-10 jr exemplar cracked in the reach-15 wave; its 9 siblings needed the §53 path rather
than family_sweep (the sweep's interlock refuses has_mid_jr families by design). Per sibling:
jtbl_carve -> make extract -> remap_hseq -> make build, keep iff byte-identical.

Result: 9/9 BANKED. R22 clean-fleet: check-all 213 passed / 0 failed of 213.

WHY 100% HERE VS 56/182 THIS MORNING — the difference was never the code or the tool. This
exemplar banked RAW (so its unit is the raw crack, not an ov077-TU-specific reconciled body, which
is the trap the tool's docstring documents and which historically sent func_80178D40 to 0/4), and
every target binary was already carved. Given those two conditions the §53 path is deterministic.
This morning's 126 failures were 112 isolate-fails in three UNCARVED binaries plus 10 gate-fails
and 4 carve-fails.

Consequence for planning: the 122 jr member-slots still blocked behind the JTBL_PADS repointing in
ov_SC02_037 / ov_SC03_107 / ov_MAIN_012 are not a speculative number — they convert at the rate
just demonstrated once those binaries are carveable. Those are the same three binaries that
absorbed 1,102 of today's propagation banks, so unblocking them pays across every lane.
2026-08-11 12:22:00 -06:00
Drew T 49f50ec7d2 feat(phase-30 S47-W1): reach-15 crack wave — 10 exemplars banked, 191 member-slots unlocked
First wave of the reach-ordered campaign: the 15 highest-reach zero-crack sibling families.
15 agents (size-routed Haiku<=30 / Sonnet 30-120 / Opus>=120), every MATCH claim re-verified by an
independent skeptic that re-ran match_one itself. 22 of 25 agents completed; 3 were rate-limited by
the API and never attempted their targets.

BANKED 10 exemplars (reach in parens), all gate-verified, R22 213 passed / 0 failed of 213:
  func_801EDC80 (28) func_801ED99C (28) func_801EDDAC (28)  md_SC05_023
  func_801EDED4 (24)  md_SC05_023        func_800CB8B4 (24)  md_MAIN_036
  func_801E8254 (14) func_801E7C04 (13)  md_SC04_025
  func_80181070 (12)  ov_SC03_024        func_8017E384 (10)  ov_SC01_005
  func_80185D70 (10, jr) ov_SC04_018 — gate auto-carved it into its own subseg (§53 machinery)

NEAR, not banked: func_801EDC18 (reach 57 — the single largest multiplier on the board) at
closeness 6, and func_8017C294 (reach 16) at closeness 2. Both are grinder/permuter candidates
rather than redraft work.
NOT ATTEMPTED (rate-limited): func_801EFBF4 (12), func_801EFDC8 (12), func_8018CC40 (10) — a clean
retry, since they never ran.

COUNTING (§55b, and the second time today this trap fired): git diff showed 12 INCLUDE_ASM removals
but only 10 are banks. func_80186460 and func_8018651C were RELOCATED into the untracked carve file
ov_SC04_018_jr_80185D70.c, not banked — verified by grepping the new file, where both still carry
INCLUDE_ASM. Any count taken across a carve must come from the stub oracle, never from git diff.

TREE SAFETY: zero agent writes to src/ or config/, despite 5 agents running while the safety
classifier was unavailable. The "drafts live in .run/ only" rule held under exactly the conditions
where it mattered.

gate_stage's --verified-out came back populated for all 6 binaries — this morning's truncation fix
(S47-C) confirmed on live traffic, not just controls.

Idioms harvested for the cookbook: the ASYMMETRIC INDEX RELOAD (a just-stored narrow field read
twice emits reuse-then-reload; the C is deliberately asymmetric — local for use #1, memory re-read
for #2), a stack-layout scheduling rule now byte-proven on a SECOND independent function
(func_8017D364 + func_801EDED4, promoting it from coincidence to rule), and a process finding:
sibling-search keyed on the CALLEE SET should be step 0 of every wave prompt — one grep turned a
126-instruction crack into a copy-edit.
2026-08-11 11:33:42 -06:00
Drew T ba04cc3e0b feat(phase-30 S47-A3): jtbl family func_80180B64 — 2/2 siblings banked
Exemplar ov_SC01_077 @0x80180b64 (matched-ov077), 2 members. Per-sibling whole-binary byte-gate (G3/P9) is the
arbiter: jtbl_carve -> make extract -> remap_hseq -> make build, keep iff byte-identical else
revert. Tally: === func_80180B64: {'BANKED': 2} ===

Committed per family because jtbl_family_bank's per-sibling revert restores from HEAD — an
uncommitted prior family would be lost. Campaign-end R22 verifies the fleet.
2026-08-10 19:35:11 -06:00
Drew T ab9d2f48d5 feat(phase-30 S47-A3): jtbl family func_80183BAC — 5/5 siblings banked
Exemplar ov_SC01_077 @0x80183bac (matched-ov077), 5 members. Per-sibling whole-binary byte-gate (G3/P9) is the
arbiter: jtbl_carve -> make extract -> remap_hseq -> make build, keep iff byte-identical else
revert. Tally: === func_80183BAC: {'BANKED': 5} ===

Committed per family because jtbl_family_bank's per-sibling revert restores from HEAD — an
uncommitted prior family would be lost. Campaign-end R22 verifies the fleet.
2026-08-10 19:32:29 -06:00
Drew T 80459b7720 feat(phase-30 S47-A3): jtbl family func_801789AC — 2/3 siblings banked
Exemplar ov_SC01_077 @0x801789ac (matched-ov077), 3 members. Per-sibling whole-binary byte-gate (G3/P9) is the
arbiter: jtbl_carve -> make extract -> remap_hseq -> make build, keep iff byte-identical else
revert. Tally: === func_801789AC: {'BANKED': 2, 'isolate-fail': 1} ===

Committed per family because jtbl_family_bank's per-sibling revert restores from HEAD — an
uncommitted prior family would be lost. Campaign-end R22 verifies the fleet.
2026-08-10 19:30:02 -06:00
Drew T 4d84052723 feat(phase-30 S47-A3): jtbl family func_8017FEE0 — 1/1 siblings banked
Exemplar ov_SC02_026 @0x8017fee0 (matched), 1 members. Per-sibling whole-binary byte-gate (G3/P9) is the
arbiter: jtbl_carve -> make extract -> remap_hseq -> make build, keep iff byte-identical else
revert. Tally: === func_8017FEE0: {'BANKED': 1} ===

Committed per family because jtbl_family_bank's per-sibling revert restores from HEAD — an
uncommitted prior family would be lost. Campaign-end R22 verifies the fleet.
2026-08-10 19:29:35 -06:00
Drew T 850db32dfc feat(phase-30 S47-A3): jtbl family func_80179B74 — 2/3 siblings banked
Exemplar ov_SC01_077 @0x80179b74 (matched-ov077), 3 members. Per-sibling whole-binary byte-gate (G3/P9) is the
arbiter: jtbl_carve -> make extract -> remap_hseq -> make build, keep iff byte-identical else
revert. Tally: === func_80179B74: {'BANKED': 2, 'isolate-fail': 1} ===

Committed per family because jtbl_family_bank's per-sibling revert restores from HEAD — an
uncommitted prior family would be lost. Campaign-end R22 verifies the fleet.
2026-08-10 19:27:29 -06:00