diff --git a/docs/API.md b/docs/API.md index 9e99a80..830140e 100644 --- a/docs/API.md +++ b/docs/API.md @@ -7069,3 +7069,52 @@ window.__AGENTMAIL_TOKEN__ = ''; // 省略则走 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`)。 + ```