Files
BFM-decomp/docs/progress.fleet.md
T
Drew T c2566010f2 feat(phase-29): --allow-pins sweep — 268 banked; pin templatability is PER-FAMILY (cookbook §86)
The §42e pin guard refuses any family whose exemplar carries `register __asm__` pins: 680 of the top
8 FREE families' 1,083 members (63%) were skipped BEFORE any gate ran. Re-run with --allow-pins,
letting the byte-gate arbitrate (G3/P9): 268 banked, and ZERO cc1 crashes across hundreds of pinned
compiles — confirming the SIGABRT the guard was written against was Phase 27's extract_unit
macro-drop, NOT a compiler limit. The guard is protecting against a bug that no longer exists.

THE LAW (§86): templatability is a PER-FAMILY property, not a per-member rate.
  func_801749C8  137/137 = 100%      func_80133AB0    4/136
  func_8014C6F4  137/137 = 100%      func_8014CF04    0/137
                                     func_80143D28    0/136
Two families at 100%, three at ~1%. MY REPORTED "37%" WAS AN ARTEFACT: a 19-member sample that
straddled families reported their AVERAGE and hid the bimodality. Sample PER-FAMILY, never per-pool.

=> PROCEDURE, now the default: probe ONE member per pinned family; bank -> sweep the family; fail ->
skip entirely. The blanket sweep spent ~412 futile gate cycles (60% of the run) on three families
that were never going to bank; the 1-member probe reduces that to 5 probes + 2 sweeps.

Left explicitly UNDIAGNOSED (do not guess): why two families template and three do not. Likely axis
is caller-saved pins spanning a `jal` (§74's corrupting form) vs pins fixing only a local allocno.
Diagnose BEFORE extending --allow-pins fleet-wide — the byte-gate makes a wrong guess free, but a
wrong PROCEDURE costs a sweep.

R22 clean-fleet 140/140 BYTE-IDENTICAL; tools-health OK; dedup 1886/0; 0 NON_MATCHING (G4).
Fleet: instr 81.3 -> 81.5% · distinct-code 69.0% · fn-count 89.41 -> 89.49%.
2026-07-26 20:23:28 -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: 316542 / 353719 = 89.49% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay) FLEET instr-weighted : 10710509 / 13141652 = 81.5% (shipped .text across main + resident + 138 overlays; the decomp.dev-DISPLAY number) FLEET distinct-code(uniq): 3887072 / 5634875 = 69.0% (65156/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: 10710073 / 13081451 = 81.9%)

FLEET REAL substantive : 314687 (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 : 37170 FLEET matchable : 353719

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 2255 1742 0 2255 2403 93.8%
ov_SC01_001 2259 1743 0 2261 2466 91.7%
ov_SC01_004 2250 1734 0 2251 2414 93.2%
ov_SC01_005 2280 1757 0 2280 2503 91.1%
ov_SC01_006 2280 1757 0 2280 2503 91.1%
ov_SC01_008 2250 1734 0 2252 2426 92.8%
ov_SC01_009 2276 1735 0 2277 2507 90.8%
ov_SC01_074 2254 1735 0 2256 2425 93.0%
ov_SC01_077 2433 1702 0 2435 2585 94.2%
ov_SC01_080 2292 1738 0 2292 2512 91.2%
ov_SC01_084 2299 1738 0 2304 2579 89.3%
ov_SC02_000 2352 1773 0 2352 2683 87.7%
ov_SC02_003 2352 1773 0 2352 2683 87.7%
ov_SC02_004 2258 1738 0 2258 2401 94.0%
ov_SC02_005 2366 1734 0 2376 2927 81.2%
ov_SC02_011 2378 1741 0 2389 2893 82.6%
ov_SC02_015 2259 1740 0 2259 2414 93.6%
ov_SC02_016 2293 1740 0 2296 2545 90.2%
ov_SC02_017 2336 1740 0 2344 2732 85.8%
ov_SC02_021 2265 1740 0 2265 2437 92.9%
ov_SC02_026 2281 1738 0 2287 2572 88.9%
ov_SC02_027 2304 1738 0 2313 2692 85.9%
ov_SC02_028 2306 1738 0 2316 2701 85.7%
ov_SC02_031 2292 1739 0 2297 2562 89.7%
ov_SC02_035 2267 1738 0 2270 2520 90.1%
ov_SC02_039 2251 1738 0 2251 2416 93.2%
ov_SC02_041 2289 1738 0 2292 2561 89.5%
ov_SC03_001 2386 1739 0 2403 2869 83.8%
ov_SC03_002 2312 1743 0 2327 2631 88.4%
ov_SC03_003 2261 1738 0 2262 2423 93.4%
ov_SC03_006 2327 1744 0 2336 2767 84.4%
ov_SC03_007 2306 1738 0 2310 2623 88.1%
ov_SC03_010 2269 1738 0 2269 2471 91.8%
ov_SC03_011 2275 1738 0 2281 2527 90.3%
ov_SC03_012 2253 1738 0 2254 2406 93.7%
ov_SC03_013 2274 1738 0 2274 2493 91.2%
ov_SC03_014 2332 1763 0 2332 2685 86.9%
ov_SC03_015 2332 1763 0 2332 2685 86.9%
ov_SC03_023 2260 1738 0 2261 2435 92.9%
ov_SC03_024 2320 1743 0 2327 2641 88.1%
ov_SC03_028 2300 1738 0 2304 2664 86.5%
ov_SC03_029 2301 1740 0 2311 2644 87.4%
ov_SC03_030 2274 1743 0 2276 2495 91.2%
ov_SC03_031 2271 1738 0 2274 2514 90.5%
ov_SC03_089 2288 1738 0 2295 2581 88.9%
ov_SC03_090 2289 1738 0 2297 2625 87.5%
ov_SC03_091 2292 1738 0 2300 2640 87.1%
ov_SC03_092 2302 1738 0 2314 2587 89.4%
ov_SC03_093 2278 1738 0 2282 2563 89.0%
ov_SC03_094 2273 1738 0 2279 2577 88.4%
ov_SC03_095 2263 1738 0 2266 2474 91.6%
ov_SC03_096 2263 1738 0 2266 2465 91.9%
ov_SC03_097 2293 1738 0 2300 2603 88.4%
ov_SC03_098 2271 1738 0 2274 2541 89.5%
ov_SC03_099 2264 1738 0 2267 2504 90.5%
ov_SC03_100 2274 1738 0 2278 2539 89.7%
ov_SC03_101 2274 1738 0 2278 2528 90.1%
ov_SC03_102 2267 1738 0 2270 2492 91.1%
ov_SC03_103 2269 1740 0 2272 2510 90.5%
ov_SC03_104 2296 1738 0 2303 2616 88.0%
ov_SC03_105 2287 1738 0 2294 2597 88.3%
ov_SC03_108 2255 1738 0 2255 2443 92.3%
ov_SC03_109 2258 1738 0 2260 2424 93.2%
ov_SC03_110 2262 1738 0 2262 2468 91.7%
ov_SC03_111 2273 1738 0 2276 2510 90.7%
ov_SC03_112 2267 1740 0 2269 2526 89.8%
ov_SC03_113 2260 1740 0 2263 2468 91.7%
ov_SC03_114 2250 1738 0 2252 2415 93.3%
ov_SC03_115 2267 1738 0 2269 2472 91.8%
ov_SC03_116 2258 1738 0 2261 2438 92.7%
ov_SC03_117 2285 1738 0 2291 2557 89.6%
ov_SC03_118 2331 1762 0 2332 2685 86.9%
ov_SC03_119 2330 1762 0 2331 2685 86.8%
ov_SC03_121 2265 1738 0 2268 2459 92.2%
ov_SC03_124 2343 1734 0 2363 2741 86.2%
ov_SC03_125 2299 1738 0 2311 2588 89.3%
ov_SC03_126 2262 1740 0 2262 2423 93.4%
ov_SC04_000 2278 1742 0 2287 2546 89.8%
ov_SC04_002 2297 1738 0 2301 2636 87.3%
ov_SC04_003 2273 1738 0 2277 2502 91.0%
ov_SC04_004 2282 1738 0 2284 2558 89.3%
ov_SC04_005 2292 1738 0 2298 2612 88.0%
ov_SC04_006 2262 1738 0 2264 2454 92.3%
ov_SC04_007 2286 1738 0 2290 2569 89.1%
ov_SC04_008 2254 1738 0 2254 2415 93.3%
ov_SC04_009 2269 1738 0 2272 2441 93.1%
ov_SC04_010 2259 1738 0 2260 2419 93.4%
ov_SC04_011 2317 1738 0 2323 2803 82.9%
ov_SC04_012 2256 1738 0 2257 2420 93.3%
ov_SC04_015 2321 1739 0 2332 2611 89.3%
ov_SC04_016 2259 1738 0 2261 2440 92.7%
ov_SC04_018 2369 1773 0 2369 2857 82.9%
ov_SC04_019 2375 1773 0 2375 2857 83.1%
ov_SC04_020 2286 1738 0 2298 2567 89.5%
ov_SC04_021 2263 1740 0 2263 2423 93.4%
ov_SC05_000 2260 1742 0 2263 2422 93.4%
ov_SC05_001 2282 1738 0 2287 2574 88.9%
ov_SC05_002 2265 1738 0 2268 2442 92.9%
ov_SC05_003 2262 1738 0 2263 2481 91.2%
ov_SC05_004 2258 1738 0 2260 2464 91.7%
ov_SC05_005 2263 1738 0 2264 2491 90.9%
ov_SC05_006 2256 1738 0 2256 2430 92.8%
ov_SC05_007 2266 1738 0 2271 2482 91.5%
ov_SC05_008 2283 1738 0 2285 2543 89.9%
ov_SC05_009 2262 1738 0 2266 2438 92.9%
ov_SC05_010 2289 1738 0 2293 2588 88.6%
ov_SC05_011 2258 1738 0 2259 2409 93.8%
ov_SC05_017 2365 1735 0 2376 2842 83.6%
ov_SC05_018 2312 1738 0 2325 2673 87.0%
ov_SC05_019 2263 1740 0 2263 2423 93.4%
ov_SC06_000 2327 1747 0 2330 2691 86.6%
ov_SC06_006 2279 1738 0 2280 2511 90.8%
ov_SC06_008 2298 1740 0 2304 2542 90.6%
ov_SC06_010 2279 1738 0 2284 2517 90.7%
ov_SC06_011 2267 1738 0 2271 2468 92.0%
ov_SC06_013 2261 1738 0 2262 2425 93.3%
ov_SC06_014 2267 1738 0 2269 2453 92.5%
ov_SC06_015 2264 1738 0 2264 2421 93.5%
ov_SC06_016 2282 1738 0 2284 2549 89.6%
ov_SC06_018 2293 1740 0 2300 2665 86.3%
ov_SC06_020 2271 1740 0 2272 2518 90.2%
ov_SC06_022 2290 1738 0 2298 2642 87.0%
ov_SC06_024 2300 1738 0 2306 2667 86.5%
ov_SC06_025 2284 1738 0 2289 2572 89.0%
ov_SC06_027 2249 1738 0 2250 2408 93.4%
ov_SC06_029 2310 1738 0 2322 2662 87.2%
ov_SC06_030 2263 1738 0 2263 2456 92.1%
ov_SC06_032 2285 1739 0 2292 2658 86.2%
ov_SC06_033 2287 1739 0 2294 2631 87.2%
ov_SC07_000 2278 1742 0 2280 2521 90.4%
ov_SC07_001 2262 1738 0 2264 2454 92.3%
ov_SC07_002 2290 1738 0 2294 2579 88.9%
ov_SC07_006 2053 1555 0 2133 2455 86.9%
ov_SC07_007 2050 1586 0 2134 2613 81.7%
ov_SC07_008 2247 1738 0 2247 2386 94.2%
ov_SC07_009 2256 1738 0 2258 2430 92.9%
ov_SC07_010 2082 1608 0 2165 2524 85.8%
ov_SC07_011 2050 1585 0 2130 2449 87.0%