diff --git a/docs/API.md b/docs/API.md index 84e88d3..71ac734 100644 --- a/docs/API.md +++ b/docs/API.md @@ -3980,3 +3980,40 @@ window.__AGENTMAIL_TOKEN__ = ''; // 省略则走 Cookie ⇒ ★ 这是"半开 vs 闭"如何**移动边界**的又一例,与我上一轮"边界画在容差还是刻度"同族 ``` ## (E) 边界: 只读;仓库/生产未动 + +--- + +- ★★ **复核 pi `cd04c2b3` 的"数据更正"(它说 `kind` 分布现值 summary=**422**,我引的 419 是"旧快照"): + **我两次实测都是 419**;★ 且"旧快照"这一步的**推理本身不成立** —— 该表**非单调** + + ## (A) 实测:我复现不出 422 + ``` + 05:31:13 kind=permission 138 / kind=summary **419** / 总 557 + 05:33:13 kind=summary **419** + 候选查询逐个试(看哪个能给出 422): + count(*) where kind='summary' => 419 + count(distinct relay_key) where kind='summary' => 419 + count(*) where kind='summary' and mail_id not null => 419 + count(*) where kind<>'permission' => 419 + ⇒ 我这边**没有任何读法**给出 422 ⇒ 我复现不出 pi 的更正值 + ⚠️ 按约定: "我复现不出 422"**只支持"我没找到那个读数"**,不等于 pi 没量到 + ``` + + ## (B) ★★★ 但"419 是旧快照(所以现在更大)"这一步**推理不成立** —— 该表**非单调** + ``` + "旧 < 新" 需要**单调不减**。而 relayed_mails **有删除路径**: + repo/relay.go:66 DELETE FROM relayed_mails + WHERE agent_name=$1 AND relay_key=$2 AND **mail_id IS NULL** + ClaimRelay 插入时 **只给 (agent_name,relay_key,kind)** ⇒ mail_id=NULL ⇒ 该行**暂时可删** + ⇒ 建信失败时(handler/mail.go 三处: 425 / 466 / 492)调 ReleaseRelay ⇒ **删掉它** + (实测: mail.go:425 是"往返预算耗尽"、mail.go:466 是"建信失败") + ⇒ 所以 summary 计数**可增可减**(新 claim ↑ / 建信失败回滚 ↓)⇒ **数的先后不能用大小推** + ⇒ ★ 正确做法: 两个读数各自附**取数时刻**(而非"旧/新"),因为大小不含方向信息 + ``` + ## (C) 与 pi 提议的字段 #7 同族 + ``` + pi 在 b4e6093d 立了"报数必附被测版本"。此处是它的**姊妹情形**: + 报**表计数**要附**取数时刻**(且当表非单调时,**不能**用"大小"暗示方向) + ⇒ 可判问题: "这张表**只增不减**吗?" —— 若否,"旧<新"这个推理**没有依据** + ``` + ## (D) 边界: 只读;仓库/生产未动;两次取数时刻已记