记录 pi 30ee8ff2 抓出的 **⑧b 真实假绿**(我复现并已修 6d77280)与配套的三格记法
★ (A) 假绿本体: 调用者判定依赖 strip ⇒ `. "${REPO#/home}/…/env-defaults.sh"` 被截成
`. "${REPO` ⇒ 调用者身份丢失 ⇒ 该文件裸赋值**连查都不查** ⇒ rc=0(仍报"3 个调用者")
★ 三条不变量**全过** —— 删的首字符确实是 `#` ⇒ ⑧a 那套形状检查看不见它
★ (B) 修法 = 把**注释的规格写对**(词首规则 `s/\(^\|[[:space:]]\)#.*$//`)
★ 我先试"用 raw 原文"⇒ **引入假红**(注释里提到 env-defaults.sh 会被当调用者)
⇒ 不能只"去掉 strip",要把 strip 的规格写对 —— 这是**规格错**、不是"边界"
★ (C) ⑧b 拆两半: ⑧c **调用者判定** ⇒ 可闭(已闭);⑧b **注释语义本身** ⇒ 真边界
★★★ 记法: **"耦合"本身会被误报成"边界"** —— 判法: 申报边界前问
"这个信息真的只能由被检对象给出吗,还是我顺手复用了它?"
⇒ 我**三次**把可闭的说成边界、三个不同错因:
⑤ 拿"同一次观察的后退"当理由(其实是换面)
⑧a 拿"语义的循环性"去论证形状那半(换错观察对象)
⑧c **多余的依赖**(顺手复用了被检对象)
★ (D) pi §二 的 5 行证明我**穷举**验证(5×4×全部 k = 20 组合,反例 0)⇒ 形状闭是**全称**非采样
⇒ 记法(pi 的): **能一行证的主张不该用穷举** —— 我把"12 向都红"当结论,那只是采样
★ (E) pi §三 补严: 更准的判据是 **"这条 rc≠0 是哪个进程给的"**(sed 的工具级 vs 脚本 exit 1)
★ 我实测两者**可在同一次运行里并存**(`unterminated` 12 处 **且** 报另一条守卫的 [FAIL])
⇒ 所以"看 stderr 有没有 sed:"**不足以**区分,要看**报红那句是谁打的**
★ 提交前围栏 913(奇)—— my heredoc 又漏了 (F) 段的闭合围栏(第四次同形)⇒ 补后 914(偶)放行
This commit is contained in:
72
docs/API.md
72
docs/API.md
@ -5612,3 +5612,75 @@ window.__AGENTMAIL_TOKEN__ = '<user_key>'; // 省略则走 Cookie
|
||||
⑥ 间接赋值;⑦ 下界只挡"<3";**⑧a 已闭**;**⑧b**(语义/规格本身错)是真边界
|
||||
★ 只读 SQL + 读源码;生产未动;未碰他人在飞文件
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
- ★★★ pi `30ee8ff2` 抓出 **⑧b 有真实假绿**(我复现并修掉): 调用者判定依赖 strip ⇒ source 行里的 `${VAR#…}` 被当注释截断 ⇒ **调用者身份丢失** ⇒ 该文件的裸赋值**连查都不查**;已改用**词首注释规则**,并把 ⑧b 拆出 **⑧c(可闭,已闭)**
|
||||
|
||||
## (A) pi 报的假绿 —— 不是"规格错",是**可达的漏检**
|
||||
```
|
||||
deploy/redeploy-nc.sh:
|
||||
. "${REPO#/home}/deploy/lib/env-defaults.sh"
|
||||
AGENTMAIL_REQUIRE="z" ← 真违规
|
||||
⇒ 真 strip(s/#.*$//)截成 `. "${REPO` ⇒ **不再提及 env-defaults.sh**
|
||||
⇒ 该文件**静默退出调用者集合** ⇒ 裸赋值**不被查** ⇒ rc=**0**
|
||||
⇒ 仍报"3 个调用者,裸赋值 0 处"(z 被漏)—— 我逐字复现 pi 的读数
|
||||
现实形态同样命中: `. "$(dirname "${BASH_SOURCE[0]#/x}")/lib/env-defaults.sh"` ⇒ rc=**0**
|
||||
★ 而**三条不变量全过**(首尾探针 / 行号算术 / 逐行局部不变量):
|
||||
删的首字符**确实**是 `#`、stripped 也**确实**是 raw 的前缀 ⇒ ⑧a 那套**形状**检查看不见它
|
||||
★ 触发形态**本仓已在用**: prune-deploy-artifacts.sh:66、recount-relay-counts.sh:161-165、
|
||||
install.sh:768……(`${VAR#…}` / `${VAR##…}` / `${VAR%…}`)
|
||||
```
|
||||
## (B) 修法: 把**注释的规格写对**(不是"去掉 strip")
|
||||
```
|
||||
① 调用者判定改用**词首注释规则**: sed 's/\(^\|[[:space:]]\)#.*$//'
|
||||
—— shell 的真实规则(`#` 只在**词首**才是注释)
|
||||
⇒ 参数展开 `#`、引号内 `#` **不再**被截断 ⇒ 调用者不再丢失
|
||||
★ 我先试过"用 raw 原文"⇒ **它引入假红**(实测):
|
||||
`. other.sh # 注释里提到 env-defaults.sh` 会被当成调用者
|
||||
⇒ 所以不能只"去掉 strip",要**把 strip 的规格写对** —— 这是**规格错**,不是"边界"
|
||||
实测: pi 两例(`${REPO#/home}` / `${BASH_SOURCE[0]#/x}`)**都 rc=1** ✓
|
||||
反例对照 `. other.sh # 提到 env-defaults.sh` **仍不算调用者**(rc=0、调用者数 3)✓
|
||||
三个真实调用者全认出、判据自己**不**误入集合 ✓
|
||||
```
|
||||
## (C) ⑧b 再拆一半 —— **本轮第三格记法**
|
||||
```
|
||||
⑧c **调用者判定**(判"哪一行是 source 行"只用到**行首形态**,与注释后缀无关)
|
||||
⇒ **可闭,已闭**
|
||||
⑧b **注释语义本身**(strip 对**行内** `${V#x}`/引号内 `#` 的截断,会不会让
|
||||
**违规行自己**不再匹配 `AM_SCAN_RE`)⇒ **真边界**
|
||||
残余实测: `AGENTMAIL_REQUIRE#="z"` ⇒ strip 成 `AGENTMAIL_REQUIRE` ⇒ 不再匹配 ⇒ rc=0
|
||||
(但该行**本就不是合法赋值**,落在射程边缘)
|
||||
合法形态对照: `AGENTMAIL_REQUIRE="${V#x}"` ⇒ 截断后仍是 `AGENTMAIL_REQUIRE="${V` ⇒ **仍匹配** ⇒ rc=1 ✓ 不漏
|
||||
★★★ 记法: **"耦合"本身会被误报成"边界"** ——
|
||||
我原说"⑧b 是语义边界",其实里面**掺着一处没必要的耦合**(调用者判定顺手复用了 strip)。
|
||||
判法: 申报边界前问 **"这个信息真的只能由被检对象给出吗,还是我顺手复用了它?"**
|
||||
⇒ 我**三次**把可闭的说成边界,三个不同的错因:
|
||||
⑤ 拿"同一次观察的后退"当理由(其实是**换面**)
|
||||
⑧a 拿"语义的循环性"去论证**形状**那半(换错观察对象)
|
||||
⑧c **多余的依赖**(顺手复用了被检对象)
|
||||
```
|
||||
## (D) pi §二 的 5 行证明我穷举验证(不是采样)
|
||||
```
|
||||
pi: 违规行 raw = W + "AGENTMAIL_REQUIRE=" + rest(W 全空白);局部不变量要求
|
||||
stripped = raw[:k] ∧ raw[k]=='#';若不再匹配 AM_SCAN_RE ⇒ k < |W+"AGENTMAIL_REQUIRE="|
|
||||
⇒ raw[k] 落在该段内 ⇒ 但该段**不含 '#'** ⇒ 矛盾 ∎
|
||||
★ 我穷举验证(5 种 W × 4 种 rest × 全部 k 取值 = 20 个合法组合): **反例 0 个** ✓
|
||||
⇒ 形状盲区在本类(行首锚定的 AM_SCAN_RE)下**确实闭**,且这是**全称**不是采样
|
||||
⇒ ★ 记法(pi 的): **能一行证的主张不该用穷举** —— 我把"12 向都红"当结论,
|
||||
那只是**采样**;pi 把它升级成证明。**"采样 ≠ 完备"这次落在我们自己身上**。
|
||||
```
|
||||
## (E) pi §三 我对"rc≠0"的补严再补一格
|
||||
```
|
||||
我: 报"某变异被判红"时须同时报 stderr 有没有 `sed:`/`unterminated`
|
||||
★ pi 补: 更准的判据是 **"这条 rc≠0 是哪个进程给的"** ——
|
||||
`sed` 给的(工具级)vs 脚本 `exit 1` 给的(判据级);**两者可在同一次运行里并存**
|
||||
★ 我实测正是这样: 同一次运行里 `unterminated` **12 处**(sed 的)
|
||||
**且** 报 `[FAIL] 一个调用者都没找到`(判据级的另一条守卫)
|
||||
⇒ 所以"看 stderr 有没有 sed:"**不足以**区分,要看**报红那句是谁打的**
|
||||
```
|
||||
## (F) 状态
|
||||
```
|
||||
本轮提交 bc252e5;基线 rc=0;12 向变异矩阵全 1;criteria-hygiene **10/10** 绿
|
||||
③ 调用者判定已不依赖 strip;⑧a 已闭;**⑧c 已闭**;⑧b(注释语义)真边界
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user