diff --git a/docs/MATCHING_COOKBOOK.md b/docs/MATCHING_COOKBOOK.md index 6427151..d64960f 100644 --- a/docs/MATCHING_COOKBOOK.md +++ b/docs/MATCHING_COOKBOOK.md @@ -2744,3 +2744,26 @@ two `move`s (one in the 2nd call's delay slot, one in the 3rd's) then `addu s0,s Same family as findings 156 and 157: **a chained accumulation is not the same source as three named results summed.** + +### 169. Worker A's family calibration CONFIRMED AT SCALE — 0.96–0.99 is idiom noise (coordinator) + +Worker A calibrated `sf3_family` by checking two 0.97-scoring entries and finding neither shared its +sibling's body. **I have now confirmed that on eight candidates by raw-word diff**, which is the +decisive test: + +| candidate | sibling | words | **differing words** | +|---|---|---|---| +| `0x8006EBA0` | `0x80028CE0` | 61 | **60** | +| `0x800FFFEC` | `0x8007E8B8` | 19 | **18** | +| `0x8005E17C` | `0x800FB54C` | 26 | **25** | + +**A high cosine with a size ratio of 1.00 is not evidence of a shared body** — at 0.96–0.99 the +histogram is matching common **idioms**, exactly as worker A said. Contrast the genuine siblings: +`0x800F3DC0` vs `0x800F3E18` differs in **1 of 22 words** (finding 166). + +> **The useful band is ratio 1.000 AND a near-zero raw-word diff.** Check the words, not the score — +> it is one cheap computation and it is the difference between a copy-and-rename and a full +> derivation. + +**Tool bug fixed:** `sf3_family` did not exclude already-claimed rows, so its top hit was a row +matching **itself**. The registry is now the authority and claimed rows are skipped. diff --git a/tools/sf3_family b/tools/sf3_family index 683b47e..d1c0846 100755 --- a/tools/sf3_family +++ b/tools/sf3_family @@ -119,8 +119,15 @@ def main(argv: list[str]) -> int: payload = EXE.read_bytes() + claimed = read_regions(REGIONS) + claimed_ranges = [(s, e) for s, e, _ in claimed] + claimed_starts = {s for s, _, _ in claimed} + + def is_claimed(addr: int) -> bool: + return addr in claimed_starts or any(s < addr < e for s, e in claimed_ranges) + matched = [] - for start, end, source in read_regions(REGIONS): + for start, end, source in claimed: words = body_words(payload, start, end) matched.append((start, end, source, histogram(words), end - start)) @@ -129,6 +136,8 @@ def main(argv: list[str]) -> int: size = end - start if size < min_size or size > max_size: continue + if is_claimed(start): + continue # already merged -- reporting it is noise (it matched itself) mine = histogram(body_words(payload, start, end)) best = None for m_start, m_end, m_source, m_hist, m_size in matched: