★★★★ 修 · 反向对照的"见证力"缺陷: 每条件各配一条"**只踩它**"的样本(_pc_bad 原样本被两条件同时拒 ⇒ 对两条都无见证)
★★ 缺陷(承上一条机制): 反向对照**只有一条**样本 `. /tmp/not-our-lib/env-defaults.sh.other`,
而它**同时**被两条独立条件拒 —— ① 前边界 `[^[:alnum:]_.-]lib/env-defaults`(`-lib` 的 `-`)
② 尾锚 `["']?[[:space:]]*$`(`.other` 结尾)⇒ **对两条都没有见证力**
⇒ 删掉任一条条件,对照**照样绿**(实测: 两个锚各自都能被单独删掉而不被发现)
★ 修(+2 条样本): ① `. /tmp/not-our-lib/env-defaults.sh`(**只踩前边界**,结尾合法 `.sh`)
② `. /tmp/zzz/lib/env-defaults.sh.other`(**只踩尾锚**,前面合法 `/`)
★ 变异测试(这才是判据):
删【前边界】: 旧样本 ⇒ rc=0 **无人报** / 新样本 ⇒ rc=1 报"只在前边界违规的异库文件" ✓
删【尾锚】 : 旧样本 ⇒ rc=0 **无人报** / 新样本 ⇒ rc=1 报"只在尾锚违规的异库文件" ✓
⇒ **load-bearing 确认**(退回旧样本则两锚都删得不知不觉)
★ 且**报的是哪一句**能**指认是哪个锚**被删,不是笼统"域偏宽" ⇒ 诊断可用
★ 对照/回归(源 = 提交对象 + 工作区判据):
全绿对照(不注入、不删锚) ⇒ rc=0、FAIL=0 ✓
全红对照(注入 1 真违规) ⇒ rc=1、报 `deploy/install.sh:135 用了裸赋值` ✓
真树基线 rc=0、`(3 个调用者,裸赋值 0 处)`、FAIL=0 ✓(新样本**不误伤**真仓)
`bash -n` rc=0 ✓ / criteria-hygiene **10/10** ✓
★ 一般化: **每个"拒绝某类输入"的条件,都要有一条只被它拒的样本** —— 否则那个条件是**没人看着的**;
"多条条件一起拒"会让**全部相关条件**同时失去见证(= **判定侧的共模**,与输入侧共模对偶)
★ 围栏 1140(偶/配对无缺)
This commit is contained in:
@ -325,7 +325,21 @@ AGENTMAIL_REQUIRE="git go"' || true)"
|
||||
_is_caller_text '. /dev/null;# 提到 env-defaults.sh' && _pc_bad="分号后的注释(该截没截)"
|
||||
_is_caller_text '# . env-defaults.sh' && _pc_bad="${_pc_bad}整行注释"
|
||||
# ★ pi `ae164e2e` 打出的**假红**(谓词过宽: 子串出现 ≠ 指向本库)—— 这条必须在反向对照里:
|
||||
# ★★★★ 2026-09-25 我自 catch 的一个**见证力**缺陷(原来只放下面第一条样本):
|
||||
# 那条样本**同时**踩两条独立条件 ——
|
||||
# ① **前边界** `[^[:alnum:]_.-]lib/env-defaults`: `not-our-lib` 里的 `-` 在排除集里 ⇒ 拒
|
||||
# ② **尾锚** `["']?[[:space:]]*$` : 结尾 `.other` ⇒ 拒
|
||||
# ⇒ 实测: **删掉任一条条件,它仍被另一条拒** ⇒ 反向对照**照样绿** ⇒ **两条条件都没有见证** ★
|
||||
# (实测: 去前边界或去尾锚,各自都能让一个异库文件进集合并报它的裸赋值,而无人拦。)
|
||||
# ⇒ 修法: 每个条件各配一条**"只踩它"**的样本(其余条件全满足),否则那个条件是**没人看着**的。
|
||||
# ★ 这是一般规则,不只对本谓词: **被多条条件同时拒的样本,对其中任何一条都没有见证力。**
|
||||
_is_caller_text '. /tmp/not-our-lib/env-defaults.sh.other' && _pc_bad="${_pc_bad}同名后缀的**别的**文件"
|
||||
# ① 只踩【前边界】(结尾是合法 `.sh`,但 `-lib` 前的 `-` 不是词边界):
|
||||
# ⇒ **删掉前边界**时这条样本会被认成调用者 ⇒ `_pc_bad` 非空 ⇒ **本对照报红**(见证成立)
|
||||
_is_caller_text '. /tmp/not-our-lib/env-defaults.sh' && _pc_bad="${_pc_bad}只在前边界违规的异库文件"
|
||||
# ② 只踩【尾锚】(前面是合法的 `/`,但结尾 `.other` 让文件名更长):
|
||||
# ⇒ **删掉尾锚**时这条样本会被认成调用者 ⇒ `_pc_bad` 非空 ⇒ **本对照报红**(见证成立)
|
||||
_is_caller_text '. /tmp/zzz/lib/env-defaults.sh.other' && _pc_bad="${_pc_bad}只在尾锚违规的异库文件"
|
||||
if [ -n "$_pc_bad" ]; then
|
||||
printf ' [FAIL] 判据自检失败(调用者判定,反向):**非调用者样本**被判成了调用者(%s)——\n' "$_pc_bad" >&2
|
||||
printf ' ⇒ 域会**偏大**,与该库无关的文件被拖进来报红(假红)。按红计。\n' >&2
|
||||
|
||||
Reference in New Issue
Block a user