Files
Agent-System-Documents/docs/records/2026-09-30-t3-command-bus-verification.md
T
weichen 6f541db72d Record T3 command-bus verification results
Why: T3 acceptance requires a verification record in this repo before the Dev combo pin.
Evidence: backend 15 pkgs ok incl. new cmdbus suite and danger-confirm e2e (dispatch -> confirm card -> action -> committed -> audit query ordered); ui 18/18; frontend 9/9; combo make test at pinned heads.
Impact: docs/records only.
Refs: docs/proposals/2026-09-30-ui-inbox-command-workspace.md T3; task card feature/command-bus-r1
2026-09-30 07:55:39 +00:00

3.0 KiB
Raw Blame History

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 映射待插件生态立项。