补: 那 116 封不是"历史账",是**活的重投源** —— 85 封会被 catchUp 选中;且别顺手扩回填
接上一笔:`status='unread'` 且"收件人回过"且无 read 行的 116 封里,
**85 封**在 `sessions.status <> 'archived'` 的会话里 ⇒ 会出现在 `?status=unread`、会被 `catchUp` 选中重投:
pi 67 / dsh 8 / zcode 8 / opencode 1 / homeagent 1
⇒ **只落回填不动部署,重投不会停**:回填清的是 (b)(`markReadFor` 漏写),
而把这些信持续留成"未读"的是 (a)(`read_mail` 本就不标已读 ⇒ 契约 T-12 对此沉默)。
(a) 是**契约缺口**不是可修的 bug ⇒ 这些信**永远**是未读,每天 04:00 按 limit=20 捞一批重投。
⚠️ 同时记一条**反向警告**:**别顺手把回填扩到 `status='unread'`**。
那 116 封有"收件人回过"作证;其余 `unread` 的**分不出**"读过没记上"与"压根没读"
⇒ 扩下去就是**把没读的标成已读**。要扩只能按可证的子集扩,并写明判据只覆盖**充分**证据那部分。
This commit is contained in:
10
docs/API.md
10
docs/API.md
@ -541,6 +541,16 @@ curl -X POST {host}/api/v1/mail/read -H "Authorization: Bearer $AGENT_KEY"
|
||||
"收件人回过"只是**充分**证据,真实漏记量 ≥ 248)。
|
||||
**"补完 40 行"与"历史账平了"是两件事** —— 这正是本节开头那条"A 对不代表 B 对"的同一个形状。
|
||||
|
||||
★ **而且这不是"历史账"问题,是活的重投源**:那 116 封里 **85 封**在
|
||||
`sessions.status <> 'archived'` 的会话里 ⇒ **会出现在 `?status=unread` 里、会被 `catchUp` 选中重投**
|
||||
(按收件人:pi 67 / dsh 8 / zcode 8 / opencode 1 / homeagent 1)。
|
||||
⇒ **只落回填不动部署,重投不会停**:回填清的是 (b),而把这些信持续留成"未读"的是 (a)
|
||||
(`read_mail` 本就不标已读,契约 T-12 对此沉默 ⇒ 这是**契约缺口**、不是可修的 bug)。
|
||||
⇒ 于是它们**永远**是"未读",每天 04:00 被按 `limit=20` 捞一批出来重投。
|
||||
⚠️ 反过来说:**别顺手把回填扩到 `status='unread'`** —— 那 116 封有"收件人回过"作证,
|
||||
但其余 `unread` 的信**分不出**"读过没记上"与"压根没读",扩下去就是**把没读的标成已读**。
|
||||
要扩只能按可证的子集扩,并写明判据只覆盖**充分**证据那一部分。
|
||||
|
||||
### 每个 Agent 可用的模型范围
|
||||
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user