Files
BFM-decomp/docs/progress.fleet.md
T
Drew T b3ab5c2253 feat(phase-29 Task-13A): deterministic residual classifier — the permuter's problem is TARGETING
The autopsy (hindsight-study §7) assumed the permuter loses for want of a mutation.
Measured over the whole open backlog, it loses because it is aimed at work a
search-closer provably cannot close.

- NEW tools/residual_class.py: decide a near-miss's class FROM THE BYTES. Decodes each
  mismatching MIPS word -> (op-skeleton, register-fields, immediate); drift FIRST (one
  inserted insn inflates `closeness` by the tail length), then consistent-injective
  register map -> REGALLOC-PERM (§31 S11/RC-3), same-multiset-reorder -> SCHEDULE-REORDER,
  DELAY-SLOT, WIDTH/BRANCH-POLARITY/STRENGTH/ADDRESSING/IMM-OFFSET/IMM-VALUE. Every class
  routes to a BUCKET = which tool the failure wants. Uncovered opcode -> UNKNOWN, COUNTED
  (R32). 16 synthetic unit tests (test_residual_class.py).
- NEW tools/autopsy.py: `collect` materialises the corpus Task-12's telemetry never filled
  (1 of 6,169 records had a residual) by recompiling every open draft through the EXISTING
  match_one path (R33) — 1,752 drafts in 21s at -j12. `report` -> docs/autopsy.md.
- NEW corpus.o0_sources()/is_o0(): the opt-level oracle DERIVED from the Makefile's own -O0
  rules, coverage-asserted. Scoring an -O0 target at -O2 makes the residual 100% artefact
  (the trap this phase hit four times).
- R34 cross-check baked in: residual_class's closeness vs masked_diff.structured_diff's,
  asserted per row; 1,673/1,673 agree, 0 classifier errors.

FINDING: of the 972 records the grinder's own filter admits, only 75 (7.7%) are
permuter-shaped; 547 are structural and 348 are drafts that are not the function at all.
~92% of the daemon's CPU went where it could not win — the byte-grounded explanation of
"7 banks all-time, all Phase 21, 0 since" (Phase-22 audit). grinder.candidates() now
filters on the measured bucket (1,303 -> 78) and takes its directed profile from the
measured class, not the logged label (91% carry none -> it ran on gcc defaults).
Degrades to undirected if uncollected and says so; --no-targeting A/Bs it.

Two measured corollaries (R14, not projections):
- 699 records rank as near-misses at closeness up to 278 purely from a length artefact:
  un-attempted work misfiled as a backlog of hard functions -> new `redraft` bucket.
- a 12-draft gate probe of the `integration` bucket banked 1/12 (11 PLUMBING), so the 306
  prices Task 14's reconcile ladder rather than promising free banks. func_80167714
  (104 ins, reach-134) banked x1, un-propagated by design (§55b).

Two defects fixed forward:
- masked_diff._common_typedefs() used ONE shared probe path, so parallel match_one
  processes clobbered each other: 14 of 1,752 drafts lost in a single 12-way run (0.8%),
  silently, in every parallel wave ever run. Now per-PID.
- gate_stage.match_one_closeness never passed --o0 -> phantom residuals for every -O0
  function, written straight into the backlog this autopsy reads.

R22 clean-fleet: check-all 140 passed, 0 failed of 140; tools-health OK (dedup 1847/0,
C1 234343/234343); 0 NON_MATCHING (G4). Flywheel captured in-session (R30/R31):
cookbook §60, decision-log entry, SETUP.md inventory.
2026-07-21 11:03:59 -06:00

9.0 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: 310917 / 353722 = 87.90% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay) FLEET instr-weighted : 10203439 / 13081451 = 78.0% (shipped .text across resident+138 overlays; the decomp.dev-DISPLAY number) FLEET distinct-code(uniq): 3708744 / 5574674 = 66.5% (64085/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 : 309062 (of which dedup-shared 234299 via 1847 groups / 234343 instances) FLEET LINKED PsyQ objs : 959 FLEET NON_MATCHING : 7 (0 in any default build — G4) FLEET INCLUDE_ASM stubs : 42798 FLEET matchable : 353722

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 2219 1705 0 2219 2403 92.3%
ov_SC01_001 2218 1705 0 2220 2466 90.0%
ov_SC01_004 2211 1696 0 2212 2414 91.6%
ov_SC01_005 2240 1718 0 2240 2503 89.5%
ov_SC01_006 2240 1718 0 2240 2503 89.5%
ov_SC01_008 2211 1696 0 2213 2426 91.2%
ov_SC01_009 2236 1697 0 2237 2507 89.2%
ov_SC01_074 2214 1697 0 2216 2425 91.4%
ov_SC01_077 2404 1665 0 2406 2585 93.1%
ov_SC01_080 2252 1700 0 2252 2512 89.6%
ov_SC01_084 2260 1700 0 2265 2579 87.8%
ov_SC02_000 2311 1735 0 2311 2683 86.1%
ov_SC02_003 2311 1735 0 2311 2683 86.1%
ov_SC02_004 2219 1700 0 2219 2401 92.4%
ov_SC02_005 2326 1696 0 2336 2927 79.8%
ov_SC02_011 2335 1703 0 2346 2893 81.1%
ov_SC02_015 2220 1702 0 2220 2414 92.0%
ov_SC02_016 2250 1702 0 2253 2545 88.5%
ov_SC02_017 2296 1702 0 2304 2732 84.3%
ov_SC02_021 2226 1702 0 2226 2437 91.3%
ov_SC02_026 2241 1700 0 2247 2572 87.4%
ov_SC02_027 2264 1700 0 2273 2692 84.4%
ov_SC02_028 2265 1700 0 2275 2701 84.2%
ov_SC02_031 2251 1701 0 2256 2562 88.1%
ov_SC02_035 2227 1700 0 2230 2520 88.5%
ov_SC02_039 2212 1700 0 2212 2416 91.6%
ov_SC02_041 2247 1700 0 2250 2561 87.9%
ov_SC03_001 2347 1701 0 2364 2869 82.4%
ov_SC03_002 2274 1705 0 2289 2631 87.0%
ov_SC03_003 2222 1700 0 2223 2423 91.7%
ov_SC03_006 2285 1706 0 2294 2767 82.9%
ov_SC03_007 2266 1700 0 2270 2623 86.5%
ov_SC03_010 2228 1700 0 2228 2470 90.2%
ov_SC03_011 2236 1700 0 2242 2527 88.7%
ov_SC03_012 2214 1700 0 2215 2406 92.1%
ov_SC03_013 2233 1700 0 2233 2492 89.6%
ov_SC03_014 2291 1725 0 2291 2685 85.3%
ov_SC03_015 2292 1725 0 2292 2685 85.4%
ov_SC03_023 2220 1700 0 2221 2435 91.2%
ov_SC03_024 2278 1705 0 2285 2641 86.5%
ov_SC03_028 2260 1700 0 2264 2664 85.0%
ov_SC03_029 2262 1702 0 2272 2644 85.9%
ov_SC03_030 2234 1705 0 2236 2495 89.6%
ov_SC03_031 2232 1700 0 2235 2514 88.9%
ov_SC03_089 2246 1700 0 2253 2581 87.3%
ov_SC03_090 2248 1700 0 2256 2625 85.9%
ov_SC03_091 2251 1700 0 2259 2640 85.6%
ov_SC03_092 2262 1700 0 2274 2587 87.9%
ov_SC03_093 2238 1700 0 2242 2563 87.5%
ov_SC03_094 2233 1700 0 2239 2577 86.9%
ov_SC03_095 2223 1700 0 2226 2474 90.0%
ov_SC03_096 2223 1700 0 2226 2465 90.3%
ov_SC03_097 2252 1700 0 2259 2603 86.8%
ov_SC03_098 2231 1700 0 2234 2541 87.9%
ov_SC03_099 2224 1700 0 2227 2504 88.9%
ov_SC03_100 2234 1700 0 2238 2539 88.1%
ov_SC03_101 2234 1700 0 2238 2528 88.5%
ov_SC03_102 2226 1700 0 2229 2492 89.4%
ov_SC03_103 2229 1702 0 2232 2510 88.9%
ov_SC03_104 2254 1700 0 2261 2616 86.4%
ov_SC03_105 2248 1700 0 2255 2597 86.8%
ov_SC03_108 2216 1700 0 2216 2443 90.7%
ov_SC03_109 2217 1700 0 2219 2424 91.5%
ov_SC03_110 2222 1700 0 2222 2468 90.0%
ov_SC03_111 2234 1700 0 2237 2510 89.1%
ov_SC03_112 2227 1702 0 2229 2526 88.2%
ov_SC03_113 2220 1702 0 2223 2468 90.1%
ov_SC03_114 2210 1700 0 2212 2415 91.6%
ov_SC03_115 2227 1700 0 2229 2472 90.2%
ov_SC03_116 2217 1700 0 2220 2438 91.1%
ov_SC03_117 2245 1700 0 2251 2557 88.0%
ov_SC03_118 2292 1724 0 2293 2685 85.4%
ov_SC03_119 2290 1724 0 2291 2685 85.3%
ov_SC03_121 2224 1700 0 2227 2459 90.6%
ov_SC03_124 2304 1696 0 2324 2741 84.8%
ov_SC03_125 2261 1700 0 2273 2588 87.8%
ov_SC03_126 2223 1702 0 2223 2423 91.7%
ov_SC04_000 2239 1704 0 2248 2546 88.3%
ov_SC04_002 2255 1700 0 2259 2636 85.7%
ov_SC04_003 2233 1700 0 2237 2502 89.4%
ov_SC04_004 2242 1700 0 2244 2558 87.7%
ov_SC04_005 2250 1700 0 2256 2612 86.4%
ov_SC04_006 2223 1700 0 2225 2454 90.7%
ov_SC04_007 2243 1700 0 2247 2569 87.5%
ov_SC04_008 2213 1700 0 2213 2415 91.6%
ov_SC04_009 2229 1700 0 2232 2441 91.4%
ov_SC04_010 2220 1700 0 2221 2419 91.8%
ov_SC04_011 2276 1700 0 2282 2803 81.4%
ov_SC04_012 2216 1700 0 2217 2420 91.6%
ov_SC04_015 2280 1701 0 2291 2611 87.7%
ov_SC04_016 2219 1700 0 2221 2440 91.0%
ov_SC04_018 2331 1735 0 2331 2857 81.6%
ov_SC04_019 2336 1735 0 2336 2857 81.8%
ov_SC04_020 2248 1700 0 2260 2567 88.0%
ov_SC04_021 2224 1702 0 2224 2423 91.8%
ov_SC05_000 2220 1704 0 2223 2422 91.8%
ov_SC05_001 2243 1700 0 2248 2574 87.3%
ov_SC05_002 2225 1700 0 2228 2442 91.2%
ov_SC05_003 2222 1700 0 2223 2481 89.6%
ov_SC05_004 2217 1700 0 2219 2464 90.1%
ov_SC05_005 2224 1700 0 2225 2491 89.3%
ov_SC05_006 2216 1700 0 2216 2430 91.2%
ov_SC05_007 2226 1700 0 2231 2482 89.9%
ov_SC05_008 2243 1700 0 2245 2543 88.3%
ov_SC05_009 2221 1700 0 2225 2438 91.3%
ov_SC05_010 2247 1700 0 2251 2588 87.0%
ov_SC05_011 2219 1700 0 2220 2409 92.2%
ov_SC05_017 2327 1697 0 2338 2842 82.3%
ov_SC05_018 2274 1700 0 2287 2673 85.6%
ov_SC05_019 2224 1702 0 2224 2423 91.8%
ov_SC06_000 2284 1709 0 2287 2691 85.0%
ov_SC06_006 2239 1700 0 2240 2511 89.2%
ov_SC06_008 2249 1702 0 2255 2542 88.7%
ov_SC06_010 2232 1700 0 2237 2517 88.9%
ov_SC06_011 2228 1700 0 2232 2468 90.4%
ov_SC06_013 2221 1700 0 2222 2425 91.6%
ov_SC06_014 2227 1700 0 2229 2453 90.9%
ov_SC06_015 2224 1700 0 2224 2421 91.9%
ov_SC06_016 2241 1700 0 2243 2549 88.0%
ov_SC06_018 2238 1703 0 2245 2665 84.2%
ov_SC06_020 2231 1702 0 2232 2518 88.6%
ov_SC06_022 2245 1700 0 2253 2642 85.3%
ov_SC06_024 2250 1700 0 2256 2667 84.6%
ov_SC06_025 2242 1700 0 2247 2572 87.4%
ov_SC06_027 2210 1700 0 2211 2408 91.8%
ov_SC06_029 2268 1700 0 2280 2662 85.6%
ov_SC06_030 2223 1700 0 2223 2456 90.5%
ov_SC06_032 2235 1701 0 2242 2658 84.3%
ov_SC06_033 2238 1701 0 2245 2631 85.3%
ov_SC07_000 2238 1704 0 2240 2521 88.9%
ov_SC07_001 2223 1700 0 2225 2454 90.7%
ov_SC07_002 2250 1700 0 2254 2579 87.4%
ov_SC07_006 1992 1548 0 2072 2456 84.4%
ov_SC07_007 2009 1549 0 2093 2614 80.1%
ov_SC07_008 2207 1700 0 2207 2386 92.5%
ov_SC07_009 2217 1700 0 2219 2430 91.3%
ov_SC07_010 2020 1549 0 2103 2526 83.3%
ov_SC07_011 2008 1548 0 2088 2450 85.2%