★ 我自己实测出判据的**第五个洞**: 防空转只判"集合空",**收窄发现域**(find)时集合非空 ⇒ 假绿且自检看不见;补**下界守卫**(调用者 ≥ 3)
★ 洞(pi 没报,是我顺着 pi 那句"_scan_text 内部再调 strip_comments 会共模"往下试出来的):
② 防空转判的是 `n_callers -lt 1`(**集合空**)
⇒ 把发现域**收窄**时集合**非空**(2 个)⇒ ② **不响**
⇒ 而收窄让**域外的违规整批消失** ⇒ 报"裸赋值 0 处"
实测(树上 install.sh:135 恰是裸赋值 `AGENTMAIL_REQUIRE="x"`):
把 `find deploy -name '*.sh'` 收窄成 `find deploy -name 'redeploy*.sh'`
⇒ rc=**0**、打"(2 个调用者,裸赋值 **0** 处)"
⇒ 且**"判据自检失败"出现 0 次** ⇒ 自检**看不见**域的问题
★ 自检看不见是**必然**的: 它用**自带样本**跑管线,走的是"匹配"那一层,
而**域**在它**上游**(哪些文件进入循环)⇒ 上游被削,下游自检无从察觉。
★ 补法: **下界守卫**(`AM_CALLER_MIN=3`,与 criteria-hygiene 的 `gates.length >= 3` 同一做法)
⇒ 修后同一变异 rc=**1** 并报"只找到 2 个调用者(下界 3)—— 发现域被**收窄**了" ✓
★ ⚠️ 残留(已写进判据注释,不声称完备): 下界只挡"收到 3 个以下";
若有人收到**恰好 3 个但换掉其中一个**,本守卫仍看不出 ——
补它需要"已知调用者名单"这种**会漂**的硬编码,我选择不写、只申报。
★ 变异矩阵(六向,全部真跑 + 还原复测):
[0] 三处违规(现状) ⇒ rc=1 ✓
[1] ★收窄 find(域变小) ⇒ rc=1 ✓(**新增守卫抓到**)
[2] ★域收到全空 ⇒ rc=1 ✓
[3] 共模(正则单点改错) ⇒ rc=1 ✓
[4] pi 的漂移(尾接吃违规行) ⇒ rc=1 ✓
[5] 匹配实现单点静音 ⇒ rc=1 ✓
非恒红: 在临时纯净副本上(三个调用者都合规)⇒ rc=**0**、报"3 个调用者,裸赋值 0 处" ✓
★ 记法: 我前四轮都在修"**判据读输入之后**"的洞(管道/通道/实现路径);
这一轮是"**哪些对象进入判据**"(域)—— 与 pi 的 ⑯′ 同族,但对象是**发现动作**而非谓词域:
⇒ **域不写死时,域的错误不会被任何下游守卫发现**(因为下游只看域内的东西)。
★ 另: 我没有动 `deploy/install.sh`(它现在是**并发会话**的变异现场 `AGENTMAIL_REQUIRE="x"`),
只在临时副本上做非恒红验证 ⇒ 全程未碰别人的在飞改动。
This commit is contained in:
@ -112,6 +112,27 @@ if [ "$n_callers" -lt 1 ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# ②′ ★★ **下界守卫**(2026-09-25 我自己实测出来的洞,不是 pi 报的):
|
||||
# ② 只判"集合**空**",而**把发现域收窄**(例如把 `find deploy -name '*.sh'`
|
||||
# 改成 `find deploy -name 'redeploy*.sh'`)时集合**非空**(2 个)⇒ ② 不响。
|
||||
# 而收窄会让**域外的违规整批消失** ⇒ 判据报"裸赋值 0 处" ⇒ **假绿**。
|
||||
# 实测: 树上 install.sh:135 是裸赋值,把 find 收窄到 `redeploy*.sh` ⇒
|
||||
# rc=**0**、打"(2 个调用者,裸赋值 0 处)",且**自检 0 次**(自检看不见域的问题)。
|
||||
# ⇒ 与 ② 的关系: ② 管"**全丢**"(集合空),本守卫管"**部分丢**"(域被收窄)。
|
||||
# ⇒ 判法用**下界**: 调用者 ≥ 3(现状: install.sh / redeploy-gateway.sh / redeploy-plugin.sh)。
|
||||
# 与 `client/electron/test/criteria-hygiene.test.mjs` 里 `gates.length >= 3` 同一做法。
|
||||
# ⚠️ 残留(如实记): 下界只挡住"收到 3 个以下";若有人收到**恰好 3 个但换掉其中一个**
|
||||
# (比如只扫 install.sh + 两个不存在的东西),本守卫仍看不出 —— 补它需要
|
||||
# "已知调用者名单"这种**会漂**的硬编码,我选择不写,改在这里申报。
|
||||
AM_CALLER_MIN=3
|
||||
if [ "$n_callers" -lt "$AM_CALLER_MIN" ]; then
|
||||
echo " [FAIL] 只找到 ${n_callers} 个调用者(下界 ${AM_CALLER_MIN})—— 发现域被**收窄**了。" >&2
|
||||
echo " 本判据的域是「deploy/ 下所有 source env-defaults.sh 的 *.sh」;" >&2
|
||||
echo " 域一收窄,域外的违规就整批消失,而集合仍非空 ⇒ **防空转守卫看不见** ⇒ 假绿。" >&2
|
||||
echo " (实测: 收窄 find 后 rc=0 且打'裸赋值 0 处',而树上确有违规。)" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
fails=0
|
||||
for f in "$@"; do
|
||||
# ★★ 这里**也不能**写成 `strip_comments "$f" | grep -nE …`(我第一版就是):
|
||||
|
||||
Reference in New Issue
Block a user