feat(phase-30 S39/S4): re-gate probe — A10 broadly stands; 4 banked from the reverted overlays (+146 ins)

Tested whether decision-log A10 ("stored drafts re-gate at 0/958", measured in T1) survives
S38's tool repairs. Three populations, plain re-gate, no draft edits:

  fresh wave-6 drafts (diagnosed "blocked on a class")   4/6
  stored pool, unbiased sample (every 96th of 1,155)     1/12   <- hit was in a REVERTED overlay
  the two REVERTED overlays, targeted                    3/17

A10 BROADLY STANDS. ~8% on the general stored pool is not a harvest, and a 1,155-wide sweep
(= 1,155 whole-binary builds) is not justified by it. Do NOT generalise the fresh-draft rate
(4/6) onto the stored pool -- different populations. The honest rule is narrower and cheaper:

  after a tool repair, re-gate the drafts THAT DEFECT plausibly touched, targeted by its
  blast radius -- not the whole ledger. (R35 applied to the backlog, not just to metrics.)

BANKED (+146 ins): ov_SC06_030 func_80161208 + func_80162CCC; ov_SC07_010 func_801506A4 +
func_8016F0AC. R22 clean-fleet 140 passed, 0 failed of 140 -- which also proves byte-neutral a
fleet-shared engine_core.h edit the bank required (extern s32 func_801506A4(s32,s32) -> the
no-prototype form), reaching all 138 overlays (T2 blast radius).

Fleet 12410129 -> 12410275 instr; distinct +95 / +1 uniq; fn-count +4. audit-digest OK.

Also documents the LEDGER MECHANICS in calibration.md (Drew asked): .run/backlog.jsonl is
append-only and nothing is deleted on bank -- open-ness is DERIVED from corpus.stubs at every
read (load_best drops now-banked rows per-binary, P9) and `make report` runs `backlog.py prune`.
Membership is therefore self-maintaining and currently clean: 863 rows, 0 already-banked, 14
duplicate-addr (was 6,867 rows / 98% banked before Phase-29 compaction). What pruning does NOT
re-validate is the VERDICT on surviving rows -- closeness + residual class are as old as the
tooling that wrote them (Phase 28 found a corrupt one: func_80178004 close=0 -> 91). That is
the staleness that matters, and it is exactly what this probe measured.
This commit is contained in:
Drew T
2026-08-04 22:42:54 -06:00
parent 819a4c5317
commit 7b5eda0424
20 changed files with 863 additions and 729 deletions
+11 -1
View File
@@ -817,7 +817,7 @@
{"ts": "2026-07-14 23:48:17", "addr": null, "name": "func_8017DFAC", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 16, "where_stuck": "residual: 16 mismatch", "best_draft": ".run/backlog_drafts/func_8017DFAC.c", "binary": "ov_SC05_010", "source": "worker", "residual": null, "passes_tried": null}
{"ts": "2026-07-14 23:48:17", "addr": null, "name": "func_80181670", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 311, "where_stuck": "residual: 311 mismatch", "best_draft": ".run/backlog_drafts/func_80181670.c", "binary": "ov_SC05_010", "source": "worker", "residual": null, "passes_tried": null}
{"ts": "2026-07-14 23:49:01", "addr": null, "name": "func_8017D524", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 31, "where_stuck": "residual: 31 mismatch", "best_draft": ".run/backlog_drafts/func_8017D524.c", "binary": "ov_SC06_008", "source": "worker", "residual": null, "passes_tried": null}
{"ts": "2026-07-14 23:49:01", "addr": null, "name": "func_80184D0C", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 47, "where_stuck": "residual: 47 mismatch", "best_draft": ".run/backlog_drafts/func_80184D0C.c", "binary": "ov_SC06_008", "source": "worker", "residual": null, "passes_tried": null}
{"ts": "2026-08-04 22:25:24", "addr": "0x80184d0c", "name": "func_80184D0C", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 4, "where_stuck": "residual: 4 mismatch", "best_draft": ".run/backlog_drafts/func_80184D0C.c", "binary": "ov_SC06_008", "source": "worker", "residual": [[21, "24020002 li\tv0,2", "24020006 addiu $v0, $zero, 0x6"], [22, "a6020006 sh\tv0,6(s0)", "a6020002 sh $v0, 0x2($s0)"], [36, "24020002 li\tv0,2", "24020006 addiu $v0, $zero, 0x6"], [37, "a6020006 sh\tv0,6(s0)", "a6020002 sh $v0, 0x2($s0)"]], "passes_tried": null}
{"ts": "2026-07-14 23:49:25", "addr": null, "name": "func_8017D784", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 31, "where_stuck": "residual: 31 mismatch", "best_draft": ".run/backlog_drafts/func_8017D784.c", "binary": "ov_SC06_013", "source": "worker", "residual": null, "passes_tried": null}
{"ts": "2026-07-14 23:49:53", "addr": null, "name": "func_8017F3B8", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 112, "where_stuck": "residual: 112 mismatch", "best_draft": ".run/backlog_drafts/func_8017F3B8.c", "binary": "ov_SC06_016", "source": "worker", "residual": null, "passes_tried": null}
{"ts": "2026-07-14 23:50:23", "addr": null, "name": "func_80183FEC", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 198, "where_stuck": "residual: 198 mismatch", "best_draft": ".run/backlog_drafts/func_80183FEC.c", "binary": "ov_SC06_022", "source": "worker", "residual": null, "passes_tried": null}
@@ -837,3 +837,13 @@
{"ts": "2026-07-21 13:37:27", "addr": null, "name": "func_8017E230", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 37, "where_stuck": "residual: 37 mismatch", "best_draft": ".run/backlog_drafts/func_8017E230.c", "binary": "ov_SC04_015", "source": "grinder", "residual": [[0, "27bdffe0 addiu\tsp,sp,-32", "27bdffe8 addiu $sp, $sp, -0x18"], [1, "afb00018 sw\ts0,24(sp)", "afb00010 sw $s0, 0x10($sp)"], [2, "00808021 move\ts0,a0", "afbf0014 sw $ra, 0x14($sp)"], [3, "afbf001c sw\tra,28(sp)", "0c04b06e jal func_8012C1B8"], [5, "260500a0 addiu\ta1,s0,160", "14400003 bnez $v0, .L8017E254"], [7, "02002021 move\ta0,s0", "0c04b2b9 jal func_8012CAE4"], [8, "8fbf001c lw\tra,28(sp)", "02002021 addu $a0, $s0, $zero"], [9, "8fb00018 lw\ts0,24(sp)", "8e040020 lw $a0, 0x20($s0)"], [10, "27bd0020 addiu\tsp,sp,32", "3c05801c lui $a1, %hi(D_801C30A4)"], [11, "03e00008 jr\tra", "24a530a4 addiu $a1, $a1, %lo(D_801C30A4)"], [12, "00000000 nop", "0c007085 jal func_8001C214"], [13, "--", "00000000 nop"], [14, "--", "0c0603ff jal func_80180FFC"], [15, "--", "02002021 addu $a0, $s0, $zero"], [16, "--", "02002021 addu $a0, $s0, $zero"], [17, "--", "3c058019 lui $a1, %hi(D_80188324)"], [18, "--", "24a58324 addiu $a1, $a1, %lo(D_80188324)"], [19, "--", "8e030068 lw $v1, 0x68($s0)"], [20, "--", "24020001 addiu $v0, $zero, 0x1"], [21, "--", "a6020002 sh $v0, 0x2($s0)"], [22, "--", "24027fff addiu $v0, $zero, 0x7FFF"], [23, "--", "a6000034 sh $zero, 0x34($s0)"], [24, "--", "0c04ba38 jal func_8012E8E0"], [25, "--", "a462000c sh $v0, 0xC($v1)"]], "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-08-04 22:18:39", "addr": "0x80128cfc", "name": "func_80128CFC", "reach": 1, "klass": "WAVE", "nins": 25, "status": "failed", "closeness": null, "where_stuck": "won't compile standalone (loose-typing / missing decl)", "best_draft": ".run/backlog_drafts/func_80128CFC.c", "binary": "ov_SC01_000", "source": "worker", "residual": null, "passes_tried": null}
{"ts": "2026-08-04 22:19:19", "addr": "0x80132018", "name": "func_80132018", "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_80132018.c", "binary": "ov_SC01_080", "source": "worker", "residual": null, "passes_tried": null}
{"ts": "2026-08-04 22:20:43", "addr": "0x801887d0", "name": "func_801887D0", "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_801887D0.c", "binary": "ov_SC03_001", "source": "worker", "residual": null, "passes_tried": null}
{"ts": "2026-08-04 22:21:23", "addr": "0x80180b0c", "name": "func_80180B0C", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 2, "where_stuck": "residual: 2 mismatch", "best_draft": ".run/backlog_drafts/func_80180B0C.c", "binary": "ov_SC03_013", "source": "worker", "residual": [[19, "24020002 li\tv0,2", "24020003 addiu $v0, $zero, 0x3"], [22, "a6020003 sh\tv0,3(s0)", "a6020002 sh $v0, 0x2($s0)"]], "passes_tried": null}
{"ts": "2026-08-04 22:31:00", "addr": "0x80181164", "name": "func_80181164", "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_80181164.c", "binary": "ov_SC06_030", "source": "worker", "residual": null, "passes_tried": null}
{"ts": "2026-08-04 22:32:20", "addr": "0x8012d664", "name": "func_8012D664", "reach": null, "klass": "schedule", "nins": null, "status": "failed", "closeness": null, "where_stuck": "none \u2014 MATCH", "best_draft": ".run/backlog_drafts/func_8012D664.c", "binary": "ov_SC07_010", "source": "worker", "residual": null, "passes_tried": null}
{"ts": "2026-08-04 22:32:58", "addr": "0x80136c90", "name": "func_80136C90", "reach": null, "klass": "struct", "nins": null, "status": "failed", "closeness": null, "where_stuck": "none \u2014 MATCH (28 ins). 10-byte 1-aligned struct copy (S10{char s[10]}) from global D_801A5A7C into a stack buffer, then ((void(*)(int, void *, int, int, int, int))func_8001534C)(0,&buf,0x78,0x10,0,0). gcc emits the block move as 2 unaligned words (lwl/lwr+swl/swr) + 2 bytes (lb/sb).", "best_draft": ".run/backlog_drafts/func_80136C90.c", "binary": "ov_SC07_010", "source": "worker", "residual": null, "passes_tried": null}
{"ts": "2026-08-04 22:34:16", "addr": "0x801457a4", "name": "func_801457A4", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 74, "where_stuck": "residual: 74 mismatch", "best_draft": ".run/backlog_drafts/func_801457A4.c", "binary": "ov_SC07_010", "source": "worker", "residual": [[0, "2882201b slti\tv0,a0,8219", "27bdfff8 addiu $sp, $sp, -0x8"], [1, "10400014 beqz\tv0,58 <func_801457A4+0x58>", "afbe0000 sw $fp, 0x0($sp)"], [2, "28822015 slti\tv0,a0,8213", "03a0f021 addu $fp, $sp, $zero"], [3, "10400020 beqz\tv0,90 <func_801457A4+0x90>", "afc40008 sw $a0, 0x8($fp)"], [4, "24021077 li\tv0,4215", "8fc20008 lw $v0, 0x8($fp)"], [5, "1082001e beq\ta0,v0,90 <func_801457A4+0x90>", "00000000 nop"], [6, "28821078 slti\tv0,a0,4216", "2843201b slti $v1, $v0, 0x201B"], [7, "10400007 beqz\tv0,3c <func_801457A4+0x3c>", "1060001a beqz $v1, .L8014582C"], [8, "24021010 li\tv0,4112", "00000000 nop"], [9, "1082001a beq\ta0,v0,90 <func_801457A4+0x90>", "28432015 slti $v1, $v0, 0x2015"], [10, "24021052 li\tv0,4178", "1060002d beqz $v1, .L80145884"], [11, "10820019 beq\ta0,v0,94 <func_801457A4+0x94>", "00000000 nop"], [12, "3c02ffff lui\tv0,0xffff", "24031077 addiu $v1, $zero, 0x1077"], [15, "24021094 li\tv0,4244", "28431078 slti $v1, $v0, 0x1078"], [16, "10820013 beq\ta0,v0,90 <func_801457A4+0x90>", "10600009 beqz $v1, .L8014580C"], [17, "24022013 li\tv0,8211", "00000000 nop"], [18, "10820012 beq\ta0,v0,94 <func_801457A4+0x94>", "24031010 addiu $v1, $zero, 0x1010"], [19, "3c02ffff lui\tv0,0xffff", "10430024 beq $v0, $v1, .L80145884"], [21, "00000000 nop", "24031052 addiu $v1, $zero, 0x1052"], [22, "28822081 slti\tv0,a0,8321", "10430021 beq $v0, $v1, .L80145884"], [23, "10400007 beqz\tv0,7c <func_801457A4+0x7c>", "00000000 nop"], [24, "2882207a slti\tv0,a0,8314", "0805162d j .L801458B4"], [25, "1040000a beqz\tv0,90 <func_801457A4+0x90>", "00000000 nop"], [26, "2882205c slti\tv0,a0,8284", "24031094 addiu $v1, $zero, 0x1094"]], "passes_tried": null}
{"ts": "2026-08-04 22:34:55", "addr": "0x80145cec", "name": "func_80145CEC", "reach": null, "klass": "struct", "nins": null, "status": "failed", "closeness": null, "where_stuck": "2 residuals \u2014 (1) target RELOADS global ptr ((s32 *)&D_80126B78) before each of its 5 field accesses (f28/f18/f1a/f1c/f2c); gcc-2.7.2 CSEs the single pointer load in every clean-C form I tried (int-cast, (s8*)/(s32) M2C_FIELD, struct*), keeping ONE load. volatile forces reloads but hoists them + leaves delay-slot nops the target fills (target is NOT volatile). (2) frame 0x20 not 0x18: target reserves an unused 8-byte stack local @0x10 (address-taken local \u2014 reproduced, but every code-free escape optimizes away and a visible escape corrupts the ((int (*)(void))func_80145EE8)(0) arg). Structure/order/values/callees all match; only the alias-driven reload chain + the phantom frame local remain. Family exemplar (~130 overlays).", "best_draft": ".run/backlog_drafts/func_80145CEC.c", "binary": "ov_SC07_010", "source": "worker", "residual": null, "passes_tried": null}
{"ts": "2026-08-04 22:36:13", "addr": "0x8016bcc0", "name": "func_8016BCC0", "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_8016BCC0.c", "binary": "ov_SC07_010", "source": "worker", "residual": null, "passes_tried": null}
+711 -701
View File
File diff suppressed because it is too large Load Diff
+34
View File
@@ -208,3 +208,37 @@ Remaining, named (not silently dropped): 10 `match_one`-MATCH drafts still block
de-macroize; 1 struct-tag redefinition; 1 callee-decl that rtu over-claimed; 2 with no static blocker
whose real cc1 error needs reading). 11 `near` drafts are NOT recovery fuel — they are unfinished
drafts and belong to the permuter/redraft track.
---
## Re-gating STORED drafts after a tool repair (P30 S39, measured)
**Question:** decision-log **A10** byte-proved the stored-draft backlog non-bankable by plain re-gate
(**0/958**, measured in T1). S38 then repaired several tools (the `jr_isolate_all`/`overlay_src_split`
alias-DEFINITION-deletion blindness, `harvest_verify._reload_corpus`). Does A10 still hold?
**Measured, three populations, all plain re-gate (`gate_stage --no-propagate`), no draft edits:**
| population | rate | note |
|---|---|---|
| **fresh wave-6 drafts** (S38-era, diagnosed "blocked on a class") | **4/6** | banked UNCHANGED — the class had already been freed by S38's own tool repairs |
| **stored pool, unbiased sample** (every 96th of 1,155 still-open) | **1/12** | the single hit was in `ov_SC06_030` — a REVERTED overlay |
| **the two REVERTED overlays' stored drafts** (targeted) | **3/17** | `ov_SC06_030` ×1, `ov_SC07_010` ×2 |
**Reading (P9, and the samples are small — treat as an order of magnitude, not a rate to plan on):**
A10 **broadly stands** for the general stored backlog: ~8% is not a harvest, and a 1,155-wide sweep
(1,155 whole-binary builds) is not justified by it. What IS real is that **a stored FAIL verdict is only
as current as the instrument that produced it** — drafts blocked by a defect that was later fixed bank
unchanged, and they concentrate where work was reverted or where a repair specifically applied.
**The rule (R35 applied to the backlog, not just to metrics):** after any tool repair, **re-gate the
drafts that defect plausibly touched** — targeted by the repair's blast radius, not the whole ledger.
Cheap, ~0 agent tokens, and it recovers work already paid for. Do NOT generalise a fresh-draft rate
(4/6) onto the stored pool (1/12); they are different populations.
**Ledger mechanics, for the record:** `.run/backlog.jsonl` is append-only; open-ness is re-derived from
`corpus.stubs` at every read (`load_best` drops now-banked rows per-binary, P9) and `make report` runs
`backlog.py prune`. So MEMBERSHIP is self-maintaining and currently clean (863 rows, 0 already-banked,
14 duplicate-addr; was 6,867 rows / 98% banked before Phase-29 compaction). What pruning does NOT
re-validate is the **verdict** on the rows it keeps — the `closeness` and residual class are as old as
the tooling that wrote them (Phase 28 found an outright corrupt one: `func_80178004` close=0 → 91).
+8 -8
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: 341194 / 353717 = 96.46% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay)
FLEET instr-weighted : 12410129 / 13141652 = 94.4% (shipped .text across main + resident + 138 overlays; the decomp.dev-DISPLAY number)
FLEET distinct-code(uniq): 5028526 / 5634875 = 89.2% (77959/87459 unique fns; the DISTINCT-RE number)
FLEET fn-count byte-ident: 341198 / 353717 = 96.46% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay)
FLEET instr-weighted : 12410275 / 13141652 = 94.4% (shipped .text across main + resident + 138 overlays; the decomp.dev-DISPLAY number)
FLEET distinct-code(uniq): 5028621 / 5634875 = 89.2% (77960/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: 12409693 / 13081451 = 94.9%)
(fleet EXCLUDING main, for continuity with pre-2026-07-22 readings: 12409839 / 13081451 = 94.9%)
FLEET REAL substantive : 339339 (of which dedup-shared 241142 via 1910 groups / 241216 instances)
FLEET REAL substantive : 339343 (of which dedup-shared 241142 via 1910 groups / 241216 instances)
FLEET LINKED PsyQ objs : 959
FLEET NON_MATCHING : 7 (0 in any default build — G4)
FLEET INCLUDE_ASM stubs : 12516
FLEET INCLUDE_ASM stubs : 12512
FLEET matchable : 353717
| binary | REAL | shared | LINKED | byte-ident | matchable | byte-ident % |
@@ -146,7 +146,7 @@ FLEET matchable : 353717
| ov_SC06_025 | 2447 | 1749 | 0 | 2452 | 2572 | 95.3% |
| ov_SC06_027 | 2387 | 1749 | 0 | 2388 | 2408 | 99.2% |
| ov_SC06_029 | 2470 | 1749 | 0 | 2482 | 2662 | 93.2% |
| ov_SC06_030 | 2406 | 1749 | 0 | 2406 | 2456 | 98.0% |
| ov_SC06_030 | 2408 | 1749 | 0 | 2408 | 2456 | 98.0% |
| ov_SC06_032 | 2481 | 1750 | 0 | 2488 | 2658 | 93.6% |
| ov_SC06_033 | 2476 | 1750 | 0 | 2483 | 2631 | 94.4% |
| ov_SC07_000 | 2428 | 1753 | 0 | 2430 | 2521 | 96.4% |
@@ -156,5 +156,5 @@ FLEET matchable : 353717
| ov_SC07_007 | 2333 | 1605 | 0 | 2417 | 2612 | 92.5% |
| ov_SC07_008 | 2381 | 1749 | 0 | 2381 | 2386 | 99.8% |
| ov_SC07_009 | 2393 | 1749 | 0 | 2395 | 2430 | 98.6% |
| ov_SC07_010 | 2314 | 1626 | 0 | 2397 | 2523 | 95.0% |
| ov_SC07_010 | 2316 | 1626 | 0 | 2399 | 2523 | 95.1% |
| ov_SC07_011 | 2335 | 1604 | 0 | 2415 | 2448 | 98.7% |
+1 -1
View File
@@ -332,7 +332,7 @@ Both passed their per-binary/per-draft gate and FAILED the clean-tree rebuild:
| **S3** the whale | ✅ **COMPLETE — 138/138 (S39).** `ov_SC07_010` closed: `o0_subsplit --lo 0x80144B9C --hi 0x801457A4` (1 stub, **0 already-matched in range** ⇒ no §126 island; 3 regions, `_o0c` free) → split byte-neutral → banked via `../shared/func_80144B9C.h` → **R22 140/140 clean-tree**, fleet instr **+770** (12,405,402 → 12,406,172). The S38 cause ("reused an existing `_o0c`") did not recur — `o0_subsplit.free_letters` picks an unused suffix. Two decl conflicts hit on the way, enumerated with `cdecl` in ONE pass (R33) instead of one build at a time: of the header's 94 symbols the §8b carried layer re-declared 3, and 2 conflicted (`D_801274D0` `s32(*)(s32)`, `D_801274CC` `void*` vs header `s32`) — dropped, matching all 137 precedents (0 of them carry either), byte-neutral per §8c. **The 61 SC07 `-O0` members remain NOT attempted.** |
| **S1d** the alias class | **138/138 on family 1**; generalised harvest committed w/ the accounting caveat |
| **S1e** (#11) | ✅ **RESOLVED — THE REGRESSION NEVER HAPPENED (S39).** The `commit:1426` digest was committed **STALE** (generated from a tree still holding work reverted before the commit landed; overstated **+7,879 ins / +130 uniq**, never regenerated), so the next honest digest read as a fall. True delta 843→HEAD: **instr +10,869 · distinct +2,776 ins / +57 uniq — everything ROSE.** HEAD's digest reproduces EXACTLY. **⇒ THE ALIAS LEVER IS UNGATED — scale it (§61 small batches).** Both recorded leads were wrong (R14): `progress.py:423`'s `SIG` feeds **fn-count only**, and "reverted to INCLUDE_ASM" died on one grep (483 removed, **0 added**). Fixes: `stub_addrs` no longer swallows `corpus.stubs` (the bare `except` byte-witnessed reporting **100.00%/100.00%** in a tree with no `asm/`); **NEW `make audit-digest`** in `tools-health` (integers, not percentages — the staleness printed as "94.4%" both sides), negative-control-proven vs the stale digest; the SAME swallow fixed in `cast_call_sites.tu_for` + `reconcile_tu.tu_for`, where it reconciled against the **wrong TU** (the bug that file's own docstring exists to fix). cookbook **§140** · decision-log 2026-08-04. |
| **S4** draft-recovery | 🔄 **IN PROGRESS (S39) — the 6 open wave-6 drafts triaged; 4 BANKED (+1,905 ins), R22 140/140.** `func_801919A0` (ov_SC06_032, 710) · `func_80189030` (ov_SC03_001, 557) · `func_801878E8` (ov_SC04_018, 513) · `func_8018A564` (ov_SC02_027, 125). **⚠️ THE FINDING: all four banked UNCHANGED — no new work on the drafts.** S38 recorded them blocked on a class needing a fix ("cracking this one class frees 6 drafts at once"); they were already freed by S38's own tool repairs (the `jr_isolate_all`/`overlay_src_split` alias-DELETION blindness + `harvest_verify._reload_corpus`). The drafts were correct; the instruments were failing them. **⇒ RE-GATE STORED DRAFTS AFTER ANY TOOL REPAIR before treating a stored verdict as a fact about the code** — this is the 5th "wall" this phase to resolve to our own tooling. Note each bank also did a jtbl carve ⇒ config touched ⇒ fleet blast radius (R22 mandatory, run). **Left on the backlog as GENUINE codegen residuals (not forced, P9):** `func_8017C974` (ov_SC01_077, 947, close=47 REGALLOC-PERM, 12 permuter variants inert) · `func_80188C68` (ov_SC03_124, 551, close=370, no twin anywhere). **Family propagation DONE:** `func_801878E8` **4/4 siblings BANKED** (+2,052 ins, ~0 agent tokens) via `jtbl_family_bank.py` — `family_sweep --hseq` had correctly REFUSED it (§53 interlock: `has_mid_jr` ⇒ jtbl carve route, "a 0% from this path would be a TOOL artifact, not a wall"), and the tool requires a CLEAN tree (it reverts from HEAD per sibling), so the ×1 banks had to commit first. R22 140/140. **Still to do in S4:** the 39 draft-exemplar families (382 members) + the 2 resident stubs with gate-rejected match_one-MATCH drafts. |
| **S4** draft-recovery | 🔄 **IN PROGRESS (S39) — the 6 open wave-6 drafts triaged; 4 BANKED (+1,905 ins), R22 140/140.** `func_801919A0` (ov_SC06_032, 710) · `func_80189030` (ov_SC03_001, 557) · `func_801878E8` (ov_SC04_018, 513) · `func_8018A564` (ov_SC02_027, 125). **⚠️ THE FINDING: all four banked UNCHANGED — no new work on the drafts.** S38 recorded them blocked on a class needing a fix ("cracking this one class frees 6 drafts at once"); they were already freed by S38's own tool repairs (the `jr_isolate_all`/`overlay_src_split` alias-DELETION blindness + `harvest_verify._reload_corpus`). The drafts were correct; the instruments were failing them. **⇒ RE-GATE STORED DRAFTS AFTER ANY TOOL REPAIR before treating a stored verdict as a fact about the code** — this is the 5th "wall" this phase to resolve to our own tooling. Note each bank also did a jtbl carve ⇒ config touched ⇒ fleet blast radius (R22 mandatory, run). **Left on the backlog as GENUINE codegen residuals (not forced, P9):** `func_8017C974` (ov_SC01_077, 947, close=47 REGALLOC-PERM, 12 permuter variants inert) · `func_80188C68` (ov_SC03_124, 551, close=370, no twin anywhere). **Family propagation DONE:** `func_801878E8` **4/4 siblings BANKED** (+2,052 ins, ~0 agent tokens) via `jtbl_family_bank.py` — `family_sweep --hseq` had correctly REFUSED it (§53 interlock: `has_mid_jr` ⇒ jtbl carve route, "a 0% from this path would be a TOOL artifact, not a wall"), and the tool requires a CLEAN tree (it reverts from HEAD per sibling), so the ×1 banks had to commit first. R22 140/140. **Stored-draft re-gate MEASURED (S39, `docs/calibration.md`):** A10's "0/958" was re-tested after S38's tool repairs — **fresh wave-6 drafts 4/6 · unbiased stored sample 1/12 · the two REVERTED overlays 3/17** (+146 ins banked: `ov_SC06_030` func_80161208/func_80162CCC, `ov_SC07_010` func_801506A4/func_8016F0AC; R22 140/140, incl. a fleet-wide `engine_core.h` no-proto arity edit proven byte-neutral). **A10 broadly STANDS** — ~8% on the general pool is not a harvest and a 1,155-wide sweep (1,155 whole-binary builds) is NOT justified. The real rule: **re-gate the drafts a repair plausibly touched, targeted by its blast radius — not the whole ledger.** **Still to do in S4:** the 39 draft-exemplar families (382 members) + the 2 resident stubs with gate-rejected match_one-MATCH drafts. |
| S5 · S6 · S7 | pending |
## ▶ RESUME HERE
+26 -2
View File
@@ -3280,7 +3280,14 @@ DEFINE_func_80161104() /* dedup: shared engine-core @0x80161104 (src/shared) */
DEFINE_func_80161124() /* dedup: shared engine-core @0x80161124 (src/shared) */
INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8015C32C", func_80161208);
extern s32 func_801612B8(void *a0, s32 a1);
extern void func_8016130C(void*, s32);
void aF80161208(void *a0) __asm__("func_80161208");
void aF80161208(void *a0)
{
((s32 (*)(s32, u32))func_8016130C)(a0, func_801612B8(a0, 0));
}
DEFINE_func_80161240() /* dedup: shared engine-core @0x80161240 (src/shared) */
@@ -4200,7 +4207,24 @@ DEFINE_func_80162B1C() /* dedup: shared engine-core @0x80162B1C (src/shared) */
DEFINE_func_80162CC4() /* dedup: shared engine-core @0x80162CC4 (src/shared) */
INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8015C32C", func_80162CCC);
extern void func_80016714(void *a0, s32 a1);
void aF80162CCC(u8 *a0) __asm__("func_80162CCC");
void aF80162CCC(u8 *a0)
{
u8 *s0 = a0;
u16 *p = *(u16 **)(s0 + 0x20);
if (p != 0) {
s32 a1;
if (*p == 1) {
a1 = 0x84;
} else {
a1 = 0x38;
}
func_80016714(p, a1);
}
func_80016714(s0, 0x68);
}
DEFINE_func_80162D28() /* dedup: shared engine-core @0x80162D28 (src/shared) */
+47 -1
View File
@@ -3515,7 +3515,53 @@ DEFINE_func_80150528() /* dedup: shared engine-core @0x80150528 (src/shared) */
DEFINE_func_801505FC() /* dedup: shared engine-core @0x801505fc (src/shared) */
INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_801457A4", func_801506A4);
extern void func_80147324(s32 a0);
extern void func_8014ACE8(void *a0, s32 a1, s32 a2);
extern void func_8014ADA8(s32 a0, s32 a1);
extern void func_8014BB24(s32 a0, s32 a1, s32 a2);
s32 aF801506A4(s32 arg0, s32 arg1) __asm__("func_801506A4");
s32 aF801506A4(s32 arg0, s32 arg1)
{
extern s16 D_80078EB4;
extern void func_80150820(s32, s32);
extern void func_8015086C(int);
extern unsigned short D_80183C20[];
extern unsigned short D_80183C28[];
extern unsigned short D_80183C30[];
int mode;
mode = ((struct Ent_801506A4 *)arg1)->unk0;
((struct Ent_801506A4 *)arg1)->unk5C |= 1;
switch (mode) {
case 0x31:
((void(*)(int))func_80147324)(0x452);
((void(*)(int, unsigned))func_8014ADA8)(((int)arg0), D_80183C20[((struct Ent_801506A4 *)arg1)->unk70]);
((void(*)(int, int, unsigned))func_8014ACE8)(((int)arg0), 3, D_80183C20[((struct Ent_801506A4 *)arg1)->unk70]);
break;
case 0x32:
if ((*(unsigned short*)&(*(u16 *)&D_80078EB4)) != 0) {
((void(*)(int))func_80147324)(0x452);
((void(*)(int, unsigned, int))func_8014BB24)(((int)arg0), D_80183C28[((struct Ent_801506A4 *)arg1)->unk70], 1);
((void(*)(int, int, unsigned))func_8014ACE8)(((int)arg0), 2, D_80183C28[((struct Ent_801506A4 *)arg1)->unk70]);
}
break;
case 0x33:
((void(*)(int))func_80147324)(0x452);
((void (*)(int, unsigned))func_80150820)(((int)arg0), D_80183C30[((struct Ent_801506A4 *)arg1)->unk70]);
break;
case 0xC5:
case 0x27B:
((void(*)(int))func_80147324)(0x452);
func_8015086C(((int)arg0));
break;
}
}
DEFINE_func_80150820() /* dedup: shared engine-core @0x80150820 (src/shared) */
+1 -1
View File
@@ -1081,7 +1081,7 @@ extern s32 func_80150460(s32 a, s32 b);
extern s32 func_80150528(void *a0, void *a1, void *a2);
extern void func_801504D8(u16 *a0);
extern s32 func_80150528(void *arg0, void *arg1, void *arg2);
extern s32 func_801506A4(s32 a0, s32 a1);
extern s32 func_801506A4();
extern s32 func_801505FC(s32 a0);
extern void func_80150820(s32 a0, s32 a1);
extern void func_8015086C(int param_1);
+1 -1
View File
@@ -969,7 +969,7 @@ extern s32 func_80150460(s32 a, s32 b);
extern s32 func_80150528(void *a0, void *a1, void *a2);
extern void func_801504D8(u16 *a0);
extern s32 func_80150528(void *arg0, void *arg1, void *arg2);
extern s32 func_801506A4(s32 a0, s32 a1);
extern s32 func_801506A4();
extern s32 func_801505FC(s32 a0);
extern void func_80150820(s32 a0, s32 a1);
extern void func_8015086C(int param_1);
+1 -1
View File
@@ -969,7 +969,7 @@ extern s32 func_80150460(s32 a, s32 b);
extern s32 func_80150528(void *a0, void *a1, void *a2);
extern void func_801504D8(u16 *a0);
extern s32 func_80150528(void *arg0, void *arg1, void *arg2);
extern s32 func_801506A4(s32 a0, s32 a1);
extern s32 func_801506A4();
extern s32 func_801505FC(s32 a0);
extern void func_80150820(s32 a0, s32 a1);
extern void func_8015086C(int param_1);
+1 -1
View File
@@ -969,7 +969,7 @@ extern s32 func_80150460(s32 a, s32 b);
extern s32 func_80150528(void *a0, void *a1, void *a2);
extern void func_801504D8(u16 *a0);
extern s32 func_80150528(void *arg0, void *arg1, void *arg2);
extern s32 func_801506A4(s32 a0, s32 a1);
extern s32 func_801506A4();
extern s32 func_801505FC(s32 a0);
extern void func_80150820(s32 a0, s32 a1);
extern void func_8015086C(int param_1);
+1 -1
View File
@@ -969,7 +969,7 @@ extern s32 func_80150460(s32 a, s32 b);
extern s32 func_80150528(void *a0, void *a1, void *a2);
extern void func_801504D8(u16 *a0);
extern s32 func_80150528(void *arg0, void *arg1, void *arg2);
extern s32 func_801506A4(s32 a0, s32 a1);
extern s32 func_801506A4();
extern s32 func_801505FC(s32 a0);
extern void func_80150820(s32 a0, s32 a1);
extern void func_8015086C(int param_1);
+1 -1
View File
@@ -969,7 +969,7 @@ extern s32 func_80150460(s32 a, s32 b);
extern s32 func_80150528(void *a0, void *a1, void *a2);
extern void func_801504D8(u16 *a0);
extern s32 func_80150528(void *arg0, void *arg1, void *arg2);
extern s32 func_801506A4(s32 a0, s32 a1);
extern s32 func_801506A4();
extern s32 func_801505FC(s32 a0);
extern void func_80150820(s32 a0, s32 a1);
extern void func_8015086C(int param_1);
+2 -2
View File
@@ -952,7 +952,7 @@ extern s32 func_80150460(s32 a, s32 b);
extern s32 func_80150528(void *a0, void *a1, void *a2);
extern void func_801504D8(u16 *a0);
extern s32 func_80150528(void *arg0, void *arg1, void *arg2);
extern s32 func_801506A4(s32 a0, s32 a1);
extern s32 func_801506A4();
extern s32 func_801505FC(s32 a0);
extern void func_80150820(s32 a0, s32 a1);
extern void func_8015086C(int param_1);
@@ -4822,7 +4822,7 @@ s32 func_80163764(s32 a0)
{
extern u8 D_801202A0[];
extern s32 func_8014C278(s32 a0, s32 a1, s32 a2);
extern s32 func_801506A4(s32 a0, s32 a1);
extern s32 func_801506A4();
u32 i;
u16 *p;
s32 v;
+12 -2
View File
@@ -962,7 +962,7 @@ extern s32 func_80150460(s32 a, s32 b);
extern s32 func_80150528(void *a0, void *a1, void *a2);
extern void func_801504D8(u16 *a0);
extern s32 func_80150528(void *arg0, void *arg1, void *arg2);
extern s32 func_801506A4(s32 a0, s32 a1);
extern s32 func_801506A4();
extern s32 func_801505FC(s32 a0);
extern void func_80150820(s32 a0, s32 a1);
extern void func_8015086C(int param_1);
@@ -4159,7 +4159,17 @@ DEFINE_func_8016EFC8() /* dedup: shared engine-core @0x8016EFC8 (src/shared) */
DEFINE_func_8016F094() /* dedup: shared engine-core @0x8016f094 (src/shared) */
INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8016AE5C", func_8016F0AC);
extern void func_8016F0E4(void);
extern void func_80165770(void);
void aF8016F0AC(void) __asm__("func_8016F0AC");
void aF8016F0AC(void)
{
extern s32 D_80126B58;
((void (*)(void *))func_8016F0E4)(&(*(u8 *)&D_80126B58));
((void (*)(void *))func_80165770)(&(*(u8 *)&D_80126B58));
}
/* RECONCILE NOTE (uc3) — the body is byte-unchanged from uc2; only the declaration
+1 -1
View File
@@ -963,7 +963,7 @@ extern s32 func_80150460(s32 a, s32 b);
extern s32 func_80150528(void *a0, void *a1, void *a2);
extern void func_801504D8(u16 *a0);
extern s32 func_80150528(void *arg0, void *arg1, void *arg2);
extern s32 func_801506A4(s32 a0, s32 a1);
extern s32 func_801506A4();
extern s32 func_801505FC(s32 a0);
extern void func_80150820(s32 a0, s32 a1);
extern void func_8015086C(int param_1);
+1 -1
View File
@@ -969,7 +969,7 @@ extern s32 func_80150460(s32 a, s32 b);
extern s32 func_80150528(void *a0, void *a1, void *a2);
extern void func_801504D8(u16 *a0);
extern s32 func_80150528(void *arg0, void *arg1, void *arg2);
extern s32 func_801506A4(s32 a0, s32 a1);
extern s32 func_801506A4();
extern s32 func_801505FC(s32 a0);
extern void func_80150820(s32 a0, s32 a1);
extern void func_8015086C(int param_1);
+1 -1
View File
@@ -969,7 +969,7 @@ extern s32 func_80150460(s32 a, s32 b);
extern s32 func_80150528(void *a0, void *a1, void *a2);
extern void func_801504D8(u16 *a0);
extern s32 func_80150528(void *arg0, void *arg1, void *arg2);
extern s32 func_801506A4(s32 a0, s32 a1);
extern s32 func_801506A4();
extern s32 func_801505FC(s32 a0);
extern void func_80150820(s32 a0, s32 a1);
extern void func_8015086C(int param_1);
+1 -1
View File
@@ -971,7 +971,7 @@ extern s32 func_80150460(s32 a, s32 b);
extern s32 func_80150528(void *a0, void *a1, void *a2);
extern void func_801504D8(u16 *a0);
extern s32 func_80150528(void *arg0, void *arg1, void *arg2);
extern s32 func_801506A4(s32 a0, s32 a1);
extern s32 func_801506A4();
extern s32 func_801505FC(s32 a0);
extern void func_80150820(s32 a0, s32 a1);
extern void func_8015086C(int param_1);
+1 -1
View File
@@ -15643,7 +15643,7 @@
#define DEFINE_func_801505FC() \
extern u8 D_801202A0[]; \
extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); \
extern s32 func_801506A4(s32 a0, s32 a1); \
extern s32 func_801506A4(); \
s32 func_801505FC(s32 a0) { \
u8 *p = D_801202A0; \
if (p < D_801202A0 + 0x6480) { \