Files
BFM-decomp/docs/family-hseq.md
T
Drew T bcc3130eb4 feat(phase-30 S49): the A-prop word-diff card + aprop_wave — 56 banked from the >=16 head (§170)
- NEW family_cousins.py --aprop-cards + tools/wave/aprop_wave.js: lane A (1,700 open fns /
  76,419 ins) had NO card type — cousin diffs are empty for h_seq-identical members, so the card
  is a positional WORD diff vs the matched sibling, grouped BY FAMILY (one agent, N drafts).
  Head cards: 13 families / 433 members, median TWO differing words each.
- calibration 9 batches / 108 members: 98 agent-MATCH (91%, best of any wave) -> 56 BANKED (57%),
  ~80k tok/banked fn vs 157k (cousin card) vs 400k+ (crack wave). R22 213/213 BYTE-IDENTICAL.
- HONEST GAP (R14): 91% agent -> 57% gate is the worst conversion measured; 14 groups banked 0.
  Hypothesis TESTABLE not proven — family batching concentrates members per destination TU, the
  §169 collision. Re-gate unbanked ONE PER TU before scaling the remaining 320.
- >=16 head diagnosed: 3 of 4 blockers are plumbing — the --band substantial default hid 5 of 13
  families from every prior sweep; one missing file-scope extern (D_801ED98C) gates 56 PURE
  members; dedup_extend is macro-only. Only func_8017C294 is a genuine crack.
- fleet 96.56% fn / 95.2% instr / 89.9% distinct; stubs 12,535 -> 12,468; dedup 2,043/0.
- cookbook §170.
2026-08-13 17:44:20 -06:00

71 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Phase 26 — h_seq family survey (T1)
> **Glossary — `zero-crack` in THIS file means `n_matched == 0`: the family has no matched member anywhere and needs its FIRST crack.** (Roadmap §3 T3 uses the phrase for the OPPOSITE case — an already-matched exemplar awaiting propagation.)
>
> Generated by `tools/family_hseq.py` from the 212 binary sigs + per-binary src stubs. Ranked by TEMPLATABLE byte-weight (PURE+IMM members × nins × 4). The byte-gate is the arbiter.
>
> **Scope (212 binaries): 141 location overlays + 70 md_* modules + the resident · MAIN IS EXCLUDED** · generated at HEAD `commit:1843` · stub set derived from `corpus.stubs` — the same oracle `progress.py` counts, so same-tree overlay totals agree by construction; compare digests only at the same HEAD.
**Fleet (overlays):** 96.8% fn / 95.7% instr / 91.1% distinct-code matched. Unmatched: 11,501 instances / 573,821 ins (9,892 distinct classes).
**Tail cross-check (Phase-25 close):** 7,541 tail fns / 372,807 ins → 440 h_seq families ≥2, **72 substantial (nins≥80) / 30,992 ins**.
**Full frontier (all unmatched by h_seq):** 2014 target families (≥2 members or a matched sibling) + 4504 singletons (Step-D residue). Substantial: **266 families / 94,856 templatable ins**, 59 with a matched sibling (zero-crack). Substantial member classes: 671 PURE · 29 IMM · 6 STRUCT-excluded.
## Top substantial families (by templatable byte-weight)
| # | nins | members (P/I/S) | #addr/#ov | tag | class | matched | jr | exemplar | templ. ins |
|--:|--:|--|--|--|--|--:|:-:|--|--:|
| 1 | 246 | 16 (16/0/0) | 6/16 | cross-address | PURE | 0 | · | 0x8017c294 draft-ov077 | 3,936 |
| 2 | 611 | 4 (4/0/0) | 4/4 | cross-address | PURE | 1 | · | 0x80186e24 matched | 2,444 |
| 3 | 770 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | · | 0x80144b9c matched-ov077 | 2,310 |
| 4 | 551 | 4 (4/0/0) | 4/4 | cross-address | PURE | 1 | Y | 0x80189540 matched | 2,204 |
| 5 | 407 | 4 (4/0/0) | 4/4 | cross-address | PURE | 1 | Y | 0x8017c3bc matched | 1,628 |
| 6 | 279 | 5 (5/0/0) | 4/5 | cross-address | PURE | 0 | Y | 0x8017f2d4 modal | 1,395 |
| 7 | 188 | 7 (7/0/0) | 1/7 | per-location | PURE | 134 | Y | 0x8016ab6c matched-ov077 | 1,316 |
| 8 | 187 | 7 (7/0/0) | 1/7 | per-location | PURE | 134 | · | 0x8013dd68 matched-ov077 | 1,309 |
| 9 | 326 | 4 (4/0/0) | 4/4 | cross-address | PURE | 1 | Y | 0x8017d730 matched | 1,304 |
| 10 | 291 | 4 (4/0/0) | 4/4 | cross-address | PURE | 1 | Y | 0x8017d2a4 matched | 1,164 |
| 11 | 363 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | Y | 0x8015444c matched-ov077 | 1,089 |
| 12 | 102 | 10 (0/10/0) | 9/10 | scattered | IMM | 78 | · | 0x8017d290 matched | 1,020 |
| 13 | 329 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | Y | 0x8013c414 matched-ov077 | 987 |
| 14 | 127 | 7 (7/0/0) | 1/7 | per-location | PURE | 134 | · | 0x80145cec matched-ov077 | 889 |
| 15 | 218 | 4 (4/0/0) | 4/4 | cross-address | PURE | 1 | Y | 0x8017cf3c matched | 872 |
| 16 | 272 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | Y | 0x8013b83c matched-ov077 | 816 |
| 17 | 266 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | · | 0x80130d48 matched-ov077 | 798 |
| 18 | 196 | 4 (4/0/0) | 4/4 | cross-address | PURE | 0 | Y | 0x8017ffd0 modal | 784 |
| 19 | 108 | 6 (6/0/0) | 6/6 | cross-address | PURE | 0 | Y | 0x8017eeec modal | 648 |
| 20 | 203 | 3 (0/3/0) | 2/3 | cross-address | IMM | 7 | · | 0x8017e804 matched | 609 |
| 21 | 198 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | Y | 0x8013bd74 matched-ov077 | 594 |
| 22 | 94 | 6 (6/0/0) | 6/6 | cross-address | PURE | 0 | · | 0x801874e4 modal | 564 |
| 23 | 110 | 5 (5/0/0) | 5/5 | cross-address | PURE | 1 | · | 0x80188b9c matched | 550 |
| 24 | 275 | 2 (2/0/0) | 2/1 | cross-address | PURE | 0 | · | 0x8017f9ac modal | 550 |
| 25 | 91 | 6 (6/0/0) | 6/6 | cross-address | PURE | 0 | · | 0x80189e60 modal | 546 |
| 26 | 265 | 2 (0/2/0) | 2/2 | cross-address | IMM | 5 | · | 0x80183e04 matched | 530 |
| 27 | 127 | 4 (4/0/0) | 4/4 | cross-address | PURE | 1 | · | 0x8017eb70 matched | 508 |
| 28 | 101 | 5 (5/0/0) | 5/5 | cross-address | PURE | 1 | · | 0x8017f278 matched | 505 |
| 29 | 124 | 4 (4/0/0) | 4/4 | cross-address | PURE | 1 | · | 0x8017dd28 matched | 496 |
| 30 | 246 | 2 (2/0/0) | 2/1 | cross-address | PURE | 0 | · | 0x8017f5d4 modal | 492 |
| 31 | 154 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | Y | 0x8013c0f8 matched-ov077 | 462 |
| 32 | 148 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | · | 0x8016d1d8 matched-ov077 | 444 |
| 33 | 111 | 4 (4/0/0) | 4/4 | cross-address | PURE | 0 | · | 0x801832f8 modal | 444 |
| 34 | 108 | 4 (4/0/0) | 4/4 | cross-address | PURE | 1 | Y | 0x8017ca18 matched | 432 |
| 35 | 107 | 4 (4/0/0) | 2/4 | cross-address | PURE | 2 | · | 0x8018a438 matched | 428 |
| 36 | 85 | 5 (5/0/0) | 5/5 | cross-address | PURE | 0 | · | 0x8017d3f4 modal | 425 |
| 37 | 212 | 2 (2/0/0) | 2/1 | cross-address | PURE | 0 | · | 0x801805d4 modal | 424 |
| 38 | 84 | 5 (5/0/0) | 4/5 | cross-address | PURE | 0 | · | 0x8017e108 modal | 420 |
| 39 | 209 | 2 (2/0/0) | 2/2 | cross-address | PURE | 0 | Y | 0x801810c8 modal | 418 |
| 40 | 201 | 2 (2/0/0) | 1/2 | per-location | PURE | 1 | Y | 0x80181be4 matched-ov077 | 402 |
| 41 | 397 | 1 (1/0/0) | 1/1 | per-location | PURE | 2 | · | 0x8018f060 matched | 397 |
| 42 | 197 | 2 (2/0/0) | 1/2 | per-location | PURE | 0 | · | 0x80184a08 modal | 394 |
| 43 | 97 | 4 (4/0/0) | 4/4 | cross-address | PURE | 0 | · | 0x8017dab8 modal | 388 |
| 44 | 97 | 4 (4/0/0) | 4/4 | cross-address | PURE | 0 | · | 0x80181edc modal | 388 |
| 45 | 97 | 4 (4/0/0) | 4/4 | cross-address | PURE | 0 | · | 0x801822c0 modal | 388 |
| 46 | 96 | 4 (4/0/0) | 4/4 | cross-address | PURE | 0 | · | 0x8017fd64 modal | 384 |
| 47 | 192 | 2 (2/0/0) | 2/2 | cross-address | PURE | 1 | · | 0x80191020 matched | 384 |
| 48 | 127 | 3 (3/0/0) | 3/3 | cross-address | PURE | 0 | · | 0x80181d44 modal | 381 |
| 49 | 95 | 4 (4/0/0) | 4/4 | cross-address | PURE | 0 | · | 0x8018317c modal | 380 |
| 50 | 94 | 4 (4/0/0) | 4/4 | cross-address | PURE | 0 | · | 0x80188250 modal | 376 |