mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-27 05:56:00 -04:00
3233ff3f81
The next-list item was "measure the T2a immediate-resolution rate". The log refutes that framing: of T70's 10 families only 152 members were refused at remap for unresolved immediates — 1,346 failed the GATE. The immediate engine is not the bottleneck. Diagnosed the largest failed family (0x80131eec, 15 ins x 289 members, class=IMM, cross-address): member ov_SC01_000 @ func_80151944, imm_map entries 0 (nothing to resolve), verdict PLUMBING — `conflicting types for func_80151944`, with the §85 guard correctly refusing to bend the draft. Same header-vs-byte-truth class as T63/T64/T68 — but audit_header_sigs.py never flagged it: func_80151944 definitions in src/ : 0 (a stub in all 138) declarations : 2,022 engine_core.h says : s32 func_80151944(void) byte truth (exemplar func_80131EEC): void func_80131EEC(void *a0) THE GAP: the audit compares a header decl against definitions OF THE SAME NAME and skips a function that has none. For a CROSS-ADDRESS family member the byte truth is the EXEMPLAR's definition, under a different name at a different address — so every such member is invisible to the audit while being blocked by exactly the defect the audit exists to find. That is why item 5 keeps hitting header conflicts the audit said were not there. THE EXTENSION: feed .run/family_hseq.json in, so an undefined member inherits its exemplar's signature as truth. This one would then class as ARITY ((void) vs (void *a0)) and need §99 treatment — the extension makes the blocker VISIBLE AND NAMED, not automatically fixable. No src/ or config/ change: no bank, no metric move. Tree clean.
phase-ends/ — the living record
PhaseEnd_Phase[N].md— written at each phase boundary (format defined inPROJECT_CONTEXT.md). Append-only history: build log, deviations, commit message, rules added, changelog. Never deleted.CURRENT_PHASE.md— the in-phase autonomous log: approved phase plan, per-task checkboxes, current task pointer, blockers. Created at phase start, updated after every task, absorbed into the PhaseEnd file and deleted at phase close. This is the crash/compaction recovery point.- Sessions read
PROJECT_CONTEXT.md, then everyPhaseEnd_*.mdin numeric order, thenCURRENT_PHASE.md(if present) — in that order, every session.