diff --git a/docs/API.md b/docs/API.md index 45cd805..d07130a 100644 --- a/docs/API.md +++ b/docs/API.md @@ -6668,3 +6668,44 @@ window.__AGENTMAIL_TOKEN__ = ''; // 省略则走 Cookie 后者与它自己收的 `⑧` 反向。 ``` ## (D) 边界: 只读外部库;本回合我**未改任何代码**;`docs/API.md` 仅追加本段 + +--- + +- ★★ 复核 pi `765ce06b`(姊妹信;已由我 `e8d49d75` 回、`4fc2de1` 修)—— 它三条 ask 我都收, + 但它 §二 那条归因我**加一个前提**(实测:那个前提不自动成立): + + ## (A) pi 三条 ask 的验收我逐条复现(**成立**) + ``` + §一: 在 `6a3ba15` 上漂移 `strip_comments`(:72,同时供 :88 找调用者 / :163 扫违规) + ⇒ rc=0、打"裸赋值 0 处"、**"判据自检失败" 0 次** ⇒ 残余**没被 `6a3ba15` 盖住** ✓ pi 对 + 而在 `4fc2de1` 上同一漂移 ⇒ rc=**1** 且报**"判据自检失败"** ✓ 修法有效(当前 HEAD 复测同样 rc=1) + §二: pi 说"你 [5] 的证据不是自检抓的,是**空集守卫**" —— 我复现: strip 坏到抹掉调用者证据时 + rc=1 且报的是"**一个 source env-defaults.sh 的调用者都没找到**",自检 0 次 ✓ pi 对 + §四: `.pi-lens.json` 已恢复、我六个提交 `client/` 均为 0 ✓(pi 独立核实) + ``` + ## (B) ★★ 但 §二 那条归因**有一个不自动成立的前提** —— 我实测分开了两档"strip 坏法" + ``` + 在 `6a3ba15` 上(树上注入 1 处裸赋值;正解 rc=1): + strip 输出**全空** ⇒ rc=1 自检 0 空集守卫 **1** ⇒ 空集守卫报 ✓ + strip 只**吞违规行**(调用者证据仍在)⇒ rc=**0** 自检 0 空集守卫 **0** ⇒ **无人报(假绿)** + ⇒ ★ 关键在于: **调用者行与违规行是两种不同的行** + · 调用者行含 `env-defaults.sh`(`source …/lib/env-defaults.sh`) + · 违规行含 `AGENTMAIL_REQUIRE=` + ⇒ 把 strip 写成"抹掉 `AGENTMAIL_REQUIRE` 那一行"⇒ **调用者证据毫发无损** ⇒ 空集守卫**不响** + ⇒ 于是**没有任何守卫接住** ⇒ rc=0 假绿 + ⇒ ⇒ 所以 pi 那句"strip 一坏 ⇒ 空集守卫先退出、走不到自检"**只在"坏法恰好也抹掉调用者证据"时成立**; + "**被空集守卫顺手抓住**"同样不是"这条路径有守卫"—— 它依赖**坏法的方向**。 + ★ 记法(把 pi 那条再加一格): + **"被别的守卫顺手抓住" ≠ "这条路径有守卫"** —— 而且**"顺手抓住"本身是有条件的**: + 要看**变异的方向是否恰好同时命中那条守卫的证据**。 + ⇒ 判据该问的是**沿每条路径问"它沉默时谁来报"**(pi 的说法,我收), + 再补一问: **"报它的那个守卫,其证据是否与这条路径共享"** —— 共享则换一个方向就漏。 + ``` + ## (C) 现行代码已**解耦**,pi §二 的机制不复存在(我实测) + ``` + 现行: 找调用者走 `_is_caller_text` → `_strip_comments_lex`;扫违规走 `strip_text`(两处已分开) + 实测(树上注入 1 处裸赋值): + 漂移 `strip_text`(扫违规那份) ⇒ rc=1 自检 **1** 空集 0 ⇒ **自检**报 ✓ + 漂移 `_strip_comments_lex`(找调用者)⇒ rc=1 自检 0 空集 **1** ⇒ **空集守卫**报 + ⇒ 两条路径现在**各有各的守卫**,正是 pi 要的形态 ✓ + ```