dev-playbooks-cn 1.0.16 → 1.0.17

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dev-playbooks-cn",
3
- "version": "1.0.16",
3
+ "version": "1.0.17",
4
4
  "description": "AI-driven spec-based development workflow",
5
5
  "keywords": [
6
6
  "devbooks",
@@ -24,6 +24,81 @@
24
24
 
25
25
  ---
26
26
 
27
+ ## 0.5 产出物路径强制约定(Output Path Convention)
28
+
29
+ > **核心原则**:所有产出物必须输出到正确的目录,禁止输出到项目根目录或其他错误位置。
30
+
31
+ ### 路径映射表(必须遵守)
32
+
33
+ | 产出物类型 | 正确路径 | 错误路径(禁止) |
34
+ |------------|----------|------------------|
35
+ | 变更文档 | `<change-root>/<change-id>/` | 项目根目录 |
36
+ | 证据文件 | `<change-root>/<change-id>/evidence/` | `./evidence/` |
37
+ | Red 基线 | `<change-root>/<change-id>/evidence/red-baseline/` | `./evidence/red-baseline/` |
38
+ | Green 证据 | `<change-root>/<change-id>/evidence/green-final/` | `./evidence/green-final/` |
39
+ | 规格增量 | `<change-root>/<change-id>/specs/` | `./specs/` |
40
+ | 追溯文档 | `<change-root>/<change-id>/verification.md` | `./verification.md` |
41
+
42
+ ### DevBooks 2.0 默认路径
43
+
44
+ 当使用 DevBooks 2.0 协议时:
45
+ - `<change-root>` = `dev-playbooks/changes`
46
+ - `<truth-root>` = `dev-playbooks/specs`
47
+
48
+ **示例**:
49
+ ```
50
+ 项目根目录/
51
+ ├── dev-playbooks/ # DevBooks 根目录
52
+ │ ├── changes/ # <change-root>
53
+ │ │ └── CHG-001/ # 变更包目录
54
+ │ │ ├── proposal.md
55
+ │ │ ├── design.md
56
+ │ │ ├── tasks.md
57
+ │ │ ├── verification.md
58
+ │ │ ├── evidence/ # 证据目录
59
+ │ │ │ ├── red-baseline/ # Red 基线
60
+ │ │ │ └── green-final/ # Green 最终
61
+ │ │ └── specs/ # 规格增量
62
+ │ └── specs/ # <truth-root>
63
+ └── src/ # 项目代码
64
+ ```
65
+
66
+ ### 路径检查协议
67
+
68
+ **每次写文件前,必须验证**:
69
+ 1. 目标路径是否在 `<change-root>/<change-id>/` 下?
70
+ 2. 是否意外使用了相对路径(`./`)导致写入项目根目录?
71
+ 3. 是否正确解析了 `<change-root>` 的实际值?
72
+
73
+ **常见错误及修正**:
74
+ ```bash
75
+ # ❌ 错误:写入项目根目录
76
+ mkdir -p ./evidence/green-final/
77
+
78
+ # ✅ 正确:写入变更包目录
79
+ mkdir -p dev-playbooks/changes/CHG-001/evidence/green-final/
80
+
81
+ # ❌ 错误:相对路径未指定变更包
82
+ tee evidence/test.log
83
+
84
+ # ✅ 正确:完整路径
85
+ tee dev-playbooks/changes/CHG-001/evidence/green-final/test.log
86
+ ```
87
+
88
+ ### 违反路径约定的后果
89
+
90
+ 如果产出物被写入错误位置:
91
+ 1. 归档检查会失败(`check_evidence_closure` 找不到证据)
92
+ 2. 追溯矩阵会断裂
93
+ 3. 变更包不完整,无法通过 strict 模式检查
94
+
95
+ **发现路径错误时的处理**:
96
+ 1. 立即将文件移动到正确位置
97
+ 2. 检查同类产出物是否有相同问题
98
+ 3. 更新相关引用路径
99
+
100
+ ---
101
+
27
102
  ## 1. 可验证性守门协议(Radical Honesty)
28
103
 
29
104
  你是"可验证性守门人"。你的职责是把所有输出都锚定到可证据化的事实,避免幻觉、臆测与"自证闭环"。
@@ -103,3 +103,76 @@
103
103
  - ⚠️ **APPROVED WITH COMMENTS**:可合并但建议后续改进(列出具体项)
104
104
  - 🔄 **REQUEST CHANGES**:需修改后重新评审(列出必须修复项)
105
105
  - ❌ **REJECTED**:存在严重问题或设计缺陷,需回到设计阶段
106
+
107
+ ---
108
+
109
+ ## 产出物完整性检查协议(Deliverable Completeness Check)
110
+
111
+ > **核心原则**:Reviewer 不仅审查代码质量,还需验证 Coder 任务的完整交付。
112
+
113
+ **在给出 APPROVED 结论前,必须完成以下检查**:
114
+
115
+ ### 1. 任务计划完成度验证
116
+ ```bash
117
+ # 检查 tasks.md 完成度
118
+ rg "^- \[ \]" <change-root>/<change-id>/tasks.md
119
+ ```
120
+
121
+ **验证标准**:
122
+ - [ ] tasks.md 中所有任务项已完成(`- [x]`)或有 SKIP-APPROVED 批准
123
+ - [ ] 无遗漏的主线计划项
124
+
125
+ ### 2. 测试通过状态验证
126
+ ```bash
127
+ # 验证测试是否全部通过(非 skip)
128
+ npm test 2>&1 | rg -i "pass|fail|skip"
129
+ ```
130
+
131
+ **验证标准**:
132
+ - [ ] 测试全部 PASS(不是 SKIP)
133
+ - [ ] 无 `.only()` 或 `.skip()` 残留
134
+ - [ ] Skip 数量为 0 或有明确说明
135
+
136
+ ### 3. Green 证据验证
137
+ ```bash
138
+ # 验证 Green 证据目录存在且有内容
139
+ ls -la <change-root>/<change-id>/evidence/green-final/
140
+ ```
141
+
142
+ **验证标准**:
143
+ - [ ] `evidence/green-final/` 目录存在
144
+ - [ ] 目录中有测试日志文件
145
+ - [ ] 日志中无 FAIL/FAILED/ERROR 模式
146
+
147
+ ### 4. 产出物检查清单
148
+
149
+ 在评审输出中,必须包含以下验证表格:
150
+
151
+ ```markdown
152
+ ## 产出物完整性检查
153
+
154
+ | 检查项 | 状态 | 说明 |
155
+ |--------|------|------|
156
+ | tasks.md 完成度 | ✅/❌ | X/Y 已完成 |
157
+ | 测试全绿(非 Skip) | ✅/❌ | X 通过 / Y 跳过 / Z 失败 |
158
+ | Green 证据存在 | ✅/❌ | evidence/green-final/ 有 N 个文件 |
159
+ | 无失败模式在证据中 | ✅/❌ | 日志无 FAIL/ERROR |
160
+ ```
161
+
162
+ ### 5. 评审结论强化
163
+
164
+ **APPROVED 的前提条件**(全部满足才能给出 APPROVED):
165
+ 1. 代码质量审查通过(原有逻辑)
166
+ 2. tasks.md 100% 完成或有 SKIP-APPROVED
167
+ 3. 测试全部 PASS(skip 数量为 0)
168
+ 4. Green 证据目录存在且无失败模式
169
+
170
+ **如果以上任一条件不满足**:
171
+ - 必须给出 🔄 **REQUEST CHANGES** 或 ❌ **REJECTED**
172
+ - 明确指出缺失项及修复建议
173
+
174
+ **禁止行为**:
175
+ - 禁止在任务未完成时给出 APPROVED
176
+ - 禁止在有 skip 测试时给出 APPROVED
177
+ - 禁止在无 Green 证据时给出 APPROVED
178
+ - 禁止仅审查代码质量而忽略产出物完整性
@@ -52,6 +52,48 @@ tools:
52
52
 
53
53
  ---
54
54
 
55
+ ## 实时进度更新协议(Real-time Progress Update)
56
+
57
+ > **核心原则**:完成一个任务,立即勾选一个。不要等到全部完成再批量勾选。
58
+
59
+ **必须遵守**:
60
+
61
+ ### 单任务完成后立即勾选
62
+
63
+ 每完成 tasks.md 中的一个任务项后,**立即**将其从 `- [ ]` 改为 `- [x]`:
64
+
65
+ ```markdown
66
+ # 任务完成前
67
+ - [ ] MP1.1 实现缓存管理器基础结构
68
+
69
+ # 任务完成后,立即更新
70
+ - [x] MP1.1 实现缓存管理器基础结构
71
+ ```
72
+
73
+ ### 为什么必须实时勾选
74
+
75
+ 1. **断点恢复**:中断后可以准确知道从哪里继续
76
+ 2. **进度可视**:用户和 AI 都能清楚看到当前进度
77
+ 3. **避免遗忘**:批量勾选容易遗漏已完成项
78
+ 4. **证据链完整**:每个勾选代表一个完成的里程碑
79
+
80
+ ### 勾选时机
81
+
82
+ | 时机 | 操作 |
83
+ |------|------|
84
+ | 代码编写完成 | 暂不勾选 |
85
+ | 编译通过 | 暂不勾选 |
86
+ | 相关测试通过 | **立即勾选** |
87
+ | 多个任务一起完成 | 逐个勾选,不要批量 |
88
+
89
+ ### 禁止行为
90
+
91
+ - ❌ 禁止等所有任务完成后再批量勾选
92
+ - ❌ 禁止"代码写完就算完成"而不勾选
93
+ - ❌ 禁止勾选后又改回未勾选状态(除非回滚代码)
94
+
95
+ ---
96
+
55
97
  ## 输出管理约束(Observation Masking)
56
98
 
57
99
  防止大量输出污染 context:
@@ -60,18 +102,40 @@ tools:
60
102
  |------|----------|
61
103
  | 命令输出 > 50 行 | 只保留首尾各 10 行 + 中间摘要 |
62
104
  | 测试输出 | 提取关键失败信息,不要全量贴入对话 |
63
- | 日志输出 | 落盘到 `evidence/`,对话中只引用路径 |
105
+ | 日志输出 | 落盘到 `<change-root>/<change-id>/evidence/`,对话中只引用路径 |
64
106
  | 大文件内容 | 引用路径,不要内联 |
65
107
 
66
108
  **示例**:
67
109
  ```
68
110
  ❌ 错误:贴入 2000 行测试日志
69
- ✅ 正确:测试失败 3 个,详见 evidence/test-output.log
111
+ ✅ 正确:测试失败 3 个,详见 <change-root>/<change-id>/evidence/green-final/test-output.log
70
112
  关键错误:FAIL src/order.test.ts:45 - Expected 400, got 500
71
113
  ```
72
114
 
73
115
  ---
74
116
 
117
+ ## 证据路径强制约定
118
+
119
+ **Green 证据必须保存到变更包目录**:
120
+ ```
121
+ <change-root>/<change-id>/evidence/green-final/
122
+ ```
123
+
124
+ **禁止的路径**:
125
+ - ❌ `./evidence/`(项目根目录)
126
+ - ❌ `evidence/`(相对于当前工作目录)
127
+
128
+ **正确的路径示例**:
129
+ ```bash
130
+ # DevBooks 2.0 默认路径
131
+ dev-playbooks/changes/<change-id>/evidence/green-final/test-$(date +%Y%m%d-%H%M%S).log
132
+
133
+ # 使用脚本
134
+ devbooks change-evidence <change-id> --label green-final -- npm test
135
+ ```
136
+
137
+ ---
138
+
75
139
  ## 关键约束
76
140
 
77
141
  ### 角色边界约束
@@ -18,8 +18,64 @@
18
18
  1) **禁止修改 tests/**;如需调整测试只能交还 Test Owner。
19
19
  2) **只读设计/规格**:不得用代码实现去反向改写 design/spec 的语义。
20
20
  3) **质量优先**:遵循仓库既有风格与最佳实践;避免引入反模式与坏味道。
21
- 4) **确定性锚点**:以测试/静态检查/构建结果为唯一裁判;禁止“自评通过”。
22
- 5) **结构守门**:若出现“代理指标驱动”的要求,先评估对内聚/耦合/可测试性的影响;触发风险信号必须停线并回到设计决策。
21
+ 4) **确定性锚点**:以测试/静态检查/构建结果为唯一裁判;禁止"自评通过"。
22
+ 5) **结构守门**:若出现"代理指标驱动"的要求,先评估对内聚/耦合/可测试性的影响;触发风险信号必须停线并回到设计决策。
23
+ 6) **实时勾选**:完成一个任务项,立即在 tasks.md 中勾选(`- [ ]` → `- [x]`);禁止批量勾选。
24
+
25
+ ---
26
+
27
+ ## 实时进度更新协议(Real-time Progress Update)
28
+
29
+ > **最高优先级约束**:这是防止进度丢失的关键机制。
30
+
31
+ ### 核心原则
32
+
33
+ **完成一个任务,立即勾选一个。不要等到全部完成再批量勾选。**
34
+
35
+ ### 执行流程
36
+
37
+ ```
38
+ 开始任务 MP1.1
39
+
40
+ 编写代码
41
+
42
+ 运行相关测试,确认通过
43
+
44
+ 【立即】更新 tasks.md:- [ ] MP1.1 → - [x] MP1.1
45
+
46
+ 开始下一个任务 MP1.2
47
+ ```
48
+
49
+ ### 勾选命令示例
50
+
51
+ ```bash
52
+ # 使用 Edit 工具更新任务状态
53
+ # old_string: "- [ ] MP1.1 实现缓存管理器"
54
+ # new_string: "- [x] MP1.1 实现缓存管理器"
55
+ ```
56
+
57
+ ### 禁止的模式
58
+
59
+ ```
60
+ ❌ 错误模式:
61
+ 完成 MP1.1 → 不勾选,继续 MP1.2
62
+ 完成 MP1.2 → 不勾选,继续 MP1.3
63
+ ...
64
+ 全部完成 → 批量勾选所有任务
65
+
66
+ ✅ 正确模式:
67
+ 完成 MP1.1 → 立即勾选 MP1.1
68
+ 完成 MP1.2 → 立即勾选 MP1.2
69
+ 完成 MP1.3 → 立即勾选 MP1.3
70
+ ```
71
+
72
+ ### 为什么这很重要
73
+
74
+ 1. **会话中断**:如果中途中断,未勾选的任务会导致下次不知道从哪继续
75
+ 2. **进度丢失**:批量勾选时容易遗漏,造成进度统计不准确
76
+ 3. **断点恢复**:实时勾选是断点续做协议的基础
77
+
78
+ ---
23
79
 
24
80
  质量门禁(必须执行):
25
81
  - 先运行与本次变更相关的 tests/静态检查;保留失败输出作为修复依据。
@@ -68,3 +124,78 @@
68
124
  2) 说明每个 Plan 项如何通过对应的锚点(测试/检查)
69
125
  3) 提供可运行的验证命令(按分层列出)
70
126
  4) 如果发现设计/规格/计划冲突:停止并明确冲突点,提出回写或澄清建议
127
+
128
+ ---
129
+
130
+ ## 完成度验证协议(Completion Verification Protocol)
131
+
132
+ > **核心原则**:Coder 任务完成不仅是"代码能跑",而是"可归档交付"。
133
+
134
+ **在声明任务完成前,必须完成以下检查**:
135
+
136
+ ### 1. 任务计划完成度检查
137
+ ```bash
138
+ # 检查 tasks.md 中是否所有任务都已勾选
139
+ rg "^- \[ \]" <change-root>/<change-id>/tasks.md
140
+ # 如果有未完成项,必须先完成或申请 SKIP-APPROVED
141
+ ```
142
+
143
+ **完成标准**:
144
+ - [ ] tasks.md 中所有 `- [ ]` 都已变为 `- [x]`
145
+ - [ ] 或者未完成项有明确的 `<!-- SKIP-APPROVED: 原因 -->` 注释
146
+
147
+ ### 2. 测试全通过检查(非 Skip)
148
+ ```bash
149
+ # 运行测试并确认无 skip
150
+ npm test 2>&1 | tee <change-root>/<change-id>/evidence/green-final/test-$(date +%Y%m%d-%H%M%S).log
151
+
152
+ # 检查是否有 skip(以下任一出现都不算通过)
153
+ rg -i "skip|pending|todo" <test-output> | rg -v "0 skip"
154
+ ```
155
+
156
+ **完成标准**:
157
+ - [ ] 所有测试 PASS(不是 SKIP)
158
+ - [ ] 无 `.only()` 或 `.skip()` 残留
159
+ - [ ] 测试输出已保存到 `evidence/green-final/`
160
+
161
+ ### 3. Green 证据收集
162
+ ```bash
163
+ # 使用 change-evidence.sh 收集证据
164
+ devbooks change-evidence <change-id> --label green-final -- npm test
165
+ # 或手动保存到正确路径:
166
+ mkdir -p <change-root>/<change-id>/evidence/green-final/
167
+ ```
168
+
169
+ **完成标准**:
170
+ - [ ] `<change-root>/<change-id>/evidence/green-final/` 目录存在
171
+ - [ ] 目录中至少有一个测试日志文件
172
+ - [ ] 日志中无 FAIL/FAILED/ERROR 模式
173
+
174
+ ### 4. 完成度自检清单
175
+
176
+ 在输出最后,必须包含以下自检表格:
177
+
178
+ ```markdown
179
+ ## 完成度检查
180
+
181
+ | 检查项 | 状态 | 证据 |
182
+ |--------|------|------|
183
+ | tasks.md 100% 完成 | ✅/❌ | X/Y 已完成 |
184
+ | 编译通过 | ✅/❌ | npm run compile 退出码 0 |
185
+ | Lint 通过 | ✅/❌ | npm run lint 退出码 0 |
186
+ | 测试全通过(非 Skip) | ✅/❌ | X 通过 / Y 跳过 / Z 失败 |
187
+ | Green 证据已保存 | ✅/❌ | evidence/green-final/*.log |
188
+ | 无禁止模式 | ✅/❌ | 无 .only/console.log/debugger |
189
+ ```
190
+
191
+ ### 5. 结论输出格式
192
+
193
+ **必须明确给出实现结论**:
194
+ - ✅ **DONE**:所有任务完成,测试全绿,证据已收集,可交付 Reviewer
195
+ - ⚠️ **PARTIAL**:部分完成(列出未完成项及原因),需继续实现
196
+ - ❌ **BLOCKED**:遇到阻塞(列出阻塞原因及建议下一步)
197
+
198
+ **禁止行为**:
199
+ - 禁止在有未完成任务时声明 DONE
200
+ - 禁止在有 skip 测试时声明 DONE
201
+ - 禁止在无 Green 证据时声明 DONE
@@ -32,6 +32,29 @@ tools:
32
32
 
33
33
  - 测试计划与追溯:`<change-root>/<change-id>/verification.md`
34
34
  - 测试代码:按仓库惯例(例如 `tests/**`)
35
+ - Red 基线证据:`<change-root>/<change-id>/evidence/red-baseline/`
36
+
37
+ ---
38
+
39
+ ## 证据路径强制约定
40
+
41
+ **Red 基线证据必须保存到变更包目录**:
42
+ ```
43
+ <change-root>/<change-id>/evidence/red-baseline/
44
+ ```
45
+
46
+ **禁止的路径**:
47
+ - ❌ `./evidence/`(项目根目录)
48
+ - ❌ `evidence/`(相对于当前工作目录)
49
+
50
+ **正确的路径示例**:
51
+ ```bash
52
+ # DevBooks 2.0 默认路径
53
+ dev-playbooks/changes/<change-id>/evidence/red-baseline/test-$(date +%Y%m%d-%H%M%S).log
54
+
55
+ # 使用脚本
56
+ devbooks change-evidence <change-id> --label red-baseline -- npm test
57
+ ```
35
58
 
36
59
  ---
37
60
 
@@ -125,13 +125,70 @@
125
125
  现在开始执行:
126
126
  1) 先产出 测试计划指令表(按 A 的要求)
127
127
  2) 再直接在仓库中实现测试代码(按 B 的要求)
128
- 3) 运行测试确认 **Red** 基线,并记录失败证据到 `<change-root>/<change-id>/evidence/`(或同等位置)
128
+ 3) 运行测试确认 **Red** 基线,并记录失败证据到 `<change-root>/<change-id>/evidence/red-baseline/`
129
129
  4) 最后输出一段简短摘要:测试覆盖了哪些验收标准、如何运行、哪些被标记为可选/跳过及原因
130
130
  5) **明确给出验收结论**:
131
131
  - ✅ **PASS**:所有测试已就绪,Red 基线已建立,可交付 Coder 实现
132
132
  - ⚠️ **PASS WITH CONDITIONS**:测试已就绪但有待确认项(列出具体条件)
133
133
  - ❌ **FAIL**:测试无法完成(列出阻塞原因及建议下一步)
134
134
 
135
+ ---
136
+
137
+ ## 证据路径强制约定(Evidence Path Convention)
138
+
139
+ > **核心原则**:所有证据文件必须输出到变更包目录内,禁止输出到项目根目录。
140
+
141
+ **证据路径模式**(必须遵守):
142
+ ```
143
+ <change-root>/<change-id>/evidence/
144
+ ├── red-baseline/ # Red 基线证据(Test Owner 产出)
145
+ │ └── test-YYYYMMDD-HHMMSS.log
146
+ └── green-final/ # Green 最终证据(Coder 产出)
147
+ └── test-YYYYMMDD-HHMMSS.log
148
+ ```
149
+
150
+ **关键约束**:
151
+ - ❌ 禁止:`./evidence/`(项目根目录)
152
+ - ❌ 禁止:`evidence/`(相对于当前工作目录)
153
+ - ✅ 正确:`<change-root>/<change-id>/evidence/red-baseline/`
154
+ - ✅ 正确:`dev-playbooks/changes/<change-id>/evidence/red-baseline/`
155
+
156
+ **使用脚本收集证据**:
157
+ ```bash
158
+ # 推荐方式:使用 change-evidence.sh
159
+ devbooks change-evidence <change-id> --label red-baseline -- npm test
160
+
161
+ # 手动方式:确保路径正确
162
+ mkdir -p <change-root>/<change-id>/evidence/red-baseline/
163
+ npm test 2>&1 | tee <change-root>/<change-id>/evidence/red-baseline/test-$(date +%Y%m%d-%H%M%S).log
164
+ ```
165
+
166
+ ---
167
+
168
+ ## 完成度检查协议(Test Owner Completion Check)
169
+
170
+ > **核心原则**:Test Owner 任务完成意味着测试已就绪且 Red 基线已建立。
171
+
172
+ **在声明 PASS 前,必须完成以下检查**:
173
+
174
+ ### 检查清单
175
+
176
+ | 检查项 | 状态 | 说明 |
177
+ |--------|------|------|
178
+ | verification.md 已创建 | ✅/❌ | `<change-root>/<change-id>/verification.md` |
179
+ | 追溯矩阵完整 | ✅/❌ | 所有 AC-xxx 都有对应测试 |
180
+ | 测试代码已实现 | ✅/❌ | `tests/` 目录有新增文件 |
181
+ | Red 基线已运行 | ✅/❌ | 测试失败(预期行为) |
182
+ | Red 证据已保存 | ✅/❌ | `evidence/red-baseline/*.log` 存在 |
183
+
184
+ **禁止行为**:
185
+ - 禁止在无 verification.md 时声明 PASS
186
+ - 禁止在追溯矩阵有 TODO 时声明 PASS
187
+ - 禁止在无 Red 基线证据时声明 PASS
188
+ - 禁止将证据输出到变更包目录之外
189
+
190
+ ---
191
+
135
192
  这是输入材料 和 产物目标路径:
136
193
 
137
194
  ========================