Files
mini-openclaw-v2/docs/project-process/06-validation.md
T
qiaoqichaoandClaude Code d56c699ce6 chore(v2): 从兴邦预审v2白名单抽取独立可运行基座
按 docs/v2/05-implementation-plan.md §1 候选迁移表与 claude_use/T00 白名单,
从 55e2cdb 抽取 224 个文件(2.48 MB)到独立目录 F:/mini-OpenClaw-v2。

- 排除:凭据(.env/server-deploy.conf/旧DELIVERY.md)、运行数据(xingbang_data 等
  4 个 SQLite)、依赖(venv/node_modules 符号链接)、归档(_backup*/test-evidence/
  ori_file)、Office 临时文件
- 目标目录独立 git 仓库,初始恢复点;Gitea 远程与分支待 OQ-06 Q2 定案
- 未部署、未启动服务、未调用模型

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-29 12:58:26 +08:00

109 lines
6.7 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.
# 阶段 ⑥ 验证与质量门(Validation & Quality Gates)
> **定义**:用**最小且与最终改动相关**的检查验证结果:每个改动映射到覆盖其行为/不变量/风险的检查并实际执行;失败必须可复现、可定位、有因果诊断;修复后**同一检查**复验。验证在真实交付边界之外只算"局部证据"。
> **输入**:⑤ 的实现产物(diff + 自测结果)+ ① 的验收标准(AC 映射)。
> **输出**:验证记录(检查身份 + argv/cwd + 结果 + 覆盖的不变量)、审查结论。
> **进入下一阶段(⑦ 交付与发布)**:全部质量门通过、审查无阻塞项。
---
## 1. 要求(Requirements)
### 1.1 进入条件
- 实现已满足 ⑤ 的 DoD(自测全绿、变更矩阵已同步)。
### 1.2 完成条件(DoD)
- [ ] 每个实质改动映射到最小且覆盖它的项目检查(单测/契约/集成/E2E/视觉/迁移/打包之一),并在最后一次编辑后运行
- [ ] 验证失败按"复现 → 定位(可归因的诊断)→ 因果假设 → 最小 owner 修复"链处理;重试不加诊断 ≠ 修复证据
- [ ] 修复后在最终状态上**重跑同一检查**(或记录等价性理由)
- [ ] 评审(正确性/一致性/安全/测试四维)完成:正确性/一致性/安全/测试,无未解决的阻塞项
- [ ] 门禁结果与最终修订绑定(不是"跑过"而是"这个 revision 过了")
---
## 2. 规则(Rules)
### 2.1 验证选择
| 编号 | 规则 |
|---|---|
| R-6.1 | **相关验证**:最终改动必须被最小且直接覆盖其行为的检查验证;跑一个无关的大套件或陈旧结果不算(旧结果、全量套件、agent 一句"done"都不是验证证据)。 |
| R-6.2 | **分层选择**:按"快/慢、便宜/昂贵"分层(lint/typecheck/单测 → 契约/集成 → E2E → 打包冒烟),agent 能按改动选择正确层;慢 e2e 本身不坏,坏的是它成为唯一反馈。 |
| R-6.3 | **失败的顺序链**:`failure → reproduction → diagnosis → bounded repair`,缺一不可;一条重试就过了但没有诊断的修复,不构成修复证据。 |
| R-6.4 | **修复后复验**:同一检查(或证明覆盖同一行为与范围的等价检查)在修复后的最终状态重跑;无失败无修复则记 `N/A` 并附相关验证结果。 |
| R-6.5 | **验证是机器事实**:命令身份(argv/cwd)、fixture、修订号、结果、覆盖的不变量都要保留;CI 身份与本地等价性记录在案。 |
### 2.2 质量门(Quality Gates)
| 编号 | 规则 |
|---|---|
| R-6.6 | **机制强制优先于文档**:架构/安全/schema/迁移/生成物漂移等规则用测试与静态检查强制(architecture test、契约 diff、迁移 lint、生成物 drift check),只写进文档不算门禁。 |
| R-6.7 | **门禁与修订绑定**:必须过的检查(lint/typecheck/单测/关键 E2E/构建)在合并前对最终修订全绿;绕过门禁必须有记录的理由。 |
| R-6.8 | **测试断言真实行为**:测试断言行为与不变量,不只是冒烟(跑通≠通过);live/真实设备用例必须有 skip 守卫,禁止依赖本机路径/凭据。 |
| R-6.9 | **UI 验证裁判独立**:驱动与观察分离;同一模型驱动又目测自己的截图不算 pass(详见 [04-ui-spec.md](04-ui-spec.md) §4)。 |
### 2.3 评审
| 编号 | 规则 |
|---|---|
| R-6.10 | 评审顺序:正确性(边界/错误处理/并发/资源泄漏)→ 一致性(风格/命名/契约同步)→ 安全(注入面/密钥落日志)→ 测试(新行为有测试锁定)。 |
| R-6.11 | 只报有证据的问题,按严重度分组(阻塞/建议/可选),每条带 `文件:行号` 与可执行建议;没有问题的维度明确说"未发现问题"。 |
---
## 3. 输出规范
### 3.1 验证记录模板
```text
改动(diff/修订号)
检查清单: 检查身份 | 命令(argv/cwd) | 覆盖的不变量 | 结果 | 时间
失败记录: 失败检查 → 复现步骤 → 诊断/日志身份 → 因果 → 修复 diff → 复验结果
残余风险: 未覆盖范围、跳过守卫的用例、需人工确认项
```
### 3.2 验证分层与实际入口
| 层 | 内容 | 触发 |
|---|---|---|
| L0 静态 | git diff --check;npm run build包含类型检查;文档链接/编号/事实检查 | 对应改动后 |
| L1 单测 | 在backend工作目录用其venv执行python -m unittest discover -s . -p test_*.py -v;建议由verify统一执行 | 后端行为修改 |
| L2 契约/守卫 | backend/test_assistant_components.py等已有测试与scripts/test_*.cjs;按新契约增加反例 | 契约/权限/页面规则修改 |
| L3 集成 | API + services + 临时测试数据库/fixtures,禁依赖真实客户库 | 主链路 |
| L4 E2E | 真实浏览器按本批用例操作并断言,记录实际入口/环境;当前未确认统一E2E套件 | 关键用户流 |
| L5 打包冒烟 | Docker Compose config;获授权后独立资源上运行verify.py --docker,另做目标环境验收 | 发布前 |
> 实际总入口为 `scripts/verify.py`:项目backend/venv执行,日志在test-evidence。当前没有package.json中的typecheck、test或test:e2e脚本,不得写成已执行。新版测试规划见 [v2验证](../v2/06-validation.md)。行为修改必须跑总入口,纯文档可用相关链接/编号/路径/diff检查。
### 3.3 交付物清单
- 验证记录(含失败→修复→复验链)
- 审查结论(四维逐项记录;独立评审未完成须说明,不能自称已获他人批准)
- 测试覆盖增量说明(新增测试对应的 AC/BR/E)
---
## 4. 反模式
- **陈旧/无关验证**:拿旧结果或全量套件当"这次改动"的证据。
- **只重试不诊断**:失败重跑过了就提交,没有定位因果。
- **修完不复验**:修复可见,但最终修订上没有任何同一检查的重跑。
- **把本地测试当交付证据**:真实接受边界(CI/合并/发布)未被打开时,用 `Unobserved` 而非编造缺失的 PR/部署。
- **裁判即选手**:模型目测自己生成/操作的 UI。
---
## 5. 轻量路径(小改动)
- 小行为修复:对应测试 + scripts/verify.py,保留完整日志;纯文档:链接、编号、事实与diff检查。
- 任何改动都不得跳过 R-6.3/R-6.4(诊断与复验)与 R-6.7(门禁)。
---
## 6. 相关文档
- 输入:阶段 ⑤ [05-implementation.md](05-implementation.md)、规格 [01-requirement.md](01-requirement.md) 的 AC
- UI 验证细则:阶段 ④ [04-ui-spec.md](04-ui-spec.md) §4
- 通过后进入:阶段 ⑦ [07-delivery.md](07-delivery.md)
变更:XB-1.0 / 2026-09-28,按兴邦 Next.js + FastAPI 项目事实适配;稳定规则编号保留。