Compare commits
8
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b7a6bd9d5e | ||
|
|
ba52c7bb0a | ||
|
|
6f541db72d | ||
|
|
ad87c9334e | ||
|
|
18bf3bf8e5 | ||
|
|
210b492e02 | ||
|
|
4348d4ebc4 | ||
|
|
023daeffaa |
@@ -0,0 +1,28 @@
|
||||
# T1 验证记录:Core 契约扩展 + Agent-Command v0(feature/core-cards-commands-r1)
|
||||
|
||||
被测版本组合:core=合并后 main(PR#2)+ agent-command=合并后 main(PR#2)+ frontend=PR#3 + ui=PR#3 + documents=本记录;Dev 组合 PR:见任务卡(feature/core-cards-commands-r1)。
|
||||
initial_base_sha(R0):69e9471dafd275f98928ff005732b94c4b18b638(T0 合并提交)。
|
||||
日期:2026-09-30。
|
||||
|
||||
## 结果
|
||||
|
||||
| 用例 | 结果 | 证据 |
|
||||
|---|---|---|
|
||||
| Core `go vet ./...` | PASS | 无输出(干净) |
|
||||
| Core `go test ./...`(含黄金样本一致性) | PASS | ok agent-system-core;新增样本 activity_card / hitl_card_blocked / event_card_created / event_card_resolved / ui_vocabularies + 扩展 plugin_manifest 全部逐字节一致 |
|
||||
| Agent-Command `go vet ./...` | PASS | 干净 |
|
||||
| Agent-Command `go test ./...` | PASS | ok agent-command(spec 校验 10 负例 / 注册表生命周期 / 回执四态 / 并发冒烟)+ ok agent-command/conformance(command_spec、command_receipt 黄金样本) |
|
||||
| Frontend `vitest run` | PASS | 9/9(contracts.ts 再生成后形状断言不变) |
|
||||
| UI `tsc --noEmit` + `vitest run` | PASS | 类型干净;6/6 组件测试 |
|
||||
| 组合 `make test` + `make build` | PASS | 在 Dev 分支最终 head 执行(证据见 Dev PR 与任务卡) |
|
||||
| 兼容性核查 | PASS | 全部为增量(omitempty 字段/新类型/新事件类型);现有黄金样本不变;ts 镜像同步 |
|
||||
|
||||
## 契约变更清单(本任务落库)
|
||||
|
||||
- Core:`ActivityCard`(7 Kind × 6 Status + Terminal)、`card.created/updated/status/resolved` 事件与 payload、HITL `anchorMessageId/blocked/blockReason`、UI 词汇 7 项(progress/compare/tree/table/steps/tabs/timeline,Spec 后缀避免常量名冲突)、`UIAction.command`、manifest `provides.commands/workspaces`、`ActivityCardTemplate`(工作流 card 步骤)、`PluginWorkspace`。
|
||||
- Agent-Command v0:`CommandSpec`(id 规范 `<domain>.<verb>`、paramsSchema、danger、binding + fail-closed 校验)、`Registry`(来源标记/启停/稳定错误)、`ExecReceipt` 四态(committed/accepted 必带 OperationID)、`AuditEnvelope`(入口归一 button/card/slash/chat/api)。
|
||||
|
||||
## 限制
|
||||
|
||||
- 本任务为契约与库层,无运行时行为可走查;端到端行为验证在 T2(收件箱)/T3(命令总线)的浏览器证据中覆盖。
|
||||
- Core 黄金样本 `event_card_*` 的 payload 为内联 JSON 字面量(与既有事件样本同风格),未逐一驱动 CardPayload 序列化路径(后端 T2 接入时经事件管道覆盖)。
|
||||
@@ -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 边界外(卡片按会话)。
|
||||
@@ -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 映射待插件生态立项。
|
||||
@@ -0,0 +1,27 @@
|
||||
# T4 验证记录:工作区弹层(feature/workspaces-r1)
|
||||
|
||||
被测版本组合:core=a2050d8 + backend=<PR#11 后> + frontend=<PR#7 后> + ui=<PR#8 后> + documents=本记录;Dev 组合 PR:见任务卡(feature/workspaces-r1)。
|
||||
initial_base_sha(R0):fc5008aa13(T3 合入后 main)。
|
||||
日期:2026-09-30。
|
||||
|
||||
## 结果
|
||||
|
||||
| 用例 | 结果 | 证据 |
|
||||
|---|---|---|
|
||||
| Backend `go vet` + `go test ./...` | PASS | 全包 ok;plugins 新增 TestWorkspacesOverlay(manifest+workspaces/main.json 装载、ListWorkspaces 声明含 shortcut/body) |
|
||||
| UI `tsc --noEmit` + `vitest run` | PASS | 23/23(OverlayHost:标题/图标/徽章/快捷键提示、捕获相 Esc 关闭、仅遮罩点击关闭、刷新回调、声明式+命令式共存) |
|
||||
| Frontend `tsc` + `vitest` + `vite build` | PASS | 9/9;构建通过(dist 产物正常) |
|
||||
| Example 插件扩展 | PASS | plugins/example:provides 增 workspaces/commands;workspaces/main.json(example.governance,⌘9)与 commands/demo.json(example.echo,normal 级)JSON 校验通过;随 Dev 组合 PR 落库 |
|
||||
| 组合 `make test` | PASS | Dev 钉定后组合验证(见 Dev 任务卡与组合 PR) |
|
||||
|
||||
## 落库清单(本任务)
|
||||
|
||||
- backend:plugins host 装载 provides.workspaces(workspaces/*.json → PluginWorkspace overlay)+ ListWorkspaces;GET /api/workspaces。
|
||||
- ui:OverlayHost(统一弹层容器:Esc/遮罩回对话现场、快捷键提示、徽章、刷新;声明式 Body 与命令式子组件共存)。
|
||||
- frontend:右栏终态纯收件箱(经典 tabs 移除;Plan/Todos 并入「当前任务」常驻卡);工件/代理/插件面板/插件声明工作区统一为 OverlayHost 弹层(Workspaces.tsx);⌘1–9 快捷键;左栏工作区快捷区;会话头项目徽章(D26);DocViewer/AgentTracker 迁入 OverlayHost。
|
||||
- Dev:example 插件扩展(workspace + command 声明)。
|
||||
|
||||
## 限制
|
||||
|
||||
- 工作区 badgeTool/refreshTool 的服务端工具联动为声明占位(v1 前端整体刷新 Body;按需刷新待插件生态立项)。
|
||||
- 浏览器端 ⌘ 快捷键与零页面走查归 T5 系统级验收剧本。
|
||||
Reference in New Issue
Block a user