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

161 lines
9.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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% |