sillyspec 3.20.2 → 3.20.4
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/.claude/skills/sillyspec-archive/SKILL.md +21 -21
- package/.claude/skills/sillyspec-auto/SKILL.md +83 -83
- package/.claude/skills/sillyspec-brainstorm/SKILL.md +44 -44
- package/.claude/skills/sillyspec-commit/SKILL.md +106 -106
- package/.claude/skills/sillyspec-continue/SKILL.md +45 -45
- package/.claude/skills/sillyspec-doctor/SKILL.md +31 -31
- package/.claude/skills/sillyspec-execute/SKILL.md +30 -30
- package/.claude/skills/sillyspec-explore/SKILL.md +109 -109
- package/.claude/skills/sillyspec-knowledge/SKILL.md +269 -269
- package/.claude/skills/sillyspec-plan/SKILL.md +21 -21
- package/.claude/skills/sillyspec-propose/SKILL.md +21 -21
- package/.claude/skills/sillyspec-quick/SKILL.md +21 -21
- package/.claude/skills/sillyspec-resume/SKILL.md +68 -68
- package/.claude/skills/sillyspec-scan/SKILL.md +21 -21
- package/.claude/skills/sillyspec-state/SKILL.md +54 -54
- package/.claude/skills/sillyspec-status/SKILL.md +21 -21
- package/.claude/skills/sillyspec-verify/SKILL.md +21 -21
- package/.claude/skills/sillyspec-workspace/SKILL.md +157 -157
- package/.husky/pre-push +13 -13
- package/CLAUDE.md +18 -18
- package/README.md +198 -188
- package/SKILL.md +90 -91
- package/bin/sillyspec.js +2 -2
- package/docs/brainstorm-plan-contract.md +64 -64
- package/docs/plan-execute-contract.md +123 -123
- package/docs/platform-scan-protocol.md +298 -298
- package/docs/revision-mode.md +115 -115
- package/docs/sillyspec/file-lifecycle/known-implementation-gaps.md +99 -99
- package/docs/sillyspec/file-lifecycle/platform-workflows-sync.md +218 -218
- package/docs/sillyspec/file-lifecycle/stage-artifacts.md +167 -167
- package/docs/sillyspec/file-lifecycle/storage-and-state.md +148 -148
- package/docs/sillyspec/file-lifecycle/worktree-and-guard.md +211 -193
- package/docs/sillyspec/file-lifecycle.md +125 -125
- package/docs/workflow-contract-regression.md +106 -106
- package/docs/worktree-isolation.md +252 -252
- package/package.json +40 -40
- package/packages/dashboard/dist/assets/index-Bq_Z2hne.js +7446 -7446
- package/packages/dashboard/dist/assets/index-O2W5RV4z.css +1 -1
- package/packages/dashboard/dist/index.html +16 -16
- package/packages/dashboard/index.html +15 -15
- package/packages/dashboard/package-lock.json +2384 -2384
- package/packages/dashboard/package.json +25 -25
- package/packages/dashboard/server/executor.js +86 -86
- package/packages/dashboard/server/index.js +588 -588
- package/packages/dashboard/server/parser.js +526 -526
- package/packages/dashboard/server/watcher.js +344 -344
- package/packages/dashboard/src/App.vue +558 -558
- package/packages/dashboard/src/components/ActionBar.vue +93 -93
- package/packages/dashboard/src/components/CommandPalette.vue +96 -96
- package/packages/dashboard/src/components/DetailPanel.vue +137 -137
- package/packages/dashboard/src/components/LogStream.vue +65 -65
- package/packages/dashboard/src/components/PipelineStage.vue +95 -95
- package/packages/dashboard/src/components/PipelineView.vue +156 -156
- package/packages/dashboard/src/components/ProjectList.vue +210 -210
- package/packages/dashboard/src/components/StageBadge.vue +67 -67
- package/packages/dashboard/src/components/StepCard.vue +94 -94
- package/packages/dashboard/src/components/detail/DocsDetail.vue +48 -48
- package/packages/dashboard/src/components/detail/GitDetail.vue +61 -61
- package/packages/dashboard/src/components/detail/TechDetail.vue +43 -43
- package/packages/dashboard/src/composables/useDashboard.js +170 -170
- package/packages/dashboard/src/composables/useKeyboard.js +119 -119
- package/packages/dashboard/src/composables/useWebSocket.js +129 -129
- package/packages/dashboard/src/main.js +8 -8
- package/packages/dashboard/src/style.css +132 -132
- package/packages/dashboard/vite.config.js +18 -18
- package/src/brainstorm-postcheck.js +158 -158
- package/src/change-list.js +52 -52
- package/src/change-risk-profile.js +352 -352
- package/src/classify-change.js +73 -73
- package/src/constants.js +70 -70
- package/src/contract-matrix.js +278 -278
- package/src/db.js +201 -201
- package/src/endpoint-extractor.js +315 -315
- package/src/hooks/claude-pre-tool-use.cjs +125 -125
- package/src/hooks/worktree-guard.js +653 -653
- package/src/index.js +922 -900
- package/src/init.js +431 -431
- package/src/knowledge-match.js +130 -130
- package/src/migrate.js +117 -117
- package/src/modules.js +482 -482
- package/src/progress.js +1734 -1734
- package/src/run.js +3465 -3358
- package/src/scan-postcheck.js +387 -383
- package/src/setup.js +398 -398
- package/src/stage-contract.js +700 -700
- package/src/stages/archive.js +160 -160
- package/src/stages/brainstorm-auto.js +229 -229
- package/src/stages/brainstorm.js +645 -645
- package/src/stages/doctor.js +365 -365
- package/src/stages/execute.js +625 -625
- package/src/stages/explore.js +34 -34
- package/src/stages/index.js +29 -29
- package/src/stages/knowledge.js +498 -498
- package/src/stages/plan-postcheck.js +511 -513
- package/src/stages/plan.js +582 -582
- package/src/stages/propose.js +174 -174
- package/src/stages/quick.js +82 -82
- package/src/stages/scan.js +558 -558
- package/src/stages/status.js +65 -65
- package/src/stages/verify.js +322 -322
- package/src/sync.js +497 -497
- package/src/task-review.js +346 -346
- package/src/workflow.js +785 -785
- package/src/worktree-apply.js +549 -549
- package/src/worktree-deps.js +185 -0
- package/src/worktree.js +982 -932
- package/templates/workflows/archive-impact.yaml +79 -79
- package/templates/workflows/scan-docs.yaml +132 -132
- package/test/brainstorm-plan-contract.test.mjs +273 -273
- package/test/check-syntax.mjs +26 -26
- package/test/contract-artifacts.test.mjs +323 -323
- package/test/decision-supersede.test.mjs +277 -277
- package/test/knowledge-match.test.mjs +231 -231
- package/test/plan-execute-contract.test.mjs +330 -330
- package/test/plan-optimization.test.mjs +572 -572
- package/test/platform-artifacts.test.mjs +166 -166
- package/test/platform-failure-samples.test.mjs +199 -199
- package/test/platform-recovery-chain.test.mjs +167 -167
- package/test/platform-recovery.test.mjs +136 -136
- package/test/platform-scan-p0.test.mjs +168 -168
- package/test/revision-v1.test.mjs +1145 -1145
- package/test/run-scan-project-parse.test.mjs +200 -200
- package/test/run-tests.mjs +48 -48
- package/test/scan-knowledge.test.mjs +175 -175
- package/test/scan-paths.test.mjs +68 -68
- package/test/scan-postcheck.test.mjs +197 -197
- package/test/spec-dir.test.mjs +206 -206
- package/test/stage-contract.test.mjs +299 -299
- package/test/stage-definitions.test.mjs +39 -39
- package/test/wait-gates.test.mjs +496 -496
- package/test/worktree-deps-provision.test.mjs +148 -0
- package/test/worktree-guard.test.mjs +71 -71
- package/test/worktree-native-overlay.test.mjs +188 -188
|
@@ -1,64 +1,64 @@
|
|
|
1
|
-
---
|
|
2
|
-
author: qinyi
|
|
3
|
-
created_at: 2026-06-19 00:45:00
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Brainstorm → Plan Contract
|
|
7
|
-
|
|
8
|
-
## 核心契约
|
|
9
|
-
|
|
10
|
-
`design.md` 是 plan 阶段的**主要设计输入**。plan 不应该在空的或缺少关键决策的 design.md 上生成任务。
|
|
11
|
-
|
|
12
|
-
## design.md 结构要求
|
|
13
|
-
|
|
14
|
-
### 必须包含(error — 阻断 plan)
|
|
15
|
-
|
|
16
|
-
| # | 章节 | 匹配关键词 |
|
|
17
|
-
|---|------|-----------|
|
|
18
|
-
| 1 | 目标/背景/问题描述 | 目标、goal、objective、背景、background、问题、problem、purpose、目的 |
|
|
19
|
-
| 2 | 范围/总体方案/设计 | 范围、scope、总体方案、方案、approach、solution、设计、design |
|
|
20
|
-
| 3 | 决策/方案选择 | 决策、decision、选择、choice、方案选择、D-xxx@vN(decisions.md 引用) |
|
|
21
|
-
|
|
22
|
-
### 建议包含(warning — 不阻断 plan)
|
|
23
|
-
|
|
24
|
-
| # | 章节 | 匹配关键词 |
|
|
25
|
-
|---|------|-----------|
|
|
26
|
-
| 4 | 非目标/Non-goals | 非目标、non-goals、不做、out of scope |
|
|
27
|
-
| 5 | 约束/风险/Trade-off | 约束、constraint、风险、risk、trade-off |
|
|
28
|
-
| 6 | 文件变更清单 | 文件变更、变更清单、changed files |
|
|
29
|
-
|
|
30
|
-
## 校验规则
|
|
31
|
-
|
|
32
|
-
plan 启动时(第一个步骤执行前)调用 `validateDesignForPlan(designContent)`:
|
|
33
|
-
|
|
34
|
-
| 结果 | 行为 |
|
|
35
|
-
|------|------|
|
|
36
|
-
| 全部通过 | 正常进入 plan |
|
|
37
|
-
| 有 warning | 继续执行,展示警告 |
|
|
38
|
-
| 有 error | fail-fast,提示修复 design.md |
|
|
39
|
-
|
|
40
|
-
## 第一版设计原则
|
|
41
|
-
|
|
42
|
-
- **轻量 markdown 契约**:检查标题和关键词,不强 schema
|
|
43
|
-
- **关键词宽泛**:中英文都支持
|
|
44
|
-
- **decisions.md 引用也算决策**:`D-xxx@vN` 或 `decisions.md` 引用即满足决策检查
|
|
45
|
-
- **不做 brainstorm postcheck 阻断**:brainstorm 完成时不校验此契约(brainstorm 可以产出不完整的 design.md),只在 plan 启动时校验
|
|
46
|
-
|
|
47
|
-
## 错误处理
|
|
48
|
-
|
|
49
|
-
| 场景 | 行为 |
|
|
50
|
-
|------|------|
|
|
51
|
-
| design.md 不存在 | 不校验(向后兼容,plan 可以独立运行) |
|
|
52
|
-
| design.md 空 | fail-fast |
|
|
53
|
-
| 缺目标/背景 | fail-fast |
|
|
54
|
-
| 缺范围/方案 | fail-fast |
|
|
55
|
-
| 缺决策 | fail-fast |
|
|
56
|
-
| 缺非目标/约束/文件清单 | warning,继续执行 |
|
|
57
|
-
|
|
58
|
-
## 完整契约链
|
|
59
|
-
|
|
60
|
-
```
|
|
61
|
-
brainstorm → design.md → [Plan Contract 校验] → plan → plan.md → [Execute Contract 校验] → execute
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
每个阶段启动前都校验上游产物,形成双重保险。
|
|
1
|
+
---
|
|
2
|
+
author: qinyi
|
|
3
|
+
created_at: 2026-06-19 00:45:00
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Brainstorm → Plan Contract
|
|
7
|
+
|
|
8
|
+
## 核心契约
|
|
9
|
+
|
|
10
|
+
`design.md` 是 plan 阶段的**主要设计输入**。plan 不应该在空的或缺少关键决策的 design.md 上生成任务。
|
|
11
|
+
|
|
12
|
+
## design.md 结构要求
|
|
13
|
+
|
|
14
|
+
### 必须包含(error — 阻断 plan)
|
|
15
|
+
|
|
16
|
+
| # | 章节 | 匹配关键词 |
|
|
17
|
+
|---|------|-----------|
|
|
18
|
+
| 1 | 目标/背景/问题描述 | 目标、goal、objective、背景、background、问题、problem、purpose、目的 |
|
|
19
|
+
| 2 | 范围/总体方案/设计 | 范围、scope、总体方案、方案、approach、solution、设计、design |
|
|
20
|
+
| 3 | 决策/方案选择 | 决策、decision、选择、choice、方案选择、D-xxx@vN(decisions.md 引用) |
|
|
21
|
+
|
|
22
|
+
### 建议包含(warning — 不阻断 plan)
|
|
23
|
+
|
|
24
|
+
| # | 章节 | 匹配关键词 |
|
|
25
|
+
|---|------|-----------|
|
|
26
|
+
| 4 | 非目标/Non-goals | 非目标、non-goals、不做、out of scope |
|
|
27
|
+
| 5 | 约束/风险/Trade-off | 约束、constraint、风险、risk、trade-off |
|
|
28
|
+
| 6 | 文件变更清单 | 文件变更、变更清单、changed files |
|
|
29
|
+
|
|
30
|
+
## 校验规则
|
|
31
|
+
|
|
32
|
+
plan 启动时(第一个步骤执行前)调用 `validateDesignForPlan(designContent)`:
|
|
33
|
+
|
|
34
|
+
| 结果 | 行为 |
|
|
35
|
+
|------|------|
|
|
36
|
+
| 全部通过 | 正常进入 plan |
|
|
37
|
+
| 有 warning | 继续执行,展示警告 |
|
|
38
|
+
| 有 error | fail-fast,提示修复 design.md |
|
|
39
|
+
|
|
40
|
+
## 第一版设计原则
|
|
41
|
+
|
|
42
|
+
- **轻量 markdown 契约**:检查标题和关键词,不强 schema
|
|
43
|
+
- **关键词宽泛**:中英文都支持
|
|
44
|
+
- **decisions.md 引用也算决策**:`D-xxx@vN` 或 `decisions.md` 引用即满足决策检查
|
|
45
|
+
- **不做 brainstorm postcheck 阻断**:brainstorm 完成时不校验此契约(brainstorm 可以产出不完整的 design.md),只在 plan 启动时校验
|
|
46
|
+
|
|
47
|
+
## 错误处理
|
|
48
|
+
|
|
49
|
+
| 场景 | 行为 |
|
|
50
|
+
|------|------|
|
|
51
|
+
| design.md 不存在 | 不校验(向后兼容,plan 可以独立运行) |
|
|
52
|
+
| design.md 空 | fail-fast |
|
|
53
|
+
| 缺目标/背景 | fail-fast |
|
|
54
|
+
| 缺范围/方案 | fail-fast |
|
|
55
|
+
| 缺决策 | fail-fast |
|
|
56
|
+
| 缺非目标/约束/文件清单 | warning,继续执行 |
|
|
57
|
+
|
|
58
|
+
## 完整契约链
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
brainstorm → design.md → [Plan Contract 校验] → plan → plan.md → [Execute Contract 校验] → execute
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
每个阶段启动前都校验上游产物,形成双重保险。
|
|
@@ -1,123 +1,123 @@
|
|
|
1
|
-
---
|
|
2
|
-
author: qinyi
|
|
3
|
-
created_at: 2026-06-19 00:25:00
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Plan → Execute Contract
|
|
7
|
-
|
|
8
|
-
## 核心契约
|
|
9
|
-
|
|
10
|
-
`plan.md` 是 execute 阶段的**唯一任务蓝图输入**。execute 不从其他来源(brainstorm、tasks.md、agent 记忆)获取任务列表。
|
|
11
|
-
|
|
12
|
-
## plan.md 格式要求
|
|
13
|
-
|
|
14
|
-
### Checkbox Task(必须)
|
|
15
|
-
|
|
16
|
-
execute 通过 checkbox 解析任务,格式:
|
|
17
|
-
|
|
18
|
-
```markdown
|
|
19
|
-
- [ ] task-01: 实现用户认证模块
|
|
20
|
-
- [ ] task-02: 添加权限校验中间件
|
|
21
|
-
- [ ] task-03: 编写集成测试
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
### Task ID 规则
|
|
25
|
-
|
|
26
|
-
- 格式:`task-XX`(XX 为数字,建议两位补零)
|
|
27
|
-
- 必须唯一:同一 plan.md 内不能有两个相同 task id
|
|
28
|
-
- 建议连续:从 task-01 开始递增
|
|
29
|
-
- 不能为空:每个 checkbox task 必须有 id
|
|
30
|
-
|
|
31
|
-
### Task Name 规则
|
|
32
|
-
|
|
33
|
-
- 必须非空
|
|
34
|
-
- 清晰描述任务内容
|
|
35
|
-
|
|
36
|
-
### Wave 分组
|
|
37
|
-
|
|
38
|
-
```markdown
|
|
39
|
-
## Wave 1
|
|
40
|
-
- [ ] task-01: 搭建项目骨架
|
|
41
|
-
- [ ] task-02: 配置 CI/CD
|
|
42
|
-
|
|
43
|
-
## Wave 2
|
|
44
|
-
- [ ] task-03: 实现业务逻辑
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
- Wave 内任务无依赖(可并行)
|
|
48
|
-
- Wave 间有依赖(按序执行)
|
|
49
|
-
- Wave 只能引用已存在的 task
|
|
50
|
-
|
|
51
|
-
## 校验规则
|
|
52
|
-
|
|
53
|
-
execute 进入前调用 `validatePlanForExecute(planContent)`:
|
|
54
|
-
|
|
55
|
-
| # | 规则 | 级别 |
|
|
56
|
-
|---|------|------|
|
|
57
|
-
| 1 | plan.md 非空 | error |
|
|
58
|
-
| 2 | 至少有一个 checkbox task | error |
|
|
59
|
-
| 3 | task id 唯一 | error |
|
|
60
|
-
| 4 | task id 连续(task-01 起) | error |
|
|
61
|
-
| 5 | task name 非空 | error |
|
|
62
|
-
| 6 | task 有 id(无 id 只 warning) | warning |
|
|
63
|
-
|
|
64
|
-
校验失败 → fail-fast,不进入 execute。
|
|
65
|
-
校验通过但有 warning → 继续执行,提示警告。
|
|
66
|
-
|
|
67
|
-
## 复杂度场景
|
|
68
|
-
|
|
69
|
-
### none(最小变更)
|
|
70
|
-
```markdown
|
|
71
|
-
## Wave 1
|
|
72
|
-
- [ ] task-01: 修复 bug
|
|
73
|
-
```
|
|
74
|
-
至少 1 个 checkbox task。
|
|
75
|
-
|
|
76
|
-
### light(轻量变更)
|
|
77
|
-
```markdown
|
|
78
|
-
## Wave 1
|
|
79
|
-
- [ ] task-01: 添加 API 端点
|
|
80
|
-
- [ ] task-02: 添加前端调用
|
|
81
|
-
```
|
|
82
|
-
1 个 Wave,2-3 个 task。
|
|
83
|
-
|
|
84
|
-
### full(完整变更)
|
|
85
|
-
```markdown
|
|
86
|
-
## Wave 1: 基础设施
|
|
87
|
-
- [ ] task-01: 数据库 schema
|
|
88
|
-
- [ ] task-02: 模型定义
|
|
89
|
-
|
|
90
|
-
## Wave 2: 业务逻辑
|
|
91
|
-
- [ ] task-03: API 实现
|
|
92
|
-
- [ ] task-04: 业务规则
|
|
93
|
-
|
|
94
|
-
## Wave 3: 测试
|
|
95
|
-
- [ ] task-05: 集成测试
|
|
96
|
-
```
|
|
97
|
-
多个 Wave,每个 Wave 1-N 个 task。
|
|
98
|
-
|
|
99
|
-
## execute reopen 契约
|
|
100
|
-
|
|
101
|
-
当 execute 被 `--reopen` 时:
|
|
102
|
-
1. **必须从最新 plan.md 重新解析 steps**(不复用旧 task/wave)
|
|
103
|
-
2. 如果 plan.md 已变更(wave 数量变了),execute steps 会反映最新状态
|
|
104
|
-
3. 旧 completed steps 不保留(全部回到 pending/stale)
|
|
105
|
-
|
|
106
|
-
## 错误处理
|
|
107
|
-
|
|
108
|
-
| 场景 | 行为 |
|
|
109
|
-
|------|------|
|
|
110
|
-
| plan.md 不存在 | 生成默认 3 Wave(向后兼容) |
|
|
111
|
-
| plan.md 存在但无 checkbox | fail-fast |
|
|
112
|
-
| task id 重复 | fail-fast |
|
|
113
|
-
| task id 不连续 | fail-fast |
|
|
114
|
-
| plan.md 被修改后 execute reopen | 重新解析,使用最新 wave/task |
|
|
115
|
-
|
|
116
|
-
## 双重校验
|
|
117
|
-
|
|
118
|
-
契约在两个时点执行:
|
|
119
|
-
|
|
120
|
-
1. **plan 完成时**(plan postcheck):plan.md 不合法 → 阻断 completed,plan 阶段无法完成
|
|
121
|
-
2. **execute 启动时**(execute entry):plan.md 不合法 → fail-fast,不进入 execute
|
|
122
|
-
|
|
123
|
-
这确保 plan.md 在进入 execute 之前就是合法的,execute 启动时的校验是二次保险。
|
|
1
|
+
---
|
|
2
|
+
author: qinyi
|
|
3
|
+
created_at: 2026-06-19 00:25:00
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Plan → Execute Contract
|
|
7
|
+
|
|
8
|
+
## 核心契约
|
|
9
|
+
|
|
10
|
+
`plan.md` 是 execute 阶段的**唯一任务蓝图输入**。execute 不从其他来源(brainstorm、tasks.md、agent 记忆)获取任务列表。
|
|
11
|
+
|
|
12
|
+
## plan.md 格式要求
|
|
13
|
+
|
|
14
|
+
### Checkbox Task(必须)
|
|
15
|
+
|
|
16
|
+
execute 通过 checkbox 解析任务,格式:
|
|
17
|
+
|
|
18
|
+
```markdown
|
|
19
|
+
- [ ] task-01: 实现用户认证模块
|
|
20
|
+
- [ ] task-02: 添加权限校验中间件
|
|
21
|
+
- [ ] task-03: 编写集成测试
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### Task ID 规则
|
|
25
|
+
|
|
26
|
+
- 格式:`task-XX`(XX 为数字,建议两位补零)
|
|
27
|
+
- 必须唯一:同一 plan.md 内不能有两个相同 task id
|
|
28
|
+
- 建议连续:从 task-01 开始递增
|
|
29
|
+
- 不能为空:每个 checkbox task 必须有 id
|
|
30
|
+
|
|
31
|
+
### Task Name 规则
|
|
32
|
+
|
|
33
|
+
- 必须非空
|
|
34
|
+
- 清晰描述任务内容
|
|
35
|
+
|
|
36
|
+
### Wave 分组
|
|
37
|
+
|
|
38
|
+
```markdown
|
|
39
|
+
## Wave 1
|
|
40
|
+
- [ ] task-01: 搭建项目骨架
|
|
41
|
+
- [ ] task-02: 配置 CI/CD
|
|
42
|
+
|
|
43
|
+
## Wave 2
|
|
44
|
+
- [ ] task-03: 实现业务逻辑
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
- Wave 内任务无依赖(可并行)
|
|
48
|
+
- Wave 间有依赖(按序执行)
|
|
49
|
+
- Wave 只能引用已存在的 task
|
|
50
|
+
|
|
51
|
+
## 校验规则
|
|
52
|
+
|
|
53
|
+
execute 进入前调用 `validatePlanForExecute(planContent)`:
|
|
54
|
+
|
|
55
|
+
| # | 规则 | 级别 |
|
|
56
|
+
|---|------|------|
|
|
57
|
+
| 1 | plan.md 非空 | error |
|
|
58
|
+
| 2 | 至少有一个 checkbox task | error |
|
|
59
|
+
| 3 | task id 唯一 | error |
|
|
60
|
+
| 4 | task id 连续(task-01 起) | error |
|
|
61
|
+
| 5 | task name 非空 | error |
|
|
62
|
+
| 6 | task 有 id(无 id 只 warning) | warning |
|
|
63
|
+
|
|
64
|
+
校验失败 → fail-fast,不进入 execute。
|
|
65
|
+
校验通过但有 warning → 继续执行,提示警告。
|
|
66
|
+
|
|
67
|
+
## 复杂度场景
|
|
68
|
+
|
|
69
|
+
### none(最小变更)
|
|
70
|
+
```markdown
|
|
71
|
+
## Wave 1
|
|
72
|
+
- [ ] task-01: 修复 bug
|
|
73
|
+
```
|
|
74
|
+
至少 1 个 checkbox task。
|
|
75
|
+
|
|
76
|
+
### light(轻量变更)
|
|
77
|
+
```markdown
|
|
78
|
+
## Wave 1
|
|
79
|
+
- [ ] task-01: 添加 API 端点
|
|
80
|
+
- [ ] task-02: 添加前端调用
|
|
81
|
+
```
|
|
82
|
+
1 个 Wave,2-3 个 task。
|
|
83
|
+
|
|
84
|
+
### full(完整变更)
|
|
85
|
+
```markdown
|
|
86
|
+
## Wave 1: 基础设施
|
|
87
|
+
- [ ] task-01: 数据库 schema
|
|
88
|
+
- [ ] task-02: 模型定义
|
|
89
|
+
|
|
90
|
+
## Wave 2: 业务逻辑
|
|
91
|
+
- [ ] task-03: API 实现
|
|
92
|
+
- [ ] task-04: 业务规则
|
|
93
|
+
|
|
94
|
+
## Wave 3: 测试
|
|
95
|
+
- [ ] task-05: 集成测试
|
|
96
|
+
```
|
|
97
|
+
多个 Wave,每个 Wave 1-N 个 task。
|
|
98
|
+
|
|
99
|
+
## execute reopen 契约
|
|
100
|
+
|
|
101
|
+
当 execute 被 `--reopen` 时:
|
|
102
|
+
1. **必须从最新 plan.md 重新解析 steps**(不复用旧 task/wave)
|
|
103
|
+
2. 如果 plan.md 已变更(wave 数量变了),execute steps 会反映最新状态
|
|
104
|
+
3. 旧 completed steps 不保留(全部回到 pending/stale)
|
|
105
|
+
|
|
106
|
+
## 错误处理
|
|
107
|
+
|
|
108
|
+
| 场景 | 行为 |
|
|
109
|
+
|------|------|
|
|
110
|
+
| plan.md 不存在 | 生成默认 3 Wave(向后兼容) |
|
|
111
|
+
| plan.md 存在但无 checkbox | fail-fast |
|
|
112
|
+
| task id 重复 | fail-fast |
|
|
113
|
+
| task id 不连续 | fail-fast |
|
|
114
|
+
| plan.md 被修改后 execute reopen | 重新解析,使用最新 wave/task |
|
|
115
|
+
|
|
116
|
+
## 双重校验
|
|
117
|
+
|
|
118
|
+
契约在两个时点执行:
|
|
119
|
+
|
|
120
|
+
1. **plan 完成时**(plan postcheck):plan.md 不合法 → 阻断 completed,plan 阶段无法完成
|
|
121
|
+
2. **execute 启动时**(execute entry):plan.md 不合法 → fail-fast,不进入 execute
|
|
122
|
+
|
|
123
|
+
这确保 plan.md 在进入 execute 之前就是合法的,execute 启动时的校验是二次保险。
|