Files
BFM-decomp/docs/progress.fleet.md
T
Drew T bb65d36341 fix(phase-26a): A1 — dedup_integrate was a gate that could print a FALSE GREEN
The audit's priority #1: a fail-closed byte-honesty validator whose silent skips nothing
downstream can catch. Three false-green paths, all measured, all now fail-closed with
negative controls.

R33 FIRST (derive, don't re-derive). The registry makes two claims; the tool only ever
checked one, and mis-described that one:
  C1 EQUIVALENCE ("these vrams hold the same code in the ORIGINAL") — checked against the
     sigs, which sign the ORIGINAL bytes. KEPT. But the docstring claimed it also caught
     SOURCE drift: it cannot. A sig is a property of the ROM, immutable w.r.t. src/. Source
     drift is caught by the BUILD. Docstring corrected (P9).
  C2 BANK ("matched once in the source header, instantiated at every member") — NEVER
     CHECKED. Now DERIVED from the build invariant: INCLUDE_ASM pastes the ORIGINAL asm, so
     a member NOT wrapped in it is byte-exact, and one that IS wrapped is not banked —
     whatever the registry says. C2a: the group's macro token must occur in its source file.
     C2b: no member may still be an INCLUDE_ASM stub.

THE THREE FALSE GREENS
 1. 1808 groups claimed a DEFINE_func_* macro; only 1801 exist. The 7 ghosts printed [ OK ] —
    hiding 532 member-instances / 22,344 instructions of REAL, UNBANKED work (4 fns matched in
    ov_SC01_077, still INCLUDE_ASM in the other 133 overlays).
 2. An absent .run/sig.<bin>.jsonl degraded to "0 validated, 0 failed" and EXIT 0. On a fresh
    clone the gate validated NOTHING and passed. Now fails; --allow-unsigned is the escape.
 3. The bank claim was never checked at all.

THE CAUSAL CHAIN (the audit's thesis in one example). 3 of the 4 hidden fns are defined in
ov_SC01_077_jr_8012ACE0.c — a _jr_* split file. dedup_propagate.overlay_files allowlists only
("_a","_o0","_o0b","_after"), so the propagator could not SEE them; the group was registered
anyway; dedup_integrate greenlit the lie. TWO silent-skip bugs compounding: one created the
hole, the other hid it. Harvest fuel -> .run/audit/a1_harvest_fuel.json, banked in A5.

BLAST RADIUS, MEASURED NOT PREDICTED (R14). Headline metrics UNCHANGED to the decimal
(instr-weighted 66.5%, distinct-code 46.8%) — weighted_metrics() derives from the invariant and
was structurally immune to the lying registry. FLEET REAL substantive unchanged (282,466):
progress.py had already been taught to distrust it (commit:0574). Only dedup_integrate still
believed it. A null result that CONFIRMS R33: the tool that refused to re-derive was the one
that was right.

- registry repaired: 1813 -> 1806 groups (7 ghosts removed; instances 223,725 -> 222,787)
- make report GREEN end-to-end: 1806 validated, 0 failed | C1 coverage 222,787/222,787 signed
- negative controls: stubbed member -> exit 1; missing sig -> exit 1; --allow-unsigned -> exit 0
- report-only tool: no compiled artifact depends on it, so no R22 clean-fleet is owed here
2026-07-14 02:50:28 -06:00

8.6 KiB
Raw Blame History

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

136 binaries: main + resident + 134 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: 283995 / 343774 = 82.61% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay) FLEET instr-weighted : 8448285 / 12707182 = 66.5% (shipped .text across resident+134 overlays; the decomp.dev-DISPLAY number) FLEET distinct-code(uniq): 2530637 / 5410077 = 46.8% (51834/84996 unique fns; the DISTINCT-RE number; main EXE not sig'd)

FLEET REAL substantive : 282466 (of which dedup-shared 222743 via 1806 groups / 222787 instances) FLEET LINKED PsyQ objs : 959 FLEET NON_MATCHING : 7 (0 in any default build — G4) FLEET INCLUDE_ASM stubs : 59772 FLEET matchable : 343774

binary REAL shared LINKED byte-ident matchable byte-ident %
main 54 2 959 1055 2096 50.3%
resident 123 0 0 125 146 85.6%
ov_SC01_000 2081 1665 0 2081 2403 86.6%
ov_SC01_001 2085 1665 0 2087 2467 84.6%
ov_SC01_004 2077 1656 0 2078 2414 86.1%
ov_SC01_005 2103 1678 0 2103 2504 84.0%
ov_SC01_006 2103 1678 0 2103 2504 84.0%
ov_SC01_008 2076 1656 0 2078 2426 85.7%
ov_SC01_009 2097 1657 0 2098 2508 83.7%
ov_SC01_074 2081 1657 0 2083 2425 85.9%
ov_SC01_077 2320 1624 0 2322 2586 89.8%
ov_SC01_080 2113 1660 0 2113 2513 84.1%
ov_SC01_084 2120 1660 0 2125 2579 82.4%
ov_SC02_000 2166 1695 0 2166 2684 80.7%
ov_SC02_003 2166 1695 0 2166 2684 80.7%
ov_SC02_004 2082 1660 0 2082 2401 86.7%
ov_SC02_005 2183 1656 0 2193 2928 74.9%
ov_SC02_011 2188 1663 0 2199 2894 76.0%
ov_SC02_015 2087 1662 0 2087 2414 86.5%
ov_SC02_016 2112 1662 0 2115 2546 83.1%
ov_SC02_017 2155 1662 0 2163 2733 79.1%
ov_SC02_021 2093 1662 0 2093 2437 85.9%
ov_SC02_026 2102 1660 0 2108 2573 81.9%
ov_SC02_027 2127 1660 0 2136 2693 79.3%
ov_SC02_028 2128 1660 0 2138 2702 79.1%
ov_SC02_031 2116 1661 0 2121 2563 82.8%
ov_SC02_035 2093 1660 0 2096 2521 83.1%
ov_SC02_039 2077 1660 0 2077 2416 86.0%
ov_SC02_041 2104 1660 0 2107 2561 82.3%
ov_SC03_001 2209 1661 0 2226 2870 77.6%
ov_SC03_002 2139 1665 0 2154 2632 81.8%
ov_SC03_003 2082 1660 0 2083 2423 86.0%
ov_SC03_006 2149 1666 0 2158 2768 78.0%
ov_SC03_007 2129 1660 0 2133 2624 81.3%
ov_SC03_010 2092 1660 0 2092 2470 84.7%
ov_SC03_011 2096 1660 0 2102 2528 83.1%
ov_SC03_012 2076 1660 0 2077 2406 86.3%
ov_SC03_013 2093 1660 0 2093 2493 84.0%
ov_SC03_014 2141 1685 0 2141 2686 79.7%
ov_SC03_015 2144 1685 0 2144 2686 79.8%
ov_SC03_023 2082 1660 0 2083 2435 85.5%
ov_SC03_024 2136 1665 0 2143 2642 81.1%
ov_SC03_028 2119 1660 0 2123 2665 79.7%
ov_SC03_029 2120 1662 0 2130 2645 80.5%
ov_SC03_030 2098 1664 0 2100 2496 84.1%
ov_SC03_031 2093 1660 0 2097 2515 83.4%
ov_SC03_089 2110 1660 0 2117 2582 82.0%
ov_SC03_090 2112 1660 0 2120 2626 80.7%
ov_SC03_091 2113 1660 0 2121 2641 80.3%
ov_SC03_092 2119 1660 0 2131 2588 82.3%
ov_SC03_093 2100 1660 0 2104 2564 82.1%
ov_SC03_094 2095 1660 0 2101 2577 81.5%
ov_SC03_095 2086 1660 0 2089 2475 84.4%
ov_SC03_096 2086 1660 0 2089 2466 84.7%
ov_SC03_097 2109 1660 0 2116 2604 81.3%
ov_SC03_098 2093 1660 0 2096 2542 82.5%
ov_SC03_099 2087 1660 0 2090 2505 83.4%
ov_SC03_100 2094 1660 0 2098 2540 82.6%
ov_SC03_101 2095 1660 0 2099 2529 83.0%
ov_SC03_102 2090 1660 0 2093 2493 84.0%
ov_SC03_103 2093 1662 0 2096 2511 83.5%
ov_SC03_104 2113 1660 0 2120 2617 81.0%
ov_SC03_105 2107 1660 0 2114 2598 81.4%
ov_SC03_108 2079 1660 0 2079 2444 85.1%
ov_SC03_109 2080 1660 0 2082 2424 85.9%
ov_SC03_110 2085 1660 0 2085 2469 84.4%
ov_SC03_111 2093 1660 0 2096 2511 83.5%
ov_SC03_112 2091 1662 0 2093 2527 82.8%
ov_SC03_113 2085 1662 0 2088 2469 84.6%
ov_SC03_114 2075 1660 0 2077 2415 86.0%
ov_SC03_115 2089 1660 0 2091 2473 84.6%
ov_SC03_116 2083 1660 0 2086 2439 85.5%
ov_SC03_117 2101 1660 0 2107 2558 82.4%
ov_SC03_118 2144 1684 0 2145 2686 79.9%
ov_SC03_119 2141 1684 0 2142 2686 79.7%
ov_SC03_121 2086 1660 0 2089 2460 84.9%
ov_SC03_124 2158 1656 0 2178 2742 79.4%
ov_SC03_125 2121 1660 0 2133 2589 82.4%
ov_SC03_126 2083 1662 0 2083 2423 86.0%
ov_SC04_000 2100 1664 0 2109 2547 82.8%
ov_SC04_002 2114 1660 0 2118 2637 80.3%
ov_SC04_003 2092 1660 0 2096 2503 83.7%
ov_SC04_004 2106 1660 0 2108 2559 82.4%
ov_SC04_005 2107 1660 0 2113 2613 80.9%
ov_SC04_006 2083 1660 0 2085 2454 85.0%
ov_SC04_007 2102 1660 0 2106 2570 81.9%
ov_SC04_008 2078 1660 0 2078 2415 86.0%
ov_SC04_009 2087 1660 0 2090 2441 85.6%
ov_SC04_010 2083 1660 0 2084 2419 86.2%
ov_SC04_011 2133 1660 0 2139 2804 76.3%
ov_SC04_012 2081 1660 0 2082 2420 86.0%
ov_SC04_015 2141 1661 0 2152 2612 82.4%
ov_SC04_016 2080 1660 0 2082 2440 85.3%
ov_SC04_018 2187 1695 0 2187 2858 76.5%
ov_SC04_019 2193 1695 0 2193 2858 76.7%
ov_SC04_020 2110 1660 0 2122 2568 82.6%
ov_SC04_021 2082 1662 0 2082 2423 85.9%
ov_SC05_000 2086 1664 0 2089 2422 86.3%
ov_SC05_001 2102 1660 0 2107 2575 81.8%
ov_SC05_002 2085 1660 0 2088 2443 85.5%
ov_SC05_003 2085 1660 0 2086 2482 84.0%
ov_SC05_004 2082 1660 0 2084 2465 84.5%
ov_SC05_005 2087 1660 0 2088 2492 83.8%
ov_SC05_006 2081 1660 0 2081 2430 85.6%
ov_SC05_007 2088 1660 0 2093 2483 84.3%
ov_SC05_008 2107 1660 0 2109 2544 82.9%
ov_SC05_009 2082 1660 0 2086 2438 85.6%
ov_SC05_010 2107 1660 0 2111 2589 81.5%
ov_SC05_011 2084 1660 0 2085 2409 86.6%
ov_SC05_017 2183 1657 0 2194 2843 77.2%
ov_SC05_018 2133 1660 0 2146 2674 80.3%
ov_SC05_019 2082 1662 0 2082 2423 85.9%
ov_SC06_000 2142 1669 0 2145 2692 79.7%
ov_SC06_006 2091 1660 0 2092 2512 83.3%
ov_SC06_008 2107 1662 0 2113 2542 83.1%
ov_SC06_010 2093 1660 0 2098 2518 83.3%
ov_SC06_011 2091 1660 0 2095 2469 84.9%
ov_SC06_013 2084 1660 0 2085 2425 86.0%
ov_SC06_014 2088 1660 0 2090 2453 85.2%
ov_SC06_015 2085 1660 0 2085 2421 86.1%
ov_SC06_016 2103 1660 0 2105 2550 82.5%
ov_SC06_018 2101 1663 0 2108 2666 79.1%
ov_SC06_020 2091 1662 0 2092 2519 83.0%
ov_SC06_022 2107 1660 0 2115 2643 80.0%
ov_SC06_024 2113 1660 0 2119 2668 79.4%
ov_SC06_025 2100 1660 0 2105 2573 81.8%
ov_SC06_027 2075 1660 0 2076 2408 86.2%
ov_SC06_029 2128 1660 0 2140 2663 80.4%
ov_SC06_030 2086 1660 0 2086 2457 84.9%
ov_SC06_032 2097 1661 0 2104 2659 79.1%
ov_SC06_033 2101 1661 0 2108 2632 80.1%
ov_SC07_000 2100 1664 0 2102 2522 83.3%
ov_SC07_001 2087 1660 0 2089 2455 85.1%
ov_SC07_002 2104 1660 0 2108 2580 81.7%
ov_SC07_008 2071 1660 0 2071 2386 86.8%
ov_SC07_009 2082 1660 0 2084 2430 85.8%