Files
BFM-decomp/docs/progress.fleet.md
T
Drew T 071ce43e1c docs(phase-31): cookbook §176h — the batch-substitution hazard map (S52)
Wave P drafted at 97% and then cost a dozen clean rebuilds to bank, and not one of those rebuilds
failed on a matching problem. Banks the whole failure surface:

A. The SEVEN under-reporting holes in gate_main, all the same shape (R32): the checker never read
   the destination TU, shared headers, a draft's own definition, lines with trailing comments,
   typedef aliases, the build's own error text, or file order. Law: audit a batch-integration tool
   for what it DOESN'T look at -- its verdicts can be correct on the inputs it reads and still be
   worthless, because the compiler reads more.

B. Typedef handling, with the two wrong strategies that both look right: blanket STRIP (assumes
   the surviving definition sits above the insertion point -- src/800.c defines Rec14 at 7336
   while stubs wanting it sit at 7272), blanket RENAME (breaks drafts sharing an identical
   typedef, because their externs stop agreeing -- my regression, three drafts at once), and the
   rescan loop that deletes the definition it just renamed. The survivor is body-aware +
   position-aware in a single pass over a snapshot.

C. The remaining limit: conflict detection compares spelled type NAMES, so three drafts each
   defining their own Slot54 with different layouts all declare func_80032A74(Slot54*) and compare
   equal. Comparing struct LAYOUTS is the real fix.

D. The measured cost shape -- drafting cheap and solved, integration expensive -- and therefore the
   next lever: a STATIC pre-gate check over the substituted text, no make at all. Plus the R39
   lesson that negative controls apply to the tool you are FIXING, not just the one you ship.
2026-08-15 21:59:52 -06:00

12 KiB
Raw Blame History

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

213 binaries: main + resident + 211 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: 351770 / 363162 = 96.86% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay) FLEET instr-weighted : 12916767 / 13523865 = 95.5% (shipped .text across main + resident + 211 overlays; the decomp.dev-DISPLAY number) FLEET distinct-code(uniq): 5296975 / 5851972 = 90.5% (81764/90929 unique fns; the DISTINCT-RE number) MAIN game-code weighted : 10029 / 79510 = 12.6% (INCLUDED in the fleet numbers above since 2026-07-22 — roadmap §1 metrics contract; LINKED-excluding Ghidra sig dated 2026-08-05; 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: 12906738 / 13444355 = 96.0%)

FLEET REAL substantive : 349600 (of which dedup-shared 254598 via 2137 groups / 254674 instances) FLEET LINKED PsyQ objs : 959 FLEET NON_MATCHING : 6 (0 in any default build — G4) FLEET INCLUDE_ASM stubs : 11386 FLEET matchable : 363162

binary REAL shared LINKED byte-ident matchable byte-ident %
main 252 2 959 1253 2095 59.8%
resident 129 0 0 131 145 90.3%
md_MAIN_001 1 0 0 1 11 9.1%
md_MAIN_003 3 0 0 3 60 5.0%
md_MAIN_008 0 0 0 0 6 0.0%
md_MAIN_011 0 0 0 0 21 0.0%
md_MAIN_013 5 0 0 5 16 31.2%
md_MAIN_014 5 0 0 6 13 46.2%
md_MAIN_015 8 0 0 8 20 40.0%
md_MAIN_016 4 0 0 5 13 38.5%
md_MAIN_017 4 0 0 4 10 40.0%
md_MAIN_018 3 0 0 4 11 36.4%
md_MAIN_019 9 0 0 9 22 40.9%
md_MAIN_020 9 0 0 10 14 71.4%
md_MAIN_021 4 0 0 5 11 45.5%
md_MAIN_022 19 0 0 21 33 63.6%
md_MAIN_023 3 0 0 4 6 66.7%
md_MAIN_024 3 0 0 5 6 83.3%
md_MAIN_025 6 0 0 6 30 20.0%
md_MAIN_026 7 0 0 7 24 29.2%
md_MAIN_027 11 0 0 13 29 44.8%
md_MAIN_028 6 0 0 6 22 27.3%
md_MAIN_029 3 0 0 4 11 36.4%
md_MAIN_030 4 0 0 4 10 40.0%
md_MAIN_031 4 0 0 4 18 22.2%
md_MAIN_032 5 0 0 5 10 50.0%
md_MAIN_033 4 0 0 4 19 21.1%
md_MAIN_034 5 0 0 6 28 21.4%
md_MAIN_035 11 0 0 12 16 75.0%
md_MAIN_036 9 0 0 10 28 35.7%
md_MAIN_037 5 0 0 5 17 29.4%
md_MAIN_038 7 0 0 7 20 35.0%
md_MAIN_039 5 0 0 5 26 19.2%
md_MAIN_040 4 0 0 4 19 21.1%
md_MAIN_041 5 0 0 5 15 33.3%
md_MAIN_042 0 0 0 0 4 0.0%
md_MAIN_043 4 0 0 5 23 21.7%
md_MAIN_044 13 0 0 14 44 31.8%
md_MAIN_045 5 0 0 6 21 28.6%
md_MAIN_046 10 0 0 11 39 28.2%
md_MAIN_047 3 0 0 4 12 33.3%
md_SC02_009 5 0 0 5 40 12.5%
md_SC03_073 27 10 0 27 28 96.4%
md_SC03_074 26 10 0 26 29 89.7%
md_SC03_075 29 10 0 29 41 70.7%
md_SC03_076 35 0 0 37 66 56.1%
md_SC03_077 24 0 0 26 35 74.3%
md_SC03_078 25 9 0 25 27 92.6%
md_SC03_079 24 0 0 26 29 89.7%
md_SC03_132 25 0 0 27 28 96.4%
md_SC03_133 23 1 0 25 29 86.2%
md_SC03_134 27 1 0 29 41 70.7%
md_SC03_135 34 0 0 36 66 54.5%
md_SC03_136 24 0 0 26 35 74.3%
md_SC03_137 23 1 0 25 27 92.6%
md_SC03_138 26 1 0 30 37 81.1%
md_SC04_024 24 0 0 26 28 92.9%
md_SC04_025 22 0 0 24 29 82.8%
md_SC04_026 26 0 0 28 41 68.3%
md_SC04_027 33 0 0 35 66 53.0%
md_SC04_028 24 0 0 26 35 74.3%
md_SC04_029 22 0 0 24 27 88.9%
md_SC04_030 24 0 0 28 31 90.3%
md_SC05_023 24 0 0 26 28 92.9%
md_SC05_024 21 0 0 23 29 79.3%
md_SC05_025 25 0 0 27 41 65.9%
md_SC05_026 32 0 0 34 66 51.5%
md_SC05_027 23 0 0 25 35 71.4%
md_SC05_028 21 0 0 23 27 85.2%
md_SC05_029 23 0 0 27 31 87.1%
md_SC07_003 18 0 0 18 100 18.0%
md_SC07_004 51 0 0 51 315 16.2%
ov_MAIN_012 2236 1689 0 2315 2403 96.3%
ov_SC01_000 2391 1809 0 2391 2403 99.5%
ov_SC01_001 2401 1811 0 2403 2466 97.4%
ov_SC01_004 2399 1802 0 2400 2414 99.4%
ov_SC01_005 2441 1832 0 2441 2503 97.5%
ov_SC01_006 2440 1832 0 2440 2503 97.5%
ov_SC01_008 2400 1803 0 2402 2426 99.0%
ov_SC01_009 2428 1803 0 2429 2507 96.9%
ov_SC01_074 2400 1803 0 2402 2426 99.0%
ov_SC01_077 2568 1764 0 2570 2586 99.4%
ov_SC01_080 2426 1806 0 2426 2512 96.6%
ov_SC01_084 2451 1811 0 2456 2579 95.2%
ov_SC02_000 2579 1888 0 2579 2683 96.1%
ov_SC02_003 2566 1888 0 2566 2683 95.6%
ov_SC02_004 2391 1806 0 2391 2401 99.6%
ov_SC02_005 2581 1802 0 2591 2927 88.5%
ov_SC02_011 2704 1810 0 2714 2893 93.8%
ov_SC02_015 2402 1808 0 2402 2414 99.5%
ov_SC02_016 2485 1810 0 2488 2545 97.8%
ov_SC02_017 2559 1810 0 2567 2732 94.0%
ov_SC02_021 2407 1808 0 2407 2437 98.8%
ov_SC02_026 2513 1807 0 2519 2572 97.9%
ov_SC02_027 2567 1828 0 2576 2692 95.7%
ov_SC02_028 2578 1827 0 2588 2701 95.8%
ov_SC02_031 2502 1809 0 2507 2562 97.9%
ov_SC02_035 2497 1806 0 2500 2520 99.2%
ov_SC02_037 2339 1704 0 2421 2516 96.2%
ov_SC02_039 2397 1806 0 2397 2416 99.2%
ov_SC02_041 2495 1806 0 2498 2561 97.5%
ov_SC03_001 2700 1807 0 2717 2869 94.7%
ov_SC03_002 2551 1815 0 2566 2631 97.5%
ov_SC03_003 2402 1806 0 2403 2423 99.2%
ov_SC03_006 2607 1814 0 2616 2767 94.5%
ov_SC03_007 2470 1806 0 2474 2623 94.3%
ov_SC03_010 2423 1807 0 2423 2471 98.1%
ov_SC03_011 2426 1807 0 2432 2527 96.2%
ov_SC03_012 2391 1806 0 2392 2406 99.4%
ov_SC03_013 2427 1807 0 2427 2493 97.4%
ov_SC03_014 2598 1843 0 2598 2685 96.8%
ov_SC03_015 2377 1843 0 2377 2468 96.3%
ov_SC03_023 2404 1806 0 2405 2435 98.8%
ov_SC03_024 2531 1813 0 2538 2641 96.1%
ov_SC03_028 2466 1807 0 2470 2664 92.7%
ov_SC03_029 2505 1810 0 2515 2644 95.1%
ov_SC03_030 2428 1811 0 2430 2495 97.4%
ov_SC03_031 2449 1808 0 2452 2514 97.5%
ov_SC03_089 2526 1811 0 2533 2581 98.1%
ov_SC03_090 2543 1811 0 2551 2625 97.2%
ov_SC03_091 2557 1828 0 2565 2640 97.2%
ov_SC03_092 2515 1811 0 2527 2588 97.6%
ov_SC03_093 2530 1828 0 2534 2563 98.9%
ov_SC03_094 2519 1806 0 2525 2577 98.0%
ov_SC03_095 2440 1806 0 2443 2474 98.7%
ov_SC03_096 2437 1806 0 2440 2465 99.0%
ov_SC03_097 2540 1827 0 2547 2603 97.8%
ov_SC03_098 2517 1828 0 2520 2541 99.2%
ov_SC03_099 2489 1806 0 2492 2504 99.5%
ov_SC03_100 2524 1828 0 2528 2539 99.6%
ov_SC03_101 2490 1811 0 2494 2528 98.7%
ov_SC03_102 2473 1806 0 2476 2492 99.4%
ov_SC03_103 2497 1808 0 2500 2510 99.6%
ov_SC03_104 2551 1811 0 2558 2616 97.8%
ov_SC03_105 2452 1807 0 2459 2597 94.7%
ov_SC03_107 2310 1689 0 2393 2497 95.8%
ov_SC03_108 2406 1806 0 2406 2443 98.5%
ov_SC03_109 2409 1807 0 2411 2424 99.5%
ov_SC03_110 2444 1830 0 2444 2468 99.0%
ov_SC03_111 2482 1806 0 2485 2510 99.0%
ov_SC03_112 2453 1808 0 2455 2526 97.2%
ov_SC03_113 2445 1808 0 2448 2468 99.2%
ov_SC03_114 2391 1806 0 2393 2415 99.1%
ov_SC03_115 2437 1806 0 2439 2472 98.7%
ov_SC03_116 2404 1806 0 2407 2438 98.7%
ov_SC03_117 2484 1806 0 2490 2557 97.4%
ov_SC03_118 2575 1843 0 2576 2684 96.0%
ov_SC03_119 2572 1843 0 2573 2685 95.8%
ov_SC03_121 2407 1807 0 2409 2459 98.0%
ov_SC03_124 2597 1802 0 2617 2741 95.5%
ov_SC03_125 2535 1815 0 2547 2588 98.4%
ov_SC03_126 2406 1809 0 2406 2423 99.3%
ov_SC04_000 2479 1811 0 2488 2546 97.7%
ov_SC04_002 2520 1806 0 2524 2636 95.8%
ov_SC04_003 2443 1813 0 2446 2502 97.8%
ov_SC04_004 2476 1807 0 2478 2558 96.9%
ov_SC04_005 2512 1806 0 2518 2612 96.4%
ov_SC04_006 2432 1812 0 2434 2454 99.2%
ov_SC04_007 2503 1807 0 2507 2569 97.6%
ov_SC04_008 2402 1806 0 2402 2415 99.5%
ov_SC04_009 2428 1806 0 2431 2441 99.6%
ov_SC04_010 2405 1806 0 2406 2419 99.5%
ov_SC04_011 2568 1811 0 2574 2803 91.8%
ov_SC04_012 2402 1806 0 2403 2420 99.3%
ov_SC04_015 2545 1807 0 2556 2611 97.9%
ov_SC04_016 2403 1806 0 2405 2440 98.6%
ov_SC04_018 2734 1883 0 2734 2857 95.7%
ov_SC04_019 2725 1883 0 2725 2857 95.4%
ov_SC04_020 2520 1815 0 2532 2567 98.6%
ov_SC04_021 2404 1809 0 2404 2423 99.2%
ov_SC05_000 2407 1810 0 2410 2422 99.5%
ov_SC05_001 2486 1807 0 2491 2574 96.8%
ov_SC05_002 2431 1806 0 2434 2442 99.7%
ov_SC05_003 2419 1806 0 2420 2481 97.5%
ov_SC05_004 2433 1806 0 2435 2464 98.8%
ov_SC05_005 2439 1812 0 2440 2491 98.0%
ov_SC05_006 2424 1807 0 2424 2430 99.8%
ov_SC05_007 2436 1806 0 2441 2482 98.3%
ov_SC05_008 2444 1806 0 2446 2543 96.2%
ov_SC05_009 2410 1806 0 2414 2438 99.0%
ov_SC05_010 2454 1807 0 2458 2588 95.0%
ov_SC05_011 2397 1806 0 2398 2409 99.5%
ov_SC05_017 2673 1806 0 2684 2842 94.4%
ov_SC05_018 2553 1814 0 2566 2673 96.0%
ov_SC05_019 2404 1809 0 2404 2423 99.2%
ov_SC06_000 2543 1817 0 2546 2691 94.6%
ov_SC06_006 2433 1807 0 2434 2511 96.9%
ov_SC06_008 2502 1808 0 2508 2542 98.7%
ov_SC06_010 2473 1806 0 2478 2517 98.5%
ov_SC06_011 2418 1806 0 2422 2468 98.1%
ov_SC06_013 2407 1806 0 2408 2425 99.3%
ov_SC06_014 2418 1806 0 2420 2453 98.7%
ov_SC06_015 2412 1806 0 2412 2421 99.6%
ov_SC06_016 2456 1807 0 2458 2549 96.4%
ov_SC06_018 2551 1807 0 2558 2665 96.0%
ov_SC06_020 2472 1808 0 2473 2518 98.2%
ov_SC06_022 2523 1806 0 2531 2642 95.8%
ov_SC06_024 2542 1806 0 2548 2667 95.5%
ov_SC06_025 2455 1806 0 2460 2572 95.6%
ov_SC06_027 2392 1806 0 2393 2408 99.4%
ov_SC06_029 2480 1807 0 2492 2662 93.6%
ov_SC06_030 2415 1807 0 2415 2456 98.3%
ov_SC06_032 2535 1807 0 2542 2658 95.6%
ov_SC06_033 2531 1807 0 2538 2631 96.5%
ov_SC07_000 2439 1811 0 2441 2521 96.8%
ov_SC07_001 2407 1807 0 2409 2454 98.2%
ov_SC07_002 2467 1807 0 2471 2579 95.8%
ov_SC07_006 2330 1625 0 2410 2456 98.1%
ov_SC07_007 2395 1660 0 2479 2612 94.9%
ov_SC07_008 2386 1806 0 2386 2386 100.0%
ov_SC07_009 2400 1806 0 2402 2430 98.8%
ov_SC07_010 2324 1682 0 2406 2523 95.4%
ov_SC07_011 2341 1659 0 2421 2448 98.9%