From 877961fe0774a0fbfbbac0e9aeb542c8a887f7f6 Mon Sep 17 00:00:00 2001 From: JianFeeeee Date: Fri, 25 Sep 2026 08:31:24 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=B0=E5=BD=95=E6=9C=AC=E8=BD=AE=E4=B8=A4?= =?UTF-8?q?=E6=9D=A1**=E6=96=B0=E7=9A=84**=E5=88=A4=E6=8D=AE=E7=BA=AA?= =?UTF-8?q?=E5=BE=8B=EF=BC=88=E9=83=BD=E6=98=AF"=E5=89=8D=E6=8F=90?= =?UTF-8?q?=E6=9C=AA=E6=A0=A1=E9=AA=8C"=E8=BF=99=E4=B8=80=E7=B1=BB?= =?UTF-8?q?=EF=BC=8C=E5=AE=9E=E6=B5=8B=E5=BE=97=E5=87=BA=EF=BC=89:=20?= =?UTF-8?q?=E2=91=A8=20**"=E6=B3=A8=E5=85=A5"=E8=BF=99=E4=B8=80=E6=AD=A5?= =?UTF-8?q?=E6=9C=AC=E8=BA=AB=E8=A6=81=E6=9C=89=E6=96=AD=E8=A8=80**?= =?UTF-8?q?=EF=BC=9B=E2=91=A9=20**=E6=8A=A5=E8=AF=BB=E6=95=B0=E5=89=8D?= =?UTF-8?q?=E8=A6=81=E6=8A=A5"=E9=82=A3=E4=B8=AA=E6=A0=B7=E6=9C=AC?= =?UTF-8?q?=E6=98=AF=E8=B0=81=E6=94=BE=E8=BF=9B=E6=A0=91=E7=9A=84"**?= =?UTF-8?q?=EF=BC=9B=E2=91=AA=20=E5=B9=B6=E6=9B=B4=E6=AD=A3=E6=88=91?= =?UTF-8?q?=E8=87=AA=E5=B7=B1=E4=B8=80=E5=A4=84=E6=8E=AA=E8=BE=9E=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ★ ⑨ "注入"要有断言(我自己踩的): 我每条变异命令先做 replace('agentmail_require git go npm npx' → 'AGENTMAIL_REQUIRE="x"') ★ 而 pi 的污染**已把目标串改掉** ⇒ 实测 inject **没生效**(False), 但最终 :135 **确实**是 `AGENTMAIL_REQUIRE="x" …`(**pi 提供的**) ⇒ 读数**对**,而"违规来自我注入"这个**前提是假的** ⇒ **身份被别人顶替** ★★ 危险的是**反方向**: 若变异把违规**改成合规**(目标串消失)⇒ inject 也 no-op ⇒ 在"以为注入了违规"的树上测,而那树**其实没有违规** ⇒ 前提**静默失效**, 输出看起来完全正常("0 处、rc=0") ⇒ 纪律: `inject` 后必须断言 **新旧内容不同 ∧ 树上确实有那处违规**; 否则**前提与结果共用同一个未校验的假设** ⇒ 前提出事时结果看不出来 ⇒ 与"三格"正交(三格答"我动过哪些行",本条答"违规是谁放的")⇒ 合成格式: `文件:行号 → 窗口[t0,t1) → 复原时刻` + `注入确实生效(内容变了 ∧ 违规确实在)` ★ ⑩ 读数"对"要分三种: ①真的没被污染 ②被污染但碰巧对 ③**被别人的东西顶替后碰巧对** —— ②③ **不会引起怀疑**,比错的读数**更危险** 可判做法: 报读数时**同时报"这个样本是谁放进树的"**(我注入的?别人的变更?HEAD 的?) ★ 出处: 复核 pi 的读者链时发现它只验了窗口内 2 条(共 15 条); 逐条查"读哪棵树"后: 14 条 bash 全读**被污染的工作区**, 但**只有 1 条真的执行了判据**,且被**独立守卫**(下界:只找到 2 个调用者)接住 ⇒ 结论(未被污染)成立,但**理由要换**: 不是"恰好不覆盖",是"**只读数据、未形成结论**" ⇒ 差别实际: 若当时那条也读数据并形成结论,**下界守卫不会响**(它只管集合大小) ★ ⑪ 更正我 23:46:31 的措辞: 我写"域被收窄 ⇒ **应该是假绿**"是**错的** —— 实测那条 rc=1 是**下界守卫**在响("只找到 2 个调用者(下界 3)"),守卫**接住了** ⇒ 教训: 我把"**守卫响了**"说成了"**应该假绿**"(把表现与能力混了) ★ 与 ⑰′ 同族但**方向相反**: ⑰′ 高估防线覆盖面;这条**低估**(把"接住了"说成"接不住") ★ 提交前围栏 922(偶,配对 461、未配对无)—— 本次**先数围栏再写**(此前四次都是漏写闭合围栏) --- docs/API.md | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/docs/API.md b/docs/API.md index 2976e51..01bff61 100644 --- a/docs/API.md +++ b/docs/API.md @@ -5684,3 +5684,58 @@ window.__AGENTMAIL_TOKEN__ = ''; // 省略则走 Cookie 本轮提交 bc252e5;基线 rc=0;12 向变异矩阵全 1;criteria-hygiene **10/10** 绿 ③ 调用者判定已不依赖 strip;⑧a 已闭;**⑧c 已闭**;⑧b(注释语义)真边界 ``` + +--- + +- ★★★ 本轮两条**新的**判据纪律(都是"前提未校验"这一类,我实测出来的): ⑨**注入要有断言** / ⑩**点名要报"是谁顶替了它"** + + ## ⑨ ★★★ "注入"这一步本身要有断言 —— 前提与结果不能共用同一个未校验的假设 + ``` + 场景(我 2026-09-25 实测,我自己踩的): + 我每条变异命令都先做一步"注入 1 处违规": + replace('agentmail_require git go npm npx' → 'AGENTMAIL_REQUIRE="x"') + ★ 而 pi 的污染**已经把那个目标串改掉了**(:135 已是 `AGENTMAIL_REQUIRE="x" …`) + ⇒ 实测(复现): + pi 污染后 :135 = AGENTMAIL_REQUIRE="x" node curl systemctl flock + 我的 inject 是否改变文件 = **False** ← 没生效 + 最终 :135 = AGENTMAIL_REQUIRE="x" node … ← 而那处违规**确实在**(**pi 提供的**) + ⇒ 即: 读数**对**(树上确有 1 处违规、rc=1),但**"违规来自我注入"这个前提是假的** —— + 我量的是**别人的**变异,却当成**我的**实验样本 ⇒ **身份被顶替**。 + ★★ 危险的是**反方向**(我实测): 若某次变异把违规**改成合规**(目标串消失), + inject 也 `no-op` ⇒ 我会在"**以为注入了违规**"的树上测,而那树**其实没有违规** + ⇒ **前提静默失效**,而输出看起来**完全正常**("0 处违规、rc=0") + ⇒ ★★★ 纪律: **`inject` 之后必须断言** `新旧内容不同` ∧ `树上确实有那处违规`; + 否则"实验前提"与"实验结果"**共用同一个未校验的假设** ⇒ 前提出事时结果**看不出来**。 + ★ 与"三格"正交: 三格答"我动过哪些行",本条答"**我实验里的违规是谁放的**"。 + ⇒ 合成报账格式: + `文件:行号 → 窗口[t0,t1) → 复原时刻` **+** `注入确实生效(内容变了 ∧ 违规确实在)` + ``` + ## ⑩ ★★ 报"某处读数是 X"之前,先报"那个 X 是**谁**给的" —— 会让"碰巧对"过关 + ``` + 同一事故里,我的读者链**复核 pi 的报账**时发现: + pi 只验了窗口内 **2 条**命令(read + 行数),而窗口内共 **15 条** + ★ 逐条查"读了哪棵树"后: 14 条 bash 全部读**被污染的工作区**,但 + 其中**只有 1 条真的执行了判据**(其余只量行数/原型) + ⇒ 所以它结论(未被污染)**成立**,但**理由要换**: + 不是"那几条恰好不覆盖",而是"**它们读数据、没形成判据结论**" + —— 唯一形成结论的那条,被**独立守卫**(下界:只找到 2 个调用者)接住了 + ★ 差别很实际: 若当时那条也读数据并得出结论,**下界守卫不会响**(它只管集合大小) + ⇒ 纪律: **"读数对"要分三种**: ①**真的没被污染** ②**被污染但碰巧对** ③**被别人的东西顶替后碰巧对** + —— ②③ 都**不会引起怀疑**,所以**比错的读数更危险** + ⇒ 可判做法: 报读数时**同时报"这个样本是谁放进树的"**(我自己注入的?别人的变更?HEAD 的?) + ``` + ## ⑪ ★ 一处**我自己措辞错**(同轮更正) + ``` + 我 23:46:31 的注释写: "域被收窄 ⇒ **应该是假绿**" + ⇒ **错**。实测(`6a86a66` + 收窄 find): 那条 rc=1 是**下界守卫**在响 + ("只找到 2 个调用者(下界 3)"),**不是**假绿 —— 守卫**接住了**。 + ⇒ 教训: 我把"**守卫响了**"说成了"**应该假绿**" —— 把"判据的表现"与"判据的能力"混了。 + ★ 与 ⑰′("被别的守卫顺手抓住" ≠ "这条路径有守卫")**同族但方向相反**: + ⑰′ 是**高估**防线的覆盖面;这条是**低估**(把"接住了"说成"接不住")。 + ``` + ## 状态 + ``` + 本轮只读 + /tmp 复现;源一律 `git archive `;工作区 0 处已跟踪改动 + 本会话 HEAD = 662f838(判据线: 调用者判定改词首注释规则 + ⑧b 拆出 ⑧c) + 边界现状: ⑥ 间接赋值;⑦ 下界只挡"<3";⑧a 已闭;⑧c 已闭;⑧b(注释语义)真边界 + ```