Files
BFM-decomp/docs/progress.fleet.md
T
Drew T bac7537564 fix(p31 s67): repair ov_SC04_018 — dedup_propagate deleted a decl layer the surviving bodies needed
R22 caught it: 212/213 after the S67-cc1 gate run. `ov_SC04_018` was RED.

ROOT CAUSE (from the diff, not inferred). Commit commit:3354's propagation replaced three bodies in
`ov_SC04_018_jr_80135D20.c` with DEFINE_func_*() instantiations and deleted the 981 lines they
occupied — INCLUDING the TU's file-scope declaration layer, which the two surviving non-deduped
bodies still referenced. A duplicate copy of those decls survived at line 225, BELOW the function
that uses them at line 42, so C89 ordering made it fatal (`D_8018D7A4' undeclared).

THE STRUCTURAL GAP: gate_stage byte-gates the SOURCE binary, then propagation writes to N OTHER
binaries and nothing re-verifies them. "fleet 99.2%" in the commit subject is a metric, not a gate.
This is the blind spot R50 exists for, and only the periodic whole-fleet R22 could see it.

REPAIR: restored src/ov_SC04_018 to commit:3354^, re-extracted (banking had pruned the .s stubs the
restored INCLUDE_ASM lines need), rebuilt rc=0 at the locked SHA fe9b413f. dedup-check clean
(2193 validated, 0 failed, C1 255302/255302). Cost: the 2 banks in that binary.

NEW tools/restore_dropped_decls.py — compiler-driven recovery for this failure mode: build, read
which identifiers cc1 calls undeclared, look each one up in the pre-deletion git ref, insert it
above the leading #include block, repeat. Two defects found and fixed in it while using it:
  * anchoring after "the last extern in the first 400 lines" inserts BELOW the point of use, so the
    build fails identically and the loop re-inserts forever (measured: 25 rounds, 100 dead decls).
    The only safe anchor is the top of the file.
  * a no-progress guard now REFUSES when a round asks for what the last round already inserted.
It also correctly refused when the failure changed class (link-level undefined references), which
is how the wider damage was found rather than papered over.

NOT a defect of the S67 §8d rung: scope_demote_drafts only ever writes draft dirs under .run/.

FLEET: make clean + extract-all + check-all = 213 passed, 0 failed of 213.
FRONTIER: 530 -> 526 (4 functions closed this session, measured from corpus.stubs).
2026-08-31 09:44:50 -06:00

13 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: 362413 / 362936 = 99.86% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay) FLEET instr-weighted : 13411738 / 13523865 = 99.2% (shipped .text across main + resident + 211 overlays; the decomp.dev-DISPLAY number) FLEET distinct-code(uniq): 5744258 / 5851972 = 98.2% (90525/90929 unique fns; the DISTINCT-RE number) MAIN game-code weighted : 35059 / 79510 = 44.1% (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: 13376679 / 13444355 = 99.5%)

FLEET REAL substantive : 360241 (of which dedup-shared 255226 via 2193 groups / 255302 instances) FLEET LINKED PsyQ objs : 959 FLEET NON_MATCHING : 3 (0 in any default build — G4) FLEET INCLUDE_ASM stubs : 520 FLEET matchable : 362936

binary REAL shared LINKED byte-ident matchable byte-ident %
main 827 2 959 1829 1922 95.2%
resident 138 0 0 140 145 96.6%
md_MAIN_001 11 0 0 11 11 100.0%
md_MAIN_003 37 0 0 37 51 72.5%
md_MAIN_008 6 0 0 6 6 100.0%
md_MAIN_011 17 0 0 18 21 85.7%
md_MAIN_013 15 0 0 15 16 93.8%
md_MAIN_014 12 0 0 13 13 100.0%
md_MAIN_015 20 0 0 20 20 100.0%
md_MAIN_016 11 0 0 12 12 100.0%
md_MAIN_017 10 0 0 10 10 100.0%
md_MAIN_018 10 0 0 11 11 100.0%
md_MAIN_019 22 0 0 22 22 100.0%
md_MAIN_020 12 0 0 13 13 100.0%
md_MAIN_021 10 0 0 11 11 100.0%
md_MAIN_022 31 0 0 33 33 100.0%
md_MAIN_023 5 0 0 6 6 100.0%
md_MAIN_024 4 0 0 6 6 100.0%
md_MAIN_025 29 0 0 29 30 96.7%
md_MAIN_026 24 0 0 24 24 100.0%
md_MAIN_027 26 0 0 28 29 96.6%
md_MAIN_028 21 0 0 21 22 95.5%
md_MAIN_029 10 0 0 11 11 100.0%
md_MAIN_030 10 0 0 10 10 100.0%
md_MAIN_031 17 0 0 17 18 94.4%
md_MAIN_032 10 0 0 10 10 100.0%
md_MAIN_033 18 0 0 18 19 94.7%
md_MAIN_034 25 0 0 26 28 92.9%
md_MAIN_035 15 0 0 16 16 100.0%
md_MAIN_036 27 0 0 28 28 100.0%
md_MAIN_037 17 0 0 17 17 100.0%
md_MAIN_038 20 0 0 20 20 100.0%
md_MAIN_039 26 0 0 26 26 100.0%
md_MAIN_040 19 0 0 19 19 100.0%
md_MAIN_041 14 0 0 14 15 93.3%
md_MAIN_042 4 0 0 4 4 100.0%
md_MAIN_043 22 0 0 23 23 100.0%
md_MAIN_044 41 0 0 42 43 97.7%
md_MAIN_045 19 0 0 20 21 95.2%
md_MAIN_046 38 0 0 39 39 100.0%
md_MAIN_047 11 0 0 12 12 100.0%
md_SC02_009 40 0 0 40 40 100.0%
md_SC03_073 28 10 0 28 28 100.0%
md_SC03_074 29 10 0 29 29 100.0%
md_SC03_075 41 10 0 41 41 100.0%
md_SC03_076 64 0 0 66 66 100.0%
md_SC03_077 33 0 0 35 35 100.0%
md_SC03_078 27 9 0 27 27 100.0%
md_SC03_079 27 0 0 29 29 100.0%
md_SC03_132 26 0 0 28 28 100.0%
md_SC03_133 27 1 0 29 29 100.0%
md_SC03_134 39 1 0 41 41 100.0%
md_SC03_135 63 0 0 65 66 98.5%
md_SC03_136 33 0 0 35 35 100.0%
md_SC03_137 25 1 0 27 27 100.0%
md_SC03_138 33 1 0 37 37 100.0%
md_SC04_024 26 0 0 28 28 100.0%
md_SC04_025 27 0 0 29 29 100.0%
md_SC04_026 39 0 0 41 41 100.0%
md_SC04_027 63 0 0 65 66 98.5%
md_SC04_028 33 0 0 35 35 100.0%
md_SC04_029 25 0 0 27 27 100.0%
md_SC04_030 27 0 0 31 31 100.0%
md_SC05_023 26 0 0 28 28 100.0%
md_SC05_024 27 0 0 29 29 100.0%
md_SC05_025 39 0 0 41 41 100.0%
md_SC05_026 63 0 0 65 66 98.5%
md_SC05_027 33 0 0 35 35 100.0%
md_SC05_028 25 0 0 27 27 100.0%
md_SC05_029 27 0 0 31 31 100.0%
md_SC07_003 93 0 0 93 100 93.0%
md_SC07_004 298 0 0 298 315 94.6%
ov_MAIN_012 2321 1691 0 2400 2402 99.9%
ov_SC01_000 2398 1812 0 2398 2403 99.8%
ov_SC01_001 2458 1814 0 2460 2465 99.8%
ov_SC01_004 2412 1805 0 2413 2414 100.0%
ov_SC01_005 2500 1836 0 2500 2503 99.9%
ov_SC01_006 2500 1836 0 2500 2503 99.9%
ov_SC01_008 2423 1806 0 2425 2426 100.0%
ov_SC01_009 2504 1806 0 2505 2507 99.9%
ov_SC01_074 2424 1806 0 2426 2426 100.0%
ov_SC01_077 2579 1767 0 2581 2586 99.8%
ov_SC01_080 2503 1811 0 2503 2512 99.6%
ov_SC01_084 2563 1814 0 2568 2579 99.6%
ov_SC02_000 2678 1892 0 2678 2683 99.8%
ov_SC02_003 2676 1892 0 2676 2683 99.7%
ov_SC02_004 2401 1811 0 2401 2401 100.0%
ov_SC02_005 2905 1805 0 2915 2926 99.6%
ov_SC02_011 2874 1813 0 2884 2893 99.7%
ov_SC02_015 2414 1811 0 2414 2414 100.0%
ov_SC02_016 2540 1813 0 2543 2545 99.9%
ov_SC02_017 2720 1813 0 2728 2732 99.9%
ov_SC02_021 2436 1811 0 2436 2437 100.0%
ov_SC02_026 2565 1810 0 2571 2572 100.0%
ov_SC02_027 2681 1831 0 2690 2692 99.9%
ov_SC02_028 2690 1830 0 2700 2701 100.0%
ov_SC02_031 2555 1812 0 2560 2562 99.9%
ov_SC02_035 2516 1809 0 2519 2520 100.0%
ov_SC02_037 2431 1706 0 2513 2516 99.9%
ov_SC02_039 2415 1810 0 2415 2416 100.0%
ov_SC02_041 2557 1809 0 2560 2561 100.0%
ov_SC03_001 2851 1810 0 2868 2869 100.0%
ov_SC03_002 2616 1818 0 2631 2631 100.0%
ov_SC03_003 2422 1809 0 2423 2423 100.0%
ov_SC03_006 2757 1817 0 2766 2767 100.0%
ov_SC03_007 2614 1811 0 2618 2623 99.8%
ov_SC03_010 2469 1810 0 2469 2471 99.9%
ov_SC03_011 2520 1810 0 2526 2527 100.0%
ov_SC03_012 2405 1811 0 2406 2406 100.0%
ov_SC03_013 2490 1810 0 2490 2493 99.9%
ov_SC03_014 2685 1877 0 2685 2685 100.0%
ov_SC03_015 2468 1877 0 2468 2468 100.0%
ov_SC03_023 2434 1811 0 2435 2435 100.0%
ov_SC03_024 2633 1835 0 2640 2641 100.0%
ov_SC03_028 2652 1814 0 2656 2664 99.7%
ov_SC03_029 2631 1813 0 2641 2644 99.9%
ov_SC03_030 2490 1814 0 2492 2495 99.9%
ov_SC03_031 2509 1811 0 2512 2514 99.9%
ov_SC03_089 2573 1814 0 2580 2581 100.0%
ov_SC03_090 2617 1814 0 2625 2625 100.0%
ov_SC03_091 2632 1831 0 2640 2640 100.0%
ov_SC03_092 2572 1814 0 2584 2588 99.8%
ov_SC03_093 2559 1831 0 2563 2563 100.0%
ov_SC03_094 2569 1809 0 2575 2577 99.9%
ov_SC03_095 2471 1809 0 2474 2474 100.0%
ov_SC03_096 2462 1809 0 2465 2465 100.0%
ov_SC03_097 2596 1830 0 2603 2603 100.0%
ov_SC03_098 2538 1831 0 2541 2541 100.0%
ov_SC03_099 2500 1809 0 2503 2504 100.0%
ov_SC03_100 2535 1831 0 2539 2539 100.0%
ov_SC03_101 2524 1814 0 2528 2528 100.0%
ov_SC03_102 2486 1809 0 2489 2492 99.9%
ov_SC03_103 2507 1811 0 2510 2510 100.0%
ov_SC03_104 2609 1814 0 2616 2616 100.0%
ov_SC03_105 2564 1814 0 2571 2596 99.0%
ov_SC03_107 2408 1691 0 2491 2496 99.8%
ov_SC03_108 2441 1810 0 2441 2443 99.9%
ov_SC03_109 2422 1810 0 2424 2424 100.0%
ov_SC03_110 2467 1833 0 2467 2468 100.0%
ov_SC03_111 2505 1809 0 2508 2510 99.9%
ov_SC03_112 2521 1811 0 2523 2526 99.9%
ov_SC03_113 2465 1811 0 2468 2468 100.0%
ov_SC03_114 2413 1809 0 2415 2415 100.0%
ov_SC03_115 2470 1809 0 2472 2472 100.0%
ov_SC03_116 2435 1809 0 2438 2438 100.0%
ov_SC03_117 2549 1809 0 2555 2557 99.9%
ov_SC03_118 2679 1867 0 2680 2684 99.9%
ov_SC03_119 2681 1867 0 2682 2685 99.9%
ov_SC03_121 2454 1810 0 2456 2459 99.9%
ov_SC03_124 2716 1805 0 2736 2741 99.8%
ov_SC03_125 2576 1818 0 2588 2588 100.0%
ov_SC03_126 2423 1813 0 2423 2423 100.0%
ov_SC04_000 2535 1814 0 2544 2546 99.9%
ov_SC04_002 2629 1809 0 2633 2636 99.9%
ov_SC04_003 2498 1816 0 2501 2502 100.0%
ov_SC04_004 2555 1810 0 2557 2558 100.0%
ov_SC04_005 2604 1809 0 2610 2612 99.9%
ov_SC04_006 2452 1815 0 2454 2454 100.0%
ov_SC04_007 2564 1810 0 2568 2569 100.0%
ov_SC04_008 2414 1809 0 2414 2415 100.0%
ov_SC04_009 2438 1809 0 2441 2441 100.0%
ov_SC04_010 2417 1809 0 2418 2419 100.0%
ov_SC04_011 2787 1814 0 2793 2804 99.6%
ov_SC04_012 2418 1809 0 2419 2420 100.0%
ov_SC04_015 2597 1810 0 2608 2611 99.9%
ov_SC04_016 2435 1809 0 2437 2440 99.9%
ov_SC04_018 2820 1892 0 2820 2823 99.9%
ov_SC04_019 2855 1895 0 2855 2857 99.9%
ov_SC04_020 2554 1818 0 2566 2567 100.0%
ov_SC04_021 2423 1813 0 2423 2423 100.0%
ov_SC05_000 2418 1813 0 2421 2422 100.0%
ov_SC05_001 2566 1811 0 2571 2574 99.9%
ov_SC05_002 2438 1809 0 2441 2442 100.0%
ov_SC05_003 2478 1809 0 2479 2481 99.9%
ov_SC05_004 2462 1809 0 2464 2464 100.0%
ov_SC05_005 2488 1815 0 2489 2491 99.9%
ov_SC05_006 2430 1811 0 2430 2430 100.0%
ov_SC05_007 2477 1809 0 2482 2482 100.0%
ov_SC05_008 2534 1809 0 2536 2543 99.7%
ov_SC05_009 2434 1809 0 2438 2438 100.0%
ov_SC05_010 2573 1814 0 2577 2588 99.6%
ov_SC05_011 2406 1809 0 2407 2409 99.9%
ov_SC05_017 2829 1809 0 2840 2842 99.9%
ov_SC05_018 2655 1817 0 2668 2673 99.8%
ov_SC05_019 2423 1813 0 2423 2423 100.0%
ov_SC06_000 2687 1839 0 2690 2691 100.0%
ov_SC06_006 2509 1810 0 2510 2511 100.0%
ov_SC06_008 2535 1811 0 2541 2542 100.0%
ov_SC06_010 2508 1809 0 2513 2516 99.9%
ov_SC06_011 2463 1809 0 2467 2468 100.0%
ov_SC06_013 2424 1809 0 2425 2425 100.0%
ov_SC06_014 2451 1809 0 2453 2453 100.0%
ov_SC06_015 2421 1809 0 2421 2421 100.0%
ov_SC06_016 2547 1814 0 2549 2549 100.0%
ov_SC06_018 2654 1810 0 2661 2665 99.8%
ov_SC06_020 2514 1811 0 2515 2518 99.9%
ov_SC06_022 2627 1809 0 2635 2642 99.7%
ov_SC06_024 2655 1809 0 2661 2667 99.8%
ov_SC06_025 2562 1809 0 2567 2572 99.8%
ov_SC06_027 2407 1809 0 2408 2408 100.0%
ov_SC06_029 2632 1814 0 2644 2662 99.3%
ov_SC06_030 2453 1814 0 2453 2456 99.9%
ov_SC06_032 2643 1810 0 2650 2657 99.7%
ov_SC06_033 2619 1810 0 2626 2630 99.8%
ov_SC07_000 2510 1814 0 2512 2521 99.6%
ov_SC07_001 2448 1810 0 2450 2454 99.8%
ov_SC07_002 2567 1814 0 2571 2578 99.7%
ov_SC07_006 2371 1628 0 2451 2457 99.8%
ov_SC07_007 2522 1663 0 2606 2612 99.8%
ov_SC07_008 2386 1809 0 2386 2386 100.0%
ov_SC07_009 2428 1809 0 2430 2430 100.0%
ov_SC07_010 2435 1687 0 2517 2523 99.8%
ov_SC07_011 2366 1662 0 2446 2448 99.9%