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 未破 + ```