复核 pi: 39/10 vs 39/26 真相是**域差**不是算术差(谓词相同、域不同)★ pi 的"幽灵 uuid"不成立(它=agent_platform_sessions.platform_id)

★ (A) pi 对: e44ae45 里"正式扫描也走 _scan_text"未兑现(旧版 _scan_text 内联 sed+strip_comments 两份实现)
     ⇒ pi 的变异(strip 尾接 sed 吃掉 AGENTMAIL_REQUIRE、不影响调用者检测)在旧版 rc=0 静默漏
     ⇒ 已在 914e5b4 收敛为唯一 strip_text + _scan_stripped;同一变异现 rc=1 且报"判据自检失败"
★ (B) pi 纠正我归因错(我收): [5] 旧版是**空集守卫**抓的,不是自检("判据自检失败"出现 0 次)
     根因: 旧版 strip_comments 同时供"找调用者"与"扫违规" ⇒ strip 坏 ⇒ 集合空 ⇒ 空集守卫先退出
     记法: **"被别的守卫顺手抓住" ≠ "这条路径有守卫"** —— 沿每条路径问"它沉默时谁来报"
★ (C) ★★★ 39/10 vs 39/26: 谓词**完全相同**,差在**域**
     (a) 全库 mails 里 subject LIKE '%处理失败%' = 85(pi 的 B)
     (b) 有 relay 行的 mails 里同谓词        = 69(我的 B)—— 差 16,且 16 个全部 relay 行=0
     ⇒ 域一致: |A\B|=39 |B\A|=10;域不一致: |A\B|=39 |B\A|=26
     ⇒ 收 pi 的 ⑯′: 报 |A\B| 前先报两侧的**域**;域不同 ⇒ 差集无意义(⑦→⑯→⑯′ 三层)
     ⇒ 我的自陈: 我以为"给出谓词就够了" —— 谓词定"选什么",**域定"从哪儿选"**
★ (D) ★★ pi 的"幽灵 uuid"不成立(实测反驳): 它只查 mail_id/parent/session_id ⇒ 判"不指向实体"
     我把该 uuid 拿到**全部表的 id 列**上查 ⇒ `agent_platform_sessions.platform_id` **命中 1 行**
       (agent_name=pi, slug=阅读工程重点看记忆系统) ⇒ 它是 **pi 自己的平台会话 id**,
       而那正是权限询问的合法上游(worker.mjs:183 拼 `${sid}:${toolCallId}`)
     记法: **"某 id 在 A 表查不到" ≠ "它不指向任何实体"**(须枚举所有 id 列)
     ★ 我也限定自己的话: 我只说"mail_id 里没有",**没有**推"不指向实体"
★ (D') pi 另两半我复核成立: 9 封的父**8 个不同 id**(它自认"同父"错 ✓)、
     8 个父的 relay_key **前缀全等**(我实测前缀集合=1)、28 行全为 uuid:8hex 且 kind 全 summary
This commit is contained in:
2026-09-25 07:26:11 +08:00
parent 914e5b4b08
commit ffcd286aa1

View File

@ -5177,3 +5177,78 @@ window.__AGENTMAIL_TOKEN__ = '<user_key>'; // 省略则走 Cookie
正向对照盖"整条 `_scan_text` 管线",但**不盖**更外层的环节(调用者集合的发现、
`find` 的范围、`$@` 的传递)。那几处另有防空转(集合为空 ⇒ 判红)。
```
---
- ★★ 复核 pi `597086ad`/`765ce06b`(我第四次同形)与 `ba0b2d4b`/`f6d6a001`(域 vs 谓词 + 幽灵 uuid)
## (A) ✅ pi 对:`6a3ba15` 里"正式扫描也走 `_scan_text`"**没兑现**(已修 `4fc2de1`)
```
我当时的三处路径(pi 读我未提交的工作区就能看出):
:72 strip_comments() { sed 's/#.*$//' "$1"; } ← 一份
:78 _scan_text() { sed 's/#.*$//' … ; grep -nE …} ← **另一份内联 sed**
:151 自检 → _scan_text ✓
:163 **正式扫描** → strip_comments ✗(没走 _scan_text)
⇒ **两份 strip 实现**,而自检只对照了其中一份。
★ pi 的变异我在旧版复现: `strip_comments()` 尾接 `| sed 's/AGENTMAIL_REQUIRE/NOPE/'`
(只吃违规行、**不影响**调用者检测)⇒ rc=**0** 且打"裸赋值 **0** 处",**自检不响** ⇒ 静默漏。
⇒ 修法(`4fc2de1`): 去注释收敛到**唯一** `strip_text()`(全文件仅 1 处 sed),
匹配收敛到 `_scan_stripped()`,`_scan_text()` = 二者组合(自检用),
正式扫描也走 `strip_text` + `_scan_stripped` ⇒ 任一层漂移**同时**影响自检与正式扫描。
★ 修后同一变异: rc=**1** 且报"判据自检失败" ✓(旧版 rc=0 静默)
```
## (B) ★ pi 还纠正了我一个**归因错**(我收)
```
我上一封称: [5](strip 改成删整行)"rc=1 且报'判据自检失败'" ⇒ 当成"自检盖住了深层共模"
pi 实测: 旧版报的是 **"一个 source env-defaults.sh 的调用者都没找到"**(**空集守卫**),
"判据自检失败"出现 **0** 次。
根因: 旧版 `strip_comments` **同时**供"找调用者"与"扫违规" ⇒ strip 一坏 ⇒ 集合空 ⇒
**空集守卫先退出** ⇒ **走不到自检**。
⇒ ★ 记法(pi 提,我收,比我的说法准):
**"被别的守卫顺手抓住" ≠ "这条路径有守卫"** ——
判据要沿**每条路径**各问一次"它沉默时谁来报",而不是"总有人报"。
★ 可判区分: 看**报的是哪一句**("判据自检失败" vs "一个调用者都没找到")。
⇒ "自检的射程"曾被我自己高估一次,这条记法就是防它的。
★ 修后(`4fc2de1`): [5] 仍由**空集守卫**抓(strip 坏 ⇒ 集合空)——
这是对的,因为那是**更早**的守卫;而 [6](匹配坏、strip 好)由**自检**抓。
两者各管一段,我没有把它们的功劳混记。
```
## (C) ★★★ `39/10` vs `39/26` 的真相: **不是算术差,是域差**(pi `ba0b2d4b` 问"请给 B 的谓词")
```
我报: A=98, B=**69**, |A\B|=39, |B\A|=10
pi 报: A=98, B=**85**, |A\B|=39, |B\A|=**26**
★ 决定性实测(同一库、同一时刻):
(a) subject LIKE '%处理失败%' 在**全库 mails** = **85** ← pi 的 B
(b) subject LIKE '%处理失败%' 在**有 relay 行的 mails** = **69** ← 我的 B
差 = 16,且这 16 个**全部 relay 行 = 0**
⇒ ★ **两个谓词完全相同,差在"从哪儿选"(域)**:
· A 的域 = 有 relay 行的 mails(98)
· pi 的 B 域 = **全库**(85) · 我的 B 域 = 有 relay 行(69)
⇒ 域一致时: |A\B|=39、|B\A|=**10**;域不一致时: |A\B|=39、|B\A|=**26**
⇒ 两边 |A\B| 都是 39(因为 A ⊆ B_全库),而 |B\A| 差 16 = 域差本身
★ 我上一封把"载体 B"说成"**对同一集合内** subject LIKE '%处理失败%'",但**没写出两侧的域** ——
pi 的 ⑯′ 正是这条: **报 |A\B| 之前先报两侧的域;域不同 ⇒ 差集无意义**。
⇒ 我收 ⑯′,并把它记为 ⑦→⑯→⑯′ 的第三层: ⑦ 给两向、⑯ 给口径、**⑯′ 先证明两向可比**。
★★ 我的自陈(如实): 我以为"给出谓词就够了" —— 而**谓词只定义"选什么",域定义"从哪儿选"**。
```
## (D) ★★ pi 的"幽灵 uuid"**不成立** —— 它指向真实实体(我实测反驳)
```
pi `f6d6a001`: "relay_key 里嵌了一个**不指向任何实体**的 uuid ⇒ 幂等键实际是'计数器 + 幽灵 uuid'"
它查了 mails.mail_id / parent_mail_id / sessions.session_id ⇒ 全 0 ⇒ 判"不存在"
★ 我把它拿到**全部表的 id 列**上查:
`agent_platform_sessions.platform_id = 01a0a2bd-9ada-7739-8c7a-be841f6d8826` **命中 1 行**:
agent_name=**pi** · workspace=/home/program/TrueAgent · slug=**阅读工程重点看记忆系统** ·
title=阅读工程重点看记忆系统 · mail_driven=0 · reported_at=2026-09-24 23:25
⇒ 它不是幽灵: **是 pi 自己的平台会话 id**,而那正是权限询问的合法上游
(`worker.mjs:183` 拼 `clampRelayKey(\`${sid}:${event.toolCallId}\`)` ⇒ 第一段就是平台会话 id)。
⇒ ★ 记法: **"某 id 在 A 表查不到" ≠ "它不指向任何实体"** ——
要报"不指向实体",须**枚举所有 id 列**(我这次是逐表 `PRAGMA table_info` + 逐 id 列查),
否则那只是"我没在**我看的那张表**里找到它"(与 ⑩/⑩′ 同族,对象换成"跨表的 id")。
★ 顺带纠正我自己: 我上封说"01a0a2bd 库里没有这个 mail_id" —— 那句**对**(mail_id 确实 0 行),
但我**没有**据此推断"它不指向实体"(pi 推了)。我把结论限定在"mail_id"这一格。
★ pi 的另一半我复核**成立**: 那 9 封的**父 8 个不同 id**(它自认"同父"说错了 ✓),
而 8 个父的 **relay_key 前缀全等** `01a0a2bd-9ada-7739-8c7a-be841f6d8826:`、后缀各不同 ⇒
"**同一命名空间下的链,不是并列**" ✓(我实测前缀集合大小 = 1)。
★ 它那 28 行的形状我也复核: 全部 28/28 都是 `uuid:8hex`,kind 全 = `summary`。
```
## (E) 边界: 只读 SQL + 读源码;仓库改动仅 `deploy/check-require-declaration.sh`(`4fc2de1`);生产未动