specwf 0.2.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +96 -59
- package/bin/cli.d.ts +2 -0
- package/bin/cli.js +4425 -0
- package/bin/specwf.js +4424 -1
- package/dist/cli.js +3821 -1462
- package/package.json +2 -1
- package/dist/templates/agents/archiver.md +0 -112
- package/dist/templates/agents/executor.md +0 -125
- package/dist/templates/agents/planner.md +0 -114
- package/dist/templates/agents/researcher.md +0 -104
- package/dist/templates/agents/reviewer.md +0 -98
- package/dist/templates/agents/verifier.md +0 -129
- package/dist/templates/artifacts/context.md +0 -151
- package/dist/templates/artifacts/design.md +0 -224
- package/dist/templates/artifacts/goal-review.md +0 -95
- package/dist/templates/artifacts/project.yml +0 -117
- package/dist/templates/artifacts/proposal.md +0 -124
- package/dist/templates/artifacts/quality-review.md +0 -131
- package/dist/templates/artifacts/research.md +0 -127
- package/dist/templates/artifacts/spec-review.md +0 -84
- package/dist/templates/artifacts/state.md +0 -158
- package/dist/templates/artifacts/summary.md +0 -129
- package/dist/templates/artifacts/tasks.md +0 -109
- package/dist/templates/artifacts/verification.md +0 -113
- package/dist/templates/commands/adhoc.md +0 -38
- package/dist/templates/commands/apply.md +0 -20
- package/dist/templates/commands/archive.md +0 -21
- package/dist/templates/commands/continue.md +0 -27
- package/dist/templates/commands/discuss.md +0 -24
- package/dist/templates/commands/grill.md +0 -24
- package/dist/templates/commands/init.md +0 -37
- package/dist/templates/commands/milestone.md +0 -27
- package/dist/templates/commands/plan.md +0 -22
- package/dist/templates/commands/research-phase.md +0 -20
- package/dist/templates/commands/research.md +0 -24
- package/dist/templates/commands/review.md +0 -20
- package/dist/templates/commands/roadmap.md +0 -23
- package/dist/templates/commands/ship.md +0 -36
- package/dist/templates/commands/split.md +0 -16
- package/dist/templates/commands/verify.md +0 -22
- package/dist/templates/skills/adhoc.md +0 -53
- package/dist/templates/skills/apply.md +0 -134
- package/dist/templates/skills/archive.md +0 -109
- package/dist/templates/skills/continue.md +0 -97
- package/dist/templates/skills/discuss.md +0 -95
- package/dist/templates/skills/grill.md +0 -90
- package/dist/templates/skills/init.md +0 -116
- package/dist/templates/skills/milestone.md +0 -36
- package/dist/templates/skills/plan.md +0 -144
- package/dist/templates/skills/research-phase.md +0 -66
- package/dist/templates/skills/research.md +0 -76
- package/dist/templates/skills/review.md +0 -148
- package/dist/templates/skills/roadmap.md +0 -104
- package/dist/templates/skills/ship.md +0 -94
- package/dist/templates/skills/split.md +0 -96
- package/dist/templates/skills/verify.md +0 -147
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
# 三重审查工作流指引
|
|
2
|
-
|
|
3
|
-
## 概述
|
|
4
|
-
|
|
5
|
-
对 Apply 产出的代码进行三重并行审查:规格审查、质量审查、目标审查。三重审查全部通过后才能进入 verify 阶段。
|
|
6
|
-
|
|
7
|
-
Review 由 specwf-reviewer agent 在独立上下文中并行执行。审查结果决定是否需要回 apply 修改。
|
|
8
|
-
|
|
9
|
-
## 前置条件
|
|
10
|
-
|
|
11
|
-
- apply 阶段已完成,代码已提交
|
|
12
|
-
- delta-specs、design.md、tasks.md、proposal.md 已就位
|
|
13
|
-
|
|
14
|
-
## 执行步骤
|
|
15
|
-
|
|
16
|
-
### 1. 并行启动三重审查
|
|
17
|
-
|
|
18
|
-
一次启动三个 reviewer agent 并行审查:
|
|
19
|
-
\`\`\`
|
|
20
|
-
task agent: specwf-reviewer × 3(并行)
|
|
21
|
-
1. Spec Review — 规格符合性审查
|
|
22
|
-
2. Quality Review — 代码质量审查
|
|
23
|
-
3. Goal Review — 目标达成审查
|
|
24
|
-
\`\`\`
|
|
25
|
-
|
|
26
|
-
### 2. 规格审查(Spec Review)
|
|
27
|
-
|
|
28
|
-
**检查项**:
|
|
29
|
-
- [ ] delta-specs 中的每个 SHALL 场景在代码中实现
|
|
30
|
-
- [ ] delta-specs 中的每个 MUST 约束在代码中遵守
|
|
31
|
-
- [ ] 全局 specs/ 中相关的 SHALL/MUST 未被违反
|
|
32
|
-
- [ ] GIVEN/WHEN/THEN 场景在测试中覆盖
|
|
33
|
-
- [ ] 接口签名与 design.md 一致
|
|
34
|
-
- [ ] 异常处理覆盖 spec 中定义的错误场景
|
|
35
|
-
|
|
36
|
-
**输出**: \`reviews/spec-review.md\`
|
|
37
|
-
\`\`\`markdown
|
|
38
|
-
# 规格审查报告
|
|
39
|
-
|
|
40
|
-
## 审查结果:PASS / FAIL / CONDITIONAL_PASS
|
|
41
|
-
|
|
42
|
-
## 通过项
|
|
43
|
-
- SHALL-001: ✓ 已实现且测试覆盖
|
|
44
|
-
- ...
|
|
45
|
-
|
|
46
|
-
## 未通过项
|
|
47
|
-
- SHALL-003: ✗ 未处理输入为空场景
|
|
48
|
-
- 严重性: HIGH / MEDIUM / LOW
|
|
49
|
-
- 建议: ...
|
|
50
|
-
|
|
51
|
-
## 与全局 specs 冲突
|
|
52
|
-
- ...
|
|
53
|
-
\`\`\`
|
|
54
|
-
|
|
55
|
-
### 3. 质量审查(Quality Review)
|
|
56
|
-
|
|
57
|
-
**检查项**:
|
|
58
|
-
- [ ] 明显的 bug 模式(空指针、越界、竞态条件)
|
|
59
|
-
- [ ] 安全漏洞(注入、权限缺失、敏感信息泄露)
|
|
60
|
-
- [ ] 代码规范(项目约定的代码风格和模式)
|
|
61
|
-
- [ ] 测试质量(不是 trivial 测试,覆盖边界条件)
|
|
62
|
-
- [ ] 性能问题(不必要的分配、N+1 查询等)
|
|
63
|
-
- [ ] 错误处理(错误被吞没、错误信息不明确)
|
|
64
|
-
|
|
65
|
-
**输出**: \`reviews/quality-review.md\`
|
|
66
|
-
\`\`\`markdown
|
|
67
|
-
# 质量审查报告
|
|
68
|
-
|
|
69
|
-
## 审查结果:PASS / FAIL / CONDITIONAL_PASS
|
|
70
|
-
|
|
71
|
-
## Bug 类
|
|
72
|
-
- ...
|
|
73
|
-
|
|
74
|
-
## 安全类
|
|
75
|
-
- ...
|
|
76
|
-
|
|
77
|
-
## 规范类
|
|
78
|
-
- ...
|
|
79
|
-
|
|
80
|
-
## 测试质量
|
|
81
|
-
- ...
|
|
82
|
-
\`\`\`
|
|
83
|
-
|
|
84
|
-
### 4. 目标审查(Goal Review)
|
|
85
|
-
|
|
86
|
-
**检查项**:
|
|
87
|
-
- [ ] change proposal.md 中定义的目标已实现
|
|
88
|
-
- [ ] tasks.md 中所有 tasks 已完成(无论 type)
|
|
89
|
-
- [ ] design.md 中的方案在代码中落地
|
|
90
|
-
- [ ] 没有 scope creep(实现了 proposal 外的功能)
|
|
91
|
-
- [ ] 测试覆盖满足 change 的测试策略要求
|
|
92
|
-
|
|
93
|
-
**输出**: \`reviews/goal-review.md\`
|
|
94
|
-
\`\`\`markdown
|
|
95
|
-
# 目标审查报告
|
|
96
|
-
|
|
97
|
-
## 审查结果:PASS / FAIL / CONDITIONAL_PASS
|
|
98
|
-
|
|
99
|
-
## 目标达成
|
|
100
|
-
- proposal 目标 1: ✓
|
|
101
|
-
- ...
|
|
102
|
-
|
|
103
|
-
## 任务完成度
|
|
104
|
-
- tasks.md 完成: 7/7
|
|
105
|
-
|
|
106
|
-
## Scope Creep 检查
|
|
107
|
-
- 发现 1 处额外实现: ...
|
|
108
|
-
\`\`\`
|
|
109
|
-
|
|
110
|
-
### 5. 汇总结果
|
|
111
|
-
|
|
112
|
-
收集所有三份审查报告,根据 gate 配置决定是否进入 verify:
|
|
113
|
-
|
|
114
|
-
- **all-pass(默认)**:三份报告都 PASS 才进入 verify
|
|
115
|
-
- **severity**:没有 HIGH 严重性问题即可进入 verify
|
|
116
|
-
- **report-only**:审查结果仅供参考,不阻止进入 verify
|
|
117
|
-
|
|
118
|
-
任一审查 FAIL 时:
|
|
119
|
-
- 记录问题清单
|
|
120
|
-
- 回 apply 阶段修复
|
|
121
|
-
- 修复后重新审查涉及的部分
|
|
122
|
-
|
|
123
|
-
## 产物
|
|
124
|
-
|
|
125
|
-
- \`changes/<change-name>/reviews/spec-review.md\` — 规格审查报告
|
|
126
|
-
- \`changes/<change-name>/reviews/quality-review.md\` — 质量审查报告
|
|
127
|
-
- \`changes/<change-name>/reviews/goal-review.md\` — 目标审查报告
|
|
128
|
-
|
|
129
|
-
## 验证
|
|
130
|
-
|
|
131
|
-
- [ ] 三重审查全部完成
|
|
132
|
-
- [ ] gate 条件满足(根据配置)
|
|
133
|
-
- [ ] 审查报告写入对应目录
|
|
134
|
-
- [ ] FAIL 的问题在回 apply 前修复
|
|
135
|
-
|
|
136
|
-
## 常见陷阱
|
|
137
|
-
|
|
138
|
-
- 不要合并审查职责 — 规格/质量/目标是三个独立视角,必须由不同 reviewer(或至少不同上下文)执行
|
|
139
|
-
- 不要在审查报告里写模糊的描述 — 每个问题必须有文件/行号引用
|
|
140
|
-
- 不要把「风格偏好」作为 FAIL 理由 — 只有违反项目约定的才记录
|
|
141
|
-
- 如果条件允许,一次审查只覆盖单个 change 的 diff,不涉及全局代码
|
|
142
|
-
- ALL-PASS 模式下,一个 CONDITIONAL_PASS 算 FAIL
|
|
143
|
-
|
|
144
|
-
## 参考
|
|
145
|
-
|
|
146
|
-
- GSD Core 的 triple review 机制
|
|
147
|
-
- OpenSpec 的 review 模板
|
|
148
|
-
- OWASP 代码审查指南(质量审查的安全类参考)
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
# 路线图工作流指引
|
|
2
|
-
|
|
3
|
-
## 概述
|
|
4
|
-
|
|
5
|
-
将项目拆分为 Milestone 和 Phase 两个层级。Milestone 是长期里程碑(通常 1-3 个月),Phase 是 Milestone 内的开发阶段(通常 1-2 周)。
|
|
6
|
-
|
|
7
|
-
路线图基于 proposal.md 和 research 产出,输出可执行的阶段规划。
|
|
8
|
-
|
|
9
|
-
## 前置条件
|
|
10
|
-
|
|
11
|
-
- 已完成 grill
|
|
12
|
-
- (可选)已完成 research —— 调研结果指导技术栈拆分
|
|
13
|
-
- 对项目范围有清晰共识
|
|
14
|
-
|
|
15
|
-
## 执行步骤
|
|
16
|
-
|
|
17
|
-
### 1. 定义 Milestone
|
|
18
|
-
|
|
19
|
-
按功能领域或发布节奏划分里程碑。每个 milestone 应有:
|
|
20
|
-
- **名称**:简短标识(如 \`M1-core\`)
|
|
21
|
-
- **目标**:一个句子描述的里程碑目标
|
|
22
|
-
- **范围**:包含和不包含的功能
|
|
23
|
-
- **成功标准**:可测量的完成条件
|
|
24
|
-
- **预估时长**:1-3 个月
|
|
25
|
-
|
|
26
|
-
示例:
|
|
27
|
-
\`\`\`
|
|
28
|
-
M1 — Core Infrastructure
|
|
29
|
-
目标:搭建基础 CLI 框架 + spec 管理系统
|
|
30
|
-
范围:init/grill/research/roadmap/.../archive 完整循环
|
|
31
|
-
时长:6 周
|
|
32
|
-
\`\`\`
|
|
33
|
-
|
|
34
|
-
### 2. 为每个 Milestone 拆分 Phase
|
|
35
|
-
|
|
36
|
-
每个 milestone 包含 3-8 个 phase:
|
|
37
|
-
\`\`\`
|
|
38
|
-
<ms-name>
|
|
39
|
-
├── ph.1 基础搭建
|
|
40
|
-
├── ph.2 核心功能 A
|
|
41
|
-
├── ph.3 核心功能 B
|
|
42
|
-
├── ph.4 集成测试
|
|
43
|
-
└── ph.5 文档和完善
|
|
44
|
-
\`\`\`
|
|
45
|
-
|
|
46
|
-
每个 Phase 定义:
|
|
47
|
-
- **名称**(ph.N-<name>)
|
|
48
|
-
- **目标**
|
|
49
|
-
- **依赖**(依赖的技术或前置 phase)
|
|
50
|
-
- **输入**(specs 文件、conventions、设计文档)
|
|
51
|
-
- **输出**(代码、specs 更新、文档)
|
|
52
|
-
- **预估 Change 数**
|
|
53
|
-
|
|
54
|
-
### 3. 验证里程碑覆盖
|
|
55
|
-
|
|
56
|
-
逐项检查 proposal.md 的「范围」是否被 Milestone 和 Phase 完整覆盖:
|
|
57
|
-
- 没有遗漏的功能
|
|
58
|
-
- 依赖关系合理
|
|
59
|
-
- Phase 之间的依赖不形成循环
|
|
60
|
-
|
|
61
|
-
### 4. 产出 ROADMAP.md
|
|
62
|
-
|
|
63
|
-
\`\`\`markdown
|
|
64
|
-
# <项目> 路线图
|
|
65
|
-
|
|
66
|
-
## Milestone 概览
|
|
67
|
-
|
|
68
|
-
| Milestone | 目标 | Phase 数 | 时长 |
|
|
69
|
-
|---|---|---|---|
|
|
70
|
-
|
|
71
|
-
## M1 — <名称>
|
|
72
|
-
<Milestone 目标>
|
|
73
|
-
|
|
74
|
-
### Phase 列表
|
|
75
|
-
|
|
76
|
-
| Phase | 目标 | 依赖 | 预估 Change 数 |
|
|
77
|
-
|---|---|---|---|
|
|
78
|
-
|
|
79
|
-
### ph.1 <名称>
|
|
80
|
-
<详细说明>
|
|
81
|
-
\`\`\`
|
|
82
|
-
|
|
83
|
-
## 产物
|
|
84
|
-
|
|
85
|
-
- \`specwf/ROADMAP.md\` — 完整的路线图文档
|
|
86
|
-
|
|
87
|
-
## 验证
|
|
88
|
-
|
|
89
|
-
- [ ] 所有 proposal.md 范围被覆盖
|
|
90
|
-
- [ ] Phase 之间的依赖不循环
|
|
91
|
-
- [ ] 每个 Phase 有可验证的成功标准
|
|
92
|
-
- [ ] 路线图长度合理(3-15 个 Phase 总)
|
|
93
|
-
|
|
94
|
-
## 常见陷阱
|
|
95
|
-
|
|
96
|
-
- 不要把 Phase 拆得太细 — 每个 phase 至少能产出可演示的成果
|
|
97
|
-
- 第一个 Phase 应该是最小可行路径,不是最复杂的
|
|
98
|
-
- 不要忽略集成和文档 phase
|
|
99
|
-
- Phase 的先后依赖不要过于乐观 — 列清楚前置条件
|
|
100
|
-
|
|
101
|
-
## 参考
|
|
102
|
-
|
|
103
|
-
- GSD Core 的 roadmap 方法
|
|
104
|
-
- 产品路线图最佳实践(outcome-focused)
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
# 交付工作流指引
|
|
2
|
-
|
|
3
|
-
## 概述
|
|
4
|
-
|
|
5
|
-
将完成的 phase(或其变更集)交付。Ship 分为两级:(1) Ship Phase — 创建 PR + 更新 STATE.md;(2) Ship Milestone — 创建 release tag + 更新 PROJECT.md 版本。
|
|
6
|
-
|
|
7
|
-
Ship Phase 在每个 phase 的 change 循环全部完成后触发。Ship Milestone 在 milestone 的所有 phase 完成后触发。
|
|
8
|
-
|
|
9
|
-
## 前置条件
|
|
10
|
-
|
|
11
|
-
- 当前 phase 内所有 change 的 verify 已通过(passed 状态)
|
|
12
|
-
- archive 已执行
|
|
13
|
-
|
|
14
|
-
## 执行步骤
|
|
15
|
-
|
|
16
|
-
### 1. 检查交付就绪
|
|
17
|
-
|
|
18
|
-
- [ ] 所有 change 的 VERIFICATION.md 状态为 passed
|
|
19
|
-
- [ ] 所有 change 已 archive(delta-specs 已合并、代码认知已提取)
|
|
20
|
-
- [ ] 没有未合并的 delta-spec 冲突
|
|
21
|
-
- [ ] 测试通过、构建通过
|
|
22
|
-
|
|
23
|
-
### 2. Ship Phase
|
|
24
|
-
|
|
25
|
-
**创建 PR**:
|
|
26
|
-
\`\`\`
|
|
27
|
-
git checkout -b ship/ph-<phase-name>
|
|
28
|
-
git merge --squash <phase-branch>(或逐个 cherry-pick change)
|
|
29
|
-
git commit -m "feat(<phase>): <phase 标题>"
|
|
30
|
-
git push origin ship/ph-<phase-name>
|
|
31
|
-
\`\`\`
|
|
32
|
-
|
|
33
|
-
创建 PR:
|
|
34
|
-
- 标题:\`feat(<phase>): <标题>\`
|
|
35
|
-
- 正文包含:
|
|
36
|
-
- 本 phase 的 scope 概述
|
|
37
|
-
- 包含的 change 列表
|
|
38
|
-
- 变更统计(文件数、行数)
|
|
39
|
-
- 测试覆盖状态
|
|
40
|
-
- CHECKLIST(所有 change 已 verify passed、已 archive)
|
|
41
|
-
|
|
42
|
-
PR 通过后合并到主分支。
|
|
43
|
-
|
|
44
|
-
**更新 STATE.md**:
|
|
45
|
-
\`\`\`markdown
|
|
46
|
-
# 状态
|
|
47
|
-
|
|
48
|
-
## Phase: <name>
|
|
49
|
-
- 状态: ✅ shipped
|
|
50
|
-
- PR: #<PR 号>
|
|
51
|
-
- Ship 日期: <date>
|
|
52
|
-
\`\`\`
|
|
53
|
-
|
|
54
|
-
### 3. Ship Milestone(可选,仅在 milestone 全部完成时)
|
|
55
|
-
|
|
56
|
-
当 milestone 的最后 phase ship 后:
|
|
57
|
-
|
|
58
|
-
\`\`\`
|
|
59
|
-
git tag v<major>.<minor>.<patch>
|
|
60
|
-
git push origin v<major>.<minor>.<patch>
|
|
61
|
-
\`\`\`
|
|
62
|
-
|
|
63
|
-
更新 PROJECT.md(或 README.md)的版本号和 changelog。
|
|
64
|
-
|
|
65
|
-
### 4. 通知
|
|
66
|
-
|
|
67
|
-
(可选)在项目日志或 release notes 中记录交付内容。
|
|
68
|
-
|
|
69
|
-
## 产物
|
|
70
|
-
|
|
71
|
-
- GitHub PR(ship phase)
|
|
72
|
-
- \`specwf/STATE.md\`(更新,标记 phase 为 shipped)
|
|
73
|
-
- (milestone)git tag + release notes
|
|
74
|
-
|
|
75
|
-
## 验证
|
|
76
|
-
|
|
77
|
-
- [ ] PR 已创建且包含完整信息
|
|
78
|
-
- [ ] STATE.md 已更新
|
|
79
|
-
- [ ] CI 通过
|
|
80
|
-
- [ ] (milestone)tag 已创建和推送
|
|
81
|
-
- [ ] 主分支代码与 PR 一致
|
|
82
|
-
|
|
83
|
-
## 常见陷阱
|
|
84
|
-
|
|
85
|
-
- 不要跳过 PR 直接合并到主分支 — PR 是审计轨迹的一部分
|
|
86
|
-
- squash merge 要注意 squash 后的 message 包含所有 change 信息
|
|
87
|
-
- 如果发现 CI 失败,不要强行合并 — 修复后重试
|
|
88
|
-
- STATE.md 更新使用 \`shipped\` 枚举值,不是自由文本
|
|
89
|
-
- Milestone ship 前确认所有 phase 都已 shipped
|
|
90
|
-
|
|
91
|
-
## 参考
|
|
92
|
-
|
|
93
|
-
- Conventional Commits 规范(feat 类型)
|
|
94
|
-
- GSD Core 的 ship 流程
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
# Change 拆分工作流指引
|
|
2
|
-
|
|
3
|
-
## 概述
|
|
4
|
-
|
|
5
|
-
将 Phase 的工作拆分为多个可并行(或有序)执行的 Change。每个 Change 是独立可验证的工作单元,有明确的输入输出和被测试场景覆盖。
|
|
6
|
-
|
|
7
|
-
拆分产出依赖图,支持三种并行策略:串行、依赖图并行、流水线并行。
|
|
8
|
-
|
|
9
|
-
## 前置条件
|
|
10
|
-
|
|
11
|
-
- context.md 已完成
|
|
12
|
-
- phase 的 scope 和接口边界明确
|
|
13
|
-
|
|
14
|
-
## 执行步骤
|
|
15
|
-
|
|
16
|
-
### 1. 识别独立工作单元
|
|
17
|
-
|
|
18
|
-
从 phase 的 scope 中识别可独立实现和验证的功能单位:
|
|
19
|
-
- 每个 change 对应一个完整的功能切面
|
|
20
|
-
- 不跨 change 共享未完成的代码(除非依赖图明确)
|
|
21
|
-
- 每个 change 有明确的可验证结果
|
|
22
|
-
|
|
23
|
-
### 2. 建立依赖关系
|
|
24
|
-
|
|
25
|
-
绘制 change 之间的依赖图:
|
|
26
|
-
\`\`\`
|
|
27
|
-
Change A ──→ Change B ──→ Change C
|
|
28
|
-
↓
|
|
29
|
-
Change D ──→ Change E
|
|
30
|
-
\`\`\`
|
|
31
|
-
|
|
32
|
-
依赖类型:
|
|
33
|
-
- **数据依赖**:B 依赖 A 的数据结构
|
|
34
|
-
- **接口依赖**:D 依赖 B 的接口
|
|
35
|
-
- **顺序依赖**:C 必须在 B 之后(但不需要 B 的产出物)
|
|
36
|
-
|
|
37
|
-
### 3. 为每个 Change 准备 skeleton
|
|
38
|
-
|
|
39
|
-
每个 change 的目录:
|
|
40
|
-
\`\`\`
|
|
41
|
-
changes/<change-name>/
|
|
42
|
-
├── proposal.md # 当前 change 的需求范围
|
|
43
|
-
├── specs/
|
|
44
|
-
│ └── <domain>/
|
|
45
|
-
│ └── spec.md # delta-specs(初始空,plan 阶段写)
|
|
46
|
-
├── design.md # (plan 阶段产出)
|
|
47
|
-
├── tasks.md # (plan 阶段产出)
|
|
48
|
-
├── reviews/ # (review 阶段产出)
|
|
49
|
-
└── VERIFICATION.md # (verify 阶段产出)
|
|
50
|
-
\`\`\`
|
|
51
|
-
|
|
52
|
-
proposal.md 内容:
|
|
53
|
-
\`\`\`markdown
|
|
54
|
-
# Change: <名称>
|
|
55
|
-
|
|
56
|
-
## 目标
|
|
57
|
-
## 范围
|
|
58
|
-
## 依赖(前置 change 列表)
|
|
59
|
-
## 关键接口(输入/输出/副作用)
|
|
60
|
-
## 测试场景清单
|
|
61
|
-
\`\`\`
|
|
62
|
-
|
|
63
|
-
### 4. 确认并行策略
|
|
64
|
-
|
|
65
|
-
根据 change 依赖图配置并行策略:
|
|
66
|
-
|
|
67
|
-
- **serial**: 所有 change 串行(依赖图全序)
|
|
68
|
-
- **dependency-graph**: 无依赖的 change 并行,有依赖的串行(默认推荐)
|
|
69
|
-
- **pipeline**: 按依赖深度分层,同层并行、异层流水线
|
|
70
|
-
|
|
71
|
-
## 产物
|
|
72
|
-
|
|
73
|
-
- \`changes/<change-name>/proposal.md\` — 每个 change 的定义
|
|
74
|
-
- \`changes/<change-name>/specs/\` — 每个 change 的 delta-specs 目录(初始空)
|
|
75
|
-
- 依赖图(在 conversation 中记录,不生成独立文件)
|
|
76
|
-
|
|
77
|
-
## 验证
|
|
78
|
-
|
|
79
|
-
- [ ] 每个 change 有明确的可验证结果
|
|
80
|
-
- [ ] 依赖图无循环
|
|
81
|
-
- [ ] 变更范围不重叠
|
|
82
|
-
- [ ] 所有 phase scope 被覆盖
|
|
83
|
-
- [ ] 依赖关系合理(无缺少的依赖)
|
|
84
|
-
|
|
85
|
-
## 常见陷阱
|
|
86
|
-
|
|
87
|
-
- change 太大 → 超出 review 合理范围(建议单个 change ≤ 400 行 diff)
|
|
88
|
-
- change 太小 → 上下文切换成本高于并行收益
|
|
89
|
-
- 不要「偷渡」未计划的改动到一个 change 中
|
|
90
|
-
- 依赖图不要太深(3 层以上意味着拆分粒度需要调整)
|
|
91
|
-
- 如果不确定独立程度,宁拆大不拆小
|
|
92
|
-
|
|
93
|
-
## 参考
|
|
94
|
-
|
|
95
|
-
- OpenSpec 的 change 结构设计
|
|
96
|
-
- GSD Core 的 dependency-graph 并行策略
|
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
# 测试验证工作流指引
|
|
2
|
-
|
|
3
|
-
## 概述
|
|
4
|
-
|
|
5
|
-
在 Review 通过后,对实现进行完整的测试验证。Verify 负责确保代码正确运行、所有场景覆盖,并处理回环路由 —— 根据缺陷类型路由到不同的修复阶段。
|
|
6
|
-
|
|
7
|
-
## 前置条件
|
|
8
|
-
|
|
9
|
-
- review 阶段已通过(三重审查全部 PASS 或 gate 条件满足)
|
|
10
|
-
- 测试套件完整(包括 RED 阶段写的测试)
|
|
11
|
-
|
|
12
|
-
## 执行步骤
|
|
13
|
-
|
|
14
|
-
### 1. 运行完整测试套件
|
|
15
|
-
|
|
16
|
-
\`\`\`
|
|
17
|
-
# 运行所有测试
|
|
18
|
-
bun run test
|
|
19
|
-
|
|
20
|
-
# 运行类型检查
|
|
21
|
-
bun run typecheck
|
|
22
|
-
|
|
23
|
-
#(可选)运行集成测试
|
|
24
|
-
bun run test:integration
|
|
25
|
-
\`\`\`
|
|
26
|
-
|
|
27
|
-
### 2. 测试覆盖率分析
|
|
28
|
-
|
|
29
|
-
分析测试覆盖缺口:
|
|
30
|
-
- delta-specs 中每个 SHALL/MUST 是否有测试
|
|
31
|
-
- 正常路径覆盖
|
|
32
|
-
- 边界路径覆盖
|
|
33
|
-
- 异常路径覆盖
|
|
34
|
-
|
|
35
|
-
### 3. 人工检查点验证
|
|
36
|
-
|
|
37
|
-
逐项检查 tasks.md 中每个任务的完成标准:
|
|
38
|
-
\`\`\`
|
|
39
|
-
- [ ] 所有 type:behavior 验证通过
|
|
40
|
-
- [ ] 所有非 TDD 任务验证通过
|
|
41
|
-
- [ ] 无回归(已有测试通过)
|
|
42
|
-
- [ ] 代码未破坏依赖项
|
|
43
|
-
\`\`\`
|
|
44
|
-
|
|
45
|
-
### 4. 诊断失败(如有)
|
|
46
|
-
|
|
47
|
-
如果任何测试失败或验证不通过:
|
|
48
|
-
|
|
49
|
-
**根因诊断**:
|
|
50
|
-
1. 确定失败是测试问题还是实现问题
|
|
51
|
-
2. 明确缺陷的类型(见下方路由规则)
|
|
52
|
-
3. 在 VERIFICATION.md 中记录根因
|
|
53
|
-
|
|
54
|
-
### 5. 回环路由
|
|
55
|
-
|
|
56
|
-
根据缺陷类型路由到不同阶段:
|
|
57
|
-
|
|
58
|
-
\`\`\`
|
|
59
|
-
# 路由规则
|
|
60
|
-
|
|
61
|
-
## 计划缺陷 → 回 plan 重设计
|
|
62
|
-
触发条件:
|
|
63
|
-
- delta-specs 中的场景在代码中无法实现(设计不合理)
|
|
64
|
-
- design.md 的方案有架构缺陷
|
|
65
|
-
- 依赖关系在 split 时未正确识别
|
|
66
|
-
- 拆分的 tasks 粒度不合理
|
|
67
|
-
|
|
68
|
-
行为:
|
|
69
|
-
1. 标记缺陷类型为 PLAN
|
|
70
|
-
2. 记录问题和修改建议
|
|
71
|
-
3. 输出 \`路由目标: plan\`
|
|
72
|
-
4. 不修代码,回 plan 更新 design.md / tasks.md / delta-specs
|
|
73
|
-
|
|
74
|
-
## 实现缺陷 → 回 apply 重实现
|
|
75
|
-
触发条件:
|
|
76
|
-
- 测试失败(实现未满足 delta-spec)
|
|
77
|
-
- 代码逻辑错误
|
|
78
|
-
- 类型错误
|
|
79
|
-
- 性能不达标
|
|
80
|
-
- 缺少边界处理
|
|
81
|
-
|
|
82
|
-
行为:
|
|
83
|
-
1. 标记缺陷类型为 IMPLEMENTATION
|
|
84
|
-
2. 记录根因和具体位置(文件+行号)
|
|
85
|
-
3. 输出 \`路由目标: apply\`
|
|
86
|
-
4. 回 apply 修复实现
|
|
87
|
-
|
|
88
|
-
## 规格缺陷 → 标记 spec 待修(回 plan)
|
|
89
|
-
触发条件:
|
|
90
|
-
- delta-specs 本身不合理或矛盾
|
|
91
|
-
- 现有 specs/ 被违反但 delta-specs 未覆盖
|
|
92
|
-
- 场景遗漏(关键路径缺少 spec 定义)
|
|
93
|
-
- spec 与需求矛盾
|
|
94
|
-
|
|
95
|
-
行为:
|
|
96
|
-
1. 标记缺陷类型为 SPEC
|
|
97
|
-
2. 记录问题描述和修复建议
|
|
98
|
-
3. 输出 \`路由目标: plan(spec 待修)\`
|
|
99
|
-
4. 在 specs/ 中标记 \`[TODO: FIX SPEC]\`
|
|
100
|
-
5. 回 plan 修正规格
|
|
101
|
-
\`\`\`
|
|
102
|
-
|
|
103
|
-
### 6. 产出 VERIFICATION.md
|
|
104
|
-
|
|
105
|
-
\`\`\`markdown
|
|
106
|
-
# Change: <名称> — 验证报告
|
|
107
|
-
|
|
108
|
-
## 测试结果
|
|
109
|
-
- 单元测试: 通过 / 失败(N/N)
|
|
110
|
-
- 类型检查: 通过 / 失败
|
|
111
|
-
- 集成测试: 通过 / 失败(可选)
|
|
112
|
-
|
|
113
|
-
## 覆盖率
|
|
114
|
-
- 正常路径: N/N
|
|
115
|
-
- 边界路径: N/N
|
|
116
|
-
- 异常路径: N/N
|
|
117
|
-
|
|
118
|
-
## 路由决策
|
|
119
|
-
- 状态: passed | replan | reapply
|
|
120
|
-
- 路由目标: (通过时不填)
|
|
121
|
-
- 缺陷类型: PLAN | IMPLEMENTATION | SPEC
|
|
122
|
-
- 根因: ...
|
|
123
|
-
\`\`\`
|
|
124
|
-
|
|
125
|
-
## 产物
|
|
126
|
-
|
|
127
|
-
- \`changes/<change-name>/VERIFICATION.md\` — 验证报告
|
|
128
|
-
|
|
129
|
-
## 验证
|
|
130
|
-
|
|
131
|
-
- [ ] 测试套件全部通过(passed 时)
|
|
132
|
-
- [ ] delta-specs SHALL/MUST 全覆盖
|
|
133
|
-
- [ ] tasks.md 完成标准全通过
|
|
134
|
-
- [ ] VERIFICATION.md 路由决策清晰
|
|
135
|
-
|
|
136
|
-
## 常见陷阱
|
|
137
|
-
|
|
138
|
-
- 不要自己修发现的问题 — 路由是给主流程的信号,不是直接在 verify 中修改代码
|
|
139
|
-
- 不要混淆缺陷类型 —「这代码写错了」是 IMPLEMENTATION,「这规格就不对」是 SPEC
|
|
140
|
-
- 如果多个缺陷属于不同类型,按优先级最高的路由
|
|
141
|
-
- 不要只跑单元测试 — 集成测试才能暴露接口交互问题
|
|
142
|
-
- 路由前确认缺陷确实可重现,不是测试环境配置问题
|
|
143
|
-
|
|
144
|
-
## 参考
|
|
145
|
-
|
|
146
|
-
- GSD Core 的 verify phase 回环机制
|
|
147
|
-
- OpenSpec 的 verification 模板
|