Files
BFM-decomp/docs/progress.fleet.md
T
Drew T e393c320e6 feat(phase-29): VARIANT camps -> UNIQUIFY (not reconcile); validated on Buf, R22 140/140 (§64a)
MEASUREMENT CORRECTED THE PLAN. The checkpoint called for a "per-camp field-access reconcile";
measuring the camps refutes that: Vec8 = {s32 w[8]} (32B) in 180 files AND {s16 unk0..} (8B) in
139 files; MATRIX 48B/32B/32B; Buf 16B / 0x20+ / DrawEnv. These are DIFFERENT types sharing an
identifier across TUs of the same overlay — reconciling to a canonical layout MERGES them, the
same failure that broke 103 binaries on Prim. The right op is UNIQUIFY: rename the non-majority
camp (byte-neutral — a type name emits no code; TU-local by construction), which makes every camp
single-def and liftable by the existing lift_types rules.

- NEW tools/uniquify_type.py: deterministic camp ordering (file-count desc, then normalized text,
  so re-runs assign the same suffixes); majority keeps the name, camp n -> <T>_c<n>; rewrites ONLY
  files that DEFINE that camp (a file that merely USES the name gets it elsewhere and is untouched);
  \bT\b word boundaries so `Buf` never matches `Buf80153978`.
- VALIDATED on Buf (578/6/1 files): 11 identifiers across 7 files -> 3 camps LIFTABLE -> lifted
  (585 local copies stripped) -> R22 140/140 -> blocked core queue 13 -> 11 (0x8012ea90, 0x801749c8
  freed). Propagated 0x8012EA90 ×138; 0x801749C8 dropped (straggler in ov_SC07_006).
- YIELD, HONESTLY (P9): ZERO new matched functions. fn-count 88.61% / instr 79.3% / stubs 40281 all
  UNCHANGED; dedup 1867->1868, C1 +138. 0x8012EA90's members were ALREADY matched in all 138
  overlays — the propagation consolidated duplication into one shared macro (DRY), not coverage.
  The value is the PROVEN RECIPE + the queue moving 13->11, not the numbers.
- dedup_propagate (R32): the skip line printed a COUNT and no names, and aggregated three unrelated
  causes into n_local — a body skipped merely for a `//` comment (macro-unsafe, 1-line fix) read
  identically to one genuinely using an overlay-local type. Now named and split by cause.
- cookbook §64a (uniquify-vs-reconcile + the validated recipe + remaining camps by cost).
2026-07-23 20:51:42 -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: 313429 / 353717 = 88.61% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay) FLEET instr-weighted : 10420111 / 13141652 = 79.3% (shipped .text across main + resident + 138 overlays; the decomp.dev-DISPLAY number) FLEET distinct-code(uniq): 3811442 / 5634875 = 67.6% (64832/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: 10419675 / 13081451 = 79.7%)

FLEET REAL substantive : 311574 (of which dedup-shared 237058 via 1868 groups / 237102 instances) FLEET LINKED PsyQ objs : 959 FLEET NON_MATCHING : 7 (0 in any default build — G4) FLEET INCLUDE_ASM stubs : 40281 FLEET matchable : 353717

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 2236 1726 0 2236 2403 93.1%
ov_SC01_001 2237 1725 0 2239 2466 90.8%
ov_SC01_004 2228 1716 0 2229 2414 92.3%
ov_SC01_005 2257 1738 0 2257 2503 90.2%
ov_SC01_006 2257 1738 0 2257 2503 90.2%
ov_SC01_008 2228 1716 0 2230 2426 91.9%
ov_SC01_009 2253 1717 0 2254 2507 89.9%
ov_SC01_074 2232 1717 0 2234 2425 92.1%
ov_SC01_077 2416 1686 0 2418 2585 93.5%
ov_SC01_080 2270 1720 0 2270 2512 90.4%
ov_SC01_084 2277 1720 0 2282 2579 88.5%
ov_SC02_000 2330 1755 0 2330 2683 86.8%
ov_SC02_003 2330 1755 0 2330 2683 86.8%
ov_SC02_004 2236 1720 0 2236 2401 93.1%
ov_SC02_005 2343 1716 0 2353 2927 80.4%
ov_SC02_011 2354 1723 0 2365 2893 81.7%
ov_SC02_015 2237 1722 0 2237 2414 92.7%
ov_SC02_016 2270 1722 0 2273 2545 89.3%
ov_SC02_017 2314 1722 0 2322 2732 85.0%
ov_SC02_021 2243 1722 0 2243 2437 92.0%
ov_SC02_026 2259 1720 0 2265 2572 88.1%
ov_SC02_027 2282 1720 0 2291 2692 85.1%
ov_SC02_028 2283 1720 0 2293 2701 84.9%
ov_SC02_031 2268 1721 0 2273 2562 88.7%
ov_SC02_035 2245 1720 0 2248 2520 89.2%
ov_SC02_039 2229 1720 0 2229 2416 92.3%
ov_SC02_041 2266 1720 0 2269 2561 88.6%
ov_SC03_001 2365 1721 0 2382 2869 83.0%
ov_SC03_002 2291 1725 0 2306 2631 87.6%
ov_SC03_003 2239 1720 0 2240 2423 92.4%
ov_SC03_006 2304 1726 0 2313 2767 83.6%
ov_SC03_007 2284 1720 0 2288 2623 87.2%
ov_SC03_010 2245 1720 0 2245 2470 90.9%
ov_SC03_011 2253 1720 0 2259 2527 89.4%
ov_SC03_012 2231 1720 0 2232 2406 92.8%
ov_SC03_013 2250 1720 0 2250 2492 90.3%
ov_SC03_014 2310 1745 0 2310 2685 86.0%
ov_SC03_015 2310 1745 0 2310 2685 86.0%
ov_SC03_023 2237 1720 0 2238 2435 91.9%
ov_SC03_024 2297 1725 0 2304 2641 87.2%
ov_SC03_028 2278 1720 0 2282 2664 85.7%
ov_SC03_029 2279 1722 0 2289 2644 86.6%
ov_SC03_030 2252 1725 0 2254 2495 90.3%
ov_SC03_031 2249 1720 0 2252 2514 89.6%
ov_SC03_089 2264 1720 0 2271 2581 88.0%
ov_SC03_090 2266 1720 0 2274 2625 86.6%
ov_SC03_091 2269 1720 0 2277 2640 86.2%
ov_SC03_092 2279 1720 0 2291 2587 88.6%
ov_SC03_093 2256 1720 0 2260 2563 88.2%
ov_SC03_094 2251 1720 0 2257 2577 87.6%
ov_SC03_095 2241 1720 0 2244 2474 90.7%
ov_SC03_096 2241 1720 0 2244 2465 91.0%
ov_SC03_097 2270 1720 0 2277 2603 87.5%
ov_SC03_098 2249 1720 0 2252 2541 88.6%
ov_SC03_099 2242 1720 0 2245 2504 89.7%
ov_SC03_100 2252 1720 0 2256 2539 88.9%
ov_SC03_101 2252 1720 0 2256 2528 89.2%
ov_SC03_102 2244 1720 0 2247 2492 90.2%
ov_SC03_103 2247 1722 0 2250 2510 89.6%
ov_SC03_104 2272 1720 0 2279 2616 87.1%
ov_SC03_105 2266 1720 0 2273 2597 87.5%
ov_SC03_108 2233 1720 0 2233 2443 91.4%
ov_SC03_109 2235 1720 0 2237 2424 92.3%
ov_SC03_110 2240 1720 0 2240 2468 90.8%
ov_SC03_111 2251 1720 0 2254 2510 89.8%
ov_SC03_112 2244 1722 0 2246 2526 88.9%
ov_SC03_113 2238 1722 0 2241 2468 90.8%
ov_SC03_114 2228 1720 0 2230 2415 92.3%
ov_SC03_115 2245 1720 0 2247 2472 90.9%
ov_SC03_116 2235 1720 0 2238 2438 91.8%
ov_SC03_117 2263 1720 0 2269 2557 88.7%
ov_SC03_118 2309 1744 0 2310 2685 86.0%
ov_SC03_119 2308 1744 0 2309 2685 86.0%
ov_SC03_121 2242 1720 0 2245 2459 91.3%
ov_SC03_124 2321 1716 0 2341 2741 85.4%
ov_SC03_125 2278 1720 0 2290 2588 88.5%
ov_SC03_126 2240 1722 0 2240 2423 92.4%
ov_SC04_000 2256 1724 0 2265 2546 89.0%
ov_SC04_002 2274 1720 0 2278 2636 86.4%
ov_SC04_003 2251 1720 0 2255 2502 90.1%
ov_SC04_004 2260 1720 0 2262 2558 88.4%
ov_SC04_005 2269 1720 0 2275 2612 87.1%
ov_SC04_006 2240 1720 0 2242 2454 91.4%
ov_SC04_007 2262 1720 0 2266 2569 88.2%
ov_SC04_008 2232 1720 0 2232 2415 92.4%
ov_SC04_009 2247 1720 0 2250 2441 92.2%
ov_SC04_010 2237 1720 0 2238 2419 92.5%
ov_SC04_011 2294 1720 0 2300 2803 82.1%
ov_SC04_012 2234 1720 0 2235 2420 92.4%
ov_SC04_015 2298 1721 0 2309 2611 88.4%
ov_SC04_016 2237 1720 0 2239 2440 91.8%
ov_SC04_018 2348 1755 0 2348 2857 82.2%
ov_SC04_019 2354 1755 0 2354 2857 82.4%
ov_SC04_020 2265 1720 0 2277 2567 88.7%
ov_SC04_021 2241 1722 0 2241 2423 92.5%
ov_SC05_000 2238 1724 0 2241 2422 92.5%
ov_SC05_001 2260 1720 0 2265 2574 88.0%
ov_SC05_002 2243 1720 0 2246 2442 92.0%
ov_SC05_003 2240 1720 0 2241 2481 90.3%
ov_SC05_004 2235 1720 0 2237 2464 90.8%
ov_SC05_005 2241 1720 0 2242 2491 90.0%
ov_SC05_006 2234 1720 0 2234 2430 91.9%
ov_SC05_007 2244 1720 0 2249 2482 90.6%
ov_SC05_008 2261 1720 0 2263 2543 89.0%
ov_SC05_009 2240 1720 0 2244 2438 92.0%
ov_SC05_010 2265 1720 0 2269 2588 87.7%
ov_SC05_011 2236 1720 0 2237 2409 92.9%
ov_SC05_017 2344 1717 0 2355 2842 82.9%
ov_SC05_018 2291 1720 0 2304 2673 86.2%
ov_SC05_019 2241 1722 0 2241 2423 92.5%
ov_SC06_000 2304 1729 0 2307 2691 85.7%
ov_SC06_006 2257 1720 0 2258 2511 89.9%
ov_SC06_008 2273 1722 0 2279 2542 89.7%
ov_SC06_010 2256 1720 0 2261 2517 89.8%
ov_SC06_011 2246 1720 0 2250 2468 91.2%
ov_SC06_013 2239 1720 0 2240 2425 92.4%
ov_SC06_014 2245 1720 0 2247 2453 91.6%
ov_SC06_015 2242 1720 0 2242 2421 92.6%
ov_SC06_016 2260 1720 0 2262 2549 88.7%
ov_SC06_018 2273 1723 0 2280 2665 85.6%
ov_SC06_020 2249 1722 0 2250 2518 89.4%
ov_SC06_022 2268 1720 0 2276 2642 86.1%
ov_SC06_024 2276 1720 0 2282 2667 85.6%
ov_SC06_025 2261 1720 0 2266 2572 88.1%
ov_SC06_027 2227 1720 0 2228 2408 92.5%
ov_SC06_029 2286 1720 0 2298 2662 86.3%
ov_SC06_030 2241 1720 0 2241 2456 91.2%
ov_SC06_032 2261 1721 0 2268 2658 85.3%
ov_SC06_033 2263 1721 0 2270 2631 86.3%
ov_SC07_000 2256 1724 0 2258 2521 89.6%
ov_SC07_001 2240 1720 0 2242 2454 91.4%
ov_SC07_002 2267 1720 0 2271 2579 88.1%
ov_SC07_006 2017 1568 0 2097 2455 85.4%
ov_SC07_007 2026 1568 0 2110 2613 80.8%
ov_SC07_008 2225 1720 0 2225 2386 93.3%
ov_SC07_009 2234 1720 0 2236 2430 92.0%
ov_SC07_010 2037 1568 0 2120 2524 84.0%
ov_SC07_011 2025 1567 0 2105 2449 86.0%