Files
BFM-decomp/docs/progress.fleet.md
T
Drew T c0486fe5f8 feat(phase-28 T4): dedup_extend — wire newly-onboarded binaries in; ov_SC07_006 1543/1614 (95.6%)
The 4 SC07 overlays P27 onboarded were byte-clean but NOT citizens: their .c included only
common.h (never ../shared/engine_core.h), so no shared body could reach them, and they
appeared in ZERO dedup groups (1689 groups read "134 binaries", never 138). Each sat at ~80
matched / ~2400 stubs while its siblings were ~2150 matched.

- NEW tools/dedup_extend.py — the missing mode. dedup_propagate is built for CRACK -> AUTHOR
  MACRO -> INSTANTIATE: --auto-from scans INLINE DEFS (planned only 11 here; the ~1600 shared
  bodies are ALREADY DEFINE_func_* macros in engine_core.h) and --addr dies "no source overlay
  has it matched" because no overlay holds an inline def. Extending an existing MACRO-BACKED
  group to a newly-onboarded binary is a different operation and nothing implemented it.

- SAFETY (explicit — this feeds the byte-gate): h_exact is the SHA1 of RAW INSTRUCTION BYTES, so
  two instances sharing one are identical INCLUDING their jal/lui/%lo reloc immediates — same
  callees, same data addresses, same symbols. The body that compiles byte-identically at one
  member does so at the other with NO remap. (Exactly why dup_report calls h_exact "guaranteed
  byte-match" and h_norm "candidate-only".) A bug here can only FAIL TO BANK, never falsely bank.

- REUSE, DON'T REBUILD (R33): owns only the set computation + the registry edit. The splice and
  the gate are harvest_verify verbatim (it already derives each stub's home TU from the corpus
  oracle, chunks + bisects, reverts on failure). h_exact members are byte-identical by
  construction -> the happy path is ~1 build per binary, not one per function.

- RESULT ov_SC07_006: 1543 / 1614 banked = 95.6%, ~0 agent tokens. Stubs 2374 -> 831.
  The 71 non-banks are ALL PLUMBING, ZERO DIFF, in two named classes with existing tools:
    * func_80144B9C "undefined reference" — the whale's body lives in src/shared/func_80144B9C.h
      (the -O0 shared header), not engine_core.h, so no DEFINE macro exists to expand.
    * "conflicting types for D_800A5E60 / func_8012C750 / func_8012C0EC" — the loose-typing
      conflict class (cast_call_sites / canon_sig_reconcile / reconcile_tu already exist for it).

- GATES: R22 make clean && extract-all && check-all -> 140 passed, 0 failed of 140, 0 FAIL lines.
  dedup-check 1840 validated / 0 failed; groups now read "135 members [135 binaries]" (was 134);
  C1 coverage 227211 -> 228754 = exactly +1543. The second oracle accepts the extension.

- Mechanism had been proven by hand first (probe-before-investing): +include + ONE stub ->
  DEFINE_func_80128158() -> ov_SC07_006 built 7ca772be BYTE-IDENTICAL, then reverted.
2026-07-15 23:14:19 -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: 292275 / 353723 = 82.63% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay) FLEET instr-weighted : 8898477 / 13081451 = 68.0% (shipped .text across resident+138 overlays; the decomp.dev-DISPLAY number) FLEET distinct-code(uniq): 2757078 / 5574674 = 49.5% (53528/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 : 290420 (of which dedup-shared 228710 via 1840 groups / 228754 instances) FLEET LINKED PsyQ objs : 959 FLEET NON_MATCHING : 7 (0 in any default build — G4) FLEET INCLUDE_ASM stubs : 61441 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 2128 1698 0 2130 2466 86.4%
ov_SC01_004 2120 1689 0 2121 2414 87.9%
ov_SC01_005 2150 1711 0 2150 2503 85.9%
ov_SC01_006 2150 1711 0 2150 2503 85.9%
ov_SC01_008 2120 1689 0 2122 2426 87.5%
ov_SC01_009 2144 1690 0 2145 2507 85.6%
ov_SC01_074 2124 1690 0 2126 2425 87.7%
ov_SC01_077 2360 1658 0 2362 2585 91.4%
ov_SC01_080 2160 1693 0 2160 2512 86.0%
ov_SC01_084 2169 1693 0 2174 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 2159 1695 0 2162 2545 85.0%
ov_SC02_017 2203 1695 0 2211 2732 80.9%
ov_SC02_021 2136 1695 0 2136 2437 87.6%
ov_SC02_026 2149 1693 0 2155 2572 83.8%
ov_SC02_027 2173 1693 0 2182 2692 81.1%
ov_SC02_028 2174 1693 0 2184 2701 80.9%
ov_SC02_031 2161 1694 0 2166 2562 84.5%
ov_SC02_035 2136 1693 0 2139 2520 84.9%
ov_SC02_039 2122 1693 0 2122 2416 87.8%
ov_SC02_041 2156 1693 0 2159 2561 84.3%
ov_SC03_001 2255 1694 0 2272 2869 79.2%
ov_SC03_002 2183 1698 0 2198 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 2146 1693 0 2152 2527 85.2%
ov_SC03_012 2123 1693 0 2124 2406 88.3%
ov_SC03_013 2143 1693 0 2143 2492 86.0%
ov_SC03_014 2199 1718 0 2199 2685 81.9%
ov_SC03_015 2200 1718 0 2200 2685 81.9%
ov_SC03_023 2129 1693 0 2130 2435 87.5%
ov_SC03_024 2187 1698 0 2194 2641 83.1%
ov_SC03_028 2169 1693 0 2173 2664 81.6%
ov_SC03_029 2170 1695 0 2180 2644 82.5%
ov_SC03_030 2144 1698 0 2146 2495 86.0%
ov_SC03_031 2141 1693 0 2144 2514 85.3%
ov_SC03_089 2155 1693 0 2162 2581 83.8%
ov_SC03_090 2157 1693 0 2165 2625 82.5%
ov_SC03_091 2160 1693 0 2168 2640 82.1%
ov_SC03_092 2171 1693 0 2183 2587 84.4%
ov_SC03_093 2147 1693 0 2151 2563 83.9%
ov_SC03_094 2141 1693 0 2147 2577 83.3%
ov_SC03_095 2132 1693 0 2135 2474 86.3%
ov_SC03_096 2132 1693 0 2135 2465 86.6%
ov_SC03_097 2160 1693 0 2167 2603 83.3%
ov_SC03_098 2139 1693 0 2142 2541 84.3%
ov_SC03_099 2133 1693 0 2136 2504 85.3%
ov_SC03_100 2142 1693 0 2146 2539 84.5%
ov_SC03_101 2143 1693 0 2147 2528 84.9%
ov_SC03_102 2135 1693 0 2138 2492 85.8%
ov_SC03_103 2138 1695 0 2141 2510 85.3%
ov_SC03_104 2163 1693 0 2170 2616 83.0%
ov_SC03_105 2157 1693 0 2164 2597 83.3%
ov_SC03_108 2126 1693 0 2126 2443 87.0%
ov_SC03_109 2127 1693 0 2129 2424 87.8%
ov_SC03_110 2132 1693 0 2132 2468 86.4%
ov_SC03_111 2142 1693 0 2145 2510 85.5%
ov_SC03_112 2137 1695 0 2139 2526 84.7%
ov_SC03_113 2130 1695 0 2133 2468 86.4%
ov_SC03_114 2120 1693 0 2122 2415 87.9%
ov_SC03_115 2137 1693 0 2139 2472 86.5%
ov_SC03_116 2127 1693 0 2130 2438 87.4%
ov_SC03_117 2153 1693 0 2159 2557 84.4%
ov_SC03_118 2201 1717 0 2202 2685 82.0%
ov_SC03_119 2198 1717 0 2199 2685 81.9%
ov_SC03_121 2133 1693 0 2136 2459 86.9%
ov_SC03_124 2212 1689 0 2232 2741 81.4%
ov_SC03_125 2170 1693 0 2182 2588 84.3%
ov_SC03_126 2132 1695 0 2132 2423 88.0%
ov_SC04_000 2149 1697 0 2158 2546 84.8%
ov_SC04_002 2164 1693 0 2168 2636 82.2%
ov_SC04_003 2142 1693 0 2146 2502 85.8%
ov_SC04_004 2151 1693 0 2153 2558 84.2%
ov_SC04_005 2159 1693 0 2165 2612 82.9%
ov_SC04_006 2132 1693 0 2134 2454 87.0%
ov_SC04_007 2152 1693 0 2156 2569 83.9%
ov_SC04_008 2122 1693 0 2122 2415 87.9%
ov_SC04_009 2138 1693 0 2141 2441 87.7%
ov_SC04_010 2129 1693 0 2130 2419 88.1%
ov_SC04_011 2186 1693 0 2192 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 2129 1693 0 2131 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 2157 1693 0 2169 2567 84.5%
ov_SC04_021 2133 1695 0 2133 2423 88.0%
ov_SC05_000 2130 1697 0 2133 2422 88.1%
ov_SC05_001 2153 1693 0 2158 2574 83.8%
ov_SC05_002 2134 1693 0 2137 2442 87.5%
ov_SC05_003 2131 1693 0 2132 2481 85.9%
ov_SC05_004 2127 1693 0 2129 2464 86.4%
ov_SC05_005 2134 1693 0 2135 2491 85.7%
ov_SC05_006 2126 1693 0 2126 2430 87.5%
ov_SC05_007 2136 1693 0 2141 2482 86.3%
ov_SC05_008 2153 1693 0 2155 2543 84.7%
ov_SC05_009 2131 1693 0 2135 2438 87.6%
ov_SC05_010 2156 1693 0 2160 2588 83.5%
ov_SC05_011 2129 1693 0 2130 2409 88.4%
ov_SC05_017 2235 1690 0 2246 2842 79.0%
ov_SC05_018 2183 1693 0 2196 2673 82.2%
ov_SC05_019 2133 1695 0 2133 2423 88.0%
ov_SC06_000 2193 1702 0 2196 2691 81.6%
ov_SC06_006 2149 1693 0 2150 2511 85.6%
ov_SC06_008 2157 1695 0 2163 2542 85.1%
ov_SC06_010 2141 1693 0 2146 2517 85.3%
ov_SC06_011 2136 1693 0 2140 2468 86.7%
ov_SC06_013 2130 1693 0 2131 2425 87.9%
ov_SC06_014 2135 1693 0 2137 2453 87.1%
ov_SC06_015 2132 1693 0 2132 2421 88.1%
ov_SC06_016 2151 1693 0 2153 2549 84.5%
ov_SC06_018 2146 1696 0 2153 2665 80.8%
ov_SC06_020 2139 1695 0 2140 2518 85.0%
ov_SC06_022 2152 1693 0 2160 2642 81.8%
ov_SC06_024 2159 1693 0 2165 2667 81.2%
ov_SC06_025 2151 1693 0 2156 2572 83.8%
ov_SC06_027 2120 1693 0 2121 2408 88.1%
ov_SC06_029 2175 1693 0 2187 2662 82.2%
ov_SC06_030 2132 1693 0 2132 2456 86.8%
ov_SC06_032 2143 1694 0 2150 2658 80.9%
ov_SC06_033 2146 1694 0 2153 2631 81.8%
ov_SC07_000 2147 1697 0 2149 2521 85.2%
ov_SC07_001 2133 1693 0 2135 2454 87.0%
ov_SC07_002 2160 1693 0 2164 2579 83.9%
ov_SC07_006 1545 1543 0 1625 2456 66.2%
ov_SC07_007 2 0 0 86 2614 3.3%
ov_SC07_008 2117 1693 0 2117 2386 88.7%
ov_SC07_009 2127 1693 0 2129 2430 87.6%
ov_SC07_010 1 0 0 84 2526 3.3%
ov_SC07_011 2 0 0 82 2450 3.3%