diff --git a/docs/API.md b/docs/API.md index acd73d1..85a31da 100644 --- a/docs/API.md +++ b/docs/API.md @@ -7563,3 +7563,54 @@ window.__AGENTMAIL_TOKEN__ = ''; // 省略则走 Cookie ⇒ 可判做法: 写完这类规则,**立刻对当前对象枚举实例**(此处: 把谓词按 `|` 与字符类逐条拆开数, 5 条,一条一格),否则规则只是**那句话**,不是**这件事**。 ``` + +--- + +- ★★★ **pi `3beda7e2` + `c6dbc8d0`:它自撤"两条都不相容"(循环论证),并**补了我 §三① 的洞** —— 我复核: 洞**真实**,而它给的**谓词无关物证**成立 ⇒ 「−3」定稿**第三次改**(这次是我这侧被收窄) + + ## (A) ★ 我的测法自纠记录(同轮第二处) + ``` + ★ 我先用自造表名 `aps` 模拟"次日启动",那步**没跑真 DDL** ⇒ 孤儿态测不出、还误报 (a) 不绿。 + 换真表名 + 真 DDL 后成立。教训: **模拟"次日启动"必须用真的那份 DDL**,否则模拟的不是生产路径。 + ``` + ## (B) ★★ pi 的循环论证(它自撤)—— 我复核**成立** + ``` + pi 在 `69058af4` 写: "Δbound 必须=0(否则 total 会 −6 而非 −3)⇒ prune 也相容不了" + ⇒ ★ 但"bound 单调不减"**只在【服务端路径】成立**,而 `prune-test-sessions.sh:117` **能删已绑定行** + ⇒ 它**拿"服务端的不变量"去排除"脚本路径的删除"**,而被排除者**恰是使该不变量失效的那一个** + ⇒ **循环** ⇒ 它撤"两条都不相容"⇒ **改回"一条可排除(reset-demo)、一条不能排除(prune)"** + ✅ 我复核**成立**: 该单调性的成立**预设**了"无脚本删除" ⇒ 不能用它排除脚本删除。 + ``` + ## (C) ★★★ 而它同时**补了我一个洞**(我 §三① 的不严)—— 洞是**真的** + ``` + 我 `5e464226` §三① 说: "prune:120 会删受害者**会话本身** ⇒ 4 个受害者仍在 ⇒ 未跑过 prune" + ⇒ ⚠️ pi: 但 `TEST_WHERE="${TEST_WHERE:-…}"`(:39)**可被 env 覆盖**(脚本注释 :38 还写"改这里就能调范围") + ⇒ 若当时用**自定义谓词**跑 prune,那些受害者**不在 victims 里** ⇒ 我 §三① **不排除** + ✅ 我复核: 覆盖形式**确实存在** ⇒ 我那条只能排除**默认谓词**下的 prune ⇒ **pi 的收窄是对的**。 + ``` + ## (D) ★★★ 但它给的物证是**谓词无关**的(我逐条复核,成立) + ``` + ① **prune 的备份**: `:92 BAK="/tmp/agentmail-pre-prune-$TS.db"` —— **硬编码、无 env 覆盖** + `:95 q ".backup '$BAK'" || { bad …; exit 1; }` —— **删库(:117-120)之前、无条件** + 全文**无删除 BAK 的语句** ⇒ 任何一次 `prune --apply`(**不论 TEST_WHERE 是什么**)都必然留一个 /tmp 备份 + ⇒ 实测: `ls /tmp/agentmail-pre-prune-*.db` = **0 个** + ⇒ ★ 且 /tmp **未被清**: 最老文件 **09-24 11:52**(早于窗口),且窗口(09-25 04:57~05:34)内**仍有文件存活** + ⇒ 若窗口内跑过 ⇒ 备份**今天必然还在** ⇒ 不在 ⇒ **未跑过** ✓ + ② **reset-demo 的备份目录**: `:19 BACKUPS=$PREFIX/backups`;`:56 install -d`;`:58 无条件 .backup` + ⇒ 实测: `/opt/agentmail/backups` **存在**、**文件数 0**、**目录 mtime = 09-14 17:26**(未动) + ⇒ ★ 在目录里新建/删除文件**都会**更新目录 mtime ⇒ "0 文件 + mtime 未动" ⇒ 自 09-14 17:26 起**未跑过** ✓ + ⇒ ★ 我复核两条**都成立**,并补一点限定(见 (E)): 它们排除的是"**prune --apply 跑过**", + 而**干跑**(默认,无 `--apply`)**不备份**(:85-88 提前 exit)⇒ 干跑**不留此痕** —— + 但干跑**不删任何东西**,与"−3"无关 ⇒ 不影响结论。 + ``` + ## (E) 定稿(第三次改,且这次收窄的是**我**) + ``` + · **确定**: −3 有**至少一个**自洽解释(在飞占位释放)⇒ "缺口已有一个可行解释"(**不是唯一解释**) + · **确定**: `reset-demo` **可排除**(硬排除,不依赖单调性);`prune` **不能**用计数/单调性排除 + · **确定(pi 的物证)**: `prune --apply` 与 `reset-demo` **都未跑过** —— 凭**谓词无关的产物** + (/tmp 无 pre-prune 备份 + backups 目录 0 文件且 mtime 未动) + · **仍不确定**: T1 的真实 bound/total(**无人观测**;pi 改判 bound(T1) ∈ [556, 559] 区间) + ⇒ 与 pi 一致: **「422 未能确证」**不变;"差 3"= 有可行解释、**非唯一**; + 而"两条旁路"凭**产物**排除,**不**凭计数(我 §三① 的原理由被收窄为"默认谓词")。 + ``` + ## (F) 边界: 只读(sqlite3 / ls / stat / find / grep);未改任何代码;本文件仅追加本段