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).
9.1 KiB
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% |