5d41f97421
Worker D's claim 0x8009F6A0..0x8009F798 (248 B) MATCHES. Verified independently by the coordinator on a fresh work dir (candidate_bytes=248 differing_bytes=0 MATCH) and gated on the whole binary before promotion. This is the FIRST body above 244 B ever matched, and it sets a new corpus maximum (previous max 244 B at 0x80099078). THE LEVER (worker D, 4 spellings): the local working buffer must be a 3x4 word array (`int t[3][4]`, only columns 0..2 used), NOT `int t[9]`. The 4-WORD ROW STRIDE IS BYTE-LOAD-BEARING: it moves the 2nd and 3rd triples to 0x10 and 0x20, makes the frame 48 B instead of 40 B, and leaves the unused 0x0C/0x1C slots the original shows. New instance of cookbook 54 (a 2-D array's row stride is byte-load-bearing). The element type is the other half: `short` locals let cc1 drop the sign extension (lhu/subu, no frame); `int` locals keep it (lh/negu). Diagnostic broadcast: correct length + right instruction multiset and order + residual concentrated on the FRAME ADJUSTMENT and every sp-relative offset => suspect a local aggregate's row stride / element size, not the control flow. D's variant (c) was a textbook case: 19 differing bytes, all of them the frame size and the address shift that follows from it, closed by one array-shape change. Also in this commit — a fail-fast fix to sf3_merge. Worker D placed the source md5 in the claim row's 4th column, which sf3_merge passed through as a region override, so the row MERGED and only `sf3_match gate` failed later with "unknown override key 'md5'". sf3_merge now validates override keys at merge time and rejects the row with a message naming the valid keys and pointing at report.tsv for per-claim metadata. 4 new tests, suite 242 -> 246, OK. The candidate gate caught it; the tracked registry was untouched.