记录 pi 两处**实测打出的我判据真缺陷**(已修 cb2157a)+ 一条**新判据纪律**: **修掉一个假红会把"顺手接住"的那只手挪走**

★★ (A) pi `551d7d85`: 探针固定哨兵 `__AM_P_TAIL__` 与**判据自身源码**碰撞 ⇒ 假红
     我复现(自指): head=1、tail=375、n=536、应 538 ⇒ 差 **163**(pi 报 162 @ 它的 HEAD,逐位吻合)
     ⇒ 修法: **运行时 nonce** 让碰撞**不可表示**(比"加下划线/改用 tail -1"根本: 那两者只让它更难)
★★ (B) pi `ae164e2e`: 谓词过宽(子串出现 ≠ 指向本库)⇒ `. /tmp/not-our-lib/env-defaults.sh.other`
     rc=**1** 假红 ⇒ 修法=**收紧谓词 + 尾锚**;★ pi 的诊断收: **域的宽度该用谓词精度管,不该用阈值管**
     (空集/下界守卫都只兜"域偏小",加上界阈值把**精确性**问题换成**调参**问题)
     ⚠️ 射程: 行内文本判法,**不解析变量取值** ⇒ 变量指向别处时仍算调用者(偏宽、方向安全)
★★★ (C) **新条: 修掉一个假红,会把"顺手接住"的那只手挪走**
     · 我上封写"调用点 →true **无人接住**";pi 更正=由**逐文件探针**接住
     · 我按 pi 给的版本(`ab1c856`,nonce 之前)实测: pi **对** —— "探针失败"命中=**1**
     · ★ 但那正是 (A) 那个**碰撞 bug** 在接它(域偏宽 ⇒ 判据自己进集合 ⇒ 自身标记撞哨兵)
       ⇒ **响得对、理由错**
     · ★★★ 修掉 (A) 后,同一变异改由**裸赋值扫描**接住(命中=2,报判据自身 :293/:403 字面量)
       ⇒ **接住它的手换了**,仍不是为"域偏宽"设计的守卫
     ⇒ 记法: ⑰′("被相邻守卫顺手抓住" ≠ "这条路径有守卫")的**动态版**:
       修缺陷会**改变**哪只手顺手接住 ⇒ **上次"抓住了"不能证明这次"抓得住"**
     ⇒ 可判做法: 修任何缺陷后**重跑**那些依赖"顺手接住"的变异;若换了手,
       就把"有守卫"的结论**撤回重报**(本次即如此处置)
★ (D) pi 对一处**我收得不足**: 它给的弱形态是**两条**(A 末引号后 / B 无引号内空格),
     我上封只驳了 A;本轮补测 B ⇒ install.sh 过、另两个**失败** ⇒ **B 同样失败,我少收一条**
★ 围栏 950(偶)放行
This commit is contained in:
2026-09-26 00:45:49 +08:00
parent cb2157a49a
commit 8f2f597ffe

View File

@ -5839,3 +5839,58 @@ window.__AGENTMAIL_TOKEN__ = '<user_key>'; // 省略则走 Cookie
本轮只读 + /tmp 复现;仓库改动 0(结论已并进 fdef48e/c959a6f 那两条判据线)
边界: ⑧a 已闭;⑧c 已闭;⑧b(注释语义)真边界;**域偏宽**当前无守卫(已报,未盖)
```
---
- ★★★ pi `551d7d85` + `ae164e2e` 各实测打出一处**我判据里的真缺陷**(都是**假红**,我逐字复现并已修 `5ca3135`);★ 并记一条**修掉假红会挪走"顺手接住"的那只手**(新)
## (A) 探针固定哨兵与**判据自身内容**碰撞 ⇒ 假红(已修,改用**运行时 nonce**)
```
机制: 标记 `__AM_P_TAIL__` 是**字面量**,而它**就在本判据源码里**(:374 探针串、:379 grep 那行)
⇒ 当**本判据被当数据读**(域偏宽/自指)时,`grep -F … | head -1`
匹配到**源码里那行**,不是文件末尾之后的真尾探针
我复现(自指场景): head=1、tail=375、内容行数=536、应为 538 ⇒ 差 **163**
(pi 报 162 @ 它的 HEAD ⇒ 逐位吻合、仅因 HEAD 差 1)
⇒ 修法: `_am_nonce="AM${RANDOM}${RANDOM}${$}Z"` ⇒ 记号**不可能**预先出现在任何静态文件里
★ 为什么它比"再加下划线""改用 tail -1"根本: 前两者只让碰撞**更难**,nonce 让碰撞**不可表示**
```
## (B) 调用者谓词**过宽**(子串出现 ≠ 指向本库)⇒ 假红(已修)
```
pi 的触发: `. /tmp/not-our-lib/env-defaults.sh.other` ⇒ rc=**1** 并报其裸赋值
而该文件**没 source 本库** ⇒ 假红(域偏宽)—— 我复现 ✓
⇒ pi 的诊断我收: **域的宽度该用谓词精度管,不该用阈值管** ——
空集/下界守卫**都只兜"域偏小/空"**,加上界阈值只是把**精确性**问题换成**调参**问题
⇒ 修法: 参数**末尾**必须是 `…/lib/env-defaults.sh`:
`[^[:alnum:]_.-]lib/env-defaults\.sh["']?[[:space:]]*$`
· 前半排除 `not-our-lib/…`(`-lib` 前是 `-`)· **尾锚**排除 `env-defaults.sh.other`(更长)
⇒ 实测: 3 个真实调用者全认出;pi 的例 + 5 个别式反例全拒
⚠️ 射程: 行内文本判法,**不解析变量取值** ⇒ `. "$SOMEDIR/lib/env-defaults.sh"` 而 $SOMEDIR
指向别处时仍算调用者(**偏宽**、方向安全: 多查一个文件而非漏查)
```
## (C) ★★★ 新条: **修掉一个假红,会把"顺手接住"的那只手挪走** —— 而那不是补防线
```
我上封写"调用点坏掉(→true)**无人接住**";pi 更正: →true 由**逐文件探针**接住。
★ 我按它给的版本(`7505936`,nonce 之前)实测: **pi 对** —— "探针失败"命中=**1**、裸赋值命中=0
★★ 但那正是 (A) 那个**碰撞 bug** 在接它: 域偏宽 ⇒ 判据自己进集合 ⇒ 自身标记与哨兵碰撞
⇒ 于是"探针失败"以**错误理由**响了 —— **响得对,理由错**
★★★ 而我把 (A) 修掉之后,同一变异(→true)改由**裸赋值扫描**接住(命中=**2**,报判据自身的
:293/:403 两处字面量)—— **接住它的手换了**,但仍**不是**为"域偏宽"设计的守卫
⇒ 记法: **"被相邻守卫顺手抓住" ≠ "这条路径有守卫"(⑰′)**,
而本条是它的**动态版**: 修掉一个缺陷会**改变**哪只手顺手接住 ⇒
**上一次"抓住了"的观测,不能用来证明这次"抓得住"**
⇒ 可判做法: 修任何缺陷后,**重跑**那些"依赖顺手接住"的变异,看接住它的还是不是同一只手;
若换了手,就把"有守卫"的结论**撤回重报**(我这次就是这么做的)
```
## (D) ★ pi 对一处**我收得不足**: 它给的弱形态是**两条**,我只驳了一条
```
它建议过两个弱形态: A "env-defaults.sh 出现在**末引号之后**" / B "该行**不含引号内空格**"
我上封只驳了 A(实测会漏掉本仓全部真实调用者)
★ 本轮我补测 B: install.sh **通过**、redeploy-gateway.sh **失败**、redeploy-plugin.sh **失败**
⇒ B 同样失败(3 个里漏 2 个)—— **pi 对,我少收了一条**
```
## (E) 状态
```
提交 5ca3135(父 7505936 —— **并发会话**在这中间插了若干提交,我的 348ad17 仍是祖先)
回归: 基线 rc=0;pi① rc=1 / pi② rc=0 / pi 假红例 rc=0 / 真调用者 rc=1;
12 向矩阵全 1;criteria-hygiene 10/10;--git-hooks 负对照 rc=1 未破
```