mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-29 07:10:32 -04:00
df99a71732
`last_err` was only ever set when a STAGE failed to produce a candidate. A candidate that built to the wrong bytes — i.e. the actual gate rejection — recorded nothing, so every caller saw a bare "gate-fail" and the failure was unroutable (measured: wave 6's 13 sibling failures could not be classified at all). Now captures the build's hard diagnostics, keeping BOTH ends of the line so the symbol survives (never left-truncate — same fix as harvest_verify.classify_fail earlier today), and says "built, bytes differ (genuine DIFF)" when there is no diagnostic. Third instance of one defect class this session: a tool reporting an OUTCOME without the EVIDENCE that routes it (harvest_verify.classify_fail truncating the symbol away; .run/s6f_gate.py booking a crashed child as silence; this). All three were quietly converting recoverable plumbing into apparent walls. Also adds .run/jr_family_sweep.py — the S2 front end for the has_mid_jr matched-exemplar families that family_sweep --hseq refuses BY DESIGN (§53). Families are DERIVED from the map and looked up by EXEMPLAR (a just-banked head leaves the `members` array — that cost a round earlier today), members re-checked against corpus.stubs, --raw passed when a seed exists, and it commits per family because jtbl_family_bank requires a clean tree between families.