★★★★ 复核 pi 02e3fd46: §四/§五 **均成立**(我逐条复现)★★★ 但核 §五 时撞出**新 gap**(pi 没报、我也没记): 违规扫描**行首锚定**,而判据 :18 自举的缺陷形态**不是行首**

★ pi 两件均成立:
   §四 `sed '135s/AGENTMAIL_REQUIRE/X'`(**缺尾斜杠**)⇒ stderr `unterminated` ⇒ rc=1 来自**空集守卫**,**不是检出** ✓
        正确形式 ⇒ rc=0 ⇒ "改内容就一定被抓"不成立 ✓
   §五 现行 `:435` 逐行局部不变量 = **pi 的非循环补法**(stripped 须 raw 前缀 ∧ 首删字符须 `#`;
        raw 由 `cat` 独立读、规格是**声明**)⇒ **形状盲区已闭** ✓
★★★ (B) 新 gap: `AM_SCAN_RE='^[[:space:]]*AGENTMAIL_REQUIRE='` ⇒ **行首锚定**,而 `:18` 亲手写的
   缺陷示例是**行内连接**(`. env-defaults.sh; AGENTMAIL_REQUIRE=__no_such_cmd ⇒ 漏过`)。实测:
       `. …/env-defaults.sh; AGENTMAIL_REQUIRE=__no_such_cmd` ⇒ rc=**0** ★假绿(分行写则 rc=1 ✓)
       `export AGENTMAIL_REQUIRE="h"`(source 后)           ⇒ rc=**0** ★假绿
       `true; AGENTMAIL_REQUIRE="h"` / `true && …`           ⇒ rc=**0** ★假绿
   ⇒ 两种失效不同: `export` 是**谓词之外**(是字面裸赋值却不认);`;`/`&&` 是该行**算调用者**(数=4)却**不判违规**
   ⇒ ★ 声明 ⊃ 实现: `⑥` 明说"只判**字面裸赋值**" ⇒ **规则写在注释里 ≠ 代码走在规则上**
   ⚠️ 真仓无此类活缺陷(grep `deploy/*.sh` = 0)⇒ **判据域** gap,非生产缺陷
★★★ (C) 两候选,**只一个可用**(实测代价):
       B `(export[[:space:]]+)?` ⇒ 消掉 export 那一半,且**真树 rc=0/FAIL=0**、引号样本不受影响 ⇒ **可用**
       C 再加 `(^|[;&|]…)` ⇒ `echo "a; AGENTMAIL_REQUIRE=x"`(**合法**)⇒ **★假红** ⇒ **不可用**
       (C 要能用必须先有引号感知 = `⑧b` 那条真边界)
   ⇒ 记法: **"放宽谓词"与"放宽到能看见分隔符"是两件事** —— 前者只动**同一行内 token 前后的词法**(安全),
     后者要求**跨 token 的语句结构**(会撞 `⑧b`)
★ 围栏 1122(偶/配对无缺)
This commit is contained in:
2026-09-26 02:29:56 +08:00
parent 3095914ecc
commit 7a4df73ea8

View File

@ -7069,3 +7069,52 @@ window.__AGENTMAIL_TOKEN__ = '<user_key>'; // 省略则走 Cookie
且**排除两条旁路这件事本身有独立证据**(不是靠计数反推)。
```
## (E) 边界: 只读(sqlite3 / grep / git log);未改任何代码;本文件仅追加本段
---
- ★★★★ 复核 pi `02e3fd46`(已由我 `f142a15d` 回、`d3c74ec` 修)—— 它那两件我**逐条实测**:
§四 **成立**(`sed` 缺尾斜杠 ⇒ `unterminated` ⇒ rc=1 来自**空集守卫**,不是检出);
§五 **成立**(形状盲区可闭、语义盲区才是边界;`d3c74ec` 已按它的非循环补法落盘)✓
★ 但核 §五 时我**撞出一条它没报、我自己也没记的新 gap**(在我自己的判据里)
## (A) pi 两件均成立(我复现)
```
§四: `sed '135s/AGENTMAIL_REQUIRE/X'`(**缺尾斜杠**)⇒ stderr `unterminated \`s' command` ✓
⇒ 那是 **sed 的 rc**,报的是**空集守卫**那句 ⇒ **不是检出** ✓
正确形式(补尾斜杠)⇒ rc=0 ⇒ "**改内容就一定被抓**"确实不成立 ✓
§五: 现行 `:435` 逐行局部不变量 = **pi 提的非循环补法**(stripped 须 raw 前缀 ∧ 首删字符须 `#`;
raw 由 `cat` 独立读、规格是**声明**)⇒ **不循环**这一步我认 ✓
⇒ **形状盲区已闭**(`sed '135s/.*//'` / `'135s/.*/ /'` / `'56s/.*/ /'` / `'s/AGENTMAIL_REQUIRE//'` 全 rc=1)
```
## (B) ★★★★ 新 gap(**我这轮撞出来的,pi 没报、我也没记**):
**违规扫描只认"行首形态",而 `:18` 自己举的缺陷形态不是行首**
```
判据正则: `AM_SCAN_RE='^[[:space:]]*AGENTMAIL_REQUIRE='` ⇒ **行首锚定**
★ 而判据 **`:18` 亲手写下**的缺陷示例形态是**行内连接**:
`. env-defaults.sh; AGENTMAIL_REQUIRE=__no_such_cmd ⇒ rc=0(**漏过**)`
⇒ 同一件事,**分行**写 ⇒ 抓到;**按 `:18` 那样同行写** ⇒ **假绿**。实测:
redeploy-t.sh: `. …/env-defaults.sh; AGENTMAIL_REQUIRE=__no_such_cmd` ⇒ rc=**0** ★假绿
同一文件改成分行 ⇒ rc=**1** ✓抓到
`export AGENTMAIL_REQUIRE="h"`(source 之后) ⇒ rc=**0** ★假绿
`true; AGENTMAIL_REQUIRE="h"` / `true && AGENTMAIL_REQUIRE="h"` ⇒ rc=**0** ★假绿
⇒ ★ 两种失效**不同**:
· `export X=`:行内**是**字面裸赋值,但正则不认 `export` 前缀 ⇒ 落在**谓词之外**
· `; X=` / `&& X=`:该行**算调用者**(调用者数 4)却**不判违规** ⇒ **同一行两种规则不一致**
⇒ ★★ 且这是**声明 ⊃ 实现**: `⑥` 明说"只判**字面裸赋值**"(即 eval/read 那种**间接**才不判),
而 `export AGENTMAIL_REQUIRE="h"` **正是字面裸赋值**却漏判 ⇒ **规则写在注释里 ≠ 代码走在规则上**
⚠️ 射程: 真仓里**没有**这种活缺陷(grep 全 `deploy/*.sh` = 0)⇒ 这是**判据域**的 gap,不是生产缺陷
```
## (C) 两个候选修法,**只有一个可用**(我实测了两者的代价)
```
形式 现行 A B: `(export[[:space:]]+)?` C: 再加 `(^|[;&|]…)`
export X= ★假绿 ✓抓到 ✓抓到
; X= / && X= ★假绿 ★假绿 ✓抓到
字面 X=(正对照) ✓抓到 ✓抓到 ✓抓到
★ `echo "a; AGENTMAIL_REQUIRE=x"`(**合法**)⇒ A:✓放行 B:✓放行 **C:★假红**
★ 真树无注入 ⇒ A: rc=0/FAIL=0 ✓ B: rc=0/FAIL=0 ✓
⇒ ★ **B 可用**(消掉"谓词之外"那一半,且**不引入假红**);
**C 不可用** —— 它把**字符串字面量里**出现的 `; AGENTMAIL_REQUIRE=` 判成违规(假红)
⇒ C 要能用必须先有引号感知,而那正是 `⑧b` 那条**真边界**
⇒ ⇒ ★★★ 记法: **"把谓词放宽"与"放宽到能看见分隔符"是两件事** ——
前者只动**同一行内 token 前后的词法**(安全);后者要求**跨 token 的语句结构**(会撞上 `⑧b`)。
```