Files
BFM-decomp/docs/progress.fleet.md
T
Drew T 427baba3bf feat(phase-27 T10): completion dashboard (main in the weighted metric) + the resident second oracle
The metrics contract (roadmap §1) wants all three metrics WITH main in the denominators, and the
second, independent boundary oracle (R34) extended beyond the overlays. Both had landmines.

10a — main into the weighted metric, safely:
- weighted_metrics off the func_-only src_stubs regex onto corpus.stubs (R33). THE LANDMINE IS
  REAL: src_stubs("SLUS_007.26") globs src/SLUS_007.26/*.c -> 0 files -> every row "matched" ->
  main 100% + fleet % silently inflates. Routing through corpus.stubs is a PROVEN 0.000pp no-op on
  the existing fleet (overlays are all func_) and closes the curated-name leak.
- a SEPARATE "MAIN game-code weighted" line (0.7%): main's Ghidra sig excludes the LINKED PsyQ
  objects (Ghidra never analysed them), which is exactly right for a game-code metric (LINKED is
  complete, counted in fn-count). Reported un-folded and caveated (month-stale sig, PROVISIONAL) —
  folding a stale/incomplete value into the decomp.dev headline would mislead the flip checkpoint.

10b — the resident second oracle:
- make sig-resident: sig_image on the resident flat blob (byte-derived, not Ghidra). corpus.
  sig_is_independent now covers resident -> audit-corpus checks its boundaries too. Probed clean
  BEFORE wiring (144 fns, all 21 stubs present, 0 phantom), verified 0 phantom + 0 truncated.
- sig-overlays now derives its payload list from config/overlays.mk, not a 0.4.dec glob that
  silently dropped the 4 SC07 index-1 overlays (the audit's own silent-skip class). tools-health
  regenerates sig-overlays + sig-resident first so the audit never crashes on an absent sig.

10c — main's second oracle: docs/second-oracle.md. sig_image can't sign the PS-X EXE yet (0x800
header offset, interleaved data/linked islands, one text range); seeding from splat would destroy
independence for the PHANTOM class specifically. Honest deferral + scoped design, not a fake oracle.

- docs/progress.fleet.md regenerated: 140 binaries · fn-count 82.16% · instr-weighted 67.0%
  (the honest post-T7 drop from 68.9%) · distinct 47.8% · MAIN game-code 0.7% (separate).
- SETUP §6.3 updated (R21).
2026-07-15 18:51:43 -06:00

8.9 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: 290626 / 353723 = 82.16% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay) FLEET instr-weighted : 8760262 / 13081451 = 67.0% (shipped .text across resident+138 overlays; the decomp.dev-DISPLAY number) FLEET distinct-code(uniq): 2663138 / 5574674 = 47.8% (53427/87459 unique fns; the DISTINCT-RE number) MAIN game-code weighted : 436 / 60201 = 0.7% (Phase-27 T10; SEPARATE — LINKED-excluding Ghidra sig dated 2026-06-14, PROVISIONAL until a fresh/complete main sig; NOT folded into the fleet number)

FLEET REAL substantive : 288771 (of which dedup-shared 227167 via 1840 groups / 227211 instances) FLEET LINKED PsyQ objs : 959 FLEET NON_MATCHING : 7 (0 in any default build — G4) FLEET INCLUDE_ASM stubs : 63090 FLEET matchable : 353723

binary REAL shared LINKED byte-ident matchable byte-ident %
main 54 2 959 1055 2096 50.3%
resident 123 0 0 125 146 85.6%
ov_SC01_000 2123 1698 0 2123 2403 88.3%
ov_SC01_001 2127 1698 0 2129 2466 86.3%
ov_SC01_004 2119 1689 0 2120 2414 87.8%
ov_SC01_005 2149 1711 0 2149 2503 85.9%
ov_SC01_006 2149 1711 0 2149 2503 85.9%
ov_SC01_008 2119 1689 0 2121 2426 87.4%
ov_SC01_009 2143 1690 0 2144 2507 85.5%
ov_SC01_074 2123 1690 0 2125 2425 87.6%
ov_SC01_077 2360 1658 0 2362 2585 91.4%
ov_SC01_080 2160 1693 0 2160 2512 86.0%
ov_SC01_084 2168 1693 0 2173 2579 84.3%
ov_SC02_000 2215 1728 0 2215 2683 82.6%
ov_SC02_003 2215 1728 0 2215 2683 82.6%
ov_SC02_004 2128 1693 0 2128 2401 88.6%
ov_SC02_005 2235 1689 0 2245 2927 76.7%
ov_SC02_011 2242 1696 0 2253 2893 77.9%
ov_SC02_015 2130 1695 0 2130 2414 88.2%
ov_SC02_016 2158 1695 0 2161 2545 84.9%
ov_SC02_017 2202 1695 0 2210 2732 80.9%
ov_SC02_021 2135 1695 0 2135 2437 87.6%
ov_SC02_026 2148 1693 0 2154 2572 83.7%
ov_SC02_027 2172 1693 0 2181 2692 81.0%
ov_SC02_028 2173 1693 0 2183 2701 80.8%
ov_SC02_031 2161 1694 0 2166 2562 84.5%
ov_SC02_035 2135 1693 0 2138 2520 84.8%
ov_SC02_039 2121 1693 0 2121 2416 87.8%
ov_SC02_041 2155 1693 0 2158 2561 84.3%
ov_SC03_001 2255 1694 0 2272 2869 79.2%
ov_SC03_002 2182 1698 0 2197 2631 83.5%
ov_SC03_003 2131 1693 0 2132 2423 88.0%
ov_SC03_006 2194 1699 0 2203 2767 79.6%
ov_SC03_007 2175 1693 0 2179 2623 83.1%
ov_SC03_010 2138 1693 0 2138 2470 86.6%
ov_SC03_011 2145 1693 0 2151 2527 85.1%
ov_SC03_012 2123 1693 0 2124 2406 88.3%
ov_SC03_013 2143 1693 0 2143 2492 86.0%
ov_SC03_014 2198 1718 0 2198 2685 81.9%
ov_SC03_015 2199 1718 0 2199 2685 81.9%
ov_SC03_023 2129 1693 0 2130 2435 87.5%
ov_SC03_024 2186 1698 0 2193 2641 83.0%
ov_SC03_028 2169 1693 0 2173 2664 81.6%
ov_SC03_029 2169 1695 0 2179 2644 82.4%
ov_SC03_030 2144 1698 0 2146 2495 86.0%
ov_SC03_031 2140 1693 0 2143 2514 85.2%
ov_SC03_089 2154 1693 0 2161 2581 83.7%
ov_SC03_090 2156 1693 0 2164 2625 82.4%
ov_SC03_091 2159 1693 0 2167 2640 82.1%
ov_SC03_092 2171 1693 0 2183 2587 84.4%
ov_SC03_093 2146 1693 0 2150 2563 83.9%
ov_SC03_094 2140 1693 0 2146 2577 83.3%
ov_SC03_095 2131 1693 0 2134 2474 86.3%
ov_SC03_096 2131 1693 0 2134 2465 86.6%
ov_SC03_097 2159 1693 0 2166 2603 83.2%
ov_SC03_098 2138 1693 0 2141 2541 84.3%
ov_SC03_099 2132 1693 0 2135 2504 85.3%
ov_SC03_100 2141 1693 0 2145 2539 84.5%
ov_SC03_101 2142 1693 0 2146 2528 84.9%
ov_SC03_102 2134 1693 0 2137 2492 85.8%
ov_SC03_103 2137 1695 0 2140 2510 85.3%
ov_SC03_104 2162 1693 0 2169 2616 82.9%
ov_SC03_105 2156 1693 0 2163 2597 83.3%
ov_SC03_108 2125 1693 0 2125 2443 87.0%
ov_SC03_109 2126 1693 0 2128 2424 87.8%
ov_SC03_110 2131 1693 0 2131 2468 86.3%
ov_SC03_111 2141 1693 0 2144 2510 85.4%
ov_SC03_112 2136 1695 0 2138 2526 84.6%
ov_SC03_113 2129 1695 0 2132 2468 86.4%
ov_SC03_114 2119 1693 0 2121 2415 87.8%
ov_SC03_115 2136 1693 0 2138 2472 86.5%
ov_SC03_116 2127 1693 0 2130 2438 87.4%
ov_SC03_117 2152 1693 0 2158 2557 84.4%
ov_SC03_118 2200 1717 0 2201 2685 82.0%
ov_SC03_119 2197 1717 0 2198 2685 81.9%
ov_SC03_121 2132 1693 0 2135 2459 86.8%
ov_SC03_124 2212 1689 0 2232 2741 81.4%
ov_SC03_125 2169 1693 0 2181 2588 84.3%
ov_SC03_126 2131 1695 0 2131 2423 87.9%
ov_SC04_000 2148 1697 0 2157 2546 84.7%
ov_SC04_002 2163 1693 0 2167 2636 82.2%
ov_SC04_003 2141 1693 0 2145 2502 85.7%
ov_SC04_004 2151 1693 0 2153 2558 84.2%
ov_SC04_005 2158 1693 0 2164 2612 82.8%
ov_SC04_006 2131 1693 0 2133 2454 86.9%
ov_SC04_007 2151 1693 0 2155 2569 83.9%
ov_SC04_008 2122 1693 0 2122 2415 87.9%
ov_SC04_009 2137 1693 0 2140 2441 87.7%
ov_SC04_010 2128 1693 0 2129 2419 88.0%
ov_SC04_011 2185 1693 0 2191 2803 78.2%
ov_SC04_012 2126 1693 0 2127 2420 87.9%
ov_SC04_015 2188 1694 0 2199 2611 84.2%
ov_SC04_016 2128 1693 0 2130 2440 87.3%
ov_SC04_018 2239 1728 0 2239 2857 78.4%
ov_SC04_019 2244 1728 0 2244 2857 78.5%
ov_SC04_020 2156 1693 0 2168 2567 84.5%
ov_SC04_021 2132 1695 0 2132 2423 88.0%
ov_SC05_000 2129 1697 0 2132 2422 88.0%
ov_SC05_001 2152 1693 0 2157 2574 83.8%
ov_SC05_002 2133 1693 0 2136 2442 87.5%
ov_SC05_003 2130 1693 0 2131 2481 85.9%
ov_SC05_004 2126 1693 0 2128 2464 86.4%
ov_SC05_005 2133 1693 0 2134 2491 85.7%
ov_SC05_006 2125 1693 0 2125 2430 87.4%
ov_SC05_007 2135 1693 0 2140 2482 86.2%
ov_SC05_008 2153 1693 0 2155 2543 84.7%
ov_SC05_009 2130 1693 0 2134 2438 87.5%
ov_SC05_010 2155 1693 0 2159 2588 83.4%
ov_SC05_011 2128 1693 0 2129 2409 88.4%
ov_SC05_017 2235 1690 0 2246 2842 79.0%
ov_SC05_018 2182 1693 0 2195 2673 82.1%
ov_SC05_019 2132 1695 0 2132 2423 88.0%
ov_SC06_000 2193 1702 0 2196 2691 81.6%
ov_SC06_006 2148 1693 0 2149 2511 85.6%
ov_SC06_008 2156 1695 0 2162 2542 85.1%
ov_SC06_010 2141 1693 0 2146 2517 85.3%
ov_SC06_011 2135 1693 0 2139 2468 86.7%
ov_SC06_013 2129 1693 0 2130 2425 87.8%
ov_SC06_014 2134 1693 0 2136 2453 87.1%
ov_SC06_015 2131 1693 0 2131 2421 88.0%
ov_SC06_016 2150 1693 0 2152 2549 84.4%
ov_SC06_018 2145 1696 0 2152 2665 80.8%
ov_SC06_020 2138 1695 0 2139 2518 84.9%
ov_SC06_022 2151 1693 0 2159 2642 81.7%
ov_SC06_024 2158 1693 0 2164 2667 81.1%
ov_SC06_025 2150 1693 0 2155 2572 83.8%
ov_SC06_027 2119 1693 0 2120 2408 88.0%
ov_SC06_029 2175 1693 0 2187 2662 82.2%
ov_SC06_030 2131 1693 0 2131 2456 86.8%
ov_SC06_032 2142 1694 0 2149 2658 80.9%
ov_SC06_033 2145 1694 0 2152 2631 81.8%
ov_SC07_000 2146 1697 0 2148 2521 85.2%
ov_SC07_001 2132 1693 0 2134 2454 87.0%
ov_SC07_002 2159 1693 0 2163 2579 83.9%
ov_SC07_006 0 0 0 80 2456 3.3%
ov_SC07_007 0 0 0 84 2614 3.2%
ov_SC07_008 2116 1693 0 2116 2386 88.7%
ov_SC07_009 2127 1693 0 2129 2430 87.6%
ov_SC07_010 0 0 0 83 2526 3.3%
ov_SC07_011 0 0 0 80 2450 3.3%