Files
BFM-decomp/docs/progress.resident.md
T
Drew T cc73951128 feat(phase-10): T3 — per-binary reports/diff/expected for the resident binary
- diff_settings.py + progress.py/difficulty.py/dup_report.py: add the `resident` BINARIES entry
  (build/resident/, config/check.resident.sha, src/resident, asm/resident/nonmatchings, per-binary docs)
- dup_report.py: degrade gracefully when the Ghidra sig (.run/sig.resident.jsonl) is absent —
  write a placeholder + exit 0 instead of crashing the whole `make report` (sig is a T4 export)
- progress.py: scope linked_subsegs() to BINARY==main — PsyQ library linking is the EXE's layout
  (Phase 8, gated ifeq BINARY,main), so a second binary has 0 LINKED (was: listed main's libs)
- Makefile expected: per-binary-safe — drop `rm -rf expected/build` (clobbered every sibling
  baseline); refresh only the active binary's image dir + merge-copy (cp never deletes siblings)
- reports: resident = 0 REAL / 143 INCLUDE_ASM stubs / 100% stub (correct); main UNCHANGED
  (52 REAL / 959 LINKED / 50.24%); both expected/ baselines coexist (verified)
2026-06-15 23:06:25 -06:00

719 B

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

REAL substantive matches : 0 <- the Gen1-exit >=25 bar counts THIS LINKED real PsyQ objects : 0 <- byte-identical via linked SDK objects NON_MATCHING (near-miss) : 0 splat-auto empty no-ops : 2 INCLUDE_ASM stubs : 143 data blobs (excluded) : 0

matchable functions : 145 REAL / matchable : 0 / 145 = 0.00% byte-identical/ matchable: 2 / 145 = 1.38% (REAL+LINKED+empties)

LINKED subsegs: (0 fns) REAL matches: NON_MATCHING:

build SHA1: 8e17e02ff8954d07c979449198f7e1645046b353 (byte-identical)

empties audit: 2/2 genuine jr;nop (all clean)