6aspec 2.0.0-dev.2
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/.6aspec/rules/biz/api_rule.md +578 -0
- package/.6aspec/rules/biz/background_job_rule.md +719 -0
- package/.6aspec/rules/biz/c_user_system_rule.md +240 -0
- package/.6aspec/rules/biz/code.md +39 -0
- package/.6aspec/rules/biz/event_subscriber_rule.md +529 -0
- package/.6aspec/rules/biz/project-structure.md +90 -0
- package/.6aspec/rules/biz/scheduled_job_rule.md +850 -0
- package/.6aspec/rules/brown/brown_archive_sop.md +132 -0
- package/.6aspec/rules/brown/brown_constitution.md +20 -0
- package/.6aspec/rules/brown/brown_continue_sop.md +97 -0
- package/.6aspec/rules/brown/brown_design_sop.md +155 -0
- package/.6aspec/rules/brown/brown_ff_sop.md +194 -0
- package/.6aspec/rules/brown/brown_impact_sop.md +296 -0
- package/.6aspec/rules/brown/brown_implement_sop.md +133 -0
- package/.6aspec/rules/brown/brown_list_sop.md +69 -0
- package/.6aspec/rules/brown/brown_new_sop.md +257 -0
- package/.6aspec/rules/brown/brown_proposal_sop.md +160 -0
- package/.6aspec/rules/brown/brown_quick_sop.md +134 -0
- package/.6aspec/rules/brown/brown_review_sop.md +270 -0
- package/.6aspec/rules/brown/brown_rollback_sop.md +188 -0
- package/.6aspec/rules/brown/brown_specs_sop.md +227 -0
- package/.6aspec/rules/brown/brown_status_sop.md +135 -0
- package/.6aspec/rules/brown/brown_tasks_sop.md +202 -0
- package/.6aspec/rules/brown/brown_understand_sop.md +211 -0
- package/.6aspec/rules/brown/brown_verify_sop.md +360 -0
- package/.6aspec/rules/green/6A_archive_sop.md +301 -0
- package/.6aspec/rules/green/6A_clarify_sop.md +238 -0
- package/.6aspec/rules/green/6A_code_implementation_sop.md +110 -0
- package/.6aspec/rules/green/6A_constitution.md +52 -0
- package/.6aspec/rules/green/6A_continue_sop.md +186 -0
- package/.6aspec/rules/green/6A_design_sop.md +228 -0
- package/.6aspec/rules/green/6A_import_model_table_sop.md +120 -0
- package/.6aspec/rules/green/6A_init_event_list_sop.md +62 -0
- package/.6aspec/rules/green/6A_init_map_sop.md +79 -0
- package/.6aspec/rules/green/6A_model_sop.md +210 -0
- package/.6aspec/rules/green/6A_new_sop.md +319 -0
- package/.6aspec/rules/green/6A_rollback_sop.md +198 -0
- package/.6aspec/rules/green/6A_status_sop.md +275 -0
- package/.6aspec/rules/green/6A_tasks_sop.md +181 -0
- package/.6aspec/rules/green/6A_visual_logic_sop.md +121 -0
- package/.6aspec/rules/green/green_status_schema.md +293 -0
- package/.6aspec/script/create_entities_from_markdown.py +688 -0
- package/.claude/commands/6aspec/brown/archive.md +11 -0
- package/.claude/commands/6aspec/brown/continue.md +11 -0
- package/.claude/commands/6aspec/brown/design.md +11 -0
- package/.claude/commands/6aspec/brown/ff.md +11 -0
- package/.claude/commands/6aspec/brown/impact.md +11 -0
- package/.claude/commands/6aspec/brown/implement.md +11 -0
- package/.claude/commands/6aspec/brown/list.md +11 -0
- package/.claude/commands/6aspec/brown/new.md +11 -0
- package/.claude/commands/6aspec/brown/proposal.md +11 -0
- package/.claude/commands/6aspec/brown/quick.md +11 -0
- package/.claude/commands/6aspec/brown/review.md +11 -0
- package/.claude/commands/6aspec/brown/rollback.md +11 -0
- package/.claude/commands/6aspec/brown/specs.md +11 -0
- package/.claude/commands/6aspec/brown/status.md +11 -0
- package/.claude/commands/6aspec/brown/tasks.md +11 -0
- package/.claude/commands/6aspec/brown/understand.md +11 -0
- package/.claude/commands/6aspec/brown/verify.md +11 -0
- package/.claude/commands/6aspec/green/archive.md +8 -0
- package/.claude/commands/6aspec/green/clarify.md +13 -0
- package/.claude/commands/6aspec/green/continue.md +8 -0
- package/.claude/commands/6aspec/green/design.md +8 -0
- package/.claude/commands/6aspec/green/execute-task.md +20 -0
- package/.claude/commands/6aspec/green/import-model-table.md +8 -0
- package/.claude/commands/6aspec/green/init.md +14 -0
- package/.claude/commands/6aspec/green/model.md +12 -0
- package/.claude/commands/6aspec/green/new.md +13 -0
- package/.claude/commands/6aspec/green/rollback.md +8 -0
- package/.claude/commands/6aspec/green/status.md +8 -0
- package/.claude/commands/6aspec/green/tasks.md +8 -0
- package/.claude/commands/6aspec/green/visual-logic.md +9 -0
- package/.claude/settings.local.json +8 -0
- package/.cursor/commands/6aspec/brown/archive.md +9 -0
- package/.cursor/commands/6aspec/brown/continue.md +9 -0
- package/.cursor/commands/6aspec/brown/design.md +9 -0
- package/.cursor/commands/6aspec/brown/ff.md +9 -0
- package/.cursor/commands/6aspec/brown/impact.md +9 -0
- package/.cursor/commands/6aspec/brown/implement.md +9 -0
- package/.cursor/commands/6aspec/brown/list.md +9 -0
- package/.cursor/commands/6aspec/brown/new.md +9 -0
- package/.cursor/commands/6aspec/brown/proposal.md +9 -0
- package/.cursor/commands/6aspec/brown/quick.md +9 -0
- package/.cursor/commands/6aspec/brown/review.md +9 -0
- package/.cursor/commands/6aspec/brown/rollback.md +9 -0
- package/.cursor/commands/6aspec/brown/specs.md +9 -0
- package/.cursor/commands/6aspec/brown/status.md +9 -0
- package/.cursor/commands/6aspec/brown/tasks.md +9 -0
- package/.cursor/commands/6aspec/brown/understand.md +9 -0
- package/.cursor/commands/6aspec/brown/verify.md +9 -0
- package/.cursor/commands/6aspec/green/archive.md +9 -0
- package/.cursor/commands/6aspec/green/clarify.md +14 -0
- package/.cursor/commands/6aspec/green/continue.md +9 -0
- package/.cursor/commands/6aspec/green/design.md +9 -0
- package/.cursor/commands/6aspec/green/execute-task.md +21 -0
- package/.cursor/commands/6aspec/green/import-model-table.md +9 -0
- package/.cursor/commands/6aspec/green/init.md +15 -0
- package/.cursor/commands/6aspec/green/model.md +13 -0
- package/.cursor/commands/6aspec/green/new.md +14 -0
- package/.cursor/commands/6aspec/green/rollback.md +9 -0
- package/.cursor/commands/6aspec/green/status.md +9 -0
- package/.cursor/commands/6aspec/green/tasks.md +9 -0
- package/.cursor/commands/6aspec/green/visual-logic.md +10 -0
- package/README.en.md +36 -0
- package/README.md +146 -0
- package/bin/6a-spec-install +54 -0
- package/bin/6aspec +48 -0
- package/lib/cli.js +318 -0
- package/lib/installer.js +333 -0
- package/package.json +62 -0
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
# 棕地需求 - Verify SOP
|
|
2
|
+
|
|
3
|
+
验证实现是否符合需求和设计。
|
|
4
|
+
|
|
5
|
+
**设计理念**:借鉴 OpenSpec 的三维验证框架(Completeness、Correctness、Coherence),结合棕地工作流的业务系统特点(业务规则、非功能需求、影响面覆盖)。
|
|
6
|
+
|
|
7
|
+
**输入**:`/6aspec:brown:verify` 后可选需求名称。
|
|
8
|
+
|
|
9
|
+
**步骤**
|
|
10
|
+
|
|
11
|
+
1. **选择需求并检查状态**
|
|
12
|
+
|
|
13
|
+
- 读取 `6aspecdoc/brown/<name>/status.json`
|
|
14
|
+
- 确认 `phases.implement` 为 "done"
|
|
15
|
+
- 获取 `flowDepth`(流程深度)
|
|
16
|
+
- 如果未完成 Phase 5,提示先运行 `/6aspec:brown:implement`
|
|
17
|
+
|
|
18
|
+
2. **读取验证基准文档**
|
|
19
|
+
|
|
20
|
+
根据流程深度读取不同的文档:
|
|
21
|
+
|
|
22
|
+
**轻量级流程**:
|
|
23
|
+
- `artifacts/proposal.md` - 需求提案
|
|
24
|
+
- `artifacts/design.md` - 技术方案
|
|
25
|
+
- `artifacts/tasks.md` - 任务列表
|
|
26
|
+
|
|
27
|
+
**标准级流程**:
|
|
28
|
+
- `artifacts/understanding.md` - 需求理解
|
|
29
|
+
- `artifacts/impact-analysis.md` - 影响面分析
|
|
30
|
+
- `artifacts/design.md` - 技术方案
|
|
31
|
+
- `artifacts/tasks.md` - 任务列表
|
|
32
|
+
|
|
33
|
+
**完整级流程**:
|
|
34
|
+
- 所有标准级文档
|
|
35
|
+
- 加上非功能需求评估(在 impact-analysis.md 中)
|
|
36
|
+
|
|
37
|
+
3. **初始化验证报告结构**
|
|
38
|
+
|
|
39
|
+
创建三维验证框架:
|
|
40
|
+
|
|
41
|
+
**Completeness(完整性)**:
|
|
42
|
+
- 任务完成度
|
|
43
|
+
- 影响面覆盖(棕地特色)
|
|
44
|
+
|
|
45
|
+
**Correctness(正确性)**:
|
|
46
|
+
- 需求实现映射
|
|
47
|
+
- 业务规则验证(棕地特色)
|
|
48
|
+
- 场景覆盖
|
|
49
|
+
|
|
50
|
+
**Coherence(一致性)**:
|
|
51
|
+
- 设计遵循
|
|
52
|
+
- 代码模式一致性
|
|
53
|
+
- 非功能需求符合(棕地特色)
|
|
54
|
+
|
|
55
|
+
4. **验证 Completeness(完整性)**
|
|
56
|
+
|
|
57
|
+
**4.1 任务完成度验证**(借鉴 OpenSpec)
|
|
58
|
+
|
|
59
|
+
- 读取 `artifacts/tasks.md` 或 `artifacts/04-tasks-overview.md`
|
|
60
|
+
- 解析 checkbox:`- [ ]`(未完成)vs `- [x]`(已完成)
|
|
61
|
+
- 统计完成率:X/Y 任务完成
|
|
62
|
+
- 如果有未完成任务:
|
|
63
|
+
- 添加 **CRITICAL** 问题:`Task incomplete: <task-id> - <description>`
|
|
64
|
+
- 建议:`Complete task or mark as done if already implemented`
|
|
65
|
+
|
|
66
|
+
**4.2 影响面覆盖验证**(棕地特色)
|
|
67
|
+
|
|
68
|
+
仅适用于标准级/完整级流程:
|
|
69
|
+
|
|
70
|
+
- 读取 `artifacts/impact-analysis.md`
|
|
71
|
+
- 提取影响点列表:
|
|
72
|
+
- 数据库表
|
|
73
|
+
- 实体类
|
|
74
|
+
- 服务类
|
|
75
|
+
- 控制器
|
|
76
|
+
- 前端页面
|
|
77
|
+
- 对每个影响点:
|
|
78
|
+
- 搜索代码库验证是否有相应修改
|
|
79
|
+
- 检查 git diff 或最近的提交
|
|
80
|
+
- 如果影响点未覆盖:
|
|
81
|
+
- 添加 **CRITICAL** 问题:`Impact point not covered: <entity/service/table>`
|
|
82
|
+
- 建议:`Implement changes for <specific-file>:<line> as per impact analysis`
|
|
83
|
+
|
|
84
|
+
5. **验证 Correctness(正确性)**
|
|
85
|
+
|
|
86
|
+
**5.1 需求实现映射**(借鉴 OpenSpec)
|
|
87
|
+
|
|
88
|
+
- 提取需求关键点:
|
|
89
|
+
- 轻量级:从 proposal.md 提取 What 部分
|
|
90
|
+
- 标准级/完整级:从 understanding.md 提取需求描述
|
|
91
|
+
- 对每个需求点:
|
|
92
|
+
- 搜索代码库查找实现证据
|
|
93
|
+
- 如果找到,记录文件路径和行号
|
|
94
|
+
- 评估实现是否符合需求意图
|
|
95
|
+
- 如果需求未实现或偏离:
|
|
96
|
+
- 添加 **WARNING** 问题:`Requirement not found or diverges: <requirement>`
|
|
97
|
+
- 建议:`Review <file>:<lines> against requirement`
|
|
98
|
+
|
|
99
|
+
**5.2 业务规则验证**(棕地特色)
|
|
100
|
+
|
|
101
|
+
仅适用于标准级/完整级流程:
|
|
102
|
+
|
|
103
|
+
- 读取 `artifacts/impact-analysis.md` 中的"业务规则确认"部分
|
|
104
|
+
- 提取关键业务规则:
|
|
105
|
+
- 必填校验
|
|
106
|
+
- 不可修改约束
|
|
107
|
+
- 继承逻辑
|
|
108
|
+
- 数据同步规则
|
|
109
|
+
- 对每个业务规则:
|
|
110
|
+
- 搜索代码库验证实现
|
|
111
|
+
- 检查校验逻辑、约束条件
|
|
112
|
+
- 如果业务规则未实现:
|
|
113
|
+
- 添加 **CRITICAL** 问题:`Business rule not implemented: <rule>`
|
|
114
|
+
- 建议:`Add validation/constraint in <service>:<method>`
|
|
115
|
+
|
|
116
|
+
**5.3 场景覆盖验证**(借鉴 OpenSpec)
|
|
117
|
+
|
|
118
|
+
- 提取测试场景:
|
|
119
|
+
- 从 design.md 的测试方案部分
|
|
120
|
+
- 从 tasks.md 的测试任务
|
|
121
|
+
- 对每个场景:
|
|
122
|
+
- 检查是否有对应的测试代码
|
|
123
|
+
- 检查测试是否通过
|
|
124
|
+
- 如果场景未覆盖:
|
|
125
|
+
- 添加 **WARNING** 问题:`Scenario not covered: <scenario>`
|
|
126
|
+
- 建议:`Add test for scenario: <description>`
|
|
127
|
+
|
|
128
|
+
6. **验证 Coherence(一致性)**
|
|
129
|
+
|
|
130
|
+
**6.1 设计遵循验证**(借鉴 OpenSpec)
|
|
131
|
+
|
|
132
|
+
- 读取 `artifacts/design.md` 或 `artifacts/03-technical-design.md`
|
|
133
|
+
- 提取关键设计决策:
|
|
134
|
+
- 数据库变更方案
|
|
135
|
+
- 代码实现方案
|
|
136
|
+
- 前端 UI 方案
|
|
137
|
+
- 验证实现是否遵循设计:
|
|
138
|
+
- 检查数据库字段是否按设计添加
|
|
139
|
+
- 检查代码结构是否符合设计
|
|
140
|
+
- 检查 UI 是否按设计实现
|
|
141
|
+
- 如果设计未遵循:
|
|
142
|
+
- 添加 **WARNING** 问题:`Design decision not followed: <decision>`
|
|
143
|
+
- 建议:`Update implementation or revise design.md to match reality`
|
|
144
|
+
|
|
145
|
+
**6.2 代码模式一致性**(借鉴 OpenSpec)
|
|
146
|
+
|
|
147
|
+
- 检查新代码的一致性:
|
|
148
|
+
- 文件命名规范
|
|
149
|
+
- 目录结构
|
|
150
|
+
- 编码风格
|
|
151
|
+
- 错误处理模式
|
|
152
|
+
- 如果有明显偏离:
|
|
153
|
+
- 添加 **SUGGESTION** 问题:`Code pattern deviation: <details>`
|
|
154
|
+
- 建议:`Consider following project pattern: <example>`
|
|
155
|
+
|
|
156
|
+
**6.3 非功能需求符合验证**(棕地特色)
|
|
157
|
+
|
|
158
|
+
仅适用于完整级流程:
|
|
159
|
+
|
|
160
|
+
- 读取 `artifacts/impact-analysis.md` 中的"非功能需求评估"部分
|
|
161
|
+
- 验证四个维度:
|
|
162
|
+
|
|
163
|
+
**性能**:
|
|
164
|
+
- 检查是否添加了必要的索引
|
|
165
|
+
- 检查是否优化了查询
|
|
166
|
+
- 检查是否有性能测试
|
|
167
|
+
- 如果性能要求未满足:
|
|
168
|
+
- 添加 **WARNING** 问题:`Performance requirement not met: <requirement>`
|
|
169
|
+
- 建议:`Add index/optimize query in <file>:<line>`
|
|
170
|
+
|
|
171
|
+
**安全**:
|
|
172
|
+
- 检查是否有权限控制
|
|
173
|
+
- 检查是否有数据脱敏
|
|
174
|
+
- 检查是否有审计日志
|
|
175
|
+
- 如果安全要求未满足:
|
|
176
|
+
- 添加 **CRITICAL** 问题:`Security requirement not met: <requirement>`
|
|
177
|
+
- 建议:`Add permission check/audit log in <file>:<line>`
|
|
178
|
+
|
|
179
|
+
**可用性**:
|
|
180
|
+
- 检查是否有降级方案
|
|
181
|
+
- 检查是否有监控告警
|
|
182
|
+
- 如果可用性要求未满足:
|
|
183
|
+
- 添加 **WARNING** 问题:`Availability requirement not met: <requirement>`
|
|
184
|
+
- 建议:`Add fallback/monitoring in <file>:<line>`
|
|
185
|
+
|
|
186
|
+
**可维护性**:
|
|
187
|
+
- 检查代码注释是否充分
|
|
188
|
+
- 检查是否有文档更新
|
|
189
|
+
- 如果可维护性要求未满足:
|
|
190
|
+
- 添加 **SUGGESTION** 问题:`Maintainability concern: <details>`
|
|
191
|
+
- 建议:`Add comments/update docs`
|
|
192
|
+
|
|
193
|
+
7. **生成验证报告**
|
|
194
|
+
|
|
195
|
+
创建 `6aspecdoc/brown/<name>/artifacts/verification-report.md`(标准级/完整级)或 `6aspecdoc/brown/<name>/artifacts/05-verification-report.md`(完整级):
|
|
196
|
+
|
|
197
|
+
```markdown
|
|
198
|
+
# 验证报告:<name>
|
|
199
|
+
|
|
200
|
+
> **需求**: <name>
|
|
201
|
+
> **流程深度**: 轻量级/标准级/完整级
|
|
202
|
+
> **验证时间**: <timestamp>
|
|
203
|
+
> **验证状态**: ✅ 通过 / ⚠️ 有警告 / ❌ 有严重问题
|
|
204
|
+
|
|
205
|
+
## 验证概览
|
|
206
|
+
|
|
207
|
+
| 维度 | 状态 | 说明 |
|
|
208
|
+
|------|------|------|
|
|
209
|
+
| Completeness(完整性) | X/Y 任务, M/N 影响点 | <说明> |
|
|
210
|
+
| Correctness(正确性) | P/Q 需求, R/S 业务规则 | <说明> |
|
|
211
|
+
| Coherence(一致性) | 设计遵循/代码一致 | <说明> |
|
|
212
|
+
|
|
213
|
+
## 问题清单
|
|
214
|
+
|
|
215
|
+
### CRITICAL(必须修复)
|
|
216
|
+
|
|
217
|
+
如果有 CRITICAL 问题,列出:
|
|
218
|
+
|
|
219
|
+
#### 1. Task incomplete: TASK-003
|
|
220
|
+
- **问题**: 任务未完成:领域服务逻辑实现
|
|
221
|
+
- **位置**: tasks/TASK-003.md
|
|
222
|
+
- **建议**: Complete task or mark as done if already implemented
|
|
223
|
+
|
|
224
|
+
#### 2. Business rule not implemented: 不可修改约束
|
|
225
|
+
- **问题**: 业务规则未实现:项目类型一旦确定后不允许修改
|
|
226
|
+
- **位置**: 应该在 ProjectDomainService:save() 中
|
|
227
|
+
- **建议**: Add validation in ProjectDomainService:save() to prevent modification
|
|
228
|
+
|
|
229
|
+
### WARNING(应该修复)
|
|
230
|
+
|
|
231
|
+
如果有 WARNING 问题,列出:
|
|
232
|
+
|
|
233
|
+
#### 1. Design decision not followed: 索引优化
|
|
234
|
+
- **问题**: 设计中要求添加索引,但未找到相应的数据库迁移脚本
|
|
235
|
+
- **位置**: design.md 第 45 行
|
|
236
|
+
- **建议**: Add database migration script for index creation
|
|
237
|
+
|
|
238
|
+
### SUGGESTION(建议修复)
|
|
239
|
+
|
|
240
|
+
如果有 SUGGESTION 问题,列出:
|
|
241
|
+
|
|
242
|
+
#### 1. Code pattern deviation: 错误处理
|
|
243
|
+
- **问题**: 新代码使用了不同的错误处理模式
|
|
244
|
+
- **位置**: ProjectApplicationService:123
|
|
245
|
+
- **建议**: Consider using BusinessLogicException pattern like other services
|
|
246
|
+
|
|
247
|
+
## 最终评估
|
|
248
|
+
|
|
249
|
+
根据问题严重程度给出评估:
|
|
250
|
+
|
|
251
|
+
- 如果有 CRITICAL 问题:
|
|
252
|
+
```
|
|
253
|
+
❌ 发现 X 个严重问题,必须修复后才能归档。
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
- 如果只有 WARNING:
|
|
257
|
+
```
|
|
258
|
+
⚠️ 没有严重问题,但有 Y 个警告需要考虑。可以归档,但建议修复警告。
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
- 如果全部通过:
|
|
262
|
+
```
|
|
263
|
+
✅ 所有检查通过,可以归档。
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
## 验证详情
|
|
267
|
+
|
|
268
|
+
### Completeness 详情
|
|
269
|
+
...
|
|
270
|
+
|
|
271
|
+
### Correctness 详情
|
|
272
|
+
...
|
|
273
|
+
|
|
274
|
+
### Coherence 详情
|
|
275
|
+
...
|
|
276
|
+
|
|
277
|
+
## 下一步
|
|
278
|
+
|
|
279
|
+
根据验证结果给出建议:
|
|
280
|
+
- 如果有 CRITICAL:修复严重问题后重新验证
|
|
281
|
+
- 如果只有 WARNING:可以归档,但建议修复警告
|
|
282
|
+
- 如果全部通过:运行 `/6aspec:brown:review` 进行实施后评估(完整级)或 `/6aspec:brown:archive` 归档
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
8. **更新状态**
|
|
286
|
+
|
|
287
|
+
如果验证通过(无 CRITICAL 问题),更新 `status.json`:
|
|
288
|
+
```json
|
|
289
|
+
{
|
|
290
|
+
"status": "review_pending",
|
|
291
|
+
"status": "completed",
|
|
292
|
+
"phases": {
|
|
293
|
+
...
|
|
294
|
+
"verify": "done",
|
|
295
|
+
"review": "pending"
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
**输出**
|
|
301
|
+
|
|
302
|
+
```
|
|
303
|
+
## 验证完成:<name>
|
|
304
|
+
|
|
305
|
+
**流程深度**: 轻量级/标准级/完整级
|
|
306
|
+
**验证状态**: ✅ 通过 / ⚠️ 有警告 / ❌ 有严重问题
|
|
307
|
+
|
|
308
|
+
### 验证概览
|
|
309
|
+
- Completeness: X/Y 任务完成, M/N 影响点覆盖
|
|
310
|
+
- Correctness: P/Q 需求实现, R/S 业务规则验证
|
|
311
|
+
- Coherence: 设计遵循/代码一致
|
|
312
|
+
|
|
313
|
+
### 问题统计
|
|
314
|
+
- CRITICAL: X 个(必须修复)
|
|
315
|
+
- WARNING: Y 个(应该修复)
|
|
316
|
+
- SUGGESTION: Z 个(建议修复)
|
|
317
|
+
|
|
318
|
+
### 最终评估
|
|
319
|
+
<根据问题严重程度给出评估>
|
|
320
|
+
|
|
321
|
+
### 文档位置
|
|
322
|
+
6aspecdoc/brown/<name>/artifacts/verification-report.md
|
|
323
|
+
|
|
324
|
+
### 下一步
|
|
325
|
+
<根据验证结果给出建议>
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
**验证启发式规则**(借鉴 OpenSpec)
|
|
329
|
+
|
|
330
|
+
- **Completeness**:关注客观的检查清单项(checkbox、影响点列表)
|
|
331
|
+
- **Correctness**:使用关键词搜索、文件路径分析、合理推断 - 不要求完美确定性
|
|
332
|
+
- **Coherence**:寻找明显的不一致,不要过度挑剔风格
|
|
333
|
+
- **误报处理**:不确定时,优先使用 SUGGESTION 而不是 WARNING,WARNING 而不是 CRITICAL
|
|
334
|
+
- **可操作性**:每个问题必须有具体的、可操作的建议,包含文件/行号引用
|
|
335
|
+
|
|
336
|
+
**优雅降级**(借鉴 OpenSpec)
|
|
337
|
+
|
|
338
|
+
根据流程深度调整验证范围:
|
|
339
|
+
|
|
340
|
+
- **轻量级流程**:
|
|
341
|
+
- 验证:任务完成度 + 设计遵循
|
|
342
|
+
- 跳过:影响面覆盖、业务规则、非功能需求
|
|
343
|
+
- 说明:`Lightweight flow: skipped impact/business rule checks`
|
|
344
|
+
|
|
345
|
+
- **标准级流程**:
|
|
346
|
+
- 验证:任务完成度 + 影响面覆盖 + 业务规则 + 设计遵循
|
|
347
|
+
- 跳过:非功能需求详细验证
|
|
348
|
+
- 说明:`Standard flow: skipped detailed non-functional requirement checks`
|
|
349
|
+
|
|
350
|
+
- **完整级流程**:
|
|
351
|
+
- 验证:所有三个维度的全部检查
|
|
352
|
+
- 说明:`Complete flow: all checks performed`
|
|
353
|
+
|
|
354
|
+
**防护措施**
|
|
355
|
+
- 必须先完成 Phase 5(implement)
|
|
356
|
+
- 验证必须基于文档基准,不能主观判断
|
|
357
|
+
- 发现问题必须明确标注严重程度(CRITICAL/WARNING/SUGGESTION)
|
|
358
|
+
- 每个问题必须提供具体的、可操作的建议
|
|
359
|
+
- 如果验证未通过(有 CRITICAL 问题),不能进入下一阶段
|
|
360
|
+
- 根据流程深度优雅降级,不要对轻量级流程执行完整级的验证
|
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
# 绿地需求归档 SOP
|
|
2
|
+
|
|
3
|
+
## 目标
|
|
4
|
+
|
|
5
|
+
归档已完成的绿地需求,将需求目录移动到归档位置,并更新状态。
|
|
6
|
+
|
|
7
|
+
## 前置条件
|
|
8
|
+
|
|
9
|
+
- 需求的所有工件已完成
|
|
10
|
+
- 需求的所有任务已完成
|
|
11
|
+
- 需求状态为 `completed`
|
|
12
|
+
|
|
13
|
+
## 执行步骤
|
|
14
|
+
|
|
15
|
+
### Step 1: 检测当前需求
|
|
16
|
+
|
|
17
|
+
**1.1 检查是否在需求目录下**
|
|
18
|
+
|
|
19
|
+
检查当前工作目录是否在 `6aspecdoc/green/<feature-name>/` 下:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
pwd
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
如果在需求目录下,自动识别需求名称(从路径中提取)。
|
|
26
|
+
|
|
27
|
+
**1.2 如果不在需求目录下,列出所有可归档的需求**
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
find 6aspecdoc/green -maxdepth 2 -name ".green-status.json" -type f
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
读取每个状态文件,筛选出状态为 `completed` 的需求。
|
|
34
|
+
|
|
35
|
+
如果找到多个可归档的需求,使用 **AskUserQuestion** 让用户选择要归档的需求。
|
|
36
|
+
|
|
37
|
+
选项应该显示:
|
|
38
|
+
- 需求名称
|
|
39
|
+
- 完成时间
|
|
40
|
+
- 任务完成情况(如:8/8 任务已完成)
|
|
41
|
+
|
|
42
|
+
如果没有找到任何可归档的需求,输出:
|
|
43
|
+
```
|
|
44
|
+
未找到可归档的需求。
|
|
45
|
+
|
|
46
|
+
只有状态为 "completed" 的需求才能归档。
|
|
47
|
+
|
|
48
|
+
运行 /6aspec:green:status 查看当前需求状态。
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Step 2: 读取状态文件
|
|
52
|
+
|
|
53
|
+
读取 `6aspecdoc/green/<feature-name>/.green-status.json` 文件。
|
|
54
|
+
|
|
55
|
+
如果文件不存在或格式错误,输出错误信息并退出。
|
|
56
|
+
|
|
57
|
+
### Step 3: 检查归档条件
|
|
58
|
+
|
|
59
|
+
**3.1 检查工件完成状态**
|
|
60
|
+
|
|
61
|
+
检查状态文件中的 `artifacts` 字段,确认所有工件的状态都是 `done`:
|
|
62
|
+
|
|
63
|
+
```json
|
|
64
|
+
{
|
|
65
|
+
"artifacts": {
|
|
66
|
+
"requirement": { "status": "done" },
|
|
67
|
+
"models": { "status": "done" },
|
|
68
|
+
"design": { "status": "done" },
|
|
69
|
+
"tasks": { "status": "done" }
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
如果有任何工件状态不是 `done`,**拒绝归档**,停止并提示:
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
❌ 未通过依赖检查,不允许归档
|
|
78
|
+
|
|
79
|
+
存在未完成的工件:
|
|
80
|
+
- <artifact-name>: <status>
|
|
81
|
+
|
|
82
|
+
请先完成主流程中对应步骤(new → model → design → tasks),待所有工件状态为 done 后再运行 /6aspec:green:archive。
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**3.2 检查任务完成状态**
|
|
86
|
+
|
|
87
|
+
检查状态文件中的 `tasks` 字段:
|
|
88
|
+
|
|
89
|
+
```json
|
|
90
|
+
{
|
|
91
|
+
"tasks": {
|
|
92
|
+
"total": 8,
|
|
93
|
+
"completed": 8,
|
|
94
|
+
"remaining": 0
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
如果 `completed` < `total`,**拒绝归档**,停止并提示:
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
❌ 未通过依赖检查,不允许归档
|
|
103
|
+
|
|
104
|
+
任务进度:<completed>/<total> 已完成,剩余 <remaining> 个任务未完成。
|
|
105
|
+
|
|
106
|
+
请先运行 /6aspec:green:execute-task 完成所有任务,待状态变为 completed 后再运行 /6aspec:green:archive。
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**3.3 检查状态(硬性门禁)**
|
|
110
|
+
|
|
111
|
+
如果状态不是 `completed`,**拒绝归档**,不得提供“仍要继续”选项,直接停止并提示:
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
❌ 未通过依赖检查,不允许归档
|
|
115
|
+
|
|
116
|
+
当前状态:<current-status>
|
|
117
|
+
要求状态:completed(所有任务已完成)
|
|
118
|
+
|
|
119
|
+
归档前必须完成主流程至“所有任务已完成”。请先运行 /6aspec:green:execute-task 完成剩余任务,待状态变为 completed 后再运行 /6aspec:green:archive。
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Step 4: 执行归档
|
|
123
|
+
|
|
124
|
+
**4.1 创建归档目录**
|
|
125
|
+
|
|
126
|
+
如果归档目录不存在,创建它:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
mkdir -p 6aspecdoc/green/archive
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**4.2 生成归档目标名称**
|
|
133
|
+
|
|
134
|
+
使用当前日期和需求名称生成归档目标名称:
|
|
135
|
+
|
|
136
|
+
格式:`YYYY-MM-DD-<feature-name>`
|
|
137
|
+
|
|
138
|
+
例如:`2026-02-16-user-authentication`
|
|
139
|
+
|
|
140
|
+
**4.3 检查目标是否已存在**
|
|
141
|
+
|
|
142
|
+
检查归档目标目录是否已存在:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
ls -d 6aspecdoc/green/archive/YYYY-MM-DD-<feature-name> 2>/dev/null
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
如果已存在,输出错误并停止:
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
❌ 归档失败
|
|
152
|
+
|
|
153
|
+
目标目录已存在:6aspecdoc/green/archive/YYYY-MM-DD-<feature-name>
|
|
154
|
+
|
|
155
|
+
可能的原因:
|
|
156
|
+
1. 今天已经归档过同名需求
|
|
157
|
+
2. 归档目录中存在重复
|
|
158
|
+
|
|
159
|
+
建议:
|
|
160
|
+
1. 重命名现有归档目录
|
|
161
|
+
2. 删除现有归档(如果是重复的)
|
|
162
|
+
3. 等到明天再归档
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**4.4 移动需求目录**
|
|
166
|
+
|
|
167
|
+
将需求目录移动到归档位置:
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
mv 6aspecdoc/green/<feature-name> 6aspecdoc/green/archive/YYYY-MM-DD-<feature-name>
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
**4.5 更新状态文件**
|
|
174
|
+
|
|
175
|
+
读取归档后的状态文件,更新状态:
|
|
176
|
+
|
|
177
|
+
```json
|
|
178
|
+
{
|
|
179
|
+
"status": "archived",
|
|
180
|
+
"lastModified": "<current-timestamp>"
|
|
181
|
+
}
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
写回状态文件:
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
# 更新 6aspecdoc/green/archive/YYYY-MM-DD-<feature-name>/.green-status.json
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### Step 5: 显示归档摘要
|
|
191
|
+
|
|
192
|
+
输出归档完成的摘要信息:
|
|
193
|
+
|
|
194
|
+
```
|
|
195
|
+
✅ 归档完成
|
|
196
|
+
|
|
197
|
+
需求:<feature-name>
|
|
198
|
+
归档位置:6aspecdoc/green/archive/YYYY-MM-DD-<feature-name>/
|
|
199
|
+
归档时间:<current-timestamp>
|
|
200
|
+
|
|
201
|
+
工件完成情况:
|
|
202
|
+
✓ 需求澄清文档
|
|
203
|
+
✓ 领域模型
|
|
204
|
+
✓ 技术方案
|
|
205
|
+
✓ 任务列表
|
|
206
|
+
|
|
207
|
+
任务完成情况:
|
|
208
|
+
✓ 所有任务已完成 (<total>/<total>)
|
|
209
|
+
|
|
210
|
+
状态:已归档
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
如果有警告(如未完成的工件或任务),在摘要中显示:
|
|
214
|
+
|
|
215
|
+
```
|
|
216
|
+
✅ 归档完成(带警告)
|
|
217
|
+
|
|
218
|
+
需求:<feature-name>
|
|
219
|
+
归档位置:6aspecdoc/green/archive/YYYY-MM-DD-<feature-name>/
|
|
220
|
+
归档时间:<current-timestamp>
|
|
221
|
+
|
|
222
|
+
⚠️ 警告:
|
|
223
|
+
- 归档时有 <N> 个工件未完成
|
|
224
|
+
- 归档时有 <M> 个任务未完成
|
|
225
|
+
|
|
226
|
+
请检查归档内容是否符合预期。
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
## 错误处理
|
|
230
|
+
|
|
231
|
+
### 错误 1: 状态文件不存在
|
|
232
|
+
|
|
233
|
+
```
|
|
234
|
+
错误:未找到状态文件
|
|
235
|
+
|
|
236
|
+
路径:6aspecdoc/green/<feature-name>/.green-status.json
|
|
237
|
+
|
|
238
|
+
无法归档没有状态文件的需求。
|
|
239
|
+
|
|
240
|
+
建议:
|
|
241
|
+
1. 检查需求目录是否正确
|
|
242
|
+
2. 手动创建状态文件(参考 green_status_schema.md)
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
### 错误 2: 归档目录已存在
|
|
246
|
+
|
|
247
|
+
```
|
|
248
|
+
错误:归档目标已存在
|
|
249
|
+
|
|
250
|
+
目标:6aspecdoc/green/archive/YYYY-MM-DD-<feature-name>/
|
|
251
|
+
|
|
252
|
+
建议:
|
|
253
|
+
1. 重命名现有归档目录
|
|
254
|
+
2. 删除现有归档(如果是重复的)
|
|
255
|
+
3. 等到明天再归档
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
### 错误 3: 移动失败
|
|
259
|
+
|
|
260
|
+
```
|
|
261
|
+
错误:无法移动需求目录
|
|
262
|
+
|
|
263
|
+
源:6aspecdoc/green/<feature-name>
|
|
264
|
+
目标:6aspecdoc/green/archive/YYYY-MM-DD-<feature-name>
|
|
265
|
+
|
|
266
|
+
错误信息:<error-message>
|
|
267
|
+
|
|
268
|
+
请检查文件权限和磁盘空间。
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
## 注意事项
|
|
272
|
+
|
|
273
|
+
1. **不可逆操作**:归档是移动操作,不是复制。归档后原位置的需求目录将不存在
|
|
274
|
+
2. **状态检查**:归档前会检查工件和任务完成状态,但允许用户强制归档
|
|
275
|
+
3. **日期命名**:使用日期前缀可以方便地按时间排序归档
|
|
276
|
+
4. **状态更新**:归档后状态文件会被更新为 `archived`
|
|
277
|
+
5. **保留结构**:归档时保留完整的需求目录结构,包括所有文件和子目录
|
|
278
|
+
|
|
279
|
+
## 归档后的目录结构
|
|
280
|
+
|
|
281
|
+
```
|
|
282
|
+
6aspecdoc/green/
|
|
283
|
+
├── archive/
|
|
284
|
+
│ ├── 2026-02-15-feature-a/
|
|
285
|
+
│ │ ├── .green-status.json
|
|
286
|
+
│ │ ├── requirement.md
|
|
287
|
+
│ │ ├── domain-model.md
|
|
288
|
+
│ │ ├── tech-design.md
|
|
289
|
+
│ │ ├── api-definition.md
|
|
290
|
+
│ │ ├── tasks/
|
|
291
|
+
│ │ └── ...
|
|
292
|
+
│ └── 2026-02-16-feature-b/
|
|
293
|
+
│ └── ...
|
|
294
|
+
└── active-feature/
|
|
295
|
+
└── ...
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
## 参考文档
|
|
299
|
+
|
|
300
|
+
- 状态文件结构定义:`.6aspec/rules/green/green_status_schema.md`
|
|
301
|
+
- 状态查询SOP:`.6aspec/rules/green/6A_status_sop.md`
|