Record T3 command-bus verification results #11

Merged
weichen merged 1 commits from feature/t3-command-bus-verification into main 2026-09-30 07:55:43 +00:00
@@ -0,0 +1,28 @@
# T3 验证记录:命令总线(feature/command-bus-r1)
被测版本组合:core=a2050d8 + backend=0f74026(PR#10)+ frontend=6a2b21a(PR#6)+ ui=76f976d(PR#7)+ documents=本记录;Dev 组合 PR:见任务卡(feature/command-bus-r1)。
initial_base_sha(R0):5b83704126(T2 合入后 main)。
日期:2026-09-30。
## 结果
| 用例 | 结果 | 证据 |
|---|---|---|
| Backend `go vet ./...` + `go test ./...` | PASS | 15 包 ok(新增 cmdbus 套件);store 迁移 v7 command_audit(双方言)roundtrip 更新为 [1..7] |
| cmdbus 单测 | PASS | 四入口审计对称(button/card/slash/chat/api,未知名归一 api;committed 必带 operationID);高危确认闭环(accepted→确认 committed→过期 rejected expired;取消 rejected;handler 拒绝透传);审计不可用→unknown(不臆断成功);插件 spec 无效 fail-closed;schema 标量子集校验(required/type/integer 分数拒绝) |
| Server e2e(含新增 TestDangerCommandConfirmFlowE2E) | PASS | GET /api/commands 数组契约(含 danger 与 legacy name);POST /api/commands/e2e.destroy(button 未确认)→ 确认卡+accepted;卡 action confirm → committed;GET /api/commands/audit 按会话查询有序(latest-first: committed→accepted);既有 TestCommandsRoute 经总线仍过(/help、未知命令 400 契约不变) |
| UI `tsc --noEmit` + `vitest run` | PASS | 18/18(InlineConfirmCard:未决展开+confirm/cancel 回调;resolved/dismissed/failed 折叠一行;非 confirm 不渲染;hasOpenConfirm 守卫语义) |
| Frontend `tsc --noEmit` + `vitest run` | PASS | 9/9;接线为纯委派(渲染证据在 ui 套件、分发证据在 backend e2e) |
| 组合 `make test` | PASS | Dev 钉定后组合验证(见 Dev 任务卡与组合 PR) |
## 落库清单(本任务)
- backend:`internal/cmdbus`(L1 包,模块卡 policy/modules/cmdbus.md;cardsvc 模块卡一并首落地)——注册表组合 Agent-Command、四入口归一分发、params 校验、danger=high→内联确认卡收口、审计信封落盘;server 路由 `POST /api/commands/{id}`、`GET /api/commands/audit`、`GET /api/commands` 改注册表驱动;postMessage chat 入口经意图闸门命中注册命令时同源分发(不起 run);插件 host OnCommands overlay;store v7。
- ui:InlineConfirmCard + hasOpenConfirm(锚定内联/已决折叠/双现定位入口)。
- frontend:内联确认卡渲染(锚定用户消息)、cardlink 点击定位收件箱(D32 互定位)、对话区拖拽投放、输入区未决确认提示、命令菜单注册表化(无别名容忍 + 高危 ⚠ 标记)。
## 限制
- 确认挂起态为进程内(重启后确认返回 rejected expired);v1 接受,升级触发条件见模块卡。
- 入口对称的浏览器走查未在本记录执行(API e2e + 组件测试覆盖);系统级零页面走查归 T5 验收剧本。
- 意图(agent-intent)→ 命令绑定为"意图 id == 注册命令 id"直接对齐;更丰富的 intent.action 映射待插件生态立项。