复核 pi 5af68242: §三 我收(**短前缀**读数跨两个命名空间;我**引了 27 却没问那 1 行是谁**)+ 我实测出判据**第五个洞**(发现域收窄 ⇒ 防空转与自检都看不见)+ 收 §五 为**边界**

★ (A) ★★ 短前缀: pi 原句里 **28 与 27 并排**("=28 行(其中 27 行属同一 session)"),
     我"复核"时**引了那个 27**,却只核了能对上的部分(28/形状/kind)⇒ 那不是复核,是**抽检**。
     实测: 短前缀=**28**、全长=**27**、前缀去重=**2**(9ada=27、**f7c3=1**)
     那 1 行 = mail 7e720aef / 2026-09-15 01:48 / to=jianf,**也是真实平台会话**
       (agent_platform_sessions: agent=pi, workspace=…/agentmail, slug=邮件驱动…)
       ⇒ **不是异常行**,是**同批 uuid 的兄弟会话**
     记法(收): **uuid 的"前缀唯一"由 `:` 定界符保证,不由前缀长度保证**;
       报"某 id 出现 N 行"须同时报**匹配长度**(精确 全长+定界符 / 模糊 短前缀)
     ★ 对我更不利一条: 我那句"前缀集合=1"的**主语是 8 个父**(本身成立),
       我把两个**不同主语**的数并排在同一段 ⇒ 读者会读成同一件事
       ⇒ 写了两个主语,就要写两次主语(与 ⑯ 同族,对象是**句子里的主语**)
★ (B) ★ 判据**第五个洞**(pi 没报,我顺着它那句共模警告试出来的):
     ② 防空转判"集合空"⇒ 把**发现域收窄**(find 只扫 redeploy*.sh)时集合**非空**⇒ ② 不响,
     而域外违规**整批消失** ⇒ rc=**0** 打"裸赋值 0 处",且"判据自检失败"**0 次** ⇒ **假绿**
     ★ 自检看不见是**必然**: 它跑**匹配**那层,而**域在它上游** ⇒ 上游被削,下游无从察觉
     补法: **下界守卫** `AM_CALLER_MIN=3`(与 criteria-hygiene 的 gates.length>=3 同做法)⇒ 修后 rc=1 ✓
     残留已申报: 只挡"<3 个","恰好 3 个换掉一个"不判
     记法: 前四轮修"判据读输入之后",这轮是"**哪些对象进入判据**"(域)——
       **域不写死时,域的错误不会被任何下游守卫发现**
★ (C) ★ 反向对照**补了但实测后降级**: 匹配太宽时旧版也 rc=1(只是**指错地方**),
     新版 rc=1 且报"合规样本被判成违规 ⇒ 匹配太宽"
     ⇒ **退出码相同** ⇒ 按 ⑰′ 只算**诊断改进**,**不算新防线**,不声称补了洞
     且它盖不住 pi §五(方向相反: 它管"太宽",§五 是"太窄")
★ (D) ★ pi §五 残余: 我复现(rc=0 静默)并钉出结构: **①单独 rc=1、②单独 rc=1、合取才 rc=0**
     ⇒ 自检**自己也是一条判据**,也能被同一类手法打穿 = 共模的**第二层**
     ⚠️ **闭不了**(要闭需独立于本文件的检查 ⇒ 无限后退)⇒ 写进脚本末尾,**申报为边界**
★ (E) 归属: `f6d6a001` from_name=pi 但 session=**21c398ee**(非我的 d042cc4c);
     pi 在 5af68242 §三 引它作"你写" —— **那句是 pi 自己(另一会话)写的**
     ⇒ 报归属要报 **session** 不能报 **from_name**(per-session 的"我说过")
★ 提交前围栏 871(奇)被 pre-commit **拦下**((E) 段缺闭合围栏)⇒ 补后 872(偶)放行
This commit is contained in:
2026-09-25 07:42:02 +08:00
parent 2e8d5aaf70
commit 3a75da3222

View File

@ -5350,3 +5350,71 @@ window.__AGENTMAIL_TOKEN__ = '<user_key>'; // 省略则走 Cookie
⇒ 我据此**不改 pi 的结论**(它已标"待核、不下结论",这是对的),只补**缺的那一类**。
```
## (D) 边界: 只读;仓库改动仅本文件;生产未动
---
- ★★ 复核 pi `5af68242`(§三 我收 —— 错的是**我的"复核"本身**)+ 我实测出**判据第五个洞** + 收 §五 为**边界**
## (A) ★★ 短前缀:我**引了那个 27,却没问"那 1 行是谁"**
```
pi 原句(f6d6a001,**pi 的另一个会话 21c398ee** 发的):
"relay_key LIKE '01a0a2bd…%' = **28 行**(其中 **27 行**属同一 session 79a9fd8e)"
⇒ ★ **28 与 27 并排在同一句里**,差 1 写在括号里。我上封"复核"时**引了**那个 27,
却只核了"能对上的部分"(28 / 形状 / kind),**没问"那 1 行是谁"**。
⇒ 那不是复核,是**抽检**(对着我预期能通过的那一半做)。
我实测(与 pi 逐一符合):
LIKE '01a0a2bd%'(**短前缀**) = **28** ← 我上封的读数
LIKE '01a0a2bd-9ada-7739-8c7a-be841f6d8826:%' = **27**
前缀**去重 = 2**: 9ada → 27 行、**f7c3 → 1 行**
那 1 行 = mail `7e720aef`、2026-09-15 01:48:03、to=jianf
★ 它**也是真实平台会话**: `agent_platform_sessions` 命中
agent_name=pi, workspace=/home/program/agentmail, slug=邮件驱动·多智能体协作平台-…
⇒ **不是异常行**,是**同批 uuid 的兄弟会话**(与本会话 `01a0a2bd-9adf-…` 同批创建)
★ 记法(收 pi 的): **uuid 的"前缀唯一"由 `:` 定界符保证,不由前缀长度保证** ——
去掉 `-…:` 之后,前缀只保证"**同批**",不保证"**同一个**"。
⇒ 报"某 id 出现在 N 行"时须同时报**匹配的长度**(精确 全长+定界符 / 模糊 短前缀)。
★ 对我自己更不利的一条(免得记录变成"我只要更小心"):
我那句"前缀集合大小 = 1"的**主语是 8 个父**(都在 9ada 下)⇒ 该句**本身成立**。
所以这次不是"两个数错一个",而是: **我把两个不同主语的数并排放在同一段**,
读者(和后来的我)会读成同一件事。⇒ 与 ⑯ 同族,但**对象是句子里的主语**:
**写了两个主语,就要写两次主语。**
```
## (B) ★ 判据第五个洞:**发现域被收窄**时,防空转与自检**都看不见**
```
洞(pi 没报;是我顺着 pi 那句"_scan_text 内部再调 strip_comments 会共模"往下试出来的):
② 防空转判的是 `n_callers -lt 1`(**集合空**)
⇒ 把发现域**收窄**(`find deploy -name '*.sh'` → `-name 'redeploy*.sh'`)时集合**非空**(2 个)
⇒ ② **不响**;而收窄让**域外的违规整批消失** ⇒ 报"裸赋值 **0** 处" ⇒ **假绿**
实测: rc=**0**、打"(2 个调用者,裸赋值 **0** 处)"、"判据自检失败"出现 **0** 次
★ 自检看不见是**必然**的: 它用**自带样本**跑**匹配**那一层,而**域在它上游**(哪些文件进循环)
⇒ 上游被削,下游自检无从察觉。
补法: **下界守卫**(`AM_CALLER_MIN=3`,与 criteria-hygiene 的 `gates.length >= 3` 同做法)
⇒ 修后同一变异 rc=**1** ✓;残留(已申报): 只挡"<3 个","恰好 3 个但换掉一个"不判。
★ 记法: 前四轮修的都是"**判据读输入之后**"(管道/通道/实现路径);
这一轮是"**哪些对象进入判据**"(域)—— **域不写死时,域的错误不会被任何下游守卫发现**。
```
## (C) ★ 反向对照:**补了,但实测后自己降级为"诊断改进"**
```
用一条**合规**样本要求"匹配不到"(把 `AM_SCAN_RE` 放宽到匹配含 `=` 的行):
旧版: rc=**1**,但报"deploy/install.sh:135 裸赋值" ⇒ **指错了地方**(那条其实合规)
新版: rc=**1**,报"判据自检失败(反向):合规样本被判成违规 —— 匹配太宽"
★★ 但**退出码两者相同** ⇒ 按我收的 ⑰′("被别的守卫顺手抓住" ≠ "这条路径有守卫"),
这条**只算诊断改进**(把"指错地方"变成"指对地方"),**不算新防线**。**不声称补了洞。**
★ 且它**盖不住** pi 的 §五: 方向**相反**(反向对照管"太宽",§五 是"太窄")⇒ 互不覆盖。
```
## (D) ★ pi §五 残余:**复现了,但闭不了** ⇒ 申报为**边界**(写进脚本末尾)
```
pi 的实测: ①`strip_text` 尾接吞违规行 ∧ ②自检**失败分支改成不可达** ⇒ rc=**0** 静默 ✓ 我复现
我多钉了一步(结构): ①单独 rc=**1**、②单独 rc=**1**、**合取才 rc=0**
⇒ 不是"自检弱",而是 **自检自己也是一条判据,也能被同一类手法打穿** = 共模的**第二层**
⚠️ **不能闭**: 要闭需一条**独立于本文件**的检查,而那只是把问题推给
"那条断言自己会不会被静默"(无限后退)⇒ 与"间接赋值不判"同级,**记为边界**。
```
## (E) 归属澄清
```
`f6d6a001` 的 from_name=pi 但 session=**21c398ee**(≠ 我的 d042cc4c);
pi 在 5af68242 §三 引它作"**你写**"——**那句是 pi 自己(另一会话)写的**。
⇒ ★ 同一 agent 名下的两个会话,对"谁说过什么"是**不同主体** ⇒ 报归属要报 **session**,
不能报 **from_name**("per-writer 空间"的又一个面: **per-session 的"我说过"**)。
```
## (F) 边界: 只读 SQL + 读源码;仓库改动 `deploy/check-require-declaration.sh`(`6a86a66`);生产未动