mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-27 05:56:00 -04:00
0d39cd97e1
32 agents over wave V's 67 index_gap reports: 14 CONFIRMED, 9 REJECTED, 76 already-covered (the third harvest this session; readers seeded with §193 AND §194 so neither could be re-derived). THE HEADLINE IS A DEFECT IN OUR OWN VERIFIER (§195-D). masked_diff.mask_for short-circuited on the OPCODE -- `if (word >> 26) in (2, 3): return 0` -- ahead of the reloc dispatch, so every `j` to a LOCAL label was dropped from the comparison. The assembler resolves those itself and emits no relocation, so there was nothing link-time about them. For a loop or switch arm, which label a `j` targets is the difference between `break` (fall into the shared tail and execute its calls) and `return` (skip them): byte-proven on ov_SC03_118:func_801825EC, where the banked `break;` and a call-skipping `return;` variant differ in exactly one word (0800003e vs 08000041) and BOTH reported MATCH. The blindness reached match_one, the permuter's MaskedScorer, family_cousins.tok and the atlas similarity tiers at once -- nothing between a draft and the whole-binary gate could see it. Now the 26-bit field is masked only when reloc_kind == "26" (the linker really does fill it). R39 control: 35/35 already-banked wave-V drafts still MATCH against their snapshot .s. Other confirmations of note: §195-A bounds §167-08 with a byte-proven false-negative class (an argument that DIES at the call is allocated straight into $aN, so its only def is a plain load and every use reads $aN -- there is no positive tell in either direction, only the two-arity A/B); §195-B a CALL_INSN does not start a basic block in gcc-2.7.2, so a call-crossing temp can be a LOCAL-alloc quantity; §195-M frame `vars` is a sequential bump-allocation, unifying §193-I's CEIL(aggregate,8) term with §165-03/§167-06's 8x-orphan term as one frame_offset walk.