diff --git a/docs/records/2026-09-30-t2-inbox-verification.md b/docs/records/2026-09-30-t2-inbox-verification.md new file mode 100644 index 0000000..108b319 --- /dev/null +++ b/docs/records/2026-09-30-t2-inbox-verification.md @@ -0,0 +1,26 @@ +# T2 验证记录:收件箱任务卡(feature/inbox-r2) + +被测版本组合:core=a2050d8 + backend=ba1714d(cardsvc PR#8/#9)+ frontend=801a684(PR#4)+ ui=bf77de7(PR#4/#5)+ documents=本记录;Dev 组合 PR:见任务卡(feature/inbox-r2)。 +initial_base_sha(R0):69fd335deac237f5291298cb06a50bf03d11add7。 +日期:2026-09-30。恢复说明:前会话完成主体开发并合入三仓(06:52–06:58Z),本会话接管收尾并补齐本记录与 Dev 钉定。 + +## 结果 + +| 用例 | 结果 | 证据 | +|---|---|---| +| Backend `go test ./...`(含 cardsvc 新套件) | PASS | 14 包 ok;cardsvc 覆盖生命周期、动作标签与幂等、pin/dismiss、owner 隔离、ref 幂等消解;迁移测试 v6 activity_cards(双方言) | +| Backend 真实二进制 e2e(mock `#upload`) | PASS | `make build` 后 `serve --mock`:`#upload` → 会话卡列表 2 张(progress=done、compare=action_required 带 escalate/keep);`actions/keep` → resolved + assistant 回执消息(含 card ref)入时间线;`pin=true` ✓;`dismiss` → dismissed ✓;重复动作 → "card: not awaiting action"(幂等拒绝) | +| UI `tsc --noEmit` + `vitest run` | PASS | 13/13(含 InboxList/ActivityCardView 组件测试) | +| Frontend `vitest run` | PASS | 9/9(组合源下 @ui 别名消费 InboxList/pendingCount) | +| 组合 `make test` + `make build` | PASS | Dev 分支钉定后组合验证(版本串 412d51a+core=a2050d8+backend=ba1714d+frontend=801a684+ui=bf77de7+agentcmd=cc1ad77+documents=210b492) | + +## 落库清单(本任务) + +- backend:cardsvc 服务(创建/更新/状态机/pin/dismiss/动作+回执/ref 消解)、SQLite v6 activity_cards 迁移、卡事件入会话事件缓冲(persist/seq/replay)、REST(GET cards / actions / pin / dismiss)、摄取/编排/HITL 投影卡 producer、mock `#upload` 全周期演示。 +- ui:ActivityCardView + InboxList + pendingCount,样式与类型出口。 +- frontend:收件箱 tab 置首(D25)+ 待办角标 + 实时卡片状态(store/cards + api 三端点)。 + +## 限制 + +- 浏览器用户流程走查未在本记录执行(以真实二进制 API e2e + 组件测试 + 构建覆盖交互证据);系统级零页面走查按提案归 T5 验收剧本。 +- 跨会话项目级收件箱聚合为提案 v1 边界外(卡片按会话)。