Files
BFM-decomp/docs/progress.fleet.md
T
Drew T b9efe66f91 fix(phase-30): the JR-PAIR "wall" was TWO instrument defects — pair banked, class retired
S28 ledgered `JR-PAIR-IN-ONE-O0-OBJECT` (two jr fns matched in one -O0 object => a clean
build that cannot link: `undefined reference to $L105` + `func_8013C938`) with §81 step 1
(isolate one into its own code subseg) as the untested escape. BOTH the class and the escape
are REFUTED — no isolation, no compiler wall, both fns banked from a genuinely clean fleet.
The 4th consecutive "structural wall" to resolve to our own tooling (§124/§125/§126/§131).

- DEFECT 1 (tools/jtbl_carve.py): ov_SC01_077_o0's carve at 0xb01a4 predates the §8e
  `tables=` persistence and is a MERGED DOUBLE (func_8013C0F8 $L75 + func_8013C414 $L105);
  the 2nd owner is MATCHED so extract pruned the stub .s naming its table. The single-table-
  predecessor inference derived 3 starts where the object emits 4 tables -> JTBL_PADS 0,4,4
  -> jtbl_rodata_pads refused mid-stream, correctly. FIX: R32 coverage assertion + payload
  recovery at the single choke point (spec_from_starts) — every zero word inside a span is an
  original `.align 3` pad (the tool's own axiom), so the word after it STARTS a table;
  recovered starts are logged. No-op where structure is known (the 134 sibling _o0c spans
  carry tables=+0x0,+0x70). Honest limit: tight (0-pad) boundaries stay unrecoverable but
  fail LOUD via the filter's count guard — never silent.
- DEFECT 2 (Makefile): no .DELETE_ON_ERROR, so `as` (a pipeline consumer) left a TRUNCATED .o
  on disk — 12 of 16 T func_, undefined $L57/$L59/$L63/$L75/$L76 — newer than its .c, and the
  NEXT build linked the corpse. That IS the S28 link error, one build downstream of a loud,
  correct compile error. Negative-control-proven on a scratch invocation.
- BANKED: func_8013B83C (272 ins) + func_8013BD74 (198 ins) in ov_SC01_077 (d19c9580).
  Byte proof: 4 tables 0x801D8254/828C/82FC/836C (13/27/27/27 entries, each zero-pad
  separated); span 0xb00fc..0xb0280 = 388 B = 52+4+108+4+108+4+108 exactly; spec 0,4,4,4.
- R22 clean-fleet (make clean + extract-all + check-all): 140 passed, 0 failed of 140.
  The incremental result was NOT trusted (§130). Fleet 93.25% fn-count / 89.2% instr /
  80.5% distinct; dedup 1905/0; 0 NON_MATCHING (G4).
- cookbook §132 + index (356 sections): the mechanism, the fingerprint (an undefined $L<n> in
  a LINK error is a truncated object, never codegen), the 30-second standalone-TU ladder that
  named the 4th table owner before any build, and the transferable rule — a fail-loud guard is
  only as trustworthy as the artifact hygiene around it.
2026-07-31 23:35:14 -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: 329841 / 353720 = 93.25% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay) FLEET instr-weighted : 11716990 / 13141652 = 89.2% (shipped .text across main + resident + 138 overlays; the decomp.dev-DISPLAY number) FLEET distinct-code(uniq): 4535048 / 5634875 = 80.5% (72156/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: 11716554 / 13081451 = 89.6%)

FLEET REAL substantive : 327986 (of which dedup-shared 240422 via 1905 groups / 240496 instances) FLEET LINKED PsyQ objs : 959 FLEET NON_MATCHING : 7 (0 in any default build — G4) FLEET INCLUDE_ASM stubs : 23872 FLEET matchable : 353720

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 2338 1748 0 2338 2403 97.3%
ov_SC01_001 2345 1749 0 2347 2466 95.2%
ov_SC01_004 2336 1740 0 2337 2414 96.8%
ov_SC01_005 2367 1763 0 2367 2503 94.6%
ov_SC01_006 2367 1763 0 2367 2503 94.6%
ov_SC01_008 2336 1740 0 2338 2426 96.4%
ov_SC01_009 2361 1741 0 2362 2507 94.2%
ov_SC01_074 2342 1741 0 2344 2425 96.7%
ov_SC01_077 2504 1707 0 2506 2585 96.9%
ov_SC01_080 2376 1744 0 2376 2512 94.6%
ov_SC01_084 2397 1749 0 2402 2579 93.1%
ov_SC02_000 2453 1788 0 2453 2683 91.4%
ov_SC02_003 2452 1788 0 2452 2683 91.4%
ov_SC02_004 2341 1744 0 2341 2401 97.5%
ov_SC02_005 2478 1740 0 2488 2927 85.0%
ov_SC02_011 2489 1747 0 2500 2893 86.4%
ov_SC02_015 2346 1746 0 2346 2414 97.2%
ov_SC02_016 2390 1746 0 2393 2545 94.0%
ov_SC02_017 2449 1746 0 2457 2732 89.9%
ov_SC02_021 2351 1746 0 2351 2437 96.5%
ov_SC02_026 2378 1744 0 2384 2572 92.7%
ov_SC02_027 2405 1744 0 2414 2692 89.7%
ov_SC02_028 2402 1744 0 2412 2701 89.3%
ov_SC02_031 2389 1745 0 2394 2562 93.4%
ov_SC02_035 2363 1744 0 2366 2520 93.9%
ov_SC02_039 2340 1744 0 2340 2416 96.9%
ov_SC02_041 2390 1744 0 2393 2561 93.4%
ov_SC03_001 2491 1745 0 2508 2869 87.4%
ov_SC03_002 2403 1749 0 2418 2631 91.9%
ov_SC03_003 2347 1744 0 2348 2423 96.9%
ov_SC03_006 2433 1750 0 2442 2767 88.3%
ov_SC03_007 2401 1744 0 2405 2623 91.7%
ov_SC03_010 2359 1744 0 2359 2471 95.5%
ov_SC03_011 2363 1744 0 2369 2527 93.7%
ov_SC03_012 2338 1744 0 2339 2406 97.2%
ov_SC03_013 2365 1744 0 2365 2493 94.9%
ov_SC03_014 2453 1772 0 2453 2685 91.4%
ov_SC03_015 2441 1772 0 2441 2685 90.9%
ov_SC03_023 2349 1744 0 2350 2435 96.5%
ov_SC03_024 2415 1749 0 2422 2641 91.7%
ov_SC03_028 2385 1744 0 2389 2664 89.7%
ov_SC03_029 2402 1746 0 2412 2644 91.2%
ov_SC03_030 2360 1749 0 2362 2495 94.7%
ov_SC03_031 2361 1744 0 2364 2514 94.0%
ov_SC03_089 2386 1749 0 2393 2581 92.7%
ov_SC03_090 2389 1749 0 2397 2625 91.3%
ov_SC03_091 2386 1744 0 2394 2640 90.7%
ov_SC03_092 2409 1749 0 2421 2587 93.6%
ov_SC03_093 2374 1744 0 2378 2563 92.8%
ov_SC03_094 2365 1744 0 2371 2577 92.0%
ov_SC03_095 2353 1744 0 2356 2474 95.2%
ov_SC03_096 2354 1744 0 2357 2465 95.6%
ov_SC03_097 2396 1744 0 2403 2603 92.3%
ov_SC03_098 2365 1744 0 2368 2541 93.2%
ov_SC03_099 2355 1744 0 2358 2504 94.2%
ov_SC03_100 2369 1744 0 2373 2539 93.5%
ov_SC03_101 2377 1749 0 2381 2528 94.2%
ov_SC03_102 2355 1744 0 2358 2492 94.6%
ov_SC03_103 2360 1746 0 2363 2510 94.1%
ov_SC03_104 2395 1749 0 2402 2616 91.8%
ov_SC03_105 2375 1744 0 2382 2597 91.7%
ov_SC03_108 2343 1744 0 2343 2443 95.9%
ov_SC03_109 2346 1744 0 2348 2424 96.9%
ov_SC03_110 2351 1744 0 2351 2468 95.3%
ov_SC03_111 2367 1744 0 2370 2510 94.4%
ov_SC03_112 2361 1746 0 2363 2526 93.5%
ov_SC03_113 2350 1746 0 2353 2468 95.3%
ov_SC03_114 2336 1744 0 2338 2415 96.8%
ov_SC03_115 2358 1744 0 2360 2472 95.5%
ov_SC03_116 2344 1744 0 2347 2438 96.3%
ov_SC03_117 2382 1744 0 2388 2557 93.4%
ov_SC03_118 2432 1768 0 2433 2685 90.6%
ov_SC03_119 2428 1768 0 2429 2685 90.5%
ov_SC03_121 2352 1744 0 2355 2459 95.8%
ov_SC03_124 2446 1740 0 2466 2741 90.0%
ov_SC03_125 2390 1744 0 2402 2588 92.8%
ov_SC03_126 2349 1746 0 2349 2423 96.9%
ov_SC04_000 2376 1748 0 2385 2546 93.7%
ov_SC04_002 2400 1744 0 2404 2636 91.2%
ov_SC04_003 2364 1744 0 2368 2502 94.6%
ov_SC04_004 2377 1744 0 2379 2558 93.0%
ov_SC04_005 2389 1744 0 2395 2612 91.7%
ov_SC04_006 2353 1744 0 2355 2454 96.0%
ov_SC04_007 2383 1744 0 2387 2569 92.9%
ov_SC04_008 2341 1744 0 2341 2415 96.9%
ov_SC04_009 2357 1744 0 2360 2441 96.7%
ov_SC04_010 2345 1744 0 2346 2419 97.0%
ov_SC04_011 2420 1749 0 2426 2803 86.6%
ov_SC04_012 2343 1744 0 2344 2420 96.9%
ov_SC04_015 2415 1745 0 2426 2611 92.9%
ov_SC04_016 2345 1744 0 2347 2440 96.2%
ov_SC04_018 2497 1780 0 2497 2857 87.4%
ov_SC04_019 2493 1780 0 2493 2857 87.3%
ov_SC04_020 2378 1744 0 2390 2567 93.1%
ov_SC04_021 2349 1746 0 2349 2423 96.9%
ov_SC05_000 2347 1748 0 2350 2422 97.0%
ov_SC05_001 2379 1744 0 2384 2574 92.6%
ov_SC05_002 2355 1744 0 2358 2442 96.6%
ov_SC05_003 2351 1744 0 2352 2481 94.8%
ov_SC05_004 2346 1744 0 2348 2464 95.3%
ov_SC05_005 2362 1749 0 2363 2491 94.9%
ov_SC05_006 2347 1744 0 2347 2430 96.6%
ov_SC05_007 2356 1744 0 2361 2482 95.1%
ov_SC05_008 2374 1744 0 2376 2543 93.4%
ov_SC05_009 2349 1744 0 2353 2438 96.5%
ov_SC05_010 2381 1744 0 2385 2588 92.2%
ov_SC05_011 2344 1744 0 2345 2409 97.3%
ov_SC05_017 2475 1741 0 2486 2842 87.5%
ov_SC05_018 2409 1744 0 2422 2673 90.6%
ov_SC05_019 2349 1746 0 2349 2423 96.9%
ov_SC06_000 2434 1753 0 2437 2691 90.6%
ov_SC06_006 2368 1744 0 2369 2511 94.3%
ov_SC06_008 2393 1746 0 2399 2542 94.4%
ov_SC06_010 2372 1744 0 2377 2517 94.4%
ov_SC06_011 2353 1744 0 2357 2468 95.5%
ov_SC06_013 2347 1744 0 2348 2425 96.8%
ov_SC06_014 2354 1744 0 2356 2453 96.0%
ov_SC06_015 2352 1744 0 2352 2421 97.1%
ov_SC06_016 2369 1744 0 2371 2549 93.0%
ov_SC06_018 2397 1746 0 2404 2665 90.2%
ov_SC06_020 2364 1746 0 2365 2518 93.9%
ov_SC06_022 2389 1744 0 2397 2642 90.7%
ov_SC06_024 2400 1744 0 2406 2667 90.2%
ov_SC06_025 2379 1744 0 2384 2572 92.7%
ov_SC06_027 2339 1744 0 2340 2408 97.2%
ov_SC06_029 2404 1744 0 2416 2662 90.8%
ov_SC06_030 2352 1744 0 2352 2456 95.8%
ov_SC06_032 2386 1745 0 2393 2658 90.0%
ov_SC06_033 2386 1745 0 2393 2631 91.0%
ov_SC07_000 2365 1748 0 2367 2521 93.9%
ov_SC07_001 2351 1744 0 2353 2454 95.9%
ov_SC07_002 2379 1744 0 2383 2579 92.4%
ov_SC07_006 2236 1560 0 2316 2456 94.3%
ov_SC07_007 2256 1592 0 2340 2613 89.6%
ov_SC07_008 2333 1744 0 2333 2386 97.8%
ov_SC07_009 2343 1744 0 2345 2430 96.5%
ov_SC07_010 2248 1614 0 2331 2524 92.4%
ov_SC07_011 2256 1591 0 2336 2449 95.4%