Files
BFM-decomp/docs/progress.fleet.md
T
Drew T 2cc49d0310 feat(phase-29): SESSION-21 — func_8012AAAC banked via the §81 carve chain (R22 140/140)
The first jtbl-routed bank of the session, and it validates the whole chain end-to-end:
 1. jtbl_carve SPLIT-TABLE repair (this session): jtbl_801D7FB0 28 -> 50 words (112 -> 200 B),
    authorized by func_8012AAAC's own `sltiu 0x32`.
 2. NEW FIX — SINGLE-TABLE PREDECESSOR: adding a second table to a subseg whose existing carve was
    single-table lost the FIRST table's start entirely (new_offs has only the new one;
    overlay_jtbl_addrs cannot see the old one because its owner is banked and extract PRUNED the
    stub .s; and single-table carves persist no tables= to rebase). The span then failed its own
    validator with "first must equal the span start" — the invariant naming the missing entry.
    A single-table carve spans exactly its one table, so ITS SPAN START *IS* THAT TABLE'S START:
    inference, not persistence, so it also works for spans carved before tables= existed. This is
    the RECOVERABLE half of the documented func_8013F350 lesson (that one was a pre-§8e merged
    DOUBLE — two tables, no record, genuinely unrecoverable).
    Result: ov_SC01_077_a JTBL_PADS := 0,0 tables=+0x0,+0x14. Carve alone byte-gated BYTE-IDENTICAL
    BEFORE the bank was attempted (§81 step 2).
 3. ARITY axis, all-or-nothing: 1,244 decl sites / 1,240 files `(void)` -> `()` + an R32 completion
    assertion (old-form remaining: 0).
 4. ONE call-site cast: the definition lands at line 811 and a 0-arg call sits at 822, so gcc sees
    the prototype and rejects it — `((void (*)(void))func_8012AAAC)()` (§17a-1; gcc folds the cast
    of a known symbol to a direct jal). Only 1 of the 1,386 fleet-wide 0-arg call sites needed it:
    the others see only the `extern ()` decl, which permits a 0-arg call.

DIAGNOSIS NOTE: the failure read CC1-FAIL with only a warning visible under make. Running the
pipeline stage-by-stage (cpp | cc1 | maspsx | jtbl_rodata_pads | as) put it on cc1 rc=33, and cc1's
own stderr named it exactly: "too few arguments to function func_8012AAAC" at line 994. Isolating
the stage was what turned an opaque Error 33 into a one-line fix.

R22 clean-fleet: extract-all 139/139, check-all 140 passed / 0 failed.
family_sweep correctly REFUSED this exemplar (§53: a jr-family must route through
jtbl_family_bank.py; "a 0% from this path would be a TOOL artifact, not a wall") — the ×137 member
sweep is the next step and needs a clean tree, which this commit provides.
2026-07-27 10:38:10 -06:00

9.1 KiB
Raw Blame History

BFM FLEET matching progress (generated by tools/progress.py --fleet — authoritative)

140 binaries: main + resident + 138 location overlays. DETERMINISTIC,

source-derived (committed src/*.c + config/dedup.us.yaml). Live byte gate: make check-all;

cross-binary collapsible-byte leverage: docs/duplicates.cross.md.

THREE progress metrics (all matter — see the labels):

FLEET fn-count byte-ident: 316937 / 353720 = 89.60% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay) FLEET instr-weighted : 10759553 / 13141652 = 81.9% (shipped .text across main + resident + 138 overlays; the decomp.dev-DISPLAY number) FLEET distinct-code(uniq): 3902652 / 5634875 = 69.3% (65203/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: 10759117 / 13081451 = 82.2%)

FLEET REAL substantive : 315082 (of which dedup-shared 239530 via 1886 groups / 239604 instances) FLEET LINKED PsyQ objs : 959 FLEET NON_MATCHING : 7 (0 in any default build — G4) FLEET INCLUDE_ASM stubs : 36776 FLEET matchable : 353720

binary REAL shared LINKED byte-ident matchable byte-ident %
main 54 2 959 1055 2096 50.3%
resident 129 0 0 131 145 90.3%
ov_SC01_000 2257 1742 0 2257 2403 93.9%
ov_SC01_001 2262 1743 0 2264 2466 91.8%
ov_SC01_004 2252 1734 0 2253 2414 93.3%
ov_SC01_005 2282 1757 0 2282 2503 91.2%
ov_SC01_006 2282 1757 0 2282 2503 91.2%
ov_SC01_008 2252 1734 0 2254 2426 92.9%
ov_SC01_009 2278 1735 0 2279 2507 90.9%
ov_SC01_074 2256 1735 0 2258 2425 93.1%
ov_SC01_077 2437 1702 0 2439 2585 94.4%
ov_SC01_080 2294 1738 0 2294 2512 91.3%
ov_SC01_084 2301 1738 0 2306 2579 89.4%
ov_SC02_000 2354 1773 0 2354 2683 87.7%
ov_SC02_003 2354 1773 0 2354 2683 87.7%
ov_SC02_004 2260 1738 0 2260 2401 94.1%
ov_SC02_005 2368 1734 0 2378 2927 81.2%
ov_SC02_011 2381 1741 0 2392 2893 82.7%
ov_SC02_015 2262 1740 0 2262 2414 93.7%
ov_SC02_016 2296 1740 0 2299 2545 90.3%
ov_SC02_017 2339 1740 0 2347 2732 85.9%
ov_SC02_021 2268 1740 0 2268 2437 93.1%
ov_SC02_026 2283 1738 0 2289 2572 89.0%
ov_SC02_027 2306 1738 0 2315 2692 86.0%
ov_SC02_028 2308 1738 0 2318 2701 85.8%
ov_SC02_031 2294 1739 0 2299 2562 89.7%
ov_SC02_035 2269 1738 0 2272 2520 90.2%
ov_SC02_039 2253 1738 0 2253 2416 93.3%
ov_SC02_041 2291 1738 0 2294 2561 89.6%
ov_SC03_001 2388 1739 0 2405 2869 83.8%
ov_SC03_002 2314 1743 0 2329 2631 88.5%
ov_SC03_003 2263 1738 0 2264 2423 93.4%
ov_SC03_006 2330 1744 0 2339 2767 84.5%
ov_SC03_007 2308 1738 0 2312 2623 88.1%
ov_SC03_010 2271 1738 0 2271 2471 91.9%
ov_SC03_011 2277 1738 0 2283 2527 90.3%
ov_SC03_012 2255 1738 0 2256 2406 93.8%
ov_SC03_013 2276 1738 0 2276 2493 91.3%
ov_SC03_014 2334 1763 0 2334 2685 86.9%
ov_SC03_015 2334 1763 0 2334 2685 86.9%
ov_SC03_023 2262 1738 0 2263 2435 92.9%
ov_SC03_024 2322 1743 0 2329 2641 88.2%
ov_SC03_028 2302 1738 0 2306 2664 86.6%
ov_SC03_029 2304 1740 0 2314 2644 87.5%
ov_SC03_030 2277 1743 0 2279 2495 91.3%
ov_SC03_031 2273 1738 0 2276 2514 90.5%
ov_SC03_089 2290 1738 0 2297 2581 89.0%
ov_SC03_090 2291 1738 0 2299 2625 87.6%
ov_SC03_091 2294 1738 0 2302 2640 87.2%
ov_SC03_092 2304 1738 0 2316 2587 89.5%
ov_SC03_093 2280 1738 0 2284 2563 89.1%
ov_SC03_094 2275 1738 0 2281 2577 88.5%
ov_SC03_095 2265 1738 0 2268 2474 91.7%
ov_SC03_096 2265 1738 0 2268 2465 92.0%
ov_SC03_097 2295 1738 0 2302 2603 88.4%
ov_SC03_098 2273 1738 0 2276 2541 89.6%
ov_SC03_099 2266 1738 0 2269 2504 90.6%
ov_SC03_100 2276 1738 0 2280 2539 89.8%
ov_SC03_101 2276 1738 0 2280 2528 90.2%
ov_SC03_102 2269 1738 0 2272 2492 91.2%
ov_SC03_103 2272 1740 0 2275 2510 90.6%
ov_SC03_104 2298 1738 0 2305 2616 88.1%
ov_SC03_105 2289 1738 0 2296 2597 88.4%
ov_SC03_108 2257 1738 0 2257 2443 92.4%
ov_SC03_109 2260 1738 0 2262 2424 93.3%
ov_SC03_110 2264 1738 0 2264 2468 91.7%
ov_SC03_111 2275 1738 0 2278 2510 90.8%
ov_SC03_112 2271 1740 0 2273 2526 90.0%
ov_SC03_113 2264 1740 0 2267 2468 91.9%
ov_SC03_114 2253 1738 0 2255 2415 93.4%
ov_SC03_115 2270 1738 0 2272 2472 91.9%
ov_SC03_116 2261 1738 0 2264 2438 92.9%
ov_SC03_117 2288 1738 0 2294 2557 89.7%
ov_SC03_118 2334 1762 0 2335 2685 87.0%
ov_SC03_119 2333 1762 0 2334 2685 86.9%
ov_SC03_121 2268 1738 0 2271 2459 92.4%
ov_SC03_124 2346 1734 0 2366 2741 86.3%
ov_SC03_125 2302 1738 0 2314 2588 89.4%
ov_SC03_126 2265 1740 0 2265 2423 93.5%
ov_SC04_000 2281 1742 0 2290 2546 89.9%
ov_SC04_002 2300 1738 0 2304 2636 87.4%
ov_SC04_003 2276 1738 0 2280 2502 91.1%
ov_SC04_004 2285 1738 0 2287 2558 89.4%
ov_SC04_005 2295 1738 0 2301 2612 88.1%
ov_SC04_006 2265 1738 0 2267 2454 92.4%
ov_SC04_007 2289 1738 0 2293 2569 89.3%
ov_SC04_008 2257 1738 0 2257 2415 93.5%
ov_SC04_009 2272 1738 0 2275 2441 93.2%
ov_SC04_010 2262 1738 0 2263 2419 93.6%
ov_SC04_011 2320 1738 0 2326 2803 83.0%
ov_SC04_012 2259 1738 0 2260 2420 93.4%
ov_SC04_015 2324 1739 0 2335 2611 89.4%
ov_SC04_016 2262 1738 0 2264 2440 92.8%
ov_SC04_018 2372 1773 0 2372 2857 83.0%
ov_SC04_019 2378 1773 0 2378 2857 83.2%
ov_SC04_020 2289 1738 0 2301 2567 89.6%
ov_SC04_021 2266 1740 0 2266 2423 93.5%
ov_SC05_000 2263 1742 0 2266 2422 93.6%
ov_SC05_001 2285 1738 0 2290 2574 89.0%
ov_SC05_002 2268 1738 0 2271 2442 93.0%
ov_SC05_003 2265 1738 0 2266 2481 91.3%
ov_SC05_004 2261 1738 0 2263 2464 91.8%
ov_SC05_005 2266 1738 0 2267 2491 91.0%
ov_SC05_006 2259 1738 0 2259 2430 93.0%
ov_SC05_007 2269 1738 0 2274 2482 91.6%
ov_SC05_008 2286 1738 0 2288 2543 90.0%
ov_SC05_009 2265 1738 0 2269 2438 93.1%
ov_SC05_010 2292 1738 0 2296 2588 88.7%
ov_SC05_011 2261 1738 0 2262 2409 93.9%
ov_SC05_017 2368 1735 0 2379 2842 83.7%
ov_SC05_018 2315 1738 0 2328 2673 87.1%
ov_SC05_019 2266 1740 0 2266 2423 93.5%
ov_SC06_000 2330 1747 0 2333 2691 86.7%
ov_SC06_006 2282 1738 0 2283 2511 90.9%
ov_SC06_008 2302 1740 0 2308 2542 90.8%
ov_SC06_010 2282 1738 0 2287 2517 90.9%
ov_SC06_011 2270 1738 0 2274 2468 92.1%
ov_SC06_013 2264 1738 0 2265 2425 93.4%
ov_SC06_014 2270 1738 0 2272 2453 92.6%
ov_SC06_015 2267 1738 0 2267 2421 93.6%
ov_SC06_016 2285 1738 0 2287 2549 89.7%
ov_SC06_018 2296 1740 0 2303 2665 86.4%
ov_SC06_020 2274 1740 0 2275 2518 90.3%
ov_SC06_022 2293 1738 0 2301 2642 87.1%
ov_SC06_024 2303 1738 0 2309 2667 86.6%
ov_SC06_025 2287 1738 0 2292 2572 89.1%
ov_SC06_027 2252 1738 0 2253 2408 93.6%
ov_SC06_029 2313 1738 0 2325 2662 87.3%
ov_SC06_030 2266 1738 0 2266 2456 92.3%
ov_SC06_032 2288 1739 0 2295 2658 86.3%
ov_SC06_033 2290 1739 0 2297 2631 87.3%
ov_SC07_000 2281 1742 0 2283 2521 90.6%
ov_SC07_001 2265 1738 0 2267 2454 92.4%
ov_SC07_002 2293 1738 0 2297 2579 89.1%
ov_SC07_006 2066 1555 0 2146 2456 87.4%
ov_SC07_007 2060 1586 0 2144 2613 82.1%
ov_SC07_008 2250 1738 0 2250 2386 94.3%
ov_SC07_009 2259 1738 0 2261 2430 93.0%
ov_SC07_010 2092 1608 0 2175 2524 86.2%
ov_SC07_011 2060 1585 0 2140 2449 87.4%