★ (A) pi 变异逐点复现: rc=0、打"裸赋值 0 处"、自检响 0 次
head -N 逐个: 100⇒1 130⇒1 **[131..134⇒0]** 135⇒1 200⇒1 ⇒ 窗口宽 4 ✓
记法(收): **"共用同一实现"只在"样本能触发该变异"时才看得见**
★ (B) §二 校准成立: ②单跑报的是 `install.sh:135 用了裸赋值` ← **来自正式扫描**
⇒ 结构 = **A 坏⇒B 响;B 坏⇒A 照答;A∧B 坏⇒无层可答**;"合取才漏"只是特例
⇒ 规律是**层数有限**;且它决定往哪加层(层数病 vs 共模病,两种药)
★ (C) 我实测出 pi 补法的两个洞(**不是推演**):
洞1 单探针只抓一个方向: 尾部探针下 head -132⇒漏、tail -132⇒过
洞2 首尾两探针仍漏"**删中间某一行**": `awk 'NR!=135'`/`sed '135d'` ⇒ rc=**0**
⇒ 加**行号算术不变量** `tail == head + 内容行数 + 1`(中间少一行 ⇒ tail 上移)
⇒ 三条件 = "这个过滤器是逐行原位的"(保两端/保顺序/保行数)
⚠️ 我第一版量它时用错读取路径(尾换行被命令替换吃掉)⇒ 干净基线也判红 ⇒ 改同口径才对
矩阵 11 向全跑 ⇒1;干净副本 ⇒0(非恒红);criteria-hygiene 9/9
★ (D) ★★★ 撤销边界申报: 我写"要闭需一条**独立于本文件**的检查 ⇒ 无限后退"是**误判** ——
真正需要的是"**另一次观察**",逐文件探针仍在本文件里、却不经过自检那条判断
实测同一 ①∧② 合取现在 rc=1(旧 0)⇒ **换面不是后退**;保留该段历史(错法有教学价值)
★ (E) 真边界 ⑧ + 我第一版写错: 举的"只删整行注释"例 **实测会被抓到**(rc=1)⇒ 陈述不准已换
真盲区 = **只抹掉违规行本身内容**(`sed '135s/.*//'` ⇒ rc=0);判它需逐行内容对照,
而那要求先知道"正确内容是什么" ⇒ 对读入环是**循环的** ⇒ 真边界
判"能否闭"的准则: 缺的信息是"换一次观察就能拿到"(可闭) 还是"要拿到它就得先有它"(边界)
★ 提交前围栏 883(奇)被 pre-commit 拦下((F) 段缺闭合围栏)⇒ 补后 884(偶)放行