resident-harvest-iterate workflow: 13 agents iterated the 54 hard functions using tools/match_one.py (per-function compile+diff loop), self-correcting against real feedback. Agents reported 34 match_one-MATCHes; the whole-build byte-gate confirmed 13 (func_800D23D0 D1754 CEF5C CF584 D17B8 D2E6C D0588 D2CA8 CFC5C CF3B8 CF104 D20C0 D1BF8). The ~21 standalone-MATCH-but-gate-FAIL are TU-level extern-type conflicts (a draft declares a shared symbol's type to suit its own call site, conflicting with another function's declaration) -> recoverable via a unified extern header (next). Expert idioms found: struct-copy prologue, void-dispatcher-is-actually-s32-returning, *10 -> 2x+8x decomposition, polarity flips. REAL 102 (71.72% byte-identical); both binaries clean. 41 stubs remain (extern-conflict casualties + documented cross-jump/ regalloc residuals = decomp-permuter / cookbook §3a territory, honest P9 deferrals).
2.1 KiB
BFM matching progress (generated by tools/progress.py — authoritative)
REAL substantive matches : 102 <- the Gen1-exit >=25 bar counts THIS LINKED real PsyQ objects : 0 <- byte-identical via linked SDK objects NON_MATCHING (near-miss) : 0 splat-auto empty no-ops : 2 INCLUDE_ASM stubs : 41 data blobs (excluded) : 0
matchable functions : 145 REAL / matchable : 102 / 145 = 70.34% byte-identical/ matchable: 104 / 145 = 71.72% (REAL+LINKED+empties)
LINKED subsegs: (0 fns) REAL matches: DsMix func_800CEDFC func_800CEE40 func_800CEE84 func_800CEF04 func_800CEF34 func_800CEF5C func_800CEFB0 func_800CF104 func_800CF370 func_800CF398 func_800CF3B8 func_800CF47C func_800CF4D4 func_800CF510 func_800CF584 func_800CF5D4 func_800CF714 func_800CF764 func_800CF7A4 func_800CF804 func_800CF818 func_800CF82C func_800CF840 func_800CF854 func_800CF864 func_800CF8B4 func_800CF8CC func_800CF94C func_800CFBBC func_800CFBCC func_800CFBF8 func_800CFC5C func_800CFD68 func_800CFDA4 func_800CFDE8 func_800D02C0 func_800D0588 func_800D0630 func_800D065C func_800D0694 func_800D06CC func_800D0C48 func_800D0C74 func_800D0CA0 func_800D0F0C func_800D0F4C func_800D0FE0 func_800D1000 func_800D1054 func_800D1078 func_800D109C func_800D10C8 func_800D1714 func_800D1724 func_800D1734 func_800D1744 func_800D1754 func_800D17B8 func_800D18DC func_800D1938 func_800D19DC func_800D1B10 func_800D1BF8 func_800D1D24 func_800D1D94 func_800D1F58 func_800D1F90 func_800D20C0 func_800D222C func_800D22E4 func_800D2318 func_800D23D0 func_800D2468 func_800D25FC func_800D2624 func_800D2CA8 func_800D2DAC func_800D2DFC func_800D2E6C func_800D2EE8 func_800D2F0C func_800D2F48 func_800D2F8C func_800D2FB0 func_800D2FEC func_800D30A8 func_800D30C8 func_800D3104 func_800D3120 func_800D319C func_800D31C0 func_800D31FC func_800D3238 func_800D3274 func_800D32D4 func_800D3328 func_800D3348 func_800D3384 func_800D3398 func_800D33B8 func_800D33E0 NON_MATCHING:
build SHA1: 8e17e02ff8954d07c979449198f7e1645046b353 (byte-identical)
empties audit: 2/2 genuine jr;nop (all clean)