dev-playbooks-cn 1.2.4 → 1.2.6
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/package.json +1 -1
- package/skills/devbooks-code-review/SKILL.md +37 -0
- package/skills/devbooks-coder/SKILL.md +38 -2
- package/skills/devbooks-delivery-workflow/scripts/change-check.sh +19 -0
- package/skills/devbooks-delivery-workflow/scripts/change-scaffold.sh +7 -1
- package/skills/devbooks-design-backport/SKILL.md +34 -0
- package/skills/devbooks-design-doc/SKILL.md +22 -0
- package/skills/devbooks-implementation-plan/SKILL.md +36 -0
- package/skills/devbooks-spec-gardener/SKILL.md +100 -1
- package/skills/devbooks-test-owner/SKILL.md +104 -18
package/package.json
CHANGED
|
@@ -10,6 +10,34 @@ allowed-tools:
|
|
|
10
10
|
|
|
11
11
|
# DevBooks:代码评审(Reviewer)
|
|
12
12
|
|
|
13
|
+
## 工作流位置感知(Workflow Position Awareness)
|
|
14
|
+
|
|
15
|
+
> **核心原则**:Code Review 在 Test Owner 阶段 2 验证之后执行,是归档前的最后一个评审步骤。
|
|
16
|
+
|
|
17
|
+
### 我在整体工作流中的位置
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
proposal → design → test-owner(阶段1) → coder → test-owner(阶段2) → [Code Review] → archive
|
|
21
|
+
↓
|
|
22
|
+
可读性/一致性/依赖审查
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Code Review 的职责边界
|
|
26
|
+
|
|
27
|
+
| 允许 | 禁止 |
|
|
28
|
+
|------|------|
|
|
29
|
+
| 审查代码可读性/一致性 | ❌ 修改代码文件 |
|
|
30
|
+
| 设置 verification.md Status = Done | ❌ 讨论业务正确性(那是 Test Owner 的事) |
|
|
31
|
+
| 提出改进建议 | ❌ 勾选 AC 覆盖矩阵(那是 Test Owner 的事) |
|
|
32
|
+
|
|
33
|
+
### 前置条件
|
|
34
|
+
|
|
35
|
+
- [ ] Test Owner 阶段 2 已完成(AC 矩阵已打勾)
|
|
36
|
+
- [ ] 测试全绿
|
|
37
|
+
- [ ] evidence/green-final/ 存在
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
13
41
|
## 前置:配置发现(协议无关)
|
|
14
42
|
|
|
15
43
|
- `<truth-root>`:当前真理目录根
|
|
@@ -148,6 +176,15 @@ override dispose() {
|
|
|
148
176
|
| 无 spec deltas | 归档完成 | 无需其他 skill |
|
|
149
177
|
| 发现重大问题 | 交回 `devbooks-coder` | 归档前修复问题 |
|
|
150
178
|
|
|
179
|
+
### Reviewer 专属权限:设置 verification.md Status
|
|
180
|
+
|
|
181
|
+
**只有 Reviewer 可以将 `verification.md` 的 Status 设为 `Done`**。
|
|
182
|
+
|
|
183
|
+
Review 通过后,Reviewer 必须执行:
|
|
184
|
+
1. 打开 `<change-root>/<change-id>/verification.md`
|
|
185
|
+
2. 将 `- Status: Ready` 改为 `- Status: Done`
|
|
186
|
+
3. 这是归档的前置条件(`change-check.sh --mode archive` 会检查)
|
|
187
|
+
|
|
151
188
|
### 输出模板
|
|
152
189
|
|
|
153
190
|
完成 code-review 后,输出:
|
|
@@ -12,6 +12,40 @@ allowed-tools:
|
|
|
12
12
|
|
|
13
13
|
# DevBooks:实现负责人(Coder)
|
|
14
14
|
|
|
15
|
+
## 工作流位置感知(Workflow Position Awareness)
|
|
16
|
+
|
|
17
|
+
> **核心原则**:Coder 在 Test Owner 阶段 1 之后执行,完成后交给 Test Owner 阶段 2 验证。
|
|
18
|
+
|
|
19
|
+
### 我在整体工作流中的位置
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
proposal → design → test-owner(阶段1) → [Coder] → test-owner(阶段2) → code-review → archive
|
|
23
|
+
↓
|
|
24
|
+
实现代码、让测试变绿
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Coder 的职责边界
|
|
28
|
+
|
|
29
|
+
| 允许 | 禁止 |
|
|
30
|
+
|------|------|
|
|
31
|
+
| 修改 `src/**` 代码 | ❌ 修改 `tests/**` |
|
|
32
|
+
| 勾选 `tasks.md` 任务项 | ❌ 修改 `verification.md` |
|
|
33
|
+
| 记录偏离到 `deviation-log.md` | ❌ 勾选 AC 覆盖矩阵 |
|
|
34
|
+
| 运行测试验证 | ❌ 设置 verification.md Status |
|
|
35
|
+
|
|
36
|
+
### Coder 完成后的流程
|
|
37
|
+
|
|
38
|
+
1. **任务完成**:tasks.md 全部 `[x]`
|
|
39
|
+
2. **测试全绿**:运行 `npm test` 确认通过
|
|
40
|
+
3. **交付 Test Owner**:通知 Test Owner 进入阶段 2 验证
|
|
41
|
+
4. **等待验证结果**:
|
|
42
|
+
- Test Owner 确认全绿 → 进入 Code Review
|
|
43
|
+
- Test Owner 发现问题 → Coder 修复
|
|
44
|
+
|
|
45
|
+
**关键提醒**:Coder 完成后,**不是直接进入 Code Review**,而是先让 Test Owner 验证并打勾。
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
15
49
|
## 前置:配置发现(协议无关)
|
|
16
50
|
|
|
17
51
|
- `<truth-root>`:当前真理目录根
|
|
@@ -141,6 +175,7 @@ devbooks change-evidence <change-id> --label green-final -- npm test
|
|
|
141
175
|
### 角色边界约束
|
|
142
176
|
- **禁止修改 `tests/**`**(需要改测试必须交还 Test Owner)
|
|
143
177
|
- **禁止修改 `verification.md`**(由 Test Owner 维护)
|
|
178
|
+
- **禁止修改 `verification.md` 的 Status 字段**(只有 Reviewer 可以设为 Done)
|
|
144
179
|
- **禁止修改 `.devbooks/`、`build/`、工程配置文件**(除非 proposal.md 明确声明)
|
|
145
180
|
|
|
146
181
|
### 代码质量约束
|
|
@@ -333,8 +368,8 @@ fi
|
|
|
333
368
|
|
|
334
369
|
| 我的状态 | 下一步 | 原因 |
|
|
335
370
|
|----------|--------|------|
|
|
336
|
-
| COMPLETED | `devbooks-
|
|
337
|
-
| COMPLETED_WITH_DEVIATION | `devbooks-design-backport` |
|
|
371
|
+
| COMPLETED | `devbooks-test-owner`(阶段 2 验证) | 任务完成,需要 Test Owner 验证并打勾 |
|
|
372
|
+
| COMPLETED_WITH_DEVIATION | `devbooks-design-backport` | 先回写设计,再让 Test Owner 验证 |
|
|
338
373
|
| HANDOFF (测试问题) | `devbooks-test-owner` | Coder 不能修改测试 |
|
|
339
374
|
| BLOCKED | 等待用户 | 记录断点区 |
|
|
340
375
|
| FAILED | 修复后重试 | 分析失败原因 |
|
|
@@ -343,6 +378,7 @@ fi
|
|
|
343
378
|
- Coder **永远不能修改** `tests/**`
|
|
344
379
|
- 如发现测试问题,必须 HANDOFF 给 Test Owner(单独会话)
|
|
345
380
|
- 如有偏离,必须先 design-backport 再继续
|
|
381
|
+
- **Coder 完成后必须先经过 Test Owner 阶段 2 验证,再进入 Code Review**
|
|
346
382
|
|
|
347
383
|
---
|
|
348
384
|
|
|
@@ -410,6 +410,25 @@ check_verification() {
|
|
|
410
410
|
return 0
|
|
411
411
|
fi
|
|
412
412
|
|
|
413
|
+
# ==========================================================================
|
|
414
|
+
# AC-010: Verification Status Check
|
|
415
|
+
# Status field controls change package lifecycle: Draft → Ready → Done → Archived
|
|
416
|
+
# Only Reviewer can set Status to "Done" (Coder/Test Owner prohibited)
|
|
417
|
+
# ==========================================================================
|
|
418
|
+
if [[ "$mode" == "archive" || "$mode" == "strict" ]]; then
|
|
419
|
+
local status_line
|
|
420
|
+
status_line=$(rg -n "^- Status[::] *(Draft|Ready|Done|Archived)\b" "$verification_file" -m 1 || true)
|
|
421
|
+
if [[ -z "$status_line" ]]; then
|
|
422
|
+
err "verification missing Status line (e.g., '- Status: Done'): ${verification_file}"
|
|
423
|
+
else
|
|
424
|
+
local status_value
|
|
425
|
+
status_value="$(echo "$status_line" | sed -E 's/^[0-9]+:- Status[::] *//')"
|
|
426
|
+
if [[ "$status_value" != "Done" && "$status_value" != "Archived" ]]; then
|
|
427
|
+
err "verification Status must be 'Done' or 'Archived' for ${mode} (current: '${status_value}'). Only Reviewer can set Status to Done: ${verification_file}"
|
|
428
|
+
fi
|
|
429
|
+
fi
|
|
430
|
+
fi
|
|
431
|
+
|
|
413
432
|
for h in "A\) (Test Plan Directive Table|测试计划指令表)" "B\) (Traceability Matrix|追溯矩阵)" "C\) (Execution Anchors|执行锚点)" "D\) (MANUAL-\* Checklist|MANUAL-\* 清单)"; do
|
|
414
433
|
if ! rg -n "${h}" "$verification_file" >/dev/null; then
|
|
415
434
|
err "verification missing section '${h}': ${verification_file}"
|
|
@@ -263,7 +263,13 @@ cat <<'EOF' | render_template | write_file "${change_dir}/verification.md"
|
|
|
263
263
|
## Metadata
|
|
264
264
|
|
|
265
265
|
- Change ID: `__CHANGE_ID__`
|
|
266
|
-
- Status: Draft
|
|
266
|
+
- Status: Draft
|
|
267
|
+
> Status lifecycle: Draft → Ready → Done → Archived
|
|
268
|
+
> - Draft: Initial state
|
|
269
|
+
> - Ready: Test plan ready (set by Test Owner)
|
|
270
|
+
> - Done: All tests passed + Review approved (set by **Reviewer only**)
|
|
271
|
+
> - Archived: Archived (set by Spec Gardener)
|
|
272
|
+
> **Constraint: Coder is prohibited from modifying Status field**
|
|
267
273
|
- References:
|
|
268
274
|
- Proposal: `__CHANGE_ROOT__/__CHANGE_ID__/proposal.md`
|
|
269
275
|
- Design: `__CHANGE_ROOT__/__CHANGE_ID__/design.md`
|
|
@@ -11,6 +11,40 @@ allowed-tools:
|
|
|
11
11
|
|
|
12
12
|
# DevBooks:回写设计文档(Design Backport)
|
|
13
13
|
|
|
14
|
+
## 工作流位置感知(Workflow Position Awareness)
|
|
15
|
+
|
|
16
|
+
> **核心原则**:Design Backport 现在**主要由 Spec Gardener 在归档阶段自动调用**,用户通常不需要手动调用。
|
|
17
|
+
|
|
18
|
+
### 我在整体工作流中的位置
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
proposal → design → test-owner → coder → test-owner(验证) → code-review → [Archive/Spec Gardener]
|
|
22
|
+
↓ ↓
|
|
23
|
+
记录偏离到 deviation-log.md 自动调用 design-backport
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### 设计决策:自动回写
|
|
27
|
+
|
|
28
|
+
**旧流程**(需手动判断):
|
|
29
|
+
```
|
|
30
|
+
coder 有偏离 → 用户手动调用 design-backport → 再归档
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**新流程**(自动处理):
|
|
34
|
+
```
|
|
35
|
+
coder 有偏离 → 归档时 spec-gardener 自动检测并回写 → 归档
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### 何时仍需手动调用
|
|
39
|
+
|
|
40
|
+
| 场景 | 是否需要手动调用 |
|
|
41
|
+
|------|------------------|
|
|
42
|
+
| 正常流程(偏离记录在 deviation-log.md) | ❌ 归档时自动处理 |
|
|
43
|
+
| 需要立即回写(不等归档) | ✅ 手动调用 |
|
|
44
|
+
| 设计与实现严重冲突需要决策 | ✅ 手动调用并讨论 |
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
14
48
|
## 前置:配置发现(协议无关)
|
|
15
49
|
|
|
16
50
|
- `<truth-root>`:当前真理目录根
|
|
@@ -11,6 +11,28 @@ allowed-tools:
|
|
|
11
11
|
|
|
12
12
|
# DevBooks:设计文档(Design Doc)
|
|
13
13
|
|
|
14
|
+
## 工作流位置感知(Workflow Position Awareness)
|
|
15
|
+
|
|
16
|
+
> **核心原则**:Design Doc 在 Proposal 批准后执行,是实现阶段的起点。
|
|
17
|
+
|
|
18
|
+
### 我在整体工作流中的位置
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
proposal → [Design Doc] → spec-contract → implementation-plan → test-owner → coder → ...
|
|
22
|
+
↓
|
|
23
|
+
定义 What/Constraints/AC
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Design Doc 的产出
|
|
27
|
+
|
|
28
|
+
- **What**:做什么(不是怎么做)
|
|
29
|
+
- **Constraints**:约束条件
|
|
30
|
+
- **AC-xxx**:验收标准(可测试的)
|
|
31
|
+
|
|
32
|
+
**关键**:Design Doc 不写实现步骤,那是 implementation-plan 的职责。
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
14
36
|
## 前置:配置发现(协议无关)
|
|
15
37
|
|
|
16
38
|
- `<truth-root>`:当前真理目录根
|
|
@@ -11,6 +11,42 @@ allowed-tools:
|
|
|
11
11
|
|
|
12
12
|
# DevBooks:编码计划(Implementation Plan)
|
|
13
13
|
|
|
14
|
+
## 工作流位置感知(Workflow Position Awareness)
|
|
15
|
+
|
|
16
|
+
> **核心原则**:Implementation Plan 在 Design Doc 之后执行,为 Test Owner 和 Coder 提供任务清单。
|
|
17
|
+
|
|
18
|
+
### 我在整体工作流中的位置
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
proposal → design → [Implementation Plan] → test-owner(阶段1) → coder → ...
|
|
22
|
+
↓
|
|
23
|
+
tasks.md(任务清单)
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Implementation Plan 的职责
|
|
27
|
+
|
|
28
|
+
| 允许 | 禁止 |
|
|
29
|
+
|------|------|
|
|
30
|
+
| 从 design.md 推导任务 | ❌ 参考 tests/(避免实现偏见) |
|
|
31
|
+
| 绑定验收锚点 (AC-xxx) | ❌ 写实现代码 |
|
|
32
|
+
| 拆分并行任务 | ❌ 执行任务 |
|
|
33
|
+
|
|
34
|
+
### 产出:tasks.md 结构
|
|
35
|
+
|
|
36
|
+
```markdown
|
|
37
|
+
## 主线计划区
|
|
38
|
+
- [ ] MP1.1 任务描述 (AC-001)
|
|
39
|
+
- [ ] MP1.2 任务描述 (AC-002)
|
|
40
|
+
|
|
41
|
+
## 临时计划区
|
|
42
|
+
(紧急任务)
|
|
43
|
+
|
|
44
|
+
## 断点区
|
|
45
|
+
(中断续做信息)
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
14
50
|
## 前置:配置发现(协议无关)
|
|
15
51
|
|
|
16
52
|
- `<truth-root>`:当前真理目录根
|
|
@@ -11,6 +11,36 @@ allowed-tools:
|
|
|
11
11
|
|
|
12
12
|
# DevBooks:规格园丁(Spec Gardener)
|
|
13
13
|
|
|
14
|
+
## 工作流位置感知(Workflow Position Awareness)
|
|
15
|
+
|
|
16
|
+
> **核心原则**:Spec Gardener 是归档阶段的终点,负责将变更包产物合并到真理,**并自动处理任何未完成的回写**。
|
|
17
|
+
|
|
18
|
+
### 我在整体工作流中的位置
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
proposal → design → test-owner → coder → test-owner(验证) → code-review → [Spec Gardener/Archive]
|
|
22
|
+
↓
|
|
23
|
+
自动回写 + 合并到真理 + 归档
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Spec Gardener 的职责
|
|
27
|
+
|
|
28
|
+
1. **自动回写检测**:检查 deviation-log.md 是否有未回写记录
|
|
29
|
+
2. **自动执行回写**:如有未回写记录,自动执行设计回写
|
|
30
|
+
3. **合并到真理**:将 specs/contracts/architecture 合并到 truth-root
|
|
31
|
+
4. **归档变更包**:设置 verification.md Status = Archived
|
|
32
|
+
|
|
33
|
+
### 为什么在归档阶段自动回写?
|
|
34
|
+
|
|
35
|
+
**设计决策**:用户只需线性调用 skills,不需要判断是否需要回写。
|
|
36
|
+
|
|
37
|
+
| 场景 | 旧设计(需手动判断) | 新设计(自动处理) |
|
|
38
|
+
|------|---------------------|-------------------|
|
|
39
|
+
| Coder 有偏离 | 用户需调用 design-backport → 再归档 | Spec Gardener 自动检测并回写 |
|
|
40
|
+
| Coder 无偏离 | 直接归档 | 直接归档 |
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
14
44
|
## 前置:配置发现(协议无关)
|
|
15
45
|
|
|
16
46
|
- `<truth-root>`:当前真理目录根
|
|
@@ -31,6 +61,51 @@ allowed-tools:
|
|
|
31
61
|
|
|
32
62
|
## 核心职责
|
|
33
63
|
|
|
64
|
+
### 0. 自动回写检测与处理(归档前必做)
|
|
65
|
+
|
|
66
|
+
> **设计决策**:归档阶段自动处理所有未回写的偏离,用户无需手动调用 design-backport。
|
|
67
|
+
|
|
68
|
+
**检测流程**:
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
1. 读取 <change-root>/<change-id>/deviation-log.md
|
|
72
|
+
2. 检查是否有 "| ❌" 未回写记录
|
|
73
|
+
→ 有:执行自动回写(步骤 3-5)
|
|
74
|
+
→ 无:跳过,直接进入合并阶段
|
|
75
|
+
|
|
76
|
+
3. 对每条未回写记录,判断是否为 Design-level 内容:
|
|
77
|
+
- DESIGN_GAP, CONSTRAINT_CHANGE, API_CHANGE → 需要回写
|
|
78
|
+
- 纯实现细节(文件名/类名/临时步骤) → 不回写,标记为 IMPL_ONLY
|
|
79
|
+
|
|
80
|
+
4. 执行设计回写:
|
|
81
|
+
- 读取 design.md
|
|
82
|
+
- 按 design-backport 协议的"可回写内容范围"更新
|
|
83
|
+
- 在 design.md 末尾添加变更记录
|
|
84
|
+
|
|
85
|
+
5. 更新 deviation-log.md:
|
|
86
|
+
- 将已回写的记录标记为 ✅
|
|
87
|
+
- 记录回写时间和归档批次
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**自动回写的内容范围**(继承自 design-backport):
|
|
91
|
+
|
|
92
|
+
| 可回写 | 不可回写 |
|
|
93
|
+
|--------|----------|
|
|
94
|
+
| 对外语义/用户可感知行为 | 具体文件路径、类名/函数名 |
|
|
95
|
+
| 系统级不可变约束(Invariants) | PR 切分、任务执行顺序 |
|
|
96
|
+
| 核心数据契约与演进策略 | 过细的算法伪代码 |
|
|
97
|
+
| 跨阶段治理策略 | 脚本命令 |
|
|
98
|
+
| 关键取舍与决策 | 表名/字段名 |
|
|
99
|
+
|
|
100
|
+
**deviation-log.md 更新格式**:
|
|
101
|
+
|
|
102
|
+
```markdown
|
|
103
|
+
| 时间 | 类型 | 描述 | 涉及文件 | 已回写 | 回写批次 |
|
|
104
|
+
|------|------|------|----------|:------:|----------|
|
|
105
|
+
| 2024-01-15 10:30 | DESIGN_GAP | 并发场景 | tests/... | ✅ | archive-2024-01-16 |
|
|
106
|
+
| 2024-01-15 11:00 | IMPL_ONLY | 重命名变量 | src/... | ⏭️ | (跳过) |
|
|
107
|
+
```
|
|
108
|
+
|
|
34
109
|
### 1. 规格合并与维护
|
|
35
110
|
|
|
36
111
|
在归档阶段,将变更包中的规格产物合并到 `<truth-root>`:
|
|
@@ -106,10 +181,34 @@ allowed-tools:
|
|
|
106
181
|
|
|
107
182
|
| 模式 | 触发条件 | 行为 |
|
|
108
183
|
|------|----------|------|
|
|
109
|
-
| **归档模式** | 提供 change-id 且闸门通过 |
|
|
184
|
+
| **归档模式** | 提供 change-id 且闸门通过 | **自动回写** → 合并到 truth-root → 设置 Status=Archived |
|
|
110
185
|
| **维护模式** | 无 change-id | 执行去重、清理、整理操作 |
|
|
111
186
|
| **检查模式** | 带 --dry-run 参数 | 只输出建议,不实际修改 |
|
|
112
187
|
|
|
188
|
+
### 归档模式完整流程
|
|
189
|
+
|
|
190
|
+
```
|
|
191
|
+
1. 前置检查:
|
|
192
|
+
- [ ] 变更包存在
|
|
193
|
+
- [ ] verification.md Status = Ready 或 Done
|
|
194
|
+
- [ ] evidence/green-final/ 存在
|
|
195
|
+
- [ ] tasks.md 全部 [x]
|
|
196
|
+
|
|
197
|
+
2. 自动回写(如有需要):
|
|
198
|
+
- [ ] 检测 deviation-log.md
|
|
199
|
+
- [ ] 回写 design.md
|
|
200
|
+
- [ ] 更新 deviation-log.md 标记
|
|
201
|
+
|
|
202
|
+
3. 合并到真理:
|
|
203
|
+
- [ ] 合并 specs/**
|
|
204
|
+
- [ ] 合并 contracts/**
|
|
205
|
+
- [ ] 合并 Architecture Impact 到 c4.md
|
|
206
|
+
|
|
207
|
+
4. 归档:
|
|
208
|
+
- [ ] 设置 verification.md Status = Archived
|
|
209
|
+
- [ ] 输出归档报告
|
|
210
|
+
```
|
|
211
|
+
|
|
113
212
|
### 检测输出示例
|
|
114
213
|
|
|
115
214
|
```
|
|
@@ -12,6 +12,46 @@ allowed-tools:
|
|
|
12
12
|
|
|
13
13
|
# DevBooks:测试负责人(Test Owner)
|
|
14
14
|
|
|
15
|
+
## 工作流位置感知(Workflow Position Awareness)
|
|
16
|
+
|
|
17
|
+
> **核心原则**:Test Owner 在整体工作流中承担**双阶段职责**,确保与 Coder 的角色隔离。
|
|
18
|
+
|
|
19
|
+
### 我在整体工作流中的位置
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
proposal → design → [Test Owner 阶段1] → coder → [Test Owner 阶段2] → code-review → archive
|
|
23
|
+
↓ ↓
|
|
24
|
+
Red 基线产出 Green 验证 + 打勾
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Test Owner 的双阶段职责
|
|
28
|
+
|
|
29
|
+
| 阶段 | 触发时机 | 核心职责 | 产出 |
|
|
30
|
+
|------|----------|----------|------|
|
|
31
|
+
| **阶段 1:Red 基线** | design.md 完成后 | 编写测试、产出失败证据 | verification.md (Status=Ready)、Red 基线 |
|
|
32
|
+
| **阶段 2:Green 验证** | Coder 完成后 | 验证测试通过、勾选 AC 覆盖矩阵 | AC 矩阵打勾、Status 保持 Ready(等 Reviewer 设 Done) |
|
|
33
|
+
|
|
34
|
+
### 阶段 2 详细职责(关键!)
|
|
35
|
+
|
|
36
|
+
当用户说"Coder 完成了,请验证"或类似请求时,Test Owner 进入**阶段 2**:
|
|
37
|
+
|
|
38
|
+
1. **运行全部测试**:执行 `npm test` 或项目测试命令
|
|
39
|
+
2. **验证 Green 状态**:确认所有测试通过
|
|
40
|
+
3. **勾选 AC 覆盖矩阵**:在 verification.md 的 AC 覆盖矩阵中将 `[ ]` 改为 `[x]`
|
|
41
|
+
4. **收集 Green 证据**:保存到 `evidence/green-final/`
|
|
42
|
+
5. **输出验证报告**:总结测试结果和覆盖情况
|
|
43
|
+
|
|
44
|
+
### AC 覆盖矩阵复选框权限(重要!)
|
|
45
|
+
|
|
46
|
+
| 复选框位置 | 谁可以勾选 | 勾选时机 |
|
|
47
|
+
|------------|-----------|----------|
|
|
48
|
+
| AC 覆盖矩阵中的 `[ ]` | **Test Owner** | 阶段 2 验证 Green 状态后 |
|
|
49
|
+
| Status 字段 `Done` | Reviewer | Code Review 通过后 |
|
|
50
|
+
|
|
51
|
+
**禁止**:Coder 不能勾选 AC 覆盖矩阵,不能修改 verification.md。
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
15
55
|
## 前置:配置发现(协议无关)
|
|
16
56
|
|
|
17
57
|
- `<truth-root>`:当前真理目录根
|
|
@@ -40,6 +80,17 @@ allowed-tools:
|
|
|
40
80
|
|
|
41
81
|
Test Owner 必须产出结构化的 `verification.md`,同时作为测试计划和追溯文档。
|
|
42
82
|
|
|
83
|
+
### Status 字段权限
|
|
84
|
+
|
|
85
|
+
| 状态 | 含义 | 谁可以设置 |
|
|
86
|
+
|------|------|-----------|
|
|
87
|
+
| `Draft` | 初始状态 | 自动生成 |
|
|
88
|
+
| `Ready` | 测试计划就绪 | **Test Owner** |
|
|
89
|
+
| `Done` | Review 通过 | Reviewer(禁止 Test Owner/Coder) |
|
|
90
|
+
| `Archived` | 已归档 | Spec Gardener |
|
|
91
|
+
|
|
92
|
+
**约束**:Test Owner 完成测试计划后,应将 Status 设为 `Ready`。
|
|
93
|
+
|
|
43
94
|
```markdown
|
|
44
95
|
# 验证计划:<change-id>
|
|
45
96
|
|
|
@@ -328,28 +379,53 @@ devbooks change-evidence <change-id> --label red-baseline -- npm test
|
|
|
328
379
|
|
|
329
380
|
## 完成状态与下一步路由
|
|
330
381
|
|
|
331
|
-
###
|
|
382
|
+
### 阶段感知(关键!)
|
|
383
|
+
|
|
384
|
+
Test Owner 有两个阶段,完成状态因阶段而异:
|
|
385
|
+
|
|
386
|
+
| 当前阶段 | 如何判断 | 完成后下一步 |
|
|
387
|
+
|----------|----------|--------------|
|
|
388
|
+
| **阶段 1** | verification.md 不存在或 Red 基线未产出 | → Coder |
|
|
389
|
+
| **阶段 2** | 用户说"验证/打勾"且 Coder 已完成 | → Code Review |
|
|
390
|
+
|
|
391
|
+
### 阶段 1 完成状态分类(MECE)
|
|
332
392
|
|
|
333
393
|
| 状态码 | 状态 | 判定条件 | 下一步 |
|
|
334
394
|
|:------:|------|----------|--------|
|
|
335
|
-
| ✅ |
|
|
336
|
-
| ⚠️ |
|
|
395
|
+
| ✅ | PHASE1_COMPLETED | Red 基线产出,无偏离 | `devbooks-coder`(单独会话) |
|
|
396
|
+
| ⚠️ | PHASE1_COMPLETED_WITH_DEVIATION | Red 基线产出,deviation-log 有未回写记录 | `devbooks-design-backport` |
|
|
337
397
|
| ❌ | BLOCKED | 需要外部输入/决策 | 记录断点,等待用户 |
|
|
338
398
|
| 💥 | FAILED | 测试框架问题等 | 修复后重试 |
|
|
339
399
|
|
|
340
|
-
###
|
|
400
|
+
### 阶段 2 完成状态分类(MECE)
|
|
341
401
|
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
402
|
+
| 状态码 | 状态 | 判定条件 | 下一步 |
|
|
403
|
+
|:------:|------|----------|--------|
|
|
404
|
+
| ✅ | PHASE2_VERIFIED | 测试全绿,AC 矩阵已打勾 | `devbooks-code-review` |
|
|
405
|
+
| ❌ | PHASE2_FAILED | 测试未通过 | 通知 Coder 修复,或 HANDOFF |
|
|
406
|
+
| 🔄 | PHASE2_HANDOFF | 发现测试本身有问题 | 修复测试后重新验证 |
|
|
345
407
|
|
|
346
|
-
|
|
347
|
-
- verification.md 存在且有追溯矩阵
|
|
348
|
-
- evidence/red-baseline/ 存在
|
|
349
|
-
→ 否:BLOCKED 或 FAILED
|
|
408
|
+
### 阶段判定流程
|
|
350
409
|
|
|
351
|
-
|
|
352
|
-
|
|
410
|
+
```
|
|
411
|
+
1. 检查当前处于哪个阶段:
|
|
412
|
+
- verification.md 不存在 → 阶段 1
|
|
413
|
+
- verification.md 存在但 AC 矩阵全是 [ ] → 阶段 1 或 阶段 2(看用户请求)
|
|
414
|
+
- 用户明确说"验证/打勾/Coder 完成了" → 阶段 2
|
|
415
|
+
|
|
416
|
+
2. 阶段 1 状态判定:
|
|
417
|
+
a. 检查 deviation-log.md 是否有 "| ❌" 记录
|
|
418
|
+
→ 有:PHASE1_COMPLETED_WITH_DEVIATION
|
|
419
|
+
b. 检查 Red 基线是否产出
|
|
420
|
+
→ 否:BLOCKED 或 FAILED
|
|
421
|
+
c. 以上都通过 → PHASE1_COMPLETED
|
|
422
|
+
|
|
423
|
+
3. 阶段 2 状态判定:
|
|
424
|
+
a. 运行测试,检查是否全绿
|
|
425
|
+
→ 否:PHASE2_FAILED
|
|
426
|
+
b. 检查测试本身是否有问题
|
|
427
|
+
→ 是:PHASE2_HANDOFF
|
|
428
|
+
c. 全绿且无问题 → PHASE2_VERIFIED
|
|
353
429
|
```
|
|
354
430
|
|
|
355
431
|
### 路由输出模板(必须使用)
|
|
@@ -359,15 +435,21 @@ devbooks change-evidence <change-id> --label red-baseline -- npm test
|
|
|
359
435
|
```markdown
|
|
360
436
|
## 完成状态
|
|
361
437
|
|
|
362
|
-
|
|
438
|
+
**阶段**:阶段 1(Red 基线)/ 阶段 2(Green 验证)
|
|
439
|
+
|
|
440
|
+
**状态**:✅ PHASE1_COMPLETED / ✅ PHASE2_VERIFIED / ⚠️ ... / ❌ ... / 💥 ...
|
|
441
|
+
|
|
442
|
+
**Red 基线**:已产出 / 未完成(仅阶段 1)
|
|
443
|
+
|
|
444
|
+
**Green 验证**:全绿 / 有失败(仅阶段 2)
|
|
363
445
|
|
|
364
|
-
**
|
|
446
|
+
**AC 矩阵**:已打勾 N/M / 未打勾(仅阶段 2)
|
|
365
447
|
|
|
366
448
|
**偏离记录**:有 N 条待回写 / 无
|
|
367
449
|
|
|
368
450
|
## 下一步
|
|
369
451
|
|
|
370
|
-
**推荐**:`devbooks-xxx skill
|
|
452
|
+
**推荐**:`devbooks-xxx skill`
|
|
371
453
|
|
|
372
454
|
**原因**:[具体原因]
|
|
373
455
|
|
|
@@ -379,8 +461,11 @@ devbooks change-evidence <change-id> --label red-baseline -- npm test
|
|
|
379
461
|
|
|
380
462
|
| 我的状态 | 下一步 | 原因 |
|
|
381
463
|
|----------|--------|------|
|
|
382
|
-
|
|
|
383
|
-
|
|
|
464
|
+
| PHASE1_COMPLETED | `devbooks-coder`(单独会话) | Red 基线已产出,Coder 实现以变绿 |
|
|
465
|
+
| PHASE1_COMPLETED_WITH_DEVIATION | `devbooks-design-backport` | 先回写设计,再交给 Coder |
|
|
466
|
+
| PHASE2_VERIFIED | `devbooks-code-review` | 测试全绿,可以进入代码评审 |
|
|
467
|
+
| PHASE2_FAILED | 通知 Coder | 测试未通过,需要 Coder 修复 |
|
|
468
|
+
| PHASE2_HANDOFF | 修复测试 | 测试本身有问题,Test Owner 修复 |
|
|
384
469
|
| BLOCKED | 等待用户 | 记录断点区 |
|
|
385
470
|
| FAILED | 修复后重试 | 分析失败原因 |
|
|
386
471
|
|
|
@@ -388,6 +473,7 @@ devbooks change-evidence <change-id> --label red-baseline -- npm test
|
|
|
388
473
|
- **角色隔离**:Coder 必须在**单独的会话/实例**中工作
|
|
389
474
|
- Test Owner 和 Coder 不能共享同一会话上下文
|
|
390
475
|
- 如有偏离,必须先 design-backport 再交给 Coder
|
|
476
|
+
- **阶段 2 的 AC 矩阵打勾只能由 Test Owner 执行**
|
|
391
477
|
|
|
392
478
|
---
|
|
393
479
|
|