docs(phase-30): SESSION-28 checkpoint — T2 proven + tooled; fleet 92.71/88.3/78.7, R22 140/140

Records the T2 result as the phase's biggest unblock: the carve-within-a-carve is
byte-neutral (Arm-A does NOT bite), the real constraint is that an address range is
not an optimization region (SS126), and tools/o0_subsplit.py implements the correct
bound. Measured, not assumed, what it unblocks: 275 open stub instances across 18
overlays in the 0x8013B568..0x8013C98C cluster, homed in an -O2 jr split — plus a
note that the T0(f) "2,192 open members" pin is STALE and must be re-derived before
costing (R37).

Also flags my own under-count: the "15 contiguous -O0 fns" came from an asm scan that
cannot see matched functions.
This commit is contained in:
Drew T
2026-07-31 08:44:31 -06:00
parent d2b48b7680
commit 803d73bb97
4 changed files with 551 additions and 526 deletions
-7
View File
@@ -1291,10 +1291,3 @@
{"ts": "2026-07-26 21:01:40", "addr": null, "name": "func_80144B9C", "reach": null, "klass": null, "nins": null, "status": "failed", "closeness": null, "where_stuck": "won't compile standalone (loose-typing / missing decl)", "best_draft": ".run/backlog_drafts/func_80144B9C.c", "binary": "ov_SC07_006", "source": "worker", "residual": null, "passes_tried": null}
{"ts": "2026-07-26 21:04:59", "addr": null, "name": "func_8013DD68", "reach": null, "klass": null, "nins": null, "status": "failed", "closeness": null, "where_stuck": "won't compile standalone (loose-typing / missing decl)", "best_draft": ".run/backlog_drafts/func_8013DD68.c", "binary": "ov_SC07_006", "source": "worker", "residual": null, "passes_tried": null}
{"ts": "2026-07-27 22:33:49", "addr": "0x80186b08", "name": "func_80186B08", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 43, "where_stuck": "residual: 43 mismatch", "best_draft": ".run/backlog_drafts/func_80186B08.c", "binary": "ov_SC02_005", "source": "grinder", "residual": [[0, "27bdffe8 addiu\tsp,sp,-24", "84830070 lh $v1, 0x70($a0)"], [1, "afbf0010 sw\tra,16(sp)", "00000000 nop"], [2, "00002821 move\ta1,zero", "2862000e slti $v0, $v1, 0xE"], [3, "3c070000 lui\ta3,0x0", "10400026 beqz $v0, .L80186BB0"], [4, "24e70000 addiu\ta3,a3,0", "00031040 sll $v0, $v1, 1"], [6, "24060014 li\ta2,20", "00220821 addu $at, $at, $v0"], [7, "8fbf0010 lw\tra,16(sp)", "94245b4c lhu $a0, %lo(D_80195B4C)($at)"], [8, "27bd0018 addiu\tsp,sp,24", "00000000 nop"], [9, "03e00008 jr\tra", "2c820016 sltiu $v0, $a0, 0x16"], [10, "00000000 nop", "14400005 bnez $v0, .L80186B48"], [11, "--", "00000000 nop"], [12, "--", "3c068019 lui $a2, %hi(D_801961E0)"], [13, "--", "24c661e0 addiu $a2, $a2, %lo(D_801961E0)"], [14, "--", "08061ad4 j .L80186B50"], [15, "--", "2484ffea addiu $a0, $a0, -0x16"], [16, "--", "3c068019 lui $a2, %hi(D_801961B8)"], [17, "--", "24c661b8 addiu $a2, $a2, %lo(D_801961B8)"], [18, "--", "00001821 addu $v1, $zero, $zero"], [19, "--", "3087ffff andi $a3, $a0, 0xFFFF"], [20, "--", "00c02021 addu $a0, $a2, $zero"], [21, "--", "84820006 lh $v0, 0x6($a0)"], [22, "--", "00000000 nop"], [23, "--", "1447000e bne $v0, $a3, .L80186BA0"], [24, "--", "000328c0 sll $a1, $v1, 3"]], "passes_tried": null}
{"ts": "2026-07-30 23:08:10", "addr": "0x801846e4", "name": "func_801846E4", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 21, "where_stuck": "residual: 21 mismatch", "best_draft": ".run/backlog_drafts/func_801846E4.c", "binary": "ov_SC03_014", "source": "p30w4", "residual": [[0, "27bdffe0 addiu\tsp,sp,-32", "27bdffd8 addiu $sp, $sp, -0x28"], [1, "00002021 move\ta0,zero", "afbf0024 sw $ra, 0x24($sp)"], [2, "00002821 move\ta1,zero", "afbe0020 sw $fp, 0x20($sp)"], [3, "3c060000 lui\ta2,0x0", "03a0f021 addu $fp, $sp, $zero"], [4, "24c60000 addiu\ta2,a2,0", "afa00010 sw $zero, 0x10($sp)"], [5, "00003821 move\ta3,zero", "00002021 addu $a0, $zero, $zero"], [6, "afbf0018 sw\tra,24(sp)", "00002821 addu $a1, $zero, $zero"], [8, "afa00010 sw\tzero,16(sp)", "24c6ee50 addiu $a2, $a2, %lo(D_800AEE50)"], [9, "8fbf0018 lw\tra,24(sp)", "00003821 addu $a3, $zero, $zero"], [10, "27bd0020 addiu\tsp,sp,32", "0c006aef jal func_8001ABBC"], [11, "03e00008 jr\tra", "00000000 nop"], [12, "00000000 nop", "afc20018 sw $v0, 0x18($fp)"], [13, "--", "8fc20018 lw $v0, 0x18($fp)"], [14, "--", "080611c9 j .L80184724"], [15, "--", "00000000 nop"], [16, "--", "03c0e821 addu $sp, $fp, $zero"], [17, "--", "8fbf0024 lw $ra, 0x24($sp)"], [18, "--", "8fbe0020 lw $fp, 0x20($sp)"], [19, "--", "27bd0028 addiu $sp, $sp, 0x28"], [20, "--", "03e00008 jr $ra"], [21, "--", "00000000 nop"]], "passes_tried": null}
{"ts": "2026-07-31 08:07:34", "addr": "0x8018057C", "name": "func_8018057C", "reach": null, "klass": "JR-ISOLATE-BREAKS-BYTES", "nins": 897, "status": "blocked", "closeness": null, "where_stuck": "S28: SS81 step 1. jr_isolate_all --only reported success (2 jr in 1 -O2 object -> 2 region .c) but post-isolate make build was NOT byte-identical. Aborted before any bank; tree reverted. Log .run/s28_beh_ov_SC01_009_iso.log. NOT diagnosed, NOT a compiler wall.", "best_draft": ".run/beh-gate/ov_SC01_009/func_8018057C.c", "binary": null, "source": "ov_SC01_009", "residual": null, "passes_tried": null}
{"ts": "2026-07-31 08:07:37", "addr": "0x80191C50", "name": "func_80191C50", "reach": null, "klass": "JTBL-CARVE-BREAKS-BYTES", "nins": 710, "status": "blocked", "closeness": null, "where_stuck": "S28: SS81 step 2. isolate CLEAN; jtbl_carve reported success (48-piece carve set, 22 tail pieces) but post-carve build NOT byte-identical. Same stage as the group-B func_8017BEBC failure -> ONE tooling problem. Log .run/s28_beh_ov_SC06_018_carve.log.", "best_draft": ".run/beh-gate/ov_SC06_018/func_80191C50.c", "binary": null, "source": "ov_SC06_018", "residual": null, "passes_tried": null}
{"ts": "2026-07-31 08:07:40", "addr": "0x8017BEBC", "name": "func_8017BEBC", "reach": 13, "klass": "JTBL-CARVE-BREAKS-BYTES", "nins": 952, "status": "blocked", "closeness": null, "where_stuck": "S28 group B: 13 open members (103 already banked in an earlier phase). 3 probes 0 banks: default mode + --raw, cross-address (ov_SC02_015 @0x8017c294) AND same-address (ov_SC04_004 @0x8017bebc). ISOLATING DIAGNOSTIC: jtbl_carve ALONE on ov_SC04_004, no body spliced -> build NOT byte-identical => the failure is the CARVE, not the template. Converges with func_80191C50/ov_SC06_018.", "best_draft": null, "binary": null, "source": "ov_SC01_000", "residual": null, "passes_tried": null}
{"ts": "2026-07-31 08:19:34", "addr": "0x8018057C", "name": "func_8018057C", "reach": null, "klass": "UNREPRODUCIBLE-RETEST-NEUTRAL", "nins": 897, "status": "open", "closeness": null, "where_stuck": "S28 CORRECTION (supersedes the JR-ISOLATE-BREAKS-BYTES entry): re-measured by SHA vs config/check from a clean tree, jr_isolate_all --only IS BYTE-NEUTRAL. The earlier verdict came from a grep-based gate in a driver that did not revert on abort. Original failure NOT reproducible. Next: re-run the full isolate->carve->bank chain with the SS125 instrument rules.", "best_draft": ".run/beh-gate/ov_SC01_009/func_8018057C.c", "binary": null, "source": "ov_SC01_009", "residual": null, "passes_tried": null}
{"ts": "2026-07-31 08:19:36", "addr": "0x80191C50", "name": "func_80191C50", "reach": null, "klass": "JTBL-CARVE-BREAKS-BYTES", "nins": 710, "status": "blocked", "closeness": null, "where_stuck": "S28 CONFIRMED by SHA re-test from a clean tree: baseline OK -> jr_isolate_all NEUTRAL -> jtbl_carve DIVERGED (got 1b1667ea want cbbc4f44), restore verified. This is the ONE real instrument failure of the three. Note: carve WITHOUT the isolate refuses loudly (non-contiguous .rodata carves 0xab9f4/0xaba4c) which is the documented SS81/SS8b step-1 instruction, NOT a divergence.", "best_draft": ".run/beh-gate/ov_SC06_018/func_80191C50.c", "binary": null, "source": "ov_SC06_018", "residual": null, "passes_tried": null}
{"ts": "2026-07-31 08:19:39", "addr": "0x8017BEBC", "name": "func_8017BEBC", "reach": 13, "klass": "BODY-TEMPLATE-GATE-FAIL", "nins": 952, "status": "blocked", "closeness": null, "where_stuck": "S28 CORRECTION (supersedes the JTBL-CARVE-BREAKS-BYTES entry): the carve on ov_SC04_004 is BYTE-NEUTRAL (SHA-verified, body-free). So the 4 gate-fails (default + --raw, cross-address ov_SC02_015 + same-address ov_SC04_004, incl. one from a verified-clean tree) are the TEMPLATED BODY, not the carve. 103 members banked in an earlier phase; these 13 are the residue. Next: diff the remapped body against the sibling TU rather than re-probing the carve.", "best_draft": null, "binary": null, "source": "ov_SC01_000", "residual": null, "passes_tried": null}
+508 -509
View File
File diff suppressed because it is too large Load Diff
+9 -9
View File
@@ -4,16 +4,16 @@
# cross-binary collapsible-byte leverage: docs/duplicates.cross.md.
# THREE progress metrics (all matter — see the labels):
FLEET fn-count byte-ident: 327912 / 353720 = 92.70% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay)
FLEET instr-weighted : 11602433 / 13141652 = 88.3% (shipped .text across main + resident + 138 overlays; the decomp.dev-DISPLAY number)
FLEET distinct-code(uniq): 4435663 / 5634875 = 78.7% (70590/87459 unique fns; the DISTINCT-RE number)
FLEET fn-count byte-ident: 327919 / 353720 = 92.71% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay)
FLEET instr-weighted : 11603334 / 13141652 = 88.3% (shipped .text across main + resident + 138 overlays; the decomp.dev-DISPLAY number)
FLEET distinct-code(uniq): 4436498 / 5634875 = 78.7% (70594/87459 unique fns; the DISTINCT-RE number)
MAIN game-code weighted : 436 / 60201 = 0.7% (INCLUDED in the fleet numbers above since 2026-07-22 — roadmap §1 metrics contract; LINKED-excluding Ghidra sig dated 2026-06-14; caveat is R34: no independent second oracle for a PS-X EXE, NOT drift)
(fleet EXCLUDING main, for continuity with pre-2026-07-22 readings: 11601997 / 13081451 = 88.7%)
(fleet EXCLUDING main, for continuity with pre-2026-07-22 readings: 11602898 / 13081451 = 88.7%)
FLEET REAL substantive : 326057 (of which dedup-shared 240285 via 1904 groups / 240359 instances)
FLEET REAL substantive : 326064 (of which dedup-shared 240285 via 1904 groups / 240359 instances)
FLEET LINKED PsyQ objs : 959
FLEET NON_MATCHING : 7 (0 in any default build — G4)
FLEET INCLUDE_ASM stubs : 25801
FLEET INCLUDE_ASM stubs : 25794
FLEET matchable : 353720
| binary | REAL | shared | LINKED | byte-ident | matchable | byte-ident % |
@@ -56,8 +56,8 @@ FLEET matchable : 353720
| ov_SC03_011 | 2349 | 1743 | 0 | 2355 | 2527 | 93.2% |
| ov_SC03_012 | 2324 | 1743 | 0 | 2325 | 2406 | 96.6% |
| ov_SC03_013 | 2351 | 1743 | 0 | 2351 | 2493 | 94.3% |
| ov_SC03_014 | 2425 | 1771 | 0 | 2425 | 2685 | 90.3% |
| ov_SC03_015 | 2424 | 1771 | 0 | 2424 | 2685 | 90.3% |
| ov_SC03_014 | 2428 | 1771 | 0 | 2428 | 2685 | 90.4% |
| ov_SC03_015 | 2427 | 1771 | 0 | 2427 | 2685 | 90.4% |
| ov_SC03_023 | 2335 | 1743 | 0 | 2336 | 2435 | 95.9% |
| ov_SC03_024 | 2401 | 1748 | 0 | 2408 | 2641 | 91.2% |
| ov_SC03_028 | 2371 | 1743 | 0 | 2375 | 2664 | 89.2% |
@@ -125,7 +125,7 @@ FLEET matchable : 353720
| ov_SC05_007 | 2342 | 1743 | 0 | 2347 | 2482 | 94.6% |
| ov_SC05_008 | 2360 | 1743 | 0 | 2362 | 2543 | 92.9% |
| ov_SC05_009 | 2335 | 1743 | 0 | 2339 | 2438 | 95.9% |
| ov_SC05_010 | 2366 | 1743 | 0 | 2370 | 2588 | 91.6% |
| ov_SC05_010 | 2367 | 1743 | 0 | 2371 | 2588 | 91.6% |
| ov_SC05_011 | 2330 | 1743 | 0 | 2331 | 2409 | 96.8% |
| ov_SC05_017 | 2461 | 1740 | 0 | 2472 | 2842 | 87.0% |
| ov_SC05_018 | 2395 | 1743 | 0 | 2408 | 2673 | 90.1% |
+34 -1
View File
@@ -90,7 +90,7 @@ stub on a named wall/behemoth/queue ledger** — 140/140 byte-identical througho
> Effort **xHigh** (Drew, session start). `make tools-health` RC=0 at session open.
## FLEET — R22 clean-fleet **140 passed / 0 failed** (verified this session, genuinely clean tree)
**92.70% fn-count · 88.3% instr-weighted · 78.7% distinct-code** (70,590 / 87,459 unique fns) ·
**92.71% fn-count · 88.3% instr-weighted · 78.7% distinct-code** (70,594 / 87,459 unique fns) ·
dedup 1904/0 · 0 NON_MATCHING linked. Phase opened at 92.00 / 87.5 / 78.0.
## WHAT LANDED THIS SESSION
@@ -120,7 +120,40 @@ directly: `git checkout -- config/` WITHOUT a re-extract turned a byte-identical
revert · revert-on-abort · verify the baseline against canonical too). Ledger classes corrected to
`UNREPRODUCIBLE-RETEST-NEUTRAL` / `JTBL-CARVE-BREAKS-BYTES` / `BODY-TEMPLATE-GATE-FAIL`.
## ✅ T2 — THE CARVE-WITHIN-A-CARVE IS PROVEN AND TOOLED (Max pass; the phase's biggest unblock)
The roadmap called T2 blocked on the **Arm-A splat `%lo +0x20`** defect. **It is not.** Four probes,
one variable each, SHA vs canonical from a clean tree:
| probe | isolated | result |
|---|---|---|
| 1 | sub-split a jr object at arbitrary addrs, pure `-O2` | **BYTE-NEUTRAL — Arm-A does not bite** |
| 2 | same split, middle region → `-O0` | diverged (2 vars — inconclusive) |
| 3 | probe-1's *name*, `-O0` flag only | diverged ⇒ **the FLAG, not the name** |
| 4 | `-O0` regions cut to EXCLUDE matched bodies | **BYTE-IDENTICAL — route proven** |
**THE LAW (cookbook §126): an address range is not an optimization region.** A range selected by
address contains already-**MATCHED** bodies (`DEFINE_func_*()` from `engine_core.h`, compiled `-O2`);
flipping the FILE recompiles them and they stop matching. Bound = *(range) MINUS (matched bodies)*;
K interleaved matched fns ⇒ K+1 `-O0` sub-regions.
**My own earlier "15 contiguous `-O0` fns, clean cut" was an UNDER-COUNT** — I derived it by scanning
`asm/**/*.s` for the fp-prologue, and a matched fn emits no `.s`, so the scan was blind to exactly
the bodies that break the flip (§124's shape, again).
**Shipped:** `tools/o0_subsplit.py` (derives bounds from SOURCE anchors, K+1 regions, `_o0<letter>`
naming, one-carve-per-region law, reuses `jr_isolate_all` verbatim) · Makefile `-O0` glob widened
`_o0b`→`_o0?` (a missed rule is SILENT — the region would compile `-O2` and every residual be a pure
artifact, §116; `corpus.o0_sources()` re-verified, 137 sources) · **6 fns banked** (ov_SC03_014 +
ov_SC03_015 ×3 each; globals derived from each overlay's OWN asm, 6/6 `--o0` MATCH, 6/6 gated).
The tool reproduced the hand-derived structure **first try** on the untouched sibling overlay.
**WHAT IT UNBLOCKS (measured now, not the stale T0 pin):** the pinned `-O0` cluster
`0x8013B568..0x8013C98C` currently has **275 open stub instances across 18 overlays**, homed in
`<ov>_jr_801380E0.c` — an `-O2` jr split, i.e. exactly this tool's case. *(The T0(f) pin of "2,192
open members" is stale — S27's waves consumed most of it. Re-derive before costing, R37.)*
Plus 24 more draftable stubs in the 4th region. **These were un-bankable at any effort before.**
## ▶ RESUME HERE (nothing blocked except where noted)
0. **[T2 continuation, xHigh] Run `o0_subsplit` across the 18 overlays of the `0x8013B568` cluster**,
gate each, then draft the 275. The route is proven; this is execution.
1. **[REAL, and now correctly scoped] `jtbl_carve` diverges on ov_SC06_018 after a neutral isolate**
— the ONE confirmed instrument failure (blocks the 710-ins `func_80191C50`). Compare against
`ov_SC05_010`, whose full chain succeeded this session; §8e's interior-pad law + `JTBL_PADS` and