mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-26 13:33:34 -04:00
672431e325
tools/r22_verify.sh (NEW, promoted from .run so it survives the session): 'make clean' deletes asm/ AND build/, and THREE times this session that raced a live lane -- a subagent authorised to splice src/800.c produced a FALSE '212 passed, 1 failed' red, and two drafting agents reported their target's asm/ tree MISSING mid-draft (one survived only by finding an old snapshot). Drafting agents never WRITE src/, which is exactly why 'check for a dirty tree' does not catch them: they DEPEND on state this operation destroys. The guard refuses when any wave scratch dir was touched in the last 6 minutes, names the live agents, and offers R22_FORCE for a drained lane. R54 -- a guard that is not running is not a guard, so this refuses instead of relying on me remembering. Negative-controlled BOTH directions: refuses with 5 live agents named; passes on an idle lane AND on a lane whose scratch is 30 minutes stale (no false positives). fix(gater): the in-tree main commit message said '0 fn(s)' for a commit that contained a real bank. corpus memoizes, so querying corpus.stubs immediately after the bank returns the STALE pre-bank set. Derive the list from harvest_verify's own verified-out file instead (R33: derive from the invariant the tool already wrote). §372 ★★★ THE COPY-CAPTURE PAIR. Tell: a REGALLOC-PERM residual whose wrong-register rows READ the destination of a nearby MATCHING copy insn. Two passes re-base uses onto a copy's destination -- cse.c make_regs_eqv (canonical-reg rewrite of later same-EBB uses) and local-alloc.c optimize_reg_copy_1 (forward-substitution when the copy's src does not die in it) -- and BOTH die to one zero-byte edit: spell the copy 'P = X + zr' so SET_SRC is a PLUS, which is not a reg-reg copy and records no reg equivalence, while emitting the byte-identical 'addu $rd,$rs,$zero'. Notably the escalation was told to CHECK whether §368's tell applied rather than assume it; it reported that it did NOT (pure shift/slti rows, no commutative operands) and found the real cause from RTL dumps. That is §361's procedure working.