Files
pikasTech-HWLAB/docs/reference/MVP-e2e-acceptance.md
T

154 lines
9.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# HWLAB MVP E2E 验收测试与报告 issue 规则
本文定义 HWLAB MVP 的用户可读、Agent 可执行验收测试规格。它按 `cli-spec``TEST.md` 风格组织用例,但报告产物不写入 `docs/``repository report directory `;每轮验收必须创建一个带编号的 GitHub 测试报告 issue。
## 适用范围
- 当前 G14 DEV 浏览器入口固定为 `http://74.48.78.17:17666/`
- 当前 G14 DEV API、edge 和 live health 入口固定为 `http://74.48.78.17:17667/``http://74.48.78.17:17667/health/live`
- 当前 MVP 上位约束是 `DC-DCSN-P0-2026-003` / [pikasTech/HWLAB#78](https://github.com/pikasTech/HWLAB/issues/78)M3 虚拟硬件可信闭环必须证明 `res_boxsimu_1:DO1 -> hwlab-patch-panel -> res_boxsimu_2:DI1`
- 当前默认前端方向以 [pikasTech/HWLAB#99](https://github.com/pikasTech/HWLAB/issues/99) 为准:`/` 必须是类 VS Code 的 Cloud Workbench,不是 Gate、status 或 diagnostics 首页。
## 报告 issue 规则
测试报告产物必须落到 GitHub issue,不进入长期文档目录,也不提交一次性报告文件。
- 报告 issue 标题格式:`[MVP-E2E-RPT-<NNN>] HWLAB MVP E2E 验收测试报告:<简短范围>`
- `<NNN>``001` 开始递增;创建前先搜索 open 和 closed issue 中已有的 `MVP-E2E-RPT-` 编号,选择下一个编号。
- 报告 issue 必须包含:测试日期、测试人或 runner、源文档路径、本次目标、DEV URL、observed commit/revision/tag/digest、每个 `T{x}` 用例的状态、blocker class、关键截图或截图附件、operation/trace/audit/evidence id、最终结论和后续 issue。
- 如果 Playwright 截图无法直接上传到 issue,报告 issue 必须记录截图文件路径、文件名、SHA 或可审查的 artifact URL;不能只写“已截图”。
- 任一用例为 `failed``blocked` 时,总结论只能是 failed/blocked,不得写 pass。
推荐报告 issue body 结构:
```markdown
## 测试范围
- 源文档:docs/reference/MVP-e2e-acceptance.md
- 报告编号:MVP-E2E-RPT-<NNN>
- DEV Cloud Web
- DEV API/edge
- observed frontend revision
- observed API revision
- runner / tester
## 结果总览
| 用例 | 状态 | 证据等级 | blocker class | 截图/证据 |
| --- | --- | --- | --- | --- |
| T1 | pass/failed/blocked | DEV-LIVE/SOURCE/DRY-RUN/BLOCKED | | |
## 详细记录
## T1
- 操作:
- 观察:
- 截图:
- 关键 ID
- 结论:
## 安全边界
- 未触碰 PROD
- 未读取 secret 明文:
- 未重启 UniDesk / Code Queue / backend-core
- 未把 UniDesk runtime 当 HWLAB runtime
```
## 证据等级
- `DEV-LIVE`:真实 G14 DEV `17666/17667` 上的浏览器、API、runtime 或短生命周期授权操作证据。
- `SOURCE`:源代码、静态检查、合同校验或未部署构建证据。
- `LOCAL`:本地浏览器、fixture 或本地服务证据。
- `DRY-RUN`:显式 dry-run 输出,不触碰 DEV runtime。
- `BLOCKED`:因为环境、权限、运行态、agent、DB、evidence 或安全边界无法继续。
禁止把 `SOURCE``LOCAL``DRY-RUN`、fixture、edge-only health、前端静态状态或 UniDesk runtime 代理写成 M3 或 MVP `DEV-LIVE` 通过。
## 验收用例
## T1 DEV 入口与运行边界
阅读 `AGENTS.md`,然后用浏览器或 Playwright 手动测试以下内容:打开 `http://74.48.78.17:17666/`,确认默认页是 HWLAB Cloud Workbench,不是 Gate、status、help 或 diagnostics;访问 `http://74.48.78.17:17667/health``http://74.48.78.17:17667/health/live`,确认返回 HWLAB DEV API/edge identity。报告必须写明 legacy public `:16666/:16667` 和 public `:6666/:6667` 未作为当前验收入口,UniDesk backend、provider-gateway 和 microservice proxy 未作为 HWLAB runtime 替代。
通过标准:
- `17666` 根页可由浏览器打开,页面标题、主导航或首屏内容明确指向 HWLAB 云工作台。
- `17667/health``17667/health/live` 返回 JSON,包含 HWLAB service identity 和 dev environment。
- 报告 issue 附桌面首屏截图和 API/health 摘要。
## T2 Cloud Workbench 首屏、布局与中文 UX
阅读 `AGENTS.md`,然后用浏览器或 Playwright 手动测试以下内容:分别在桌面视口和 `390x844` 移动视口截图,确认左侧资源/功能导航、中间 Agent 对话/trace/输入区、右侧硬件状态和控制/接线/可信记录区域可见;外层页面不滚动,滚动只发生在内部面板;用户可见文案中文优先;使用说明是内部入口且由 Markdown 渲染,不是默认首页。
通过标准:
- 默认页显示工作台,不显示 Gate/M0-M5/验收报告作为首屏主体。
- 桌面和移动视口下 `html/body` 或等价应用根节点没有页面级滚动路径。
- 关键中文标签可见,必要机器标识可以保留原文。
- 报告 issue 附桌面、移动和使用说明内部页截图。
## T3 M3 虚拟硬件可信闭环
阅读 `AGENTS.md`,然后用浏览器或 Playwright 手动测试以下内容:在明确授权的 DEV live 窗口内,通过工作台或等价受控入口执行 `res_boxsimu_1:DO1 -> hwlab-patch-panel -> res_boxsimu_2:DI1` 的 true/false 循环。报告必须记录两个 distinct box-simu、两个 distinct gateway-simu、一个 patch-panel、patch-panel-owned wiring、operationId、traceId、auditId 和 evidenceId。
通过标准:
-`DO1=true` 后,`DI1=true``hwlab-patch-panel` 同步可见;写 `DO1=false` 后,`DI1=false` 同步可见。
- 证据链明确归因到 `hwlab-patch-panel`,没有 box loopback、前端直改状态或 UniDesk runtime 替代。
- operation、trace、audit 和 evidence id 能互相指向同一轮操作。
- 未获授权、目标缺失、持久化 blocked 或任一关键 ID 缺失时,必须标为 `BLOCKED`,不得 claim M3 PASS。
## T4 Code Agent 真实 runner 能力
阅读 `AGENTS.md`,然后用浏览器或 Playwright 手动测试以下内容:在 `17666` 工作台 Agent 区输入 `pwd` 和“列出你可用的 skills”,确认返回来自真实 Codex runner、workspace、tool calls 和 skills 注入,而不是 `openai-responses` text-chat-only。随后让 Agent 通过 `hwlab-cloud-api` 执行同一 M3 硬件任务,确认 agent trace 引用对应 hardware operation 和 audit。
通过标准:
- `pwd` 返回真实 runner 工作目录或结构化 runner blocker。
- skills 查询返回真实 skill 列表、skill 发现输出或结构化 skills blocker。
- runner trace 中能看到工具调用、workspace 证据和 hardware operation/audit 关联。
- 如果只能文本聊天、provider unavailable、无工具调用或无 workspace 证据,必须标为 `BLOCKED/agent-runtime``BLOCKED/credential`
## T5 Audit、Evidence 与持久化
阅读 `AGENTS.md`,然后用浏览器或 Playwright 手动测试以下内容:确认直接 M3 操作和 Agent M3 操作都能在工作台、API 或 CLI 输出中看到 hardware audit、agent trace 和 evidence record。最小 evidence record 至少包含 `sessionId`、worker image 或 digest、`skillsCommitId``skillsTreeSha` 或文件清单 hash、`workspaceMode``agentTraceId``operationId``auditId``result``createdAt`
通过标准:
- hardware audit 由 HWLAB cloud/gateway/patch-panel 硬件链路生成,agent 自述不能替代 audit。
- evidence 中不包含 secret/token 明文。
- durable DB 或 evidence adapter 仍 blocked 时,报告必须标注准确 blocker,不得写 trusted green。
## T6 报告 issue 创建与编号
阅读 `AGENTS.md`,然后用浏览器或 Playwright 手动测试以下内容:按本文“报告 issue 规则”创建一个带递增编号的测试报告 issue,标题使用 `[MVP-E2E-RPT-<NNN>]` 前缀。报告 issue 必须挂载本次所有截图、关键 JSON 摘要、测试结论和后续 issue 链接;不得把测试报告正文写入 `docs/reference/`,不得提交一次性报告文件来替代 issue。
通过标准:
- 报告 issue 存在,编号未与历史报告冲突。
- 每个 `T{x}` 都有状态、证据等级和简短证据。
- 最终结论与各用例状态一致。
- 安全边界明确写出:未触碰 PROD、未读取 secret 明文、未重启 UniDesk / Code Queue / backend-core、未用 UniDesk runtime 替代 HWLAB runtime。
## 停止条件
出现以下情况时停止后续 live 或 mutating 测试,并在报告 issue 中标为 `BLOCKED``failed`
- 入口不是 G14 DEV `17666/17667`,或命中非当前 HWLAB DEV runtime。
- 需要读取或打印 Secret/token 明文。
- 需要触碰 PROD。
- 需要重启 UniDesk、Code Queue、backend-core 或无关基础设施。
- M3 目标不能证明两个 distinct box-simu、两个 distinct gateway-simu 和 patch-panel-owned wiring。
- agent 只能文本聊天,不能证明真实 runner/workspace/tool/skills。
- 任一结果要求把 SOURCE、LOCAL、DRY-RUN、fixture 或 edge-only 证据升级为 DEV-LIVE。
## 稳定来源
- [architecture.md](architecture.md)MVP 边界、M3 trusted loop 和证据等级。
- [dev-runtime-boundary.md](dev-runtime-boundary.md)G14 `17666/17667`、PROD `18666/18667`、G14 k3s 和运行态边界;D601 只作 legacy 回溯。
- [cloud-workbench.md](cloud-workbench.md)Cloud Workbench 默认首页和 UX 约束。
- [code-agent-chat-readiness.md](code-agent-chat-readiness.md)Code Agent 真实回复和 provider/runner blocker 判定。
- [m3-loop-rollout-runbook.md](m3-loop-rollout-runbook.md):M3 live 操作授权、证据和失败分类。