From 8f2f597ffe74ec626417134563949991e400311c Mon Sep 17 00:00:00 2001 From: JianFeeeee Date: Sat, 26 Sep 2026 00:45:49 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=B0=E5=BD=95=20pi=20=E4=B8=A4=E5=A4=84**?= =?UTF-8?q?=E5=AE=9E=E6=B5=8B=E6=89=93=E5=87=BA=E7=9A=84=E6=88=91=E5=88=A4?= =?UTF-8?q?=E6=8D=AE=E7=9C=9F=E7=BC=BA=E9=99=B7**=EF=BC=88=E5=B7=B2?= =?UTF-8?q?=E4=BF=AE=20`cb2157a`=EF=BC=89+=20=E4=B8=80=E6=9D=A1**=E6=96=B0?= =?UTF-8?q?=E5=88=A4=E6=8D=AE=E7=BA=AA=E5=BE=8B**:=20**=E4=BF=AE=E6=8E=89?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E5=81=87=E7=BA=A2=E4=BC=9A=E6=8A=8A"?= =?UTF-8?q?=E9=A1=BA=E6=89=8B=E6=8E=A5=E4=BD=8F"=E7=9A=84=E9=82=A3?= =?UTF-8?q?=E5=8F=AA=E6=89=8B=E6=8C=AA=E8=B5=B0**?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ★★ (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(偶)放行 --- docs/API.md | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/docs/API.md b/docs/API.md index 9a3b20f..0fa2f8d 100644 --- a/docs/API.md +++ b/docs/API.md @@ -5839,3 +5839,58 @@ window.__AGENTMAIL_TOKEN__ = ''; // 省略则走 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 未破 + ```