申报 ⑧ 更正: 逐文件探针的**真盲区**是"抹掉某一行的内容"(保行数/顺序/两端);★ 并区分"换面可闭"(⑤,我误判过) 与"要拿到它得先有它"(真边界)

★ 我第一版 ⑧ 写的是"不能证明注释剥离的语义正确",并举了"只删整行注释"当例子 ——
   **实测那个例子会被抓到**(rc=1),所以那段**陈述不准确**,已换掉。
★ 实测出的**真盲区**(可复现): 只清空**违规行本身**的内容、其余行原样 ⇒
   行数/顺序/两端全不变 ⇒ 探针通过 ⇒ **假绿**:
     `strip_text` 尾接 `sed '135s/.*//'`(或 `'135s/.*/ /'`)⇒ rc=**0**
   对照: `sed '135s/AGENTMAIL_REQUIRE/X'` ⇒ rc=**1**(它同时动了别的可匹配串)
   ⇒ 所以"改内容就一定被抓"是**错的**;只有"**抹掉那一行**"这个形状才进盲区。
★ 要判它需**逐行内容对照**,而那要求判据先知道"正确内容是什么" ——
   对"读入环"而言这是**循环的**(它就是要读出内容的那一环)⇒ 这**确实是**边界。
★ 关键区分(我这轮才想清楚,写进注释):
   ⑤ 是"**同一次观察**的无限后退" ⇒ 我当时据此申报为边界,那是**误判**(已闭);
   ⑧ 是"**观察对象之外**的东西"(探针看行号与两端,看不到行内被抹)。
   ⇒ 判"能不能闭"要先问: 缺的信息是"**换一次观察就能拿到**"(可闭)
     还是"**要拿到它就得先有它**"(真边界)。
This commit is contained in:
2026-09-25 07:52:59 +08:00
parent df836e4ef7
commit 0a83eafd91

View File

@ -321,8 +321,18 @@ exit 0
# 我当时把"换面"误判成了"后退",于是把一个可闭的点申报成了边界。
# ⑥ 间接赋值不判(eval/read/env 注入),只判**字面裸赋值**。
# ⑦ 下界守卫只挡"收到 <3 个调用者";"恰好 3 个但换掉其中一个"不判(需会漂的名单)。
# ⑧ ★ 逐文件探针的**射程**(实测申报,不是"没想到"): 它证明"读入是逐行原位的",
# 但**不能**证明"注释剥离的语义正确" —— 例如把 `sed 's/#.*$//'` 改成
# `sed 's/#.*$//'` 之外的**等价但不同**的规则(如只删整行注释)仍可能通过探针,
# 因为探针只查"行号与两端",不查"哪一列被删"。要判它需**按列/按语义**的对照。
# ⑧ ★ 逐文件探针的**射程**(实测申报,不是"没想到"): 它证明的是
# "**读入这一环保行数、保顺序、保两端**",**不**证明"**每一行的内容被原样保留**"。
# ⇒ 具体的盲区(我实测出来的、可复现的形状): 只**清空违规行本身的内容**、
# 其余行原样 ⇒ 行数/顺序/两端全不变 ⇒ 探针通过 ⇒ **假绿**:
# `strip_text` 尾接 `sed '135s/.*//'`(或 `'135s/.*/ /'`)⇒ rc=**0**
# (而 `sed '135s/AGENTMAIL_REQUIRE/X'` 会**被抓到** —— 因为它同时改了别的可匹配串,
# 所以"改内容就一定被抓"是**错的**,只有"抹掉那一行"这个形状才进盲区。)
# ⇒ 要判它需要**逐行内容对照**(例如把每个非注释行哈希后比长度/前缀),
# 而那要求判据先知道"正确内容是什么" —— 对"读入环"来说这是循环的(它就是要读出内容的那一环)。
# ⇒ 因此这**确实是**边界(与 ⑥⑦ 同级)。★ 注意与 ⑤ 的区别:
# ⑤ 是"**同一次观察**的无限后退"(我当时据此申报,那是**误判**,已闭);
# ⑧ 是"**观察对象之外**的东西"(探针能看行号与两端,看不到行内内容被抹)。
# ⇒ 判"能不能闭"要先问: 缺的信息是"**换一次观察就能拿到**"(可闭)还是
# "**要拿到它就得先有它**"(真边界)。
# ══════════════════════════════════════════════════════════════════════════════