docs(debt): ④ 补齐第四块 —— "正常态"丢数据 ⇒ 加判据 (d) 与治本项(请求级 scope 字段)
pi 48c2c4c9 报的缺口我独立复核成立,并把它查到**结构层**:
① 缺口: 空列表上报时 `$2`(workspace) 无定义
`ReplacePlatformSessions(ctx, agentName, list)` 签名里**没有** workspace 参数
workspace 逐行来自 ps.Workspace(:81 INSERT 的 $3)⇒ `list=[]` 时**无从反推**
而 `heartbeatRequest`(agents.go:13-46) 实测**无请求级 workspace 字段**
⇒ "这次上报替哪个目录报的"在**协议上不存在** ⇒ 不是"加个参数"能修的,是协议缺字段
三种取法全不成立: '' ⇒ 清不掉(残留); 全部 ⇒ 退化成今天的 agent 级全擦; 上一次的值 ⇒ 引入状态且多实例互相覆盖
② 深度: `[]` 三语义里 ②"这个 agent 没会话"今天无人有权说;缺的是服务端**第二次区分**
桥已区分(index.js:1144-1156 成功空⇒[] / 异常⇒省略字段);服务端拿到 [] 不知属于哪个 workspace
⇒ 语义① 落地时缺**主语** ⇒ 治本项 = 请求级 scope 字段(DELETE 域 == 上报域)
③ 复核 pi 支撑数据: opencode project 13 行 / 11 不重复 worktree
逐行 0 会话 = 3 行;按 worktree 汇总 0 会话 = **2 个** ⇒ pi "2 个合法空目录报 []" 成立 ✓
镜像表 90 个不同 (agent,workspace) ⇒ 多目录上报是常态 ⇒ 空目录报 [] 今天就发生
教训: 聚合口径变了答案就变(行=3/worktree=2)⇒ 报数必须带**聚合键**
④ 判据从三条加到四条,且 (d) 按"与治本项同一前提到期"登记(避免造出永久红判据)
(a) 迁移路径 PK 断言 (b) 索引存在 (c) 无 _new 残留
(d) 空列表上报不得丢数据: 同时断言「该 workspace 被清空」**且**「其他 workspace 行数不变」
—— 只断一半必漏(只断前者漏误擦=本 bug;只断后者漏残留)
校验: go test ./internal/repo/ -run Debt -count=1 ⇒ ok
This commit is contained in:
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user