Files
BFM-decomp/docs/progress.fleet.md
T
Drew T fd80bd7007 feat(phase-30 S47-0a.1): the symbol-KIND fix banks 205 members; the residue crosses over to DIFF
Stage 0a's first defect, and the largest single zero-token bank of the session.

family_remap's kind test asked ONE question — is this address a function in the SIBLING'S OWN sig?
— and defaulted to `D_` on "no". But a body calls outside its image constantly: an overlay calls
resident helpers, an md_* module calls the overlay-range engine. Those addresses are absent from
the sibling's sig, so the test fell through and emitted a DATA NAME FOR A FUNCTION —
`D_800183E0`, `D_800D1EBC`, `D_80171A1C`. None exist anywhere in src/ or config/symbols.us.txt,
while `func_80171A1C` alone has 1,061 references. Measured: 611 member-rows across 45 symbols,
the largest named residue class. "Not in MY sig" means "not mine", not "is data".

Fix — three oracles, strongest first, never a blanket fallback:
 1. the sibling's own sig (authoritative for its image; this is what preserves the Phase-29 T82
    case where a slot is a function in the exemplar and DATA in the member — unioning every sig
    would have re-broken the 251 members T82 fixed),
 2. the always-linked images via extern_fn_addrs() — resident + main, 2,146 addresses whose ranges
    cannot collide with an overlay's,
 3. the exemplar reached it by `jal` — a call target is a function BY DEFINITION, which covers an
    external address neither sig claims (0x80171A1C from an md_* module, 112 rows).
Only a non-call reloc no oracle claims still falls to `D_`.

Result: BANKED 205 member-matches, failures 670 -> 575, derived net = report = 205.
R22 clean-fleet 213 passed / 0 failed of 213.
Fleet 94.4% instr / 88.3% distinct / 96.27 -> 96.33% fn-count; stubs 13,563 -> 13,345.

THE RESIDUE HAS CROSSED OVER: DIFF is now the LARGEST class at 143 of 575 — real byte divergence
outranks plumbing for the first time this session (undefined-ref 611 -> ~8, PLUMBING-other
231 -> 81). The ~5:1 plumbing:DIFF ratio that justified "tooling beats volume" has inverted in this
queue, exactly as the frontier analysis predicted: the declaration-axis vein was one-time.
The new head class is `conflicting types for func_80175414` (27) — the same addresses this fix
started naming correctly, now surfacing the NEXT layer (the symbol resolves; its declared signature
disagrees). That is the conform axis, not the remap axis.

Note for anyone auditing this class: rtu_match MASKS HI16/LO16, so a wrong %hi/%lo symbol still
reports MATCH (the T82 comment records `MATCH (10 ins)` on a member the fleet gate refused). This
defect is invisible to the per-function tool by construction — only the whole-binary gate sees it.
2026-08-11 14:02:38 -06:00

12 KiB
Raw Blame History

BFM FLEET matching progress (generated by tools/progress.py --fleet — authoritative)

213 binaries: main + resident + 211 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: 350027 / 363379 = 96.33% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay) FLEET instr-weighted : 12769730 / 13523856 = 94.4% (shipped .text across main + resident + 211 overlays; the decomp.dev-DISPLAY number) FLEET distinct-code(uniq): 5167601 / 5851963 = 88.3% (80317/90928 unique fns; the DISTINCT-RE number) MAIN game-code weighted : 436 / 79510 = 0.5% (INCLUDED in the fleet numbers above since 2026-07-22 — roadmap §1 metrics contract; LINKED-excluding Ghidra sig dated 2026-08-05; 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: 12769294 / 13444346 = 95.0%)

FLEET REAL substantive : 347845 (of which dedup-shared 249221 via 1949 groups / 249295 instances) FLEET LINKED PsyQ objs : 959 FLEET NON_MATCHING : 7 (0 in any default build — G4) FLEET INCLUDE_ASM stubs : 13345 FLEET matchable : 363379

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%
md_MAIN_001 1 0 0 1 11 9.1%
md_MAIN_003 3 0 0 3 60 5.0%
md_MAIN_008 0 0 0 0 6 0.0%
md_MAIN_011 0 0 0 0 21 0.0%
md_MAIN_013 5 0 0 5 16 31.2%
md_MAIN_014 4 0 0 5 13 38.5%
md_MAIN_015 8 0 0 8 20 40.0%
md_MAIN_016 4 0 0 5 13 38.5%
md_MAIN_017 4 0 0 4 10 40.0%
md_MAIN_018 3 0 0 4 11 36.4%
md_MAIN_019 8 0 0 8 22 36.4%
md_MAIN_020 8 0 0 9 14 64.3%
md_MAIN_021 4 0 0 5 11 45.5%
md_MAIN_022 16 0 0 18 33 54.5%
md_MAIN_023 3 0 0 4 6 66.7%
md_MAIN_024 3 0 0 5 6 83.3%
md_MAIN_025 5 0 0 5 30 16.7%
md_MAIN_026 7 0 0 7 24 29.2%
md_MAIN_027 9 0 0 11 29 37.9%
md_MAIN_028 4 0 0 4 22 18.2%
md_MAIN_029 3 0 0 4 11 36.4%
md_MAIN_030 4 0 0 4 10 40.0%
md_MAIN_031 4 0 0 4 18 22.2%
md_MAIN_032 5 0 0 5 10 50.0%
md_MAIN_033 4 0 0 4 19 21.1%
md_MAIN_034 5 0 0 6 28 21.4%
md_MAIN_035 10 0 0 11 16 68.8%
md_MAIN_036 7 0 0 8 28 28.6%
md_MAIN_037 4 0 0 4 17 23.5%
md_MAIN_038 7 0 0 7 20 35.0%
md_MAIN_039 5 0 0 5 26 19.2%
md_MAIN_040 4 0 0 4 19 21.1%
md_MAIN_041 5 0 0 5 15 33.3%
md_MAIN_042 0 0 0 0 4 0.0%
md_MAIN_043 4 0 0 5 23 21.7%
md_MAIN_044 11 0 0 12 44 27.3%
md_MAIN_045 3 0 0 4 21 19.0%
md_MAIN_046 8 0 0 9 39 23.1%
md_MAIN_047 3 0 0 4 12 33.3%
md_SC02_009 5 0 0 5 40 12.5%
md_SC03_073 19 0 0 21 28 75.0%
md_SC03_074 18 0 0 20 29 69.0%
md_SC03_075 21 0 0 23 41 56.1%
md_SC03_076 24 0 0 26 66 39.4%
md_SC03_077 18 0 0 20 35 57.1%
md_SC03_078 17 0 0 19 27 70.4%
md_SC03_079 20 0 0 22 29 75.9%
md_SC03_132 20 0 0 22 28 78.6%
md_SC03_133 19 0 0 21 29 72.4%
md_SC03_134 22 0 0 24 41 58.5%
md_SC03_135 25 0 0 27 66 40.9%
md_SC03_136 19 0 0 21 35 60.0%
md_SC03_137 18 0 0 20 27 74.1%
md_SC03_138 22 0 0 26 37 70.3%
md_SC04_024 20 0 0 22 28 78.6%
md_SC04_025 19 0 0 21 29 72.4%
md_SC04_026 22 0 0 24 41 58.5%
md_SC04_027 25 0 0 27 66 40.9%
md_SC04_028 19 0 0 21 35 60.0%
md_SC04_029 18 0 0 20 27 74.1%
md_SC04_030 21 0 0 25 31 80.6%
md_SC05_023 20 0 0 22 28 78.6%
md_SC05_024 17 0 0 19 29 65.5%
md_SC05_025 20 0 0 22 41 53.7%
md_SC05_026 23 0 0 25 66 37.9%
md_SC05_027 17 0 0 19 35 54.3%
md_SC05_028 16 0 0 18 27 66.7%
md_SC05_029 19 0 0 23 31 74.2%
md_SC07_003 17 0 0 17 100 17.0%
md_SC07_004 42 0 0 42 315 13.3%
ov_MAIN_012 2177 1658 0 2256 2403 93.9%
ov_SC01_000 2390 1775 0 2390 2403 99.5%
ov_SC01_001 2398 1776 0 2400 2466 97.3%
ov_SC01_004 2396 1767 0 2397 2414 99.3%
ov_SC01_005 2428 1790 0 2428 2503 97.0%
ov_SC01_006 2428 1790 0 2428 2503 97.0%
ov_SC01_008 2396 1767 0 2398 2426 98.8%
ov_SC01_009 2423 1768 0 2424 2507 96.7%
ov_SC01_074 2397 1768 0 2399 2425 98.9%
ov_SC01_077 2562 1733 0 2564 2586 99.1%
ov_SC01_080 2426 1771 0 2426 2512 96.6%
ov_SC01_084 2450 1776 0 2455 2579 95.2%
ov_SC02_000 2524 1815 0 2524 2683 94.1%
ov_SC02_003 2524 1815 0 2524 2683 94.1%
ov_SC02_004 2391 1771 0 2391 2401 99.6%
ov_SC02_005 2541 1767 0 2551 2927 87.2%
ov_SC02_011 2629 1774 0 2640 2893 91.3%
ov_SC02_015 2401 1773 0 2401 2414 99.5%
ov_SC02_016 2484 1774 0 2487 2545 97.7%
ov_SC02_017 2553 1774 0 2561 2732 93.7%
ov_SC02_021 2406 1773 0 2406 2437 98.7%
ov_SC02_026 2506 1771 0 2512 2572 97.7%
ov_SC02_027 2561 1776 0 2570 2692 95.5%
ov_SC02_028 2566 1776 0 2576 2701 95.4%
ov_SC02_031 2495 1772 0 2500 2562 97.6%
ov_SC02_035 2492 1771 0 2495 2520 99.0%
ov_SC02_037 2294 1658 0 2376 2516 94.4%
ov_SC02_039 2396 1771 0 2396 2416 99.2%
ov_SC02_041 2477 1771 0 2480 2561 96.8%
ov_SC03_001 2674 1772 0 2691 2869 93.8%
ov_SC03_002 2546 1776 0 2561 2631 97.3%
ov_SC03_003 2400 1771 0 2401 2423 99.1%
ov_SC03_006 2556 1778 0 2565 2767 92.7%
ov_SC03_007 2464 1771 0 2468 2623 94.1%
ov_SC03_010 2417 1771 0 2417 2471 97.8%
ov_SC03_011 2418 1771 0 2424 2527 95.9%
ov_SC03_012 2390 1771 0 2391 2406 99.4%
ov_SC03_013 2423 1771 0 2423 2493 97.2%
ov_SC03_014 2575 1802 0 2575 2685 95.9%
ov_SC03_015 2574 1802 0 2574 2685 95.9%
ov_SC03_023 2402 1771 0 2403 2435 98.7%
ov_SC03_024 2521 1776 0 2528 2641 95.7%
ov_SC03_028 2464 1772 0 2468 2664 92.6%
ov_SC03_029 2501 1774 0 2511 2644 95.0%
ov_SC03_030 2420 1776 0 2422 2495 97.1%
ov_SC03_031 2448 1771 0 2451 2514 97.5%
ov_SC03_089 2516 1776 0 2523 2581 97.8%
ov_SC03_090 2531 1776 0 2539 2625 96.7%
ov_SC03_091 2545 1776 0 2553 2640 96.7%
ov_SC03_092 2510 1776 0 2522 2588 97.4%
ov_SC03_093 2519 1776 0 2523 2563 98.4%
ov_SC03_094 2508 1771 0 2514 2577 97.6%
ov_SC03_095 2434 1771 0 2437 2474 98.5%
ov_SC03_096 2431 1771 0 2434 2465 98.7%
ov_SC03_097 2530 1776 0 2537 2603 97.5%
ov_SC03_098 2513 1776 0 2516 2541 99.0%
ov_SC03_099 2489 1771 0 2492 2504 99.5%
ov_SC03_100 2524 1776 0 2528 2539 99.6%
ov_SC03_101 2486 1776 0 2490 2528 98.5%
ov_SC03_102 2473 1771 0 2476 2492 99.4%
ov_SC03_103 2497 1773 0 2500 2510 99.6%
ov_SC03_104 2545 1776 0 2552 2616 97.6%
ov_SC03_105 2451 1772 0 2458 2597 94.6%
ov_SC03_107 2219 1658 0 2302 2497 92.2%
ov_SC03_108 2401 1771 0 2401 2443 98.3%
ov_SC03_109 2409 1771 0 2411 2424 99.5%
ov_SC03_110 2442 1778 0 2442 2468 98.9%
ov_SC03_111 2473 1771 0 2476 2510 98.6%
ov_SC03_112 2439 1773 0 2441 2526 96.6%
ov_SC03_113 2436 1773 0 2439 2468 98.8%
ov_SC03_114 2391 1771 0 2393 2415 99.1%
ov_SC03_115 2433 1771 0 2435 2472 98.5%
ov_SC03_116 2402 1771 0 2405 2438 98.6%
ov_SC03_117 2469 1771 0 2475 2557 96.8%
ov_SC03_118 2544 1796 0 2545 2685 94.8%
ov_SC03_119 2542 1796 0 2543 2685 94.7%
ov_SC03_121 2404 1771 0 2407 2459 97.9%
ov_SC03_124 2582 1767 0 2602 2741 94.9%
ov_SC03_125 2531 1771 0 2543 2588 98.3%
ov_SC03_126 2401 1773 0 2401 2423 99.1%
ov_SC04_000 2475 1775 0 2484 2546 97.6%
ov_SC04_002 2505 1771 0 2509 2636 95.2%
ov_SC04_003 2440 1771 0 2444 2502 97.7%
ov_SC04_004 2471 1771 0 2473 2558 96.7%
ov_SC04_005 2501 1771 0 2507 2612 96.0%
ov_SC04_006 2431 1771 0 2433 2454 99.1%
ov_SC04_007 2495 1771 0 2499 2569 97.3%
ov_SC04_008 2401 1771 0 2401 2415 99.4%
ov_SC04_009 2428 1771 0 2431 2441 99.6%
ov_SC04_010 2403 1771 0 2404 2419 99.4%
ov_SC04_011 2517 1776 0 2523 2803 90.0%
ov_SC04_012 2401 1771 0 2402 2420 99.3%
ov_SC04_015 2536 1772 0 2547 2611 97.5%
ov_SC04_016 2402 1771 0 2404 2440 98.5%
ov_SC04_018 2679 1808 0 2679 2857 93.8%
ov_SC04_019 2676 1808 0 2676 2857 93.7%
ov_SC04_020 2517 1771 0 2529 2567 98.5%
ov_SC04_021 2401 1773 0 2401 2423 99.1%
ov_SC05_000 2407 1775 0 2410 2422 99.5%
ov_SC05_001 2480 1772 0 2485 2574 96.5%
ov_SC05_002 2431 1771 0 2434 2442 99.7%
ov_SC05_003 2414 1771 0 2415 2481 97.3%
ov_SC05_004 2424 1771 0 2426 2464 98.5%
ov_SC05_005 2439 1777 0 2440 2491 98.0%
ov_SC05_006 2423 1772 0 2423 2430 99.7%
ov_SC05_007 2433 1771 0 2438 2482 98.2%
ov_SC05_008 2443 1771 0 2445 2543 96.1%
ov_SC05_009 2410 1771 0 2414 2438 99.0%
ov_SC05_010 2450 1772 0 2454 2588 94.8%
ov_SC05_011 2397 1771 0 2398 2409 99.5%
ov_SC05_017 2653 1768 0 2664 2842 93.7%
ov_SC05_018 2550 1771 0 2563 2673 95.9%
ov_SC05_019 2401 1773 0 2401 2423 99.1%
ov_SC06_000 2534 1780 0 2537 2691 94.3%
ov_SC06_006 2424 1771 0 2425 2511 96.6%
ov_SC06_008 2489 1773 0 2495 2542 98.2%
ov_SC06_010 2461 1771 0 2466 2517 98.0%
ov_SC06_011 2416 1771 0 2420 2468 98.1%
ov_SC06_013 2406 1771 0 2407 2425 99.3%
ov_SC06_014 2417 1771 0 2419 2453 98.6%
ov_SC06_015 2411 1771 0 2411 2421 99.6%
ov_SC06_016 2453 1772 0 2455 2549 96.3%
ov_SC06_018 2502 1773 0 2509 2665 94.1%
ov_SC06_020 2448 1773 0 2449 2518 97.3%
ov_SC06_022 2487 1771 0 2495 2642 94.4%
ov_SC06_024 2504 1771 0 2510 2667 94.1%
ov_SC06_025 2453 1771 0 2458 2572 95.6%
ov_SC06_027 2392 1771 0 2393 2408 99.4%
ov_SC06_029 2479 1772 0 2491 2662 93.6%
ov_SC06_030 2413 1772 0 2413 2456 98.2%
ov_SC06_032 2488 1772 0 2495 2658 93.9%
ov_SC06_033 2493 1772 0 2500 2631 95.0%
ov_SC07_000 2436 1775 0 2438 2521 96.7%
ov_SC07_001 2405 1771 0 2407 2454 98.1%
ov_SC07_002 2463 1772 0 2467 2579 95.7%
ov_SC07_006 2327 1595 0 2407 2455 98.0%
ov_SC07_007 2339 1628 0 2423 2612 92.8%
ov_SC07_008 2386 1771 0 2386 2386 100.0%
ov_SC07_009 2398 1771 0 2400 2430 98.8%
ov_SC07_010 2322 1649 0 2405 2523 95.3%
ov_SC07_011 2341 1627 0 2421 2448 98.9%