cc-devflow 4.5.4 → 4.5.5

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.
Files changed (74) hide show
  1. package/.claude/skills/cc-act/CHANGELOG.md +6 -0
  2. package/.claude/skills/cc-act/PLAYBOOK.md +21 -5
  3. package/.claude/skills/cc-act/SKILL.md +21 -11
  4. package/.claude/skills/cc-act/assets/PR_BRIEF_TEMPLATE.md +10 -0
  5. package/.claude/skills/cc-act/assets/RELEASE_NOTE_TEMPLATE.md +8 -0
  6. package/.claude/skills/cc-act/references/closure-contract.md +3 -0
  7. package/.claude/skills/cc-act/scripts/cc-act-common.sh +48 -0
  8. package/.claude/skills/cc-act/scripts/generate-status-report.sh +3 -0
  9. package/.claude/skills/cc-act/scripts/render-pr-brief.sh +6 -0
  10. package/.claude/skills/cc-act/scripts/sync-act-docs.sh +13 -0
  11. package/.claude/skills/cc-do/CHANGELOG.md +6 -0
  12. package/.claude/skills/cc-do/PLAYBOOK.md +7 -6
  13. package/.claude/skills/cc-do/SKILL.md +27 -12
  14. package/.claude/skills/cc-do/references/execution-recovery.md +9 -0
  15. package/.claude/skills/cc-investigate/CHANGELOG.md +6 -0
  16. package/.claude/skills/cc-investigate/PLAYBOOK.md +5 -1
  17. package/.claude/skills/cc-investigate/SKILL.md +22 -5
  18. package/.claude/skills/cc-investigate/assets/ANALYSIS_TEMPLATE.md +14 -0
  19. package/.claude/skills/cc-investigate/assets/TASKS_TEMPLATE.md +1 -0
  20. package/.claude/skills/cc-investigate/assets/TASK_MANIFEST_TEMPLATE.json +9 -1
  21. package/.claude/skills/cc-investigate/references/investigation-contract.md +2 -0
  22. package/.claude/skills/cc-plan/CHANGELOG.md +23 -0
  23. package/.claude/skills/cc-plan/PLAYBOOK.md +38 -18
  24. package/.claude/skills/cc-plan/SKILL.md +81 -47
  25. package/.claude/skills/cc-plan/assets/DESIGN_TEMPLATE.md +68 -3
  26. package/.claude/skills/cc-plan/assets/TASKS_TEMPLATE.md +28 -5
  27. package/.claude/skills/cc-plan/assets/TASK_MANIFEST_TEMPLATE.json +54 -2
  28. package/.claude/skills/cc-plan/assets/TINY_DESIGN_TEMPLATE.md +44 -0
  29. package/.claude/skills/cc-plan/references/planning-contract.md +29 -15
  30. package/.claude/skills/cc-roadmap/CHANGELOG.md +12 -0
  31. package/.claude/skills/cc-roadmap/PLAYBOOK.md +15 -9
  32. package/.claude/skills/cc-roadmap/SKILL.md +22 -16
  33. package/.claude/skills/cc-roadmap/assets/BACKLOG_TEMPLATE.md +3 -1
  34. package/.claude/skills/cc-roadmap/assets/ROADMAP_TEMPLATE.md +11 -1
  35. package/.claude/skills/cc-roadmap/assets/TRACKING_TEMPLATE.json +57 -10
  36. package/.claude/skills/cc-roadmap/scripts/lib/roadmap-tracking/markdown.js +68 -3
  37. package/.claude/skills/cc-roadmap/scripts/lib/roadmap-tracking/schema.js +120 -0
  38. package/.claude/skills/cc-roadmap/scripts/lib/roadmap-tracking/store.js +25 -1
  39. package/.claude/skills/cc-roadmap/scripts/locate-roadmap-item.sh +13 -5
  40. package/.claude/skills/cc-roadmap/scripts/roadmap-tracking.js +3 -3
  41. package/.claude/skills/cc-roadmap/scripts/sync-roadmap-progress.sh +3 -3
  42. package/CHANGELOG.md +7 -0
  43. package/README.md +5 -5
  44. package/README.zh-CN.md +5 -5
  45. package/docs/CLAUDE.md +1 -1
  46. package/docs/examples/START-HERE.md +3 -3
  47. package/docs/examples/example-bindings.json +26 -9
  48. package/docs/examples/full-design-blocked/BACKLOG.md +4 -2
  49. package/docs/examples/full-design-blocked/README.md +4 -4
  50. package/docs/examples/full-design-blocked/ROADMAP.md +16 -2
  51. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/design.md +39 -1
  52. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json +41 -0
  53. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md +8 -1
  54. package/docs/examples/full-design-blocked/roadmap.json +123 -0
  55. package/docs/examples/local-handoff/BACKLOG.md +4 -2
  56. package/docs/examples/local-handoff/README.md +4 -4
  57. package/docs/examples/local-handoff/ROADMAP.md +16 -2
  58. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/design.md +19 -1
  59. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json +26 -0
  60. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md +8 -1
  61. package/docs/examples/local-handoff/roadmap.json +121 -0
  62. package/docs/examples/pdca-loop/BACKLOG.md +4 -2
  63. package/docs/examples/pdca-loop/README.md +4 -4
  64. package/docs/examples/pdca-loop/ROADMAP.md +16 -2
  65. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/design.md +19 -1
  66. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json +22 -3
  67. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md +8 -1
  68. package/docs/examples/pdca-loop/roadmap.json +191 -0
  69. package/docs/examples/scripts/check-example-bindings.sh +7 -4
  70. package/docs/guides/getting-started.md +2 -2
  71. package/docs/guides/getting-started.zh-CN.md +2 -2
  72. package/lib/compiler/__tests__/skills-registry.test.js +17 -3
  73. package/lib/skill-runtime/__tests__/cli-bootstrap.integration.test.js +9 -1
  74. package/package.json +1 -1
@@ -1,5 +1,11 @@
1
1
  # CC-Act Skill Changelog
2
2
 
3
+ ## v1.8.2 - 2026-05-06
4
+
5
+ - add an execution-time Roadmap Progress Check so act verifies source RM state before ship work continues
6
+ - align all roadmap writeback guidance on `devflow/roadmap.json` with generated `ROADMAP.md` / `BACKLOG.md` projections
7
+ - update delivery templates and act render scripts to surface roadmap sync state in PR briefs, release notes, resume indexes, and doc sync reports
8
+
3
9
  ## v1.8.1 - 2026-04-29
4
10
 
5
11
  - add structured ship preflight fields with `ShipPreflightError` rescue actions
@@ -6,7 +6,7 @@
6
6
 
7
7
  - Enter from: `cc-check` with a passing report card.
8
8
  - Stay in: `cc-act` while ship mode, simplify/test evidence, docs, and handoff are being aligned to proven facts.
9
- - Exit to: the next roadmap/backlog loop once delivery artifacts and follow-up writeback are complete.
9
+ - Exit to: the next roadmap/backlog loop once delivery artifacts, source RM progress, and follow-up writeback are complete.
10
10
  - Reroute to: `cc-check` if verification changes, or `cc-do` if act uncovers unfinished implementation.
11
11
 
12
12
  ## Core Thesis
@@ -27,9 +27,19 @@
27
27
  3. 确认 `planning/tasks.md` 不再有未完成项
28
28
  4. 确认 `review.freshness` 新鲜、`runtime.failureOwnership` 无未解释失败、`qa.coverageAudit` / `qa.browserEvidence` 有证据或明确 skip
29
29
  5. 确认 `qa.feedbackLoop` / `qa.behaviorEvidence` 能支撑行为结论;不可复现时必须写清缺什么 artifact / 权限 / 输入
30
+ 6. 定位 source RM,并确认 `devflow/roadmap.json`、`devflow/ROADMAP.md`、optional `devflow/BACKLOG.md` 没有和 verified reality 冲突
30
31
 
31
32
  如果 gate 没闭合,直接回 `cc-check` 或 `cc-do`,不要在 `cc-act` 自我安慰。
32
33
 
34
+ ## Phase 0.5: Check Roadmap Progress
35
+
36
+ Roadmap 是执行链路的长期记忆,不是收尾时才想起的备忘录。
37
+
38
+ 1. 从 `change-meta.json` / `planning/task-manifest.json` 读取 `sourceRoadmap.itemId`、REQ/FIX、primary capability、expected spec delta。
39
+ 2. 用 `../cc-roadmap/scripts/locate-roadmap-item.sh <RM-ID>` 对照 `devflow/roadmap.json`、`devflow/ROADMAP.md`、optional `devflow/BACKLOG.md`。
40
+ 3. 如果 RM 已经指向另一个 change、被标成 blocked/deferred/done,或 progress 与 `review/report-card.json` 现实冲突,先同步或 reroute,不继续 ship。
41
+ 4. 如果没有 source RM,不编造;在 handoff 写 `roadmapSync.noOpReason: no-source-rm`。
42
+
33
43
  ## Phase 1: Freeze Ship Facts
34
44
 
35
45
  运行 `scripts/detect-ship-target.sh`,锁定这些事实:
@@ -180,19 +190,22 @@ Ship 必须属于这 4 种模式之一:
180
190
 
181
191
  ## Phase 6: Write Back The Learning
182
192
 
183
- 以下情况必须回写 `devflow/roadmap/backlog.md` / `devflow/roadmap/roadmap.md`:
193
+ 以下情况必须回写 `devflow/roadmap.json`,再重新生成 `devflow/ROADMAP.md` / `devflow/BACKLOG.md`:
184
194
 
185
195
  1. 本次工作暴露了新的 follow-up
186
196
  2. 原有优先级被改变
187
197
  3. 有明确 deferred item 不能靠口头记忆保存
198
+ 4. source RM 的 ship 现实从 planned / repair planned 推进到了 in review / ready for handoff / done
188
199
 
189
200
  原则:
190
201
 
191
- - 长期方向写 `devflow/roadmap/roadmap.md`
192
- - 下一轮待排队动作写 `devflow/roadmap/backlog.md`
202
+ - 长期方向写进 `devflow/roadmap.json` 的 stage / item / backlog 字段
203
+ - 下一轮待排队动作写进对应 RM 的 backlog 字段,或交给 `cc-roadmap` 新增 RM
193
204
  - 不要把噪音和碎念回写成系统真相
194
205
  - follow-up 必须是 durable brief:用领域语言写 current behavior、desired behavior、key interfaces、acceptance criteria、out of scope
195
206
  - 独立行为拆独立条目;有依赖关系时写明顺序,方便下一轮并行或排队
207
+ - 常规进度用 `../cc-roadmap/scripts/sync-roadmap-progress.sh --rm <RM-ID> --status <state> --req <REQ/FIX> --progress <percent>`
208
+ - follow-up 改变阶段顺序或项目优先级时,不在 `cc-act` 临场重排,reroute 到 `cc-roadmap`
196
209
 
197
210
  ## Phase 7: Declare The Next Entry
198
211
 
@@ -214,6 +227,7 @@ Ship 必须属于这 4 种模式之一:
214
227
  7. follow-up 是不是行为契约,而不是“改某文件某行”的易腐烂 TODO?
215
228
  8. ship preflight failure 是否有 `ShipPreflightError`、artifact ref 和 rescue action?
216
229
  9. rollback guard 是否足够让下一位维护者不靠聊天记录回退?
230
+ 10. source RM 的 status、REQ/FIX、progress 是否已经和 ship 现实一致?
217
231
 
218
232
  如果第 1 或第 3 题答案不是“能”,说明 `cc-act` 仍然太重或太糊。
219
233
 
@@ -223,7 +237,7 @@ Ship 必须属于这 4 种模式之一:
223
237
  - `handoff/release-note.md`(需要发布时)
224
238
  - 更新后的 `handoff/resume-index.md`
225
239
  - 更新后的 `CLAUDE.md` / README / 架构文档(如果结构或行为变了)
226
- - 必要时更新后的 `devflow/roadmap/backlog.md` / `devflow/roadmap/roadmap.md`
240
+ - 必要时更新后的 `devflow/roadmap.json` / `devflow/ROADMAP.md` / `devflow/BACKLOG.md`
227
241
 
228
242
  ## Local Kit
229
243
 
@@ -235,6 +249,8 @@ Ship 必须属于这 4 种模式之一:
235
249
  - `scripts/render-pr-brief.sh` 负责从 requirement 真相源渲染 `pr-brief.md`
236
250
  - `scripts/generate-status-report.sh` 负责汇总 requirement 与 ship 现状
237
251
  - `scripts/archive-requirement.sh` 负责 requirement 生命周期收尾
252
+ - `../cc-roadmap/scripts/locate-roadmap-item.sh` 负责定位 source RM
253
+ - `../cc-roadmap/scripts/sync-roadmap-progress.sh` 负责回写 roadmap progress 并渲染投影
238
254
  - `cc-simplify` 负责在 ship 前压掉重复、坏味道、低效实现
239
255
  - `references/git-commit-guidelines.md` 负责提交规范真相源
240
256
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: cc-act
3
- version: 1.8.1
3
+ version: 1.8.2
4
4
  description: 'Use when verified work must be shipped or handed off with a clear landing path: run simplify and required tests, create or update a PR, prepare a local handoff, close out merged work, sync docs, write release notes, and fold follow-ups back into backlog or roadmap.'
5
5
  triggers:
6
6
  - 准备提 PR
@@ -17,6 +17,8 @@ reads:
17
17
  - references/git-commit-guidelines.md
18
18
  - assets/PR_BRIEF_TEMPLATE.md
19
19
  - assets/RELEASE_NOTE_TEMPLATE.md
20
+ - ../cc-roadmap/scripts/locate-roadmap-item.sh
21
+ - ../cc-roadmap/scripts/sync-roadmap-progress.sh
20
22
  writes:
21
23
  - path: devflow/changes/<change-key>/handoff/pr-brief.md
22
24
  durability: durable
@@ -34,15 +36,17 @@ writes:
34
36
  when: handoff mode is release
35
37
  exclusive_group: handoff
36
38
  effects:
37
- - roadmap or backlog follow-up updates when needed
39
+ - roadmap progress and backlog follow-up updates when needed
38
40
  entry_gate:
39
41
  - Accept only a passing review/report-card.json with reroute=none and specSyncReady=true.
40
42
  - Freeze current branch, PR, ship-mode, auth, clean-tree, and rollback facts before writing delivery materials.
41
43
  - If simplify, tests, or act changes code or verification scope, return to cc-check immediately.
44
+ - Read source roadmap progress from `devflow/roadmap.json`, `devflow/ROADMAP.md`, optional `devflow/BACKLOG.md`, or legacy `devflow/roadmap-tracking.json`; act must not ship against stale RM state.
42
45
  exit_criteria:
43
46
  - The ship mode is explicit, delivery materials match that mode, and the next maintainer has one clear entry point.
44
47
  - Docs, PR text, release notes, handoff artifacts, review range, readiness dashboard, PR body accuracy check, and test evidence reflect the same proven facts.
45
48
  - Follow-up items are written back to roadmap/backlog instead of lingering in chat memory.
49
+ - The source roadmap item reflects the latest verified state, ship mode, and follow-up decision, or the handoff records a no-op reason.
46
50
  reroutes:
47
51
  - when: Verification is stale, incomplete, or changed during act.
48
52
  target: cc-check
@@ -58,7 +62,7 @@ recovery_modes:
58
62
  tool_budget:
59
63
  read_files: 8
60
64
  search_steps: 5
61
- shell_commands: 10
65
+ shell_commands: 11
62
66
  ---
63
67
 
64
68
  # CC-Act
@@ -94,7 +98,7 @@ tool_budget:
94
98
  - 需要决定这次是 `create-pr`、`update-pr`、`local-handoff`,还是 `post-merge-closeout`
95
99
  - 需要在 ship 前再做一次 `cc-simplify`、单测、以及按协调器要求执行的 e2e
96
100
  - 需要同步最终文档、handoff、release note
97
- - 需要把遗留 follow-up / 优先级变化回写 `devflow/roadmap/backlog.md` `devflow/roadmap/roadmap.md`
101
+ - 需要把遗留 follow-up / 优先级变化回写 `devflow/roadmap.json`,并重新生成 `devflow/ROADMAP.md` / `devflow/BACKLOG.md`
98
102
  - 需要把已验证的 spec delta 正式回写 capability spec 与 `devflow/specs/INDEX.md`
99
103
  - 需要让下一轮入口比现在更清楚
100
104
 
@@ -128,7 +132,8 @@ tool_budget:
128
132
  4. 运行 `scripts/detect-ship-target.sh`,识别当前分支、base branch、PR 状态与推荐 ship 路径。
129
133
  5. 检查 `review.freshness`、`runtime.failureOwnership`、`qa.coverageAudit`、`qa.browserEvidence`,确认 readiness dashboard 没有 blocker。
130
134
  6. 检查 `qa.feedbackLoop`、`qa.behaviorEvidence`、`qa.architectureFollowUps` 和 follow-up brief,确认交付材料继承的是行为证据,不是聊天记忆或易腐烂 TODO。
131
- 7. 如果在 `cc-act` 期间因为 `cc-simplify`、单测、e2e、review 修复而改了代码,必须回 `cc-check`,不能带着旧证明继续 ship。
135
+ 7. 定位 source RM:优先读 `change-meta.json` / `task-manifest.json` `sourceRoadmap.itemId`,再用 `locate-roadmap-item.sh` 对照 `devflow/roadmap.json`、`devflow/ROADMAP.md` 和 optional `devflow/BACKLOG.md`;如果 roadmap 状态和 verified reality 冲突,先同步或 reroute,不能继续 ship。
136
+ 8. 如果在 `cc-act` 期间因为 `cc-simplify`、单测、e2e、review 修复而改了代码,必须回 `cc-check`,不能带着旧证明继续 ship。
132
137
 
133
138
  ## Ship Modes
134
139
 
@@ -173,7 +178,7 @@ tool_budget:
173
178
  4. `post-merge-closeout`
174
179
  - 必须完成 doc sync
175
180
  - 需要对外说明时生成 `handoff/release-note.md`
176
- - 必须把 follow-up 回写到 `devflow/roadmap/backlog.md` / `devflow/roadmap/roadmap.md`
181
+ - 必须把 follow-up 回写到 `devflow/roadmap.json`,并重新生成 `devflow/ROADMAP.md` / `devflow/BACKLOG.md`
177
182
 
178
183
  不是每次都要把所有文件生成一遍。材料必须服务于当前 ship 模式,而不是为了流程好看。
179
184
 
@@ -312,11 +317,12 @@ readiness dashboard 有 blocker 时,不能创建或更新 PR,只能 reroute
312
317
  - `post-merge-closeout`:跳过 PR,完成发布与闭环回写
313
318
  11. 处理 PR / MR body:从当前 `pr-brief.md`、最新验证、review、doc sync、TODO/backlog 结果重新渲染,不复用旧 body。
314
319
  12. 在 `handoff/pr-brief.md` 写入 readiness dashboard 与 PR body accuracy check;已有 PR body 与当前事实不一致时先刷新再继续。
315
- 13. 回写 `devflow/roadmap/backlog.md` / `devflow/roadmap/roadmap.md`:
320
+ 13. 回写 `devflow/roadmap.json` 并重新生成 `devflow/ROADMAP.md` / `devflow/BACKLOG.md`:
316
321
  - 新发现的 follow-up
317
322
  - 被推迟但必须保留的事项
318
323
  - 因本次结果而改变优先级的事项
319
- 14. 如果 requirement 真正闭环,更新状态摘要并归档;否则把下一位接手者的入口写清楚。
324
+ 14. `sync-roadmap-progress.sh` 更新 source RM 的 status、REQ/FIX 绑定和 progress:`create-pr` / `update-pr` 通常写 `In review` + `100%`,`local-handoff` 写 `Ready for handoff`,`post-merge-closeout` 写 `Done`;如果无 source RM,必须在 handoff 写 no-op reason。
325
+ 15. 如果 requirement 真正闭环,更新状态摘要并归档;否则把下一位接手者的入口写清楚。
320
326
 
321
327
  ## Output
322
328
 
@@ -324,7 +330,7 @@ readiness dashboard 有 blocker 时,不能创建或更新 PR,只能 reroute
324
330
  - `handoff/release-note.md`(需要对外发布时)
325
331
  - 更新后的 `handoff/resume-index.md`
326
332
  - 同步后的 `CLAUDE.md` / README / 架构文档
327
- - 必要时更新后的 `devflow/roadmap/backlog.md` / `devflow/roadmap/roadmap.md`
333
+ - 必要时更新后的 `devflow/roadmap.json` / `devflow/ROADMAP.md` / `devflow/BACKLOG.md`
328
334
  - 单测 / e2e 的通过证据,或明确记录的 skip / blocker
329
335
  - 必要时创建或更新的 PR / MR
330
336
  - PR / MR body 中的 Summary、Test Coverage、Pre-Landing Review、Scope Drift、Plan Completion、Verification Results、Documentation、Test plan
@@ -339,6 +345,7 @@ readiness dashboard 有 blocker 时,不能创建或更新 PR,只能 reroute
339
345
  - 现在谁都可以顺着 `handoff/pr-brief.md` 或 `handoff/resume-index.md` 继续往前走
340
346
  - 文档、PR 描述、release note 说的是同一套现实
341
347
  - `cc-simplify`、单测、e2e、commit/push 的结果都能被接手者追溯
348
+ - source RM 的 status、REQ/FIX 绑定、progress 和 follow-up 已经和 ship 现实一致
342
349
 
343
350
  ## Bundled Resources
344
351
 
@@ -353,6 +360,8 @@ readiness dashboard 有 blocker 时,不能创建或更新 PR,只能 reroute
353
360
  - 文档同步:`scripts/sync-act-docs.sh`
354
361
  - PR 简报生成:`scripts/render-pr-brief.sh`
355
362
  - requirement 归档:`scripts/archive-requirement.sh`
363
+ - Roadmap 定位:`../cc-roadmap/scripts/locate-roadmap-item.sh`
364
+ - Roadmap 回写:`../cc-roadmap/scripts/sync-roadmap-progress.sh`
356
365
 
357
366
  ## Working Rules
358
367
 
@@ -363,12 +372,13 @@ readiness dashboard 有 blocker 时,不能创建或更新 PR,只能 reroute
363
372
  5. 分支决策必须明确属于 4 种模式之一,不要含糊。
364
373
  6. 已存在 PR / MR 时,优先更新,不重复创建。
365
374
  7. `cc-simplify`、单测、e2e 任何一步只要导致代码变化或验证口径变化,必须回 `cc-check`。
366
- 8. `devflow/roadmap/backlog.md` / `devflow/roadmap/roadmap.md` 只回写真正改变优先级或产生 follow-up 的事项,不写噪音。
375
+ 8. `devflow/roadmap.json` 只回写真正改变优先级或产生 follow-up 的事项,并用 `sync-roadmap-progress.sh` 重新生成 `devflow/ROADMAP.md` / `devflow/BACKLOG.md`,不写噪音。
367
376
  9. `local-handoff` 不是偷懒模式,它仍然必须让下一位接手者知道做什么、怎么验证、卡在哪。
368
377
  10. `create-pr` / `update-pr` 模式默认要求提交历史符合 `references/git-commit-guidelines.md`,并完成正确的 push、PR 创建或更新动作。
369
378
  11. CHANGELOG 只能基于当前 diff / commit history / release truth 更新,不允许覆盖既有历史条目。
370
379
  12. PR / MR body 每次都从当前事实重建,不沿用旧 body 或旧测试输出。
371
380
  13. Verification 每次执行 `cc-act` 都必须重新运行;只有已完成且可证明幂等的动作可以跳过。
381
+ 14. source RM 找不到时不能编造新 RM;写 no-op reason。如果 follow-up 改变阶段顺序或优先级,reroute 到 `cc-roadmap`。
372
382
 
373
383
  ## Exit Criteria
374
384
 
@@ -377,7 +387,7 @@ readiness dashboard 有 blocker 时,不能创建或更新 PR,只能 reroute
377
387
  - reviewer / maintainer 能直接接手
378
388
  - 需要同步的文档已经同步
379
389
  - `cc-simplify`、单测、e2e 已执行完毕,或 skip / blocker 已被明确记录
380
- - follow-up 已回写到正确的 backlog / roadmap 位置
390
+ - source RM 已回写最新进度,follow-up 已回写到正确的 backlog / roadmap 位置
381
391
  - 下一轮该怎么继续已经写清楚
382
392
  - requirement 不是“看起来结束”,而是真正闭环
383
393
 
@@ -102,6 +102,16 @@
102
102
  - `release-note.md`:
103
103
  - `resume-index.md`:
104
104
 
105
+ ## Roadmap Progress Sync
106
+
107
+ - Source RM:
108
+ - Roadmap files: `devflow/roadmap.json`, `devflow/ROADMAP.md`, optional `devflow/BACKLOG.md`
109
+ - Sync command:
110
+ - Status after sync:
111
+ - Progress after sync:
112
+ - Follow-up writeback:
113
+ - No-op reason:
114
+
105
115
  ## Consolidated Memory
106
116
 
107
117
  - `handoff path`:
@@ -37,6 +37,14 @@
37
37
 
38
38
  -
39
39
 
40
+ ## Roadmap Progress
41
+
42
+ - Source RM:
43
+ - Status after sync:
44
+ - Progress after sync:
45
+ - Follow-up writeback:
46
+ - No-op reason:
47
+
40
48
  ## Follow-Ups
41
49
 
42
50
  - Current behavior:
@@ -11,6 +11,7 @@
11
11
  7. PR / handoff 必须记录 `cc-check` 审过的 base/head SHA、review packet、finding triage 摘要
12
12
  8. readiness dashboard 必须说明 review freshness、QA coverage、browser evidence、failure ownership、documentation release、PR body accuracy
13
13
  9. behavior handoff 必须带上 QA feedback loop、expected / actual / reproduction steps,以及 durable follow-up brief
14
+ 10. source RM 必须已从 `devflow/roadmap.json` 定位,且 roadmap progress 与 verified reality 一致;没有 source RM 时记录 no-op reason
14
15
 
15
16
  ## Ship Decision Contract
16
17
 
@@ -37,6 +38,7 @@
37
38
  10. verification 每次进入 `cc-act` 都必须重新跑;只有 push、PR 更新、文档生成等动作可以因为幂等状态跳过
38
39
  11. PR body accuracy 必须对照当前 report-card、当前 diff、当前 commits;旧 body 不能作为证据源
39
40
  12. follow-up 回写必须用行为契约表达,包含 current behavior、desired behavior、key interfaces、acceptance criteria、out of scope;不能只写文件路径或聊天 TODO
41
+ 13. roadmap 回写只更新 `devflow/roadmap.json`,并通过 `sync-roadmap-progress.sh` 重新生成 `devflow/ROADMAP.md` / `devflow/BACKLOG.md`
40
42
 
41
43
  ## Memory Consolidation
42
44
 
@@ -56,5 +58,6 @@
56
58
  - readiness dashboard 没有 blocker,PR body accuracy 已检查或明确阻塞
57
59
  - QA behavior evidence 和 feedback loop 已进入 PR / handoff / release 材料
58
60
  - post-merge closeout 反映 merged result 的验证事实,而不是只反映合并前事实
61
+ - source RM 的 status、REQ/FIX 绑定、progress 和 follow-up 已经落入 roadmap truth
59
62
  - 下一轮计划入口更清楚
60
63
  - 文档入口可发现,changelog 不丢历史,TODO / backlog 只记录有证据的事项
@@ -253,6 +253,54 @@ req_act_collect_spec_files() {
253
253
  req_act_dedup_file "$out_file"
254
254
  }
255
255
 
256
+ req_act_roadmap_sync_summary() {
257
+ local manifest="$1"
258
+ local repo_root="${2:-$(req_act_repo_root)}"
259
+ local item_id=""
260
+ local sync_status=""
261
+ local sync_command=""
262
+ local no_op_reason=""
263
+ local updated_files=""
264
+ local existing_files=""
265
+
266
+ if [[ -f "$manifest" ]]; then
267
+ item_id="$(jq -r '.sourceRoadmap.itemId // empty' "$manifest" 2>/dev/null || true)"
268
+ sync_status="$(jq -r '.sourceRoadmap.syncStatus // .roadmapSync.status // "not recorded"' "$manifest" 2>/dev/null || true)"
269
+ sync_command="$(jq -r '.sourceRoadmap.syncCommand // .roadmapSync.command // empty' "$manifest" 2>/dev/null || true)"
270
+ no_op_reason="$(jq -r '.sourceRoadmap.noOpReason // .roadmapSync.noOpReason // empty' "$manifest" 2>/dev/null || true)"
271
+ updated_files="$(jq -r '(.sourceRoadmap.updatedFiles // .roadmapSync.updatedFiles // []) | join(", ")' "$manifest" 2>/dev/null || true)"
272
+ fi
273
+
274
+ for candidate in devflow/roadmap.json devflow/ROADMAP.md devflow/BACKLOG.md devflow/roadmap-tracking.json; do
275
+ if [[ -f "$repo_root/$candidate" ]]; then
276
+ if [[ -n "$existing_files" ]]; then
277
+ existing_files+=", "
278
+ fi
279
+ existing_files+="$candidate"
280
+ fi
281
+ done
282
+
283
+ [[ -n "$existing_files" ]] || existing_files="no roadmap files found"
284
+ [[ -n "$updated_files" ]] || updated_files="not recorded"
285
+ [[ -n "$sync_command" ]] || sync_command="not recorded"
286
+ [[ -n "$sync_status" ]] || sync_status="not recorded"
287
+
288
+ if [[ -z "$item_id" ]]; then
289
+ [[ -n "$no_op_reason" ]] || no_op_reason="no-source-rm"
290
+ printf 'source=none; status=no-op; files=%s; no-op=%s\n' "$existing_files" "$no_op_reason"
291
+ return 0
292
+ fi
293
+
294
+ printf 'source=%s; status=%s; files=%s; updated=%s; command=%s' \
295
+ "$item_id" "$sync_status" "$existing_files" "$updated_files" "$sync_command"
296
+
297
+ if [[ -n "$no_op_reason" ]]; then
298
+ printf '; no-op=%s' "$no_op_reason"
299
+ fi
300
+
301
+ printf '\n'
302
+ }
303
+
256
304
  req_act_collect_evidence() {
257
305
  local report_card="$1"
258
306
  local out_file="$2"
@@ -31,6 +31,7 @@ source "$script_dir/cc-act-common.sh"
31
31
  CHANGE_DIR="$(req_act_change_dir "$REQ_DIR")"
32
32
  report_card="$(req_act_report_path "$CHANGE_DIR")"
33
33
  tasks_file="$(req_act_tasks_path "$CHANGE_DIR")"
34
+ manifest="$(req_act_manifest_path "$CHANGE_DIR")"
34
35
  handoff_dir="$(req_act_handoff_dir "$CHANGE_DIR")"
35
36
 
36
37
  verdict="unknown"
@@ -59,6 +60,7 @@ platform="$(printf '%s\n' "$ship_context" | awk -F= '/^PLATFORM=/{print $2}')"
59
60
  decision_hint="$(printf '%s\n' "$ship_context" | awk -F= '/^DECISION_HINT=/{print $2}')"
60
61
  pr_status="$(printf '%s\n' "$ship_context" | awk -F= '/^PR_STATUS=/{print $2}')"
61
62
  pr_url="$(printf '%s\n' "$ship_context" | awk -F= '/^PR_URL=/{print $2}')"
63
+ roadmap_sync_summary="$(req_act_roadmap_sync_summary "$manifest")"
62
64
 
63
65
  {
64
66
  echo "# Status Report"
@@ -76,6 +78,7 @@ pr_url="$(printf '%s\n' "$ship_context" | awk -F= '/^PR_URL=/{print $2}')"
76
78
  [[ -n "$decision_hint" ]] && echo "- Ship mode hint: $decision_hint"
77
79
  [[ -n "$pr_status" ]] && echo "- PR status: $pr_status"
78
80
  [[ -n "$pr_url" ]] && echo "- PR url: $pr_url"
81
+ echo "- Roadmap progress: $roadmap_sync_summary"
79
82
  [[ -f "$handoff_dir/pr-brief.md" ]] && echo "- PR brief: ready"
80
83
  [[ -f "$handoff_dir/release-note.md" ]] && echo "- Release note: ready"
81
84
  [[ -f "$handoff_dir/resume-index.md" ]] && echo "- Resume index: ready"
@@ -186,6 +186,7 @@ failure_ownership_summary="$(jq -r '
186
186
  ' "$report_card")"
187
187
  documentation_release_summary="CLAUDE=${claude_status}; README=${readme_status}"
188
188
  pr_body_accuracy_summary="body must be regenerated from this pr-brief, current report-card, and current diff before PR create/update"
189
+ roadmap_sync_summary="$(req_act_roadmap_sync_summary "$manifest" "$REPO_ROOT")"
189
190
 
190
191
  {
191
192
  echo "# PR Brief"
@@ -231,6 +232,7 @@ pr_body_accuracy_summary="body must be regenerated from this pr-brief, current r
231
232
  echo "- Behavior evidence: $behavior_evidence_summary"
232
233
  echo "- Failure ownership: $failure_ownership_summary"
233
234
  echo "- Documentation release: $documentation_release_summary"
235
+ echo "- Roadmap progress: $roadmap_sync_summary"
234
236
  echo "- PR body accuracy: $pr_body_accuracy_summary"
235
237
  echo
236
238
  echo "## Summary"
@@ -298,6 +300,10 @@ pr_body_accuracy_summary="body must be regenerated from this pr-brief, current r
298
300
  echo "- \`resume-index.md\`: missing"
299
301
  fi
300
302
  echo
303
+ echo "## Roadmap Progress Sync"
304
+ echo
305
+ echo "- $roadmap_sync_summary"
306
+ echo
301
307
  echo "## How To Verify"
302
308
  echo
303
309
  if [[ -s "$tmp_verify" ]]; then
@@ -62,6 +62,7 @@ spec_sync_ready="$(req_act_spec_sync_ready "$report_card")"
62
62
  output_language="$(req_act_output_language "$report_card")"
63
63
  design_goal="$(req_act_design_goal "$design_file")"
64
64
  main_risk="$(req_act_main_risk "$design_file")"
65
+ roadmap_sync_summary="$(req_act_roadmap_sync_summary "$manifest" "$REPO_ROOT")"
65
66
 
66
67
  tmp_changed="$(mktemp)"
67
68
  tmp_verify="$(mktemp)"
@@ -176,6 +177,11 @@ find "$REPO_ROOT" -maxdepth 2 -type f \( -iname 'README.md' -o -iname 'README*.m
176
177
  echo "- Base branch: ${base_branch:-unknown}"
177
178
  [[ -n "$pr_status" ]] && echo "- PR status: $pr_status"
178
179
  [[ -n "$pr_url" ]] && echo "- PR url: $pr_url"
180
+ echo "- Roadmap progress: $roadmap_sync_summary"
181
+ echo
182
+ echo "## Roadmap Progress"
183
+ echo
184
+ echo "- $roadmap_sync_summary"
179
185
  echo
180
186
  echo "## Follow-Ups"
181
187
  if [[ -s "$tmp_followups" ]]; then
@@ -225,6 +231,7 @@ esac
225
231
  echo "- Req-Check passed; see review/report-card.json for evidence."
226
232
  fi
227
233
  echo "- Ship mode decided as \`$ship_mode\`."
234
+ echo "- Roadmap progress: $roadmap_sync_summary"
228
235
  [[ -n "$pr_url" ]] && echo "- Active PR / MR: $pr_url"
229
236
  echo
230
237
  echo "## Follow-Ups"
@@ -241,6 +248,7 @@ esac
241
248
  echo
242
249
  echo "- $next_action"
243
250
  echo "- Formal spec sync belongs in cc-act before final ship closeout."
251
+ echo "- Roadmap progress must be synced through cc-roadmap before final closeout when a source RM exists."
244
252
  echo
245
253
  echo "## Parallel Notes"
246
254
  echo
@@ -289,6 +297,10 @@ esac
289
297
  echo "- No capability spec files recorded in task-manifest.json."
290
298
  fi
291
299
  echo
300
+ echo "## Roadmap Targets"
301
+ echo
302
+ echo "- $roadmap_sync_summary"
303
+ echo
292
304
  echo "## Project Doc Targets"
293
305
  echo
294
306
  echo "### CLAUDE Targets"
@@ -317,6 +329,7 @@ esac
317
329
  echo
318
330
  echo "- Update the listed \`CLAUDE.md\` files if structure, workflow, or operational truth changed."
319
331
  echo "- Update README candidates if user-visible behavior or setup flow changed."
332
+ echo "- Update \`devflow/roadmap.json\` via \`sync-roadmap-progress.sh\` when source RM status, progress, or follow-up truth changed."
320
333
  echo "- Re-render \`pr-brief.md\` after any manual doc edits so the PR body stays in sync."
321
334
  if [[ -n "$main_risk" ]]; then
322
335
  echo "- Main risk to reflect in docs: $main_risk"
@@ -1,5 +1,11 @@
1
1
  # CC-Do Skill Changelog
2
2
 
3
+ ## v1.6.2 - 2026-05-06
4
+
5
+ - absorb the external TDD skill's execution details into native `cc-do`: spec-style test names, one logical behavior per Red, and public verification paths
6
+ - strengthen Green evidence with minimality guards so implementation does not pre-build future unproven behavior
7
+ - expand checkpoint recovery fields with interface-testability proof and concrete refactor candidates such as duplication, long methods, shallow modules, feature envy, primitive obsession, naming, and nested branches
8
+
3
9
  ## v1.6.1 - 2026-04-29
4
10
 
5
11
  - reject parent/child touched-path overlaps when selecting parallel execution surfaces
@@ -53,10 +53,11 @@
53
53
  2. 确认红灯是预期失败,不是测试写错、fixture 缺失或环境没接上。
54
54
  3. 确认红灯通过公共 seam 证明行为缺失,而不是测私有函数、内部调用次数或临时结构。
55
55
  4. 确认 mock 只发生在系统边界;内部协作者不 mock。
56
- 5. 只写让当前测试转绿的最小实现。
57
- 6. 绿后才允许重构。
58
- 7. 重构后必须保持绿。
59
- 8. 测试没先红过,或红灯不是公共 seam 上的行为失败,就不能宣称这次变更受 TDD 保护。
56
+ 5. 确认测试名像规格说明,一个 Red 只证明一个逻辑行为,结果从公共验证路径读回。
57
+ 6. 只写让当前测试转绿的最小实现,不提前实现未来测试尚未要求的分支、状态或 API。
58
+ 7. 绿后才允许重构。
59
+ 8. 重构后必须保持绿,并说明处理了重复、长方法、浅模块、feature envy、primitive obsession、命名、三层以上分支或其它具体坏味道。
60
+ 9. 测试没先红过,或红灯不是公共 seam 上的行为失败,就不能宣称这次变更受 TDD 保护。
60
61
 
61
62
  ## TDD Exception Rule
62
63
 
@@ -84,9 +85,9 @@
84
85
  3. `red_seam_verified`: 红灯通过公共接口、调用方流程、CLI/API/UI 或真实边界进入系统
85
86
  4. `red_behavior_verified`: 测试断言用户或调用方可观察行为,不断言内部实现细节
86
87
  5. `mock_boundary_verified`: mock 只在系统边界,内部协作者没有被 mock
87
- 6. `green_passed`: 当前任务实现转绿
88
+ 6. `green_passed`: 当前任务实现转绿,且实现只覆盖当前红灯要求的最小行为
88
89
  7. `refactor_done` 或 `refactor_not_needed`
89
- 8. `refactor_green`: 重构后相关测试仍绿
90
+ 8. `refactor_green`: 重构后相关测试仍绿,且没有在 Red 状态做结构清理
90
91
  9. `spec_review_pass`
91
92
  10. `code_review_pass`
92
93
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: cc-do
3
- version: 1.6.1
3
+ version: 1.6.2
4
4
  description: Use when implementing planned tasks, resuming interrupted work, applying a frozen investigation handoff, or landing review feedback after cc-plan or cc-investigate.
5
5
  triggers:
6
6
  - 开始做 T003
@@ -40,8 +40,10 @@ entry_gate:
40
40
  - Select only ready tasks whose dependencies, wave, touched paths, and file ownership are clear.
41
41
  - Reject parallel execution when touched paths overlap by exact path or parent/child path; submodule touches must be isolated unless the task explicitly owns that submodule.
42
42
  - If the current task cannot be restated from canonical artifacts, run a context reset before coding.
43
+ - "Validate the current task's TDD shape before coding: spec-style test name, one logical behavior, public verification path, allowed boundary mocks, Green minimality guard, and refactor candidates."
43
44
  exit_criteria:
44
45
  - The current task has red/green evidence, public-seam test quality evidence, review evidence, and a resumable checkpoint trail.
46
+ - Red evidence proves one observable behavior through a public verification path; Green evidence shows only the minimal production change; Refactor evidence names the concrete smell removed or says why none was needed.
45
47
  - Execution leaves the next verifier enough runtime truth to judge the task without chat memory.
46
48
  - The honest next step is cc-check or an explicit reroute.
47
49
  reroutes:
@@ -141,12 +143,18 @@ NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST
141
143
 
142
144
  Red 不是形式上的红,而是公共 seam 上的行为缺失证明。测试必须通过公共接口、调用方流程、CLI/API/UI 路径或其它真实边界进入系统;只验证私有函数、内部调用次数、临时数据结构或 mock 自己控制的内部协作者,不算 TDD 证据。
143
145
 
146
+ 一个 Red 只证明一个逻辑行为。测试名要像规格说明,而不是实现步骤;结果要从同一类公共入口读回。直接查数据库、读内部状态、扫描临时文件或绕过 API 来证明行为,只在那个边界本身就是被测对象时成立。
147
+
144
148
  例外只能用于 throwaway prototype、纯生成文件、纯配置改动;例外必须写进 checkpoint 的 `tddException`,包含原因、风险和替代验证命令。测试第一次就绿,说明测试没有证明新行为,必须修测试而不是继续写生产代码。
145
149
 
146
150
  禁止水平切片:不要先写一批测试,再写一批实现。每次只推进一个 tracer bullet:一个可观察行为的 Red -> 让它变绿的最小实现 -> 必要重构 -> 记录证据,然后再进入下一个行为。
147
151
 
148
152
  测试数据也必须诚实。fixture 只提供当前行为需要的最小输入;partial fixture、类型断言、mock payload 或 generated stub 必须写清哪些字段是真实 contract,哪些只是测试填充。不能用 `as`、`any`、双重 cast、缺字段 partial mock 或 test-only method 掩盖 seam 设计问题。
149
153
 
154
+ Green 不是顺手把未来行为都做掉。只写当前红灯要求的最小生产代码;如果需要新接口,优先保持小接口深模块,依赖从调用方传入,外部 boundary adapter 拆成具体操作,而不是用一个 generic fetcher 把复杂条件推给 mock。
155
+
156
+ Refactor 只能发生在 Green 之后。优先处理当前 slice 暴露出的重复、长方法、浅模块、feature envy、primitive obsession、命名混乱、三层以上分支和新代码揭开的旧代码坏味道;没被当前绿色测试保护的扩张性整理,回到 `cc-plan` 或后续任务。
157
+
150
158
  ## Entry Gate
151
159
 
152
160
  1. 先读 `planning/design.md` 或 `planning/analysis.md`,再读 `planning/tasks.md`、`planning/task-manifest.json`;如果是恢复执行,再补读最近 checkpoint 或已有 `handoff/resume-index.md`。
@@ -165,12 +173,13 @@ Red 不是形式上的红,而是公共 seam 上的行为缺失证明。测试
165
173
  4. 先 `fail-first`:先写失败测试,先看见预期红,再写生产代码。
166
174
  5. 如果红灯不是预期失败(语法错、fixture 错、测试没连上),先修测试直到它正确失败。
167
175
  6. 如果红灯通过错误 seam 得到,比如私有方法、内部调用次数、mock 内部协作者,先修测试 seam,不准进入 Green。
168
- 7. `Red -> Green -> Refactor` 推进,Green 只允许最小实现。
169
- 8. 如果当前 Red 需要新的 fixture mock,先证明它仍从公共 seam 触发真实行为;fixture 缺字段、类型强转或内部 mock 都要写入 `tdd.testQuality.fixtureRisk` 或先修 seam
170
- 9. Refactor 后必须重跑相关测试,保持 Green
171
- 10. 每次推进都写 task runtime:`events.jsonl` + `checkpoint.json`,并记录 `tdd.testQuality` 或 `tddException`。
172
- 11. 任务实现后,先过 `spec review`,再过 `code review`,两道门都过才算任务收口;这里只验证 spec delta,不回写长期 spec。
173
- 12. 当前任务完成后,把可验证证据留给 `cc-check`。
176
+ 7. 如果红灯只断言实现形状、直接查内部状态或一次证明多个逻辑行为,先改测试,不准进入 Green
177
+ 8. `Red -> Green -> Refactor` 推进,Green 只允许最小实现,不预铺未来测试尚未要求的分支、状态或 API
178
+ 9. 如果当前 Red 需要新的 fixture 或 mock,先证明它仍从公共 seam 触发真实行为;fixture 缺字段、类型强转或内部 mock 都要写入 `tdd.testQuality.fixtureRisk` 或先修 seam
179
+ 10. Refactor 后必须重跑相关测试,保持 Green;Red 状态下不重构。
180
+ 11. 每次推进都写 task runtime:`events.jsonl` + `checkpoint.json`,并记录 `tdd.testQuality`、`tdd.greenMinimality`、`tdd.refactorCandidates` `tddException`。
181
+ 12. 任务实现后,先过 `spec review`,再过 `code review`,两道门都过才算任务收口;这里只验证 spec delta,不回写长期 spec。
182
+ 13. 当前任务完成后,把可验证证据留给 `cc-check`。
174
183
 
175
184
  ## Output
176
185
 
@@ -185,6 +194,9 @@ Red 不是形式上的红,而是公共 seam 上的行为缺失证明。测试
185
194
  - 当前 task 一眼可见,执行者不用从聊天记录里猜目标
186
195
  - 当前 wave、ready tasks、parallel candidates、touch conflict verdict 和 submoduleTouches 一眼可见
187
196
  - 至少留下一次明确的 tracer bullet Red/Green/Refactor 证据,且 Red 是公共 seam 上的预期行为失败
197
+ - Red 证据说明测试名、单一行为、公共验证路径和为何不是实现细节测试
198
+ - Green 证据说明 minimality guard:本轮只满足当前红灯,没有提前实现未来分支
199
+ - Refactor 证据说明清掉了哪个具体坏味道,或者为什么当前 slice 不需要 refactor
188
200
  - 测试 fixture 说明真实 contract 字段和测试填充字段,没有用类型欺骗或内部 mock 制造假绿
189
201
  - runtime / checkpoint 足够让下一位接手者无损恢复
190
202
  - quick lane 也有 mini manifest、checkpoint、verification 和唯一 next action,不靠聊天记录继续
@@ -214,11 +226,14 @@ Red 不是形式上的红,而是公共 seam 上的行为缺失证明。测试
214
226
  5. 红灯原因必须和目标行为缺失一致;红灯如果只是测试写错,不算 TDD 证据。
215
227
  6. 红灯必须验证公共接口上的行为;实现细节测试、私有方法测试、内部调用次数断言都要先退回 Red 修正。
216
228
  7. Mock 只能放在系统边界;如果必须 mock 内部协作者才能测试,说明 seam 或设计合同有问题。
217
- 8. 先过 `spec review`,再过 `code review`,顺序不能反。
218
- 9. 不在 `cc-do` 里改 capability spec 正文;这里只产出实现证据和 spec 对齐证据。
219
- 10. 失败和阻塞都要留下恢复证据。
220
- 11. subagent 的输入必须包含:当前进度、当前任务全文、依赖状态、必读文件、验收标准、可信命令。
221
- 12. 三次失败修补后必须先质疑调查合同或设计合同,而不是继续堆补丁。
229
+ 8. 一个 Red 只证明一个逻辑行为;bulk Red 或测试名描述实现步骤,都先退回测试设计。
230
+ 9. Green 只写当前红灯需要的最小实现;预铺未来功能、兼容分支或宽接口都算越界。
231
+ 10. Red 时不重构;Refactor 只在相关测试已绿后处理当前 slice 暴露的坏味道。
232
+ 11. 先过 `spec review`,再过 `code review`,顺序不能反。
233
+ 12. 不在 `cc-do` 里改 capability spec 正文;这里只产出实现证据和 spec 对齐证据。
234
+ 13. 失败和阻塞都要留下恢复证据。
235
+ 14. 给 subagent 的输入必须包含:当前进度、当前任务全文、依赖状态、必读文件、验收标准、可信命令。
236
+ 15. 三次失败修补后必须先质疑调查合同或设计合同,而不是继续堆补丁。
222
237
 
223
238
  ## Exit Criteria
224
239
 
@@ -59,13 +59,22 @@
59
59
  - `red.expectedFailure`
60
60
  - `red.testSeam`
61
61
  - `red.behaviorAsserted`
62
+ - `red.specStyleTestName`
63
+ - `red.oneLogicalBehavior`
64
+ - `red.publicVerificationPath`
62
65
  - `red.allowedMocks`
63
66
  - `red.implementationDetailRisk`
64
67
  - `green.command`
65
68
  - `green.exitStatus`
69
+ - `green.minimalityGuard`
66
70
  - `refactor.status`
71
+ - `refactor.candidates`
72
+ - `refactor.greenCommand`
67
73
  - `testQuality.usesPublicInterface`
68
74
  - `testQuality.describesBehavior`
75
+ - `testQuality.specStyleName`
76
+ - `testQuality.verifiesThroughPublicPath`
77
+ - `testQuality.noBulkRed`
69
78
  - `testQuality.survivesInternalRefactor`
70
79
  - `testQuality.mocksOnlySystemBoundaries`
71
80
  - `review.spec.status`
@@ -1,5 +1,11 @@
1
1
  # CC-Investigate Skill Changelog
2
2
 
3
+ ## v1.2.2 - 2026-05-06
4
+
5
+ - add a Roadmap Sync Gate so frozen investigations must reconcile the source RM before handing off repair work
6
+ - classify roadmap updates by `implementation drift`, `missing spec truth`, and `roadmap mismatch` outcomes
7
+ - update analysis, tasks, and manifest templates with roadmap sync status fields
8
+
3
9
  ## v1.2.1 - 2026-04-29
4
10
 
5
11
  - add persistent debug session fields for active hypothesis, probes, cleanup state, and next evidence action