specops 0.2.4 → 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/.opencode/agent/specops-codebase-mapper.md +764 -0
- package/.opencode/agent/specops-debugger.md +1246 -0
- package/.opencode/agent/specops-executor.md +469 -0
- package/.opencode/agent/specops-integration-checker.md +443 -0
- package/.opencode/agent/specops-phase-researcher.md +547 -0
- package/.opencode/agent/specops-plan-checker.md +690 -0
- package/.opencode/agent/specops-planner.md +575 -0
- package/.opencode/agent/specops-project-researcher.md +354 -0
- package/.opencode/agent/specops-research-synthesizer.md +239 -0
- package/.opencode/agent/specops-roadmapper.md +642 -0
- package/.opencode/agent/specops-work-verifier.md +573 -0
- package/.opencode/references/checkpoints.md +776 -0
- package/.opencode/references/continuation-format.md +249 -0
- package/.opencode/references/decimal-phase-calculation.md +65 -0
- package/.opencode/references/git-integration.md +248 -0
- package/.opencode/references/git-planning-commit.md +38 -0
- package/.opencode/references/model-profile-resolution.md +34 -0
- package/.opencode/references/model-profiles.md +92 -0
- package/.opencode/references/phase-argument-parsing.md +61 -0
- package/.opencode/references/planning-config.md +196 -0
- package/.opencode/references/questioning.md +145 -0
- package/.opencode/references/tdd.md +263 -0
- package/.opencode/references/ui-brand.md +160 -0
- package/.opencode/references/verification-patterns.md +612 -0
- package/.opencode/skills/demand-analysis/SKILL.md +142 -10
- package/.opencode/templates/DEBUG.md +164 -0
- package/.opencode/templates/UAT.md +180 -0
- package/.opencode/templates/VALIDATION.md +76 -0
- package/.opencode/templates/codebase/architecture.md +255 -0
- package/.opencode/templates/codebase/concerns.md +310 -0
- package/.opencode/templates/codebase/conventions.md +307 -0
- package/.opencode/templates/codebase/integrations.md +280 -0
- package/.opencode/templates/codebase/stack.md +186 -0
- package/.opencode/templates/codebase/structure.md +285 -0
- package/.opencode/templates/codebase/testing.md +480 -0
- package/.opencode/templates/context.md +221 -0
- package/.opencode/templates/continue-here.md +78 -0
- package/.opencode/templates/debug-subagent-prompt.md +91 -0
- package/.opencode/templates/discovery.md +147 -0
- package/.opencode/templates/milestone-archive.md +123 -0
- package/.opencode/templates/milestone.md +115 -0
- package/.opencode/templates/phase-prompt.md +333 -0
- package/.opencode/templates/planner-subagent-prompt.md +117 -0
- package/.opencode/templates/project.md +184 -0
- package/.opencode/templates/requirements.md +130 -0
- package/.opencode/templates/research-project/ARCHITECTURE.md +204 -0
- package/.opencode/templates/research-project/FEATURES.md +147 -0
- package/.opencode/templates/research-project/PITFALLS.md +200 -0
- package/.opencode/templates/research-project/STACK.md +120 -0
- package/.opencode/templates/research-project/SUMMARY.md +170 -0
- package/.opencode/templates/research.md +278 -0
- package/.opencode/templates/retrospective.md +54 -0
- package/.opencode/templates/roadmap.md +202 -0
- package/.opencode/templates/state.md +176 -0
- package/.opencode/templates/summary-complex.md +59 -0
- package/.opencode/templates/summary-minimal.md +41 -0
- package/.opencode/templates/summary-standard.md +48 -0
- package/.opencode/templates/summary.md +248 -0
- package/.opencode/templates/user-setup.md +311 -0
- package/.opencode/templates/verification-report.md +322 -0
- package/.opencode/workflows/add-phase.md +111 -0
- package/.opencode/workflows/add-tests.md +350 -0
- package/.opencode/workflows/add-todo.md +157 -0
- package/.opencode/workflows/audit-milestone.md +297 -0
- package/.opencode/workflows/check-todos.md +176 -0
- package/.opencode/workflows/cleanup.md +152 -0
- package/.opencode/workflows/complete-milestone.md +763 -0
- package/.opencode/workflows/diagnose-issues.md +219 -0
- package/.opencode/workflows/discovery-phase.md +288 -0
- package/.opencode/workflows/discuss-phase.md +542 -0
- package/.opencode/workflows/execute-phase.md +449 -0
- package/.opencode/workflows/execute-plan.md +447 -0
- package/.opencode/workflows/health.md +156 -0
- package/.opencode/workflows/help.md +489 -0
- package/.opencode/workflows/insert-phase.md +129 -0
- package/.opencode/workflows/list-phase-assumptions.md +178 -0
- package/.opencode/workflows/map-codebase.md +315 -0
- package/.opencode/workflows/new-milestone.md +382 -0
- package/.opencode/workflows/new-project.md +1116 -0
- package/.opencode/workflows/pause-work.md +122 -0
- package/.opencode/workflows/plan-milestone-gaps.md +274 -0
- package/.opencode/workflows/plan-phase.md +569 -0
- package/.opencode/workflows/progress.md +381 -0
- package/.opencode/workflows/quick.md +453 -0
- package/.opencode/workflows/remove-phase.md +154 -0
- package/.opencode/workflows/research-phase.md +73 -0
- package/.opencode/workflows/resume-project.md +304 -0
- package/.opencode/workflows/set-profile.md +80 -0
- package/.opencode/workflows/settings.md +213 -0
- package/.opencode/workflows/transition.md +544 -0
- package/.opencode/workflows/update.md +219 -0
- package/.opencode/workflows/verify-phase.md +242 -0
- package/.opencode/workflows/verify-work.md +569 -0
- package/commands/specops/add-phase.md +43 -0
- package/commands/specops/add-tests.md +41 -0
- package/commands/specops/add-todo.md +47 -0
- package/commands/specops/audit-milestone.md +36 -0
- package/commands/specops/check-todos.md +45 -0
- package/commands/specops/cleanup.md +18 -0
- package/commands/specops/complete-milestone.md +136 -0
- package/commands/specops/debug.md +167 -0
- package/commands/specops/discuss-phase.md +83 -0
- package/commands/specops/execute-phase.md +41 -0
- package/commands/specops/health.md +22 -0
- package/commands/specops/help.md +22 -0
- package/commands/specops/insert-phase.md +32 -0
- package/commands/specops/join-discord.md +18 -0
- package/commands/specops/list-phase-assumptions.md +46 -0
- package/commands/specops/map-codebase.md +71 -0
- package/commands/specops/new-milestone.md +44 -0
- package/commands/specops/new-project.md +42 -0
- package/commands/specops/pause-work.md +38 -0
- package/commands/specops/plan-milestone-gaps.md +34 -0
- package/commands/specops/plan-phase.md +45 -0
- package/commands/specops/progress.md +24 -0
- package/commands/specops/quick.md +41 -0
- package/commands/specops/reapply-patches.md +111 -0
- package/commands/specops/remove-phase.md +31 -0
- package/commands/specops/research-phase.md +189 -0
- package/commands/specops/resume-work.md +40 -0
- package/commands/specops/set-profile.md +34 -0
- package/commands/specops/settings.md +36 -0
- package/commands/specops/update.md +37 -0
- package/commands/specops/verify-work.md +38 -0
- package/dist/__e2e__/01-state-engine.e2e.test.js +1 -1
- package/dist/acceptance/lazyDetector.js +1 -1
- package/dist/acceptance/lazyDetector.test.js +1 -1
- package/dist/acceptance/reporter.js +1 -1
- package/dist/acceptance/reporter.test.js +1 -1
- package/dist/acceptance/runner.js +1 -1
- package/dist/acceptance/runner.test.js +1 -1
- package/dist/cli.js +1 -1
- package/dist/context/index.js +1 -1
- package/dist/context/promptTemplate.js +1 -1
- package/dist/context/promptTemplate.test.js +1 -1
- package/dist/context/techContextLoader.js +1 -1
- package/dist/context/techContextLoader.test.js +1 -1
- package/dist/engine.js +1 -1
- package/dist/evolution/distiller.js +1 -1
- package/dist/evolution/index.js +1 -1
- package/dist/evolution/memoryGraph.js +1 -1
- package/dist/evolution/selector.js +1 -1
- package/dist/evolution/signals.js +1 -1
- package/dist/evolution/solidify.js +1 -1
- package/dist/evolution/store.js +1 -1
- package/dist/evolution/types.js +1 -1
- package/dist/init.d.ts +4 -3
- package/dist/init.js +1 -1
- package/dist/machines/agentMachine.js +1 -1
- package/dist/machines/agentMachine.test.js +1 -1
- package/dist/machines/supervisorMachine.js +1 -1
- package/dist/machines/supervisorMachine.test.js +1 -1
- package/dist/persistence/schema.js +1 -1
- package/dist/persistence/stateFile.js +1 -1
- package/dist/persistence/stateFile.test.js +1 -1
- package/dist/plugin-engine.js +1 -1
- package/dist/plugin.js +1 -1
- package/dist/types/index.js +1 -1
- package/dist/utils/id.js +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,763 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
|
|
3
|
+
标记已发布的版本(v1.0、v1.1、v2.0)为完成。在 MILESTONES.md 中创建历史记录,执行完整的 PROJECT.md 演进审查,使用里程碑分组重组 ROADMAP.md,并在 git 中标记发布。
|
|
4
|
+
|
|
5
|
+
</purpose>
|
|
6
|
+
|
|
7
|
+
<required_reading>
|
|
8
|
+
|
|
9
|
+
1. templates/milestone.md
|
|
10
|
+
2. templates/milestone-archive.md
|
|
11
|
+
3. `.planning/ROADMAP.md`
|
|
12
|
+
4. `.planning/REQUIREMENTS.md`
|
|
13
|
+
5. `.planning/PROJECT.md`
|
|
14
|
+
|
|
15
|
+
</required_reading>
|
|
16
|
+
|
|
17
|
+
<archival_behavior>
|
|
18
|
+
|
|
19
|
+
里程碑完成时:
|
|
20
|
+
|
|
21
|
+
1. 将完整里程碑详情提取到 `.planning/milestones/v[X.Y]-ROADMAP.md`
|
|
22
|
+
2. 将需求归档到 `.planning/milestones/v[X.Y]-REQUIREMENTS.md`
|
|
23
|
+
3. 更新 ROADMAP.md——用一行摘要替换里程碑详情
|
|
24
|
+
4. 删除 REQUIREMENTS.md(下一个里程碑全新开始)
|
|
25
|
+
5. 执行完整的 PROJECT.md 演进审查
|
|
26
|
+
6. 提供内联创建下一个里程碑的选项
|
|
27
|
+
|
|
28
|
+
**上下文效率:** 归档使 ROADMAP.md 保持恒定大小,REQUIREMENTS.md 保持里程碑范围。
|
|
29
|
+
|
|
30
|
+
**ROADMAP 归档**使用 `templates/milestone-archive.md`——包含里程碑头部(状态、阶段、日期)、完整阶段详情、里程碑摘要(决策、问题、技术债务)。
|
|
31
|
+
|
|
32
|
+
**REQUIREMENTS 归档**包含所有标记为完成的需求及结果、含最终状态的可追溯表、变更需求说明。
|
|
33
|
+
|
|
34
|
+
</archival_behavior>
|
|
35
|
+
|
|
36
|
+
<process>
|
|
37
|
+
|
|
38
|
+
<step name="verify_readiness">
|
|
39
|
+
|
|
40
|
+
**使用 `roadmap analyze` 进行全面就绪检查:**
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
ROADMAP=$(node .opencode/bin/specops-tools.cjs roadmap analyze)
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
这会返回所有阶段的计划/摘要计数和磁盘状态。用它来验证:
|
|
47
|
+
- 哪些阶段属于此里程碑?
|
|
48
|
+
- 所有阶段是否完成(所有计划都有摘要)?检查每个阶段的 `disk_status === 'complete'`。
|
|
49
|
+
- `progress_percent` 应为 100%。
|
|
50
|
+
|
|
51
|
+
**需求完成检查(展示前必须执行):**
|
|
52
|
+
|
|
53
|
+
解析 REQUIREMENTS.md 可追溯表:
|
|
54
|
+
- 统计 v1 总需求数与已勾选(`[x]`)需求数
|
|
55
|
+
- 识别可追溯表中所有非完成行
|
|
56
|
+
|
|
57
|
+
展示:
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
Milestone: [Name, e.g., "v1.0 MVP"]
|
|
61
|
+
|
|
62
|
+
Includes:
|
|
63
|
+
- Phase 1: Foundation (2/2 plans complete)
|
|
64
|
+
- Phase 2: Authentication (2/2 plans complete)
|
|
65
|
+
- Phase 3: Core Features (3/3 plans complete)
|
|
66
|
+
- Phase 4: Polish (1/1 plan complete)
|
|
67
|
+
|
|
68
|
+
Total: {phase_count} phases, {total_plans} plans, all complete
|
|
69
|
+
Requirements: {N}/{M} v1 requirements checked off
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**如果需求不完整**(N < M):
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
⚠ Unchecked Requirements:
|
|
76
|
+
|
|
77
|
+
- [ ] {REQ-ID}: {description} (Phase {X})
|
|
78
|
+
- [ ] {REQ-ID}: {description} (Phase {Y})
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
必须展示 3 个选项:
|
|
82
|
+
1. **继续** — 标记里程碑完成,记录已知差距
|
|
83
|
+
2. **先运行审计** — `/specops:audit-milestone` 评估差距严重程度
|
|
84
|
+
3. **中止** — 返回开发
|
|
85
|
+
|
|
86
|
+
如果用户选择「继续」:在 MILESTONES.md 的 `### Known Gaps` 下记录不完整的需求,包含 REQ-ID 和描述。
|
|
87
|
+
|
|
88
|
+
<config-check>
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
cat .planning/config.json 2>/dev/null
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
</config-check>
|
|
95
|
+
|
|
96
|
+
<if mode="yolo">
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
⚡ 自动批准:里程碑范围验证
|
|
100
|
+
[显示分解摘要,无需提示]
|
|
101
|
+
继续收集统计数据...
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
继续到 gather_stats。
|
|
105
|
+
|
|
106
|
+
</if>
|
|
107
|
+
|
|
108
|
+
<if mode="interactive" OR="custom with gates.confirm_milestone_scope true">
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
准备好标记此里程碑为已发布了吗?
|
|
112
|
+
(yes / wait / adjust scope)
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
等待确认。
|
|
116
|
+
- "adjust scope":询问要包含哪些阶段。
|
|
117
|
+
- "wait":停止,用户准备好后返回。
|
|
118
|
+
|
|
119
|
+
</if>
|
|
120
|
+
|
|
121
|
+
</step>
|
|
122
|
+
|
|
123
|
+
<step name="gather_stats">
|
|
124
|
+
|
|
125
|
+
计算里程碑统计数据:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
git log --oneline --grep="feat(" | head -20
|
|
129
|
+
git diff --stat FIRST_COMMIT..LAST_COMMIT | tail -1
|
|
130
|
+
find . -name "*.swift" -o -name "*.ts" -o -name "*.py" | xargs wc -l 2>/dev/null
|
|
131
|
+
git log --format="%ai" FIRST_COMMIT | tail -1
|
|
132
|
+
git log --format="%ai" LAST_COMMIT | head -1
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
展示:
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
里程碑统计:
|
|
139
|
+
- 阶段:[X-Y]
|
|
140
|
+
- 计划:[Z] 总计
|
|
141
|
+
- 任务:[N] 总计(来自阶段摘要)
|
|
142
|
+
- 修改文件:[M]
|
|
143
|
+
- 代码行数:[LOC] [language]
|
|
144
|
+
- 时间线:[Days] 天([Start] → [End])
|
|
145
|
+
- Git 范围:feat(XX-XX) → feat(YY-YY)
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
</step>
|
|
149
|
+
|
|
150
|
+
<step name="extract_accomplishments">
|
|
151
|
+
|
|
152
|
+
使用 summary-extract 从 SUMMARY.md 文件提取一句话摘要:
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
# For each phase in milestone, extract one-liner
|
|
156
|
+
for summary in .planning/phases/*-*/*-SUMMARY.md; do
|
|
157
|
+
node .opencode/bin/specops-tools.cjs summary-extract "$summary" --fields one_liner | jq -r '.one_liner'
|
|
158
|
+
done
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
提取 4-6 个关键成就。展示:
|
|
162
|
+
|
|
163
|
+
```
|
|
164
|
+
此里程碑的关键成就:
|
|
165
|
+
1. [阶段 1 的成就]
|
|
166
|
+
2. [阶段 2 的成就]
|
|
167
|
+
3. [阶段 3 的成就]
|
|
168
|
+
4. [阶段 4 的成就]
|
|
169
|
+
5. [阶段 5 的成就]
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
</step>
|
|
173
|
+
|
|
174
|
+
<step name="create_milestone_entry">
|
|
175
|
+
|
|
176
|
+
**注意:** MILESTONES.md 条目现在由 `specops-tools milestone complete` 在 archive_milestone 步骤中自动创建。该条目包含版本、日期、阶段/计划/任务计数,以及从 SUMMARY.md 文件提取的成就。
|
|
177
|
+
|
|
178
|
+
如果需要额外详情(如用户提供的「Delivered」摘要、git 范围、LOC 统计),在 CLI 创建基础条目后手动添加。
|
|
179
|
+
|
|
180
|
+
</step>
|
|
181
|
+
|
|
182
|
+
<step name="evolve_project_full_review">
|
|
183
|
+
|
|
184
|
+
里程碑完成时的完整 PROJECT.md 演进审查。
|
|
185
|
+
|
|
186
|
+
阅读所有阶段摘要:
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
cat .planning/phases/*-*/*-SUMMARY.md
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
**完整审查清单:**
|
|
193
|
+
|
|
194
|
+
1. **「What This Is」准确性:**
|
|
195
|
+
- 将当前描述与实际构建的内容进行比较
|
|
196
|
+
- 如果产品有实质性变化则更新
|
|
197
|
+
|
|
198
|
+
2. **核心价值检查:**
|
|
199
|
+
- 优先级仍然正确吗?发布是否揭示了不同的核心价值?
|
|
200
|
+
- 如果核心事项已转移则更新
|
|
201
|
+
|
|
202
|
+
3. **需求审计:**
|
|
203
|
+
|
|
204
|
+
**已验证部分:**
|
|
205
|
+
- 此里程碑发布的所有活跃需求 → 移至已验证
|
|
206
|
+
- 格式:`- ✓ [Requirement] — v[X.Y]`
|
|
207
|
+
|
|
208
|
+
**活跃部分:**
|
|
209
|
+
- 移除已移至已验证的需求
|
|
210
|
+
- 为下一个里程碑添加新需求
|
|
211
|
+
- 保留未处理的需求
|
|
212
|
+
|
|
213
|
+
**不在范围内审计:**
|
|
214
|
+
- 审查每个项目——理由是否仍然有效?
|
|
215
|
+
- 移除不相关的项目
|
|
216
|
+
- 添加在里程碑期间被否决的需求
|
|
217
|
+
|
|
218
|
+
4. **上下文更新:**
|
|
219
|
+
- 当前代码库状态(LOC、技术栈)
|
|
220
|
+
- 用户反馈主题(如有)
|
|
221
|
+
- 已知问题或技术债务
|
|
222
|
+
|
|
223
|
+
5. **关键决策审计:**
|
|
224
|
+
- 从里程碑阶段摘要提取所有决策
|
|
225
|
+
- 添加到关键决策表,含结果
|
|
226
|
+
- 标记 ✓ 良好、⚠️ 待复审 或 — 待定
|
|
227
|
+
|
|
228
|
+
6. **约束检查:**
|
|
229
|
+
- 开发过程中是否有约束变更?按需更新
|
|
230
|
+
|
|
231
|
+
内联更新 PROJECT.md。更新「Last updated」页脚:
|
|
232
|
+
|
|
233
|
+
```markdown
|
|
234
|
+
---
|
|
235
|
+
*Last updated: [date] after v[X.Y] milestone*
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
**完整演进示例(v1.0 → v1.1 准备):**
|
|
239
|
+
|
|
240
|
+
之前:
|
|
241
|
+
|
|
242
|
+
```markdown
|
|
243
|
+
## What This Is
|
|
244
|
+
|
|
245
|
+
A real-time collaborative whiteboard for remote teams.
|
|
246
|
+
|
|
247
|
+
## Core Value
|
|
248
|
+
|
|
249
|
+
Real-time sync that feels instant.
|
|
250
|
+
|
|
251
|
+
## Requirements
|
|
252
|
+
|
|
253
|
+
### Validated
|
|
254
|
+
|
|
255
|
+
(None yet — ship to validate)
|
|
256
|
+
|
|
257
|
+
### Active
|
|
258
|
+
|
|
259
|
+
- [ ] Canvas drawing tools
|
|
260
|
+
- [ ] Real-time sync < 500ms
|
|
261
|
+
- [ ] User authentication
|
|
262
|
+
- [ ] Export to PNG
|
|
263
|
+
|
|
264
|
+
### Out of Scope
|
|
265
|
+
|
|
266
|
+
- Mobile app — web-first approach
|
|
267
|
+
- Video chat — use external tools
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
v1.0 之后:
|
|
271
|
+
|
|
272
|
+
```markdown
|
|
273
|
+
## What This Is
|
|
274
|
+
|
|
275
|
+
A real-time collaborative whiteboard for remote teams with instant sync and drawing tools.
|
|
276
|
+
|
|
277
|
+
## Core Value
|
|
278
|
+
|
|
279
|
+
Real-time sync that feels instant.
|
|
280
|
+
|
|
281
|
+
## Requirements
|
|
282
|
+
|
|
283
|
+
### Validated
|
|
284
|
+
|
|
285
|
+
- ✓ Canvas drawing tools — v1.0
|
|
286
|
+
- ✓ Real-time sync < 500ms — v1.0 (achieved 200ms avg)
|
|
287
|
+
- ✓ User authentication — v1.0
|
|
288
|
+
|
|
289
|
+
### Active
|
|
290
|
+
|
|
291
|
+
- [ ] Export to PNG
|
|
292
|
+
- [ ] Undo/redo history
|
|
293
|
+
- [ ] Shape tools (rectangles, circles)
|
|
294
|
+
|
|
295
|
+
### Out of Scope
|
|
296
|
+
|
|
297
|
+
- Mobile app — web-first approach, PWA works well
|
|
298
|
+
- Video chat — use external tools
|
|
299
|
+
- Offline mode — real-time is core value
|
|
300
|
+
|
|
301
|
+
## Context
|
|
302
|
+
|
|
303
|
+
Shipped v1.0 with 2,400 LOC TypeScript.
|
|
304
|
+
Tech stack: Next.js, Supabase, Canvas API.
|
|
305
|
+
Initial user testing showed demand for shape tools.
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
**步骤完成条件:**
|
|
309
|
+
|
|
310
|
+
- [ ] 审查并按需更新「What This Is」
|
|
311
|
+
- [ ] 验证核心价值仍然正确
|
|
312
|
+
- [ ] 所有已发布需求移至已验证
|
|
313
|
+
- [ ] 为下一个里程碑添加新需求到活跃
|
|
314
|
+
- [ ] 审计不在范围内的理由
|
|
315
|
+
- [ ] 用当前状态更新上下文
|
|
316
|
+
- [ ] 所有里程碑决策添加到关键决策
|
|
317
|
+
- [ ] 「Last updated」页脚反映里程碑完成
|
|
318
|
+
|
|
319
|
+
</step>
|
|
320
|
+
|
|
321
|
+
<step name="reorganize_roadmap">
|
|
322
|
+
|
|
323
|
+
更新 `.planning/ROADMAP.md` — 对已完成的里程碑阶段进行分组:
|
|
324
|
+
|
|
325
|
+
```markdown
|
|
326
|
+
# Roadmap: [Project Name]
|
|
327
|
+
|
|
328
|
+
## Milestones
|
|
329
|
+
|
|
330
|
+
- ✅ **v1.0 MVP** — Phases 1-4 (shipped YYYY-MM-DD)
|
|
331
|
+
- 🚧 **v1.1 Security** — Phases 5-6 (in progress)
|
|
332
|
+
- 📋 **v2.0 Redesign** — Phases 7-10 (planned)
|
|
333
|
+
|
|
334
|
+
## Phases
|
|
335
|
+
|
|
336
|
+
<details>
|
|
337
|
+
<summary>✅ v1.0 MVP (Phases 1-4) — SHIPPED YYYY-MM-DD</summary>
|
|
338
|
+
|
|
339
|
+
- [x] Phase 1: Foundation (2/2 plans) — completed YYYY-MM-DD
|
|
340
|
+
- [x] Phase 2: Authentication (2/2 plans) — completed YYYY-MM-DD
|
|
341
|
+
- [x] Phase 3: Core Features (3/3 plans) — completed YYYY-MM-DD
|
|
342
|
+
- [x] Phase 4: Polish (1/1 plan) — completed YYYY-MM-DD
|
|
343
|
+
|
|
344
|
+
</details>
|
|
345
|
+
|
|
346
|
+
### 🚧 v[Next] [Name] (In Progress / Planned)
|
|
347
|
+
|
|
348
|
+
- [ ] Phase 5: [Name] ([N] plans)
|
|
349
|
+
- [ ] Phase 6: [Name] ([N] plans)
|
|
350
|
+
|
|
351
|
+
## Progress
|
|
352
|
+
|
|
353
|
+
| Phase | Milestone | Plans Complete | Status | Completed |
|
|
354
|
+
| ----------------- | --------- | -------------- | ----------- | ---------- |
|
|
355
|
+
| 1. Foundation | v1.0 | 2/2 | Complete | YYYY-MM-DD |
|
|
356
|
+
| 2. Authentication | v1.0 | 2/2 | Complete | YYYY-MM-DD |
|
|
357
|
+
| 3. Core Features | v1.0 | 3/3 | Complete | YYYY-MM-DD |
|
|
358
|
+
| 4. Polish | v1.0 | 1/1 | Complete | YYYY-MM-DD |
|
|
359
|
+
| 5. Security Audit | v1.1 | 0/1 | Not started | - |
|
|
360
|
+
| 6. Hardening | v1.1 | 0/2 | Not started | - |
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
</step>
|
|
364
|
+
|
|
365
|
+
<step name="archive_milestone">
|
|
366
|
+
|
|
367
|
+
**将归档委托给 specops-tools:**
|
|
368
|
+
|
|
369
|
+
```bash
|
|
370
|
+
ARCHIVE=$(node .opencode/bin/specops-tools.cjs milestone complete "v[X.Y]" --name "[Milestone Name]")
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
CLI 处理:
|
|
374
|
+
- 创建 `.planning/milestones/` 目录
|
|
375
|
+
- 将 ROADMAP.md 归档到 `milestones/v[X.Y]-ROADMAP.md`
|
|
376
|
+
- 将 REQUIREMENTS.md 归档到 `milestones/v[X.Y]-REQUIREMENTS.md`,含归档头部
|
|
377
|
+
- 如果存在审计文件则移动到 milestones
|
|
378
|
+
- 创建/追加 MILESTONES.md 条目,含从 SUMMARY.md 文件提取的成就
|
|
379
|
+
- 更新 STATE.md(状态、最后活动)
|
|
380
|
+
|
|
381
|
+
从结果中提取:`version`、`date`、`phases`、`plans`、`tasks`、`accomplishments`、`archived`。
|
|
382
|
+
|
|
383
|
+
验证:`✅ 里程碑已归档到 .planning/milestones/`
|
|
384
|
+
|
|
385
|
+
**阶段归档(可选):** 归档完成后,询问用户:
|
|
386
|
+
|
|
387
|
+
AskUserQuestion(header="Archive Phases", question="将阶段目录归档到 milestones/?", options: "Yes — move to milestones/v[X.Y]-phases/" | "Skip — keep phases in place")
|
|
388
|
+
|
|
389
|
+
如果「Yes」:将阶段目录移到里程碑归档:
|
|
390
|
+
```bash
|
|
391
|
+
mkdir -p .planning/milestones/v[X.Y]-phases
|
|
392
|
+
# For each phase directory in .planning/phases/:
|
|
393
|
+
mv .planning/phases/{phase-dir} .planning/milestones/v[X.Y]-phases/
|
|
394
|
+
```
|
|
395
|
+
验证:`✅ 阶段目录已归档到 .planning/milestones/v[X.Y]-phases/`
|
|
396
|
+
|
|
397
|
+
如果「Skip」:阶段目录保留在 `.planning/phases/` 作为原始执行历史。稍后使用 `/specops:cleanup` 回溯归档。
|
|
398
|
+
|
|
399
|
+
归档后,AI 仍需处理:
|
|
400
|
+
- 使用里程碑分组重组 ROADMAP.md(需要判断力)
|
|
401
|
+
- 完整的 PROJECT.md 演进审查(需要理解力)
|
|
402
|
+
- 删除原始 ROADMAP.md 和 REQUIREMENTS.md
|
|
403
|
+
- 这些没有完全委托,因为它们需要 AI 对内容的解读
|
|
404
|
+
|
|
405
|
+
</step>
|
|
406
|
+
|
|
407
|
+
<step name="reorganize_roadmap_and_delete_originals">
|
|
408
|
+
|
|
409
|
+
在 `milestone complete` 完成归档后,使用里程碑分组重组 ROADMAP.md,然后删除原件:
|
|
410
|
+
|
|
411
|
+
**重组 ROADMAP.md** — 对已完成的里程碑阶段进行分组:
|
|
412
|
+
|
|
413
|
+
```markdown
|
|
414
|
+
# Roadmap: [Project Name]
|
|
415
|
+
|
|
416
|
+
## Milestones
|
|
417
|
+
|
|
418
|
+
- ✅ **v1.0 MVP** — Phases 1-4 (shipped YYYY-MM-DD)
|
|
419
|
+
- 🚧 **v1.1 Security** — Phases 5-6 (in progress)
|
|
420
|
+
|
|
421
|
+
## Phases
|
|
422
|
+
|
|
423
|
+
<details>
|
|
424
|
+
<summary>✅ v1.0 MVP (Phases 1-4) — SHIPPED YYYY-MM-DD</summary>
|
|
425
|
+
|
|
426
|
+
- [x] Phase 1: Foundation (2/2 plans) — completed YYYY-MM-DD
|
|
427
|
+
- [x] Phase 2: Authentication (2/2 plans) — completed YYYY-MM-DD
|
|
428
|
+
|
|
429
|
+
</details>
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
**然后删除原件:**
|
|
433
|
+
|
|
434
|
+
```bash
|
|
435
|
+
rm .planning/ROADMAP.md
|
|
436
|
+
rm .planning/REQUIREMENTS.md
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
</step>
|
|
440
|
+
|
|
441
|
+
<step name="write_retrospective">
|
|
442
|
+
|
|
443
|
+
**追加到持续更新的回顾:**
|
|
444
|
+
|
|
445
|
+
检查是否存在回顾文件:
|
|
446
|
+
```bash
|
|
447
|
+
ls .planning/RETROSPECTIVE.md 2>/dev/null
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
**如果存在:** 读取文件,在「## Cross-Milestone Trends」部分之前追加新里程碑部分。
|
|
451
|
+
|
|
452
|
+
**如果不存在:** 使用 `.opencode/templates/retrospective.md` 模板创建。
|
|
453
|
+
|
|
454
|
+
**收集回顾数据:**
|
|
455
|
+
|
|
456
|
+
1. 从 SUMMARY.md 文件:提取关键交付物、一句话摘要、技术决策
|
|
457
|
+
2. 从 VERIFICATION.md 文件:提取验证分数、发现的差距
|
|
458
|
+
3. 从 UAT.md 文件:提取测试结果、发现的问题
|
|
459
|
+
4. 从 git log:统计提交数、计算时间线
|
|
460
|
+
5. 从里程碑工作中:反思什么有效、什么无效
|
|
461
|
+
|
|
462
|
+
**编写里程碑部分:**
|
|
463
|
+
|
|
464
|
+
```markdown
|
|
465
|
+
## Milestone: v{version} — {name}
|
|
466
|
+
|
|
467
|
+
**Shipped:** {date}
|
|
468
|
+
**Phases:** {phase_count} | **Plans:** {plan_count}
|
|
469
|
+
|
|
470
|
+
### 构建了什么
|
|
471
|
+
{从 SUMMARY.md 一句话摘要提取}
|
|
472
|
+
|
|
473
|
+
### 什么有效
|
|
474
|
+
{导致顺利执行的模式}
|
|
475
|
+
|
|
476
|
+
### 什么低效
|
|
477
|
+
{错过的机会、返工、瓶颈}
|
|
478
|
+
|
|
479
|
+
### 建立的模式
|
|
480
|
+
{此里程碑期间发现的新约定}
|
|
481
|
+
|
|
482
|
+
### 关键教训
|
|
483
|
+
{具体、可操作的收获}
|
|
484
|
+
|
|
485
|
+
### 成本观察
|
|
486
|
+
- 模型混合:{X}% opus,{Y}% sonnet,{Z}% haiku
|
|
487
|
+
- 会话数:{count}
|
|
488
|
+
- 值得注意的:{效率观察}
|
|
489
|
+
```
|
|
490
|
+
|
|
491
|
+
**更新跨里程碑趋势:**
|
|
492
|
+
|
|
493
|
+
如果「## Cross-Milestone Trends」部分存在,用此里程碑的新数据更新表格。
|
|
494
|
+
|
|
495
|
+
**提交:**
|
|
496
|
+
```bash
|
|
497
|
+
node .opencode/bin/specops-tools.cjs commit "docs: update retrospective for v${VERSION}" --files .planning/RETROSPECTIVE.md
|
|
498
|
+
```
|
|
499
|
+
|
|
500
|
+
</step>
|
|
501
|
+
|
|
502
|
+
<step name="update_state">
|
|
503
|
+
|
|
504
|
+
大部分 STATE.md 更新已由 `milestone complete` 处理,但验证并更新剩余字段:
|
|
505
|
+
|
|
506
|
+
**项目引用:**
|
|
507
|
+
|
|
508
|
+
```markdown
|
|
509
|
+
## Project Reference
|
|
510
|
+
|
|
511
|
+
See: .planning/PROJECT.md (updated [today])
|
|
512
|
+
|
|
513
|
+
**Core value:** [Current core value from PROJECT.md]
|
|
514
|
+
**Current focus:** [Next milestone or "Planning next milestone"]
|
|
515
|
+
```
|
|
516
|
+
|
|
517
|
+
**累积上下文:**
|
|
518
|
+
- 清除决策摘要(完整日志在 PROJECT.md 中)
|
|
519
|
+
- 清除已解决的阻塞项
|
|
520
|
+
- 保留下一个里程碑的未解决阻塞项
|
|
521
|
+
|
|
522
|
+
</step>
|
|
523
|
+
|
|
524
|
+
<step name="handle_branches">
|
|
525
|
+
|
|
526
|
+
检查分支策略并提供合并选项。
|
|
527
|
+
|
|
528
|
+
使用 `init milestone-op` 获取上下文,或直接加载配置:
|
|
529
|
+
|
|
530
|
+
```bash
|
|
531
|
+
INIT=$(node .opencode/bin/specops-tools.cjs init execute-phase "1")
|
|
532
|
+
```
|
|
533
|
+
|
|
534
|
+
从 init JSON 中提取 `branching_strategy`、`phase_branch_template`、`milestone_branch_template` 和 `commit_docs`。
|
|
535
|
+
|
|
536
|
+
**如果 "none":** 跳到 git_tag。
|
|
537
|
+
|
|
538
|
+
**对于 "phase" 策略:**
|
|
539
|
+
|
|
540
|
+
```bash
|
|
541
|
+
BRANCH_PREFIX=$(echo "$PHASE_BRANCH_TEMPLATE" | sed 's/{.*//')
|
|
542
|
+
PHASE_BRANCHES=$(git branch --list "${BRANCH_PREFIX}*" 2>/dev/null | sed 's/^\*//' | tr -d ' ')
|
|
543
|
+
```
|
|
544
|
+
|
|
545
|
+
**对于 "milestone" 策略:**
|
|
546
|
+
|
|
547
|
+
```bash
|
|
548
|
+
BRANCH_PREFIX=$(echo "$MILESTONE_BRANCH_TEMPLATE" | sed 's/{.*//')
|
|
549
|
+
MILESTONE_BRANCH=$(git branch --list "${BRANCH_PREFIX}*" 2>/dev/null | sed 's/^\*//' | tr -d ' ' | head -1)
|
|
550
|
+
```
|
|
551
|
+
|
|
552
|
+
**如果没有找到分支:** 跳到 git_tag。
|
|
553
|
+
|
|
554
|
+
**如果存在分支:**
|
|
555
|
+
|
|
556
|
+
```
|
|
557
|
+
## 检测到 Git 分支
|
|
558
|
+
|
|
559
|
+
分支策略:{phase/milestone}
|
|
560
|
+
分支:{list}
|
|
561
|
+
|
|
562
|
+
选项:
|
|
563
|
+
1. **合并到 main** — 将分支合并到 main
|
|
564
|
+
2. **不合并直接删除** — 已合并或不需要
|
|
565
|
+
3. **保留分支** — 留待手动处理
|
|
566
|
+
```
|
|
567
|
+
|
|
568
|
+
AskUserQuestion,选项:Squash 合并(推荐)、保留历史合并、不合并直接删除、保留分支。
|
|
569
|
+
|
|
570
|
+
**Squash 合并:**
|
|
571
|
+
|
|
572
|
+
```bash
|
|
573
|
+
CURRENT_BRANCH=$(git branch --show-current)
|
|
574
|
+
git checkout main
|
|
575
|
+
|
|
576
|
+
if [ "$BRANCHING_STRATEGY" = "phase" ]; then
|
|
577
|
+
for branch in $PHASE_BRANCHES; do
|
|
578
|
+
git merge --squash "$branch"
|
|
579
|
+
# Strip .planning/ from staging if commit_docs is false
|
|
580
|
+
if [ "$COMMIT_DOCS" = "false" ]; then
|
|
581
|
+
git reset HEAD .planning/ 2>/dev/null || true
|
|
582
|
+
fi
|
|
583
|
+
git commit -m "feat: $branch for v[X.Y]"
|
|
584
|
+
done
|
|
585
|
+
fi
|
|
586
|
+
|
|
587
|
+
if [ "$BRANCHING_STRATEGY" = "milestone" ]; then
|
|
588
|
+
git merge --squash "$MILESTONE_BRANCH"
|
|
589
|
+
# Strip .planning/ from staging if commit_docs is false
|
|
590
|
+
if [ "$COMMIT_DOCS" = "false" ]; then
|
|
591
|
+
git reset HEAD .planning/ 2>/dev/null || true
|
|
592
|
+
fi
|
|
593
|
+
git commit -m "feat: $MILESTONE_BRANCH for v[X.Y]"
|
|
594
|
+
fi
|
|
595
|
+
|
|
596
|
+
git checkout "$CURRENT_BRANCH"
|
|
597
|
+
```
|
|
598
|
+
|
|
599
|
+
**保留历史合并:**
|
|
600
|
+
|
|
601
|
+
```bash
|
|
602
|
+
CURRENT_BRANCH=$(git branch --show-current)
|
|
603
|
+
git checkout main
|
|
604
|
+
|
|
605
|
+
if [ "$BRANCHING_STRATEGY" = "phase" ]; then
|
|
606
|
+
for branch in $PHASE_BRANCHES; do
|
|
607
|
+
git merge --no-ff --no-commit "$branch"
|
|
608
|
+
# Strip .planning/ from staging if commit_docs is false
|
|
609
|
+
if [ "$COMMIT_DOCS" = "false" ]; then
|
|
610
|
+
git reset HEAD .planning/ 2>/dev/null || true
|
|
611
|
+
fi
|
|
612
|
+
git commit -m "Merge branch '$branch' for v[X.Y]"
|
|
613
|
+
done
|
|
614
|
+
fi
|
|
615
|
+
|
|
616
|
+
if [ "$BRANCHING_STRATEGY" = "milestone" ]; then
|
|
617
|
+
git merge --no-ff --no-commit "$MILESTONE_BRANCH"
|
|
618
|
+
# Strip .planning/ from staging if commit_docs is false
|
|
619
|
+
if [ "$COMMIT_DOCS" = "false" ]; then
|
|
620
|
+
git reset HEAD .planning/ 2>/dev/null || true
|
|
621
|
+
fi
|
|
622
|
+
git commit -m "Merge branch '$MILESTONE_BRANCH' for v[X.Y]"
|
|
623
|
+
fi
|
|
624
|
+
|
|
625
|
+
git checkout "$CURRENT_BRANCH"
|
|
626
|
+
```
|
|
627
|
+
|
|
628
|
+
**不合并直接删除:**
|
|
629
|
+
|
|
630
|
+
```bash
|
|
631
|
+
if [ "$BRANCHING_STRATEGY" = "phase" ]; then
|
|
632
|
+
for branch in $PHASE_BRANCHES; do
|
|
633
|
+
git branch -d "$branch" 2>/dev/null || git branch -D "$branch"
|
|
634
|
+
done
|
|
635
|
+
fi
|
|
636
|
+
|
|
637
|
+
if [ "$BRANCHING_STRATEGY" = "milestone" ]; then
|
|
638
|
+
git branch -d "$MILESTONE_BRANCH" 2>/dev/null || git branch -D "$MILESTONE_BRANCH"
|
|
639
|
+
fi
|
|
640
|
+
```
|
|
641
|
+
|
|
642
|
+
**保留分支:** 报告「分支已保留,待手动处理」
|
|
643
|
+
|
|
644
|
+
</step>
|
|
645
|
+
|
|
646
|
+
<step name="git_tag">
|
|
647
|
+
|
|
648
|
+
创建 git tag:
|
|
649
|
+
|
|
650
|
+
```bash
|
|
651
|
+
git tag -a v[X.Y] -m "v[X.Y] [Name]
|
|
652
|
+
|
|
653
|
+
Delivered: [One sentence]
|
|
654
|
+
|
|
655
|
+
Key accomplishments:
|
|
656
|
+
- [Item 1]
|
|
657
|
+
- [Item 2]
|
|
658
|
+
- [Item 3]
|
|
659
|
+
|
|
660
|
+
See .planning/MILESTONES.md for full details."
|
|
661
|
+
```
|
|
662
|
+
|
|
663
|
+
确认:"Tagged: v[X.Y]"
|
|
664
|
+
|
|
665
|
+
询问:"推送 tag 到远程?(y/n)"
|
|
666
|
+
|
|
667
|
+
如果 yes:
|
|
668
|
+
```bash
|
|
669
|
+
git push origin v[X.Y]
|
|
670
|
+
```
|
|
671
|
+
|
|
672
|
+
</step>
|
|
673
|
+
|
|
674
|
+
<step name="git_commit_milestone">
|
|
675
|
+
|
|
676
|
+
提交里程碑完成。
|
|
677
|
+
|
|
678
|
+
```bash
|
|
679
|
+
node .opencode/bin/specops-tools.cjs commit "chore: complete v[X.Y] milestone" --files .planning/milestones/v[X.Y]-ROADMAP.md .planning/milestones/v[X.Y]-REQUIREMENTS.md .planning/milestones/v[X.Y]-MILESTONE-AUDIT.md .planning/MILESTONES.md .planning/PROJECT.md .planning/STATE.md
|
|
680
|
+
```
|
|
681
|
+
```
|
|
682
|
+
|
|
683
|
+
确认:"Committed: chore: complete v[X.Y] milestone"
|
|
684
|
+
|
|
685
|
+
</step>
|
|
686
|
+
|
|
687
|
+
<step name="offer_next">
|
|
688
|
+
|
|
689
|
+
```
|
|
690
|
+
✅ 里程碑 v[X.Y] [Name] 完成
|
|
691
|
+
|
|
692
|
+
已发布:
|
|
693
|
+
- [N] 个阶段([M] 个计划,[P] 个任务)
|
|
694
|
+
- [一句话描述发布内容]
|
|
695
|
+
|
|
696
|
+
已归档:
|
|
697
|
+
- milestones/v[X.Y]-ROADMAP.md
|
|
698
|
+
- milestones/v[X.Y]-REQUIREMENTS.md
|
|
699
|
+
|
|
700
|
+
摘要:.planning/MILESTONES.md
|
|
701
|
+
Tag:v[X.Y]
|
|
702
|
+
|
|
703
|
+
---
|
|
704
|
+
|
|
705
|
+
## ▶ 下一步
|
|
706
|
+
|
|
707
|
+
**开始下一个里程碑** — 提问 → 研究 → 需求 → 路线图
|
|
708
|
+
|
|
709
|
+
`/specops:new-milestone`
|
|
710
|
+
|
|
711
|
+
<sub>`/clear` 先清理 → 全新上下文窗口</sub>
|
|
712
|
+
|
|
713
|
+
---
|
|
714
|
+
```
|
|
715
|
+
|
|
716
|
+
</step>
|
|
717
|
+
|
|
718
|
+
</process>
|
|
719
|
+
|
|
720
|
+
<milestone_naming>
|
|
721
|
+
|
|
722
|
+
**版本约定:**
|
|
723
|
+
- **v1.0** — 初始 MVP
|
|
724
|
+
- **v1.1、v1.2** — 小更新、新功能、修复
|
|
725
|
+
- **v2.0、v3.0** — 大重写、破坏性变更、新方向
|
|
726
|
+
|
|
727
|
+
**名称:** 简短 1-2 个词(v1.0 MVP、v1.1 Security、v1.2 Performance、v2.0 Redesign)。
|
|
728
|
+
|
|
729
|
+
</milestone_naming>
|
|
730
|
+
|
|
731
|
+
<what_qualifies>
|
|
732
|
+
|
|
733
|
+
**创建里程碑的场景:** 初始发布、公开发布、主要功能集发布、归档规划前。
|
|
734
|
+
|
|
735
|
+
**不创建里程碑的场景:** 每个阶段完成时(太细粒度)、进行中的工作、内部开发迭代(除非真正发布)。
|
|
736
|
+
|
|
737
|
+
启发式:「这是否已部署/可用/已发布?」如果是 → 里程碑。如果不是 → 继续工作。
|
|
738
|
+
|
|
739
|
+
</what_qualifies>
|
|
740
|
+
|
|
741
|
+
<success_criteria>
|
|
742
|
+
|
|
743
|
+
里程碑完成成功的条件:
|
|
744
|
+
|
|
745
|
+
- [ ] MILESTONES.md 条目已创建,含统计和成就
|
|
746
|
+
- [ ] PROJECT.md 完整演进审查已完成
|
|
747
|
+
- [ ] 所有已发布需求在 PROJECT.md 中移至已验证
|
|
748
|
+
- [ ] 关键决策已更新,含结果
|
|
749
|
+
- [ ] ROADMAP.md 已使用里程碑分组重组
|
|
750
|
+
- [ ] 路线图归档已创建(milestones/v[X.Y]-ROADMAP.md)
|
|
751
|
+
- [ ] 需求归档已创建(milestones/v[X.Y]-REQUIREMENTS.md)
|
|
752
|
+
- [ ] REQUIREMENTS.md 已删除(下一个里程碑全新开始)
|
|
753
|
+
- [ ] STATE.md 已更新,含全新的项目引用
|
|
754
|
+
- [ ] Git tag 已创建(v[X.Y])
|
|
755
|
+
- [ ] 里程碑提交已完成(含归档文件和删除)
|
|
756
|
+
- [ ] 已对照 REQUIREMENTS.md 可追溯表检查需求完成情况
|
|
757
|
+
- [ ] 不完整需求已展示,含继续/审计/中止选项
|
|
758
|
+
- [ ] 如果用户在需求不完整时选择继续,已知差距已记录在 MILESTONES.md 中
|
|
759
|
+
- [ ] RETROSPECTIVE.md 已更新,含里程碑部分
|
|
760
|
+
- [ ] 跨里程碑趋势已更新
|
|
761
|
+
- [ ] 用户知道下一步(/specops:new-milestone)
|
|
762
|
+
|
|
763
|
+
</success_criteria>
|