-| `p3x:substring_in_head` | HIGH | P3.2 postmortem Rec #2 → 2026-05-20 | `substring_in_head` signal kind — closes the windows_installer_iso + iso_9660 bridge case | `2026-05-20:<sha>` (1 commit) | Rule #25 Shape-1 single-slice: new `SubstringInHeadConstraint` Pydantic sub-model (5 fields, 16-needle cap, 64-byte-per-needle cap) + `SubstringInHeadCombine` Literal + `DetectionSignalKind` += `substring_in_head` + `_eval_substring_in_head` evaluator + `_SIGNAL_COST_CLASS` entry (cost 2; same I/O class as magic_bytes) + `SIGNAL_EVALUATORS` dispatch entry + `windows_installer_iso.yaml` adopts new signal (bootmgr / sources/boot.wim / sources\\boot.wim needles; case_sensitive=false; combine=any) + `format_detection.py` drops both `iso_9660` + `windows_installer_iso` from `_CATALOG_NEEDS_DISAMBIGUATION` + deletes the bootmgr substring upgrade block in `_legacy_bridge_detect`. Corpus fixture `windows_installer_iso.head` regenerated with bootmgr at offset 0x100 + CD001 at 0x8001; parity test `_HEAD_BYTES_INSUFFICIENT` drops `windows_installer_iso`. New test file `test_substring_in_head_evaluator.py` (34 tests: positive/negative eval + case-sensitivity + combine=any/all + min_count + search_offset/length + schema validation + catalog round-trip + Rule #46 paired META-CANARY for SIGNAL_EVALUATORS exhaustive + _SIGNAL_COST_CLASS exhaustive + DISPATCH_EVALUATORS exhaustive + anti-hardcode AST-walk + 4 new paired gate-canaries that the pre-edit codebase was missing per Rule #46 §gate-canary-requirement). 433/434 pytest sweep green (1 skipped is pre-existing); Rule #11 import smoke + Rule #35b live canary via running backend confirm: bootmgr-bearing ISO → windows_installer_iso, bare CD001 ISO → iso_9660. |
0 commit comments