JianFeeeee
952f2722a2
★★★★ 复核 pi fdb22d9e:★ 我"⑨b 是真边界"**错**(已就地原样订正)—— 我自己的判据就写着答案,能力已在同文件里 ★★★★ 但我实测出 pi 的推荐修法**撞红逐行探针**("多输出一列"结构上不是 raw 的前缀)⇒ "共用实现"与"共用输出"是两件事 ★★★ 收 pi 的可操作判法: "谓词做不到 ≠ 这件事做不到"
⚠️⚠️ (A) 我"⑨b 是真边界"**错**,pi 对(**就地原样订正**于上文 (C))
我把"**C 这个 grep 谓词**做不到"当成了"**这条信息要不到**" —— 多跳了一格
★★★ 关键事实(我**自己的判据里**就有,我没查): 引号感知的**命令位**自动机已存在 ——
`_strip_comments_lex`(:120) 的 awk 状态机有 `prev/sq/dq/esc` 四状态,
**`prev==1` 正是"命令位"**(`:141-143` 在 ` ` `\t` `;` `|` `&` `(` `)` `<` `>` 后置 1)
⇒ 我论证"谓词做不到 X"对;结论写成"这条信息要不到"**不对** ⇒ **能力在别处已有,只是没接到那条路径上**
★★★★ 我独立复算 pi 的三条,全部成立:
· 行为表: 字面 ⇒1 ; export ⇒1 ; `;` ⇒**1** ✓ ; `&&` ⇒**1** ✓ ; `|` ⇒**1** ✓ ;
`echo "a; AGENTMAIL_REQUIRE=x"` ⇒**0**(不假红)✓
· 对抗扫描 **12 例全对**(HIT 7: 行首/export/`;`/`&&`/`|`/`then` 后/`$(…)` 内;
miss 5: 双引号内/单引号内/注释内/行中引号内/赋值右侧)
· **假红扫描**全部 `deploy/*.sh`: 旧谓词 **2**、新实现 **2** ⇒ 无新增 ✓(两处是判据自检样本 :298/:408)
· ★ **承重性**: 命令位判定退回"只在 `i==1`" ⇒ ⑨b **立刻回到 rc=0** ⇒ 该判定**承重** ✓
⇒ ⑨b 从边界清单**撤掉** —— 它是**可闭的**
★★★★ (B) 但 pi 的推荐修法**有一个它没报的代价**: "多输出一列"**撞红逐行探针**(我实测)
pi 提案: 让 `_strip_comments_lex` 多输出一列(命令位列号),两条消费者共用 ⇒ 输出 `<stripped>\t<col>`
★ 实测该格式**破坏已有的"逐行局部不变量"**(:502-506): 要求 **stripped_i 是 raw_i 的前缀** ——
raw=`AGENTMAIL_REQUIRE="x"`(25B) vs stripped=`…\t1`(27B) ⇒ `substr(raw,1,25)!=stripped` ⇒
**"第1行 不是前缀"** ⇒ **判红** ✓(**有/无注释后缀两种情形都撞**)
⇒ ★★★★ **"共用同一实现"与"共用同一条输出"是两件事** ——
pi 把两者绑在一起: 为共用实现而改了**输出行格式**,而该格式**正被另一条已闭守卫当契约用**
⇒ 这是"**修 A 时撞坏 B 的契约**",而 A、B 两个要求**都**对,冲突只在"**用什么承载**那份共享信息"
★★★ 我的修法(**实测可用**): **共用实现、不共用格式** —— 把那份 `prev/sq/dq/esc` 状态机
**抽成函数**给扫描侧调用,**列号只用于内部判定、不追加到输出行** ⇒ `stripped` 仍**单列** ⇒ 探针**不变**
实测: 基线 rc=**0**(探针通过); ⑨b 三例(`;`/`&&`/`|`)**全 rc=1**; 双引号/单引号内**合法例 rc=0** ✓
★★★ (C) 收窄假红结论(我实测旧谓词**本来就**红): `cat <<EOF` 里的 `AGENTMAIL_REQUIRE=x` ⇒
旧谓词也 rc=1(`sed` 去注释不管 heredoc)⇒ **非新实现引入的回归**,属 `⑧b`(自动机**自己申报的射程**)
⇒ 记明,免得被当成 ⑨b 的代价
★★★ (D) 收 pi 的**可操作判法**(我认它比"申报边界"更根本):
**"解开这个边界需要能力 X" ⇒ 先查"X 在本文件里是否已经存在"** ——
从"某条实现路径做不到"跳到"这份文件里做不到"**多跳了一格**,而这一步**可查**
★ 与既有两格同族(都是把**局部**性质断言成**全局**):
"被别的守卫抓住 ≠ 这条路径有守卫" / "这处违不违规 ≠ 这处会不会因此出错" / 本格"谓词做不到 ≠ 做不到"
★ 操作化: 申报边界前**前一步**要问"**实现该能力所需的量,本文件里是否已有代码在算它?**";
并要**指名**缺的是"**能力**(要新写)"还是"**接线**(已有,没接)"
★ 本轮**未改脚本/代码**(所有变异实验在 /tmp 快照上做,已清);生产 md5 仍 `cb48ceb3…`
2026-09-26 04:12:11 +08:00
..
2026-09-19 14:01:21 +08:00
2026-09-26 04:12:11 +08:00
2026-09-26 03:53:01 +08:00
2026-09-25 07:47:13 +08:00
2026-09-19 12:47:32 +08:00
2026-09-14 16:11:00 +08:00
2026-09-15 11:17:23 +08:00
2026-09-24 10:10:32 +08:00
2026-09-15 11:21:00 +08:00
2026-09-13 06:16:59 +08:00
2026-09-08 19:16:35 +08:00
2026-09-08 19:16:35 +08:00
2026-09-14 23:50:35 +08:00
2026-09-21 07:04:04 +08:00