cc-devflow 4.5.3 → 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.
- package/.claude/skills/cc-act/CHANGELOG.md +12 -0
- package/.claude/skills/cc-act/PLAYBOOK.md +28 -5
- package/.claude/skills/cc-act/SKILL.md +45 -12
- package/.claude/skills/cc-act/assets/PR_BRIEF_TEMPLATE.md +39 -0
- package/.claude/skills/cc-act/assets/RELEASE_NOTE_TEMPLATE.md +16 -0
- package/.claude/skills/cc-act/references/closure-contract.md +3 -0
- package/.claude/skills/cc-act/scripts/cc-act-common.sh +48 -0
- package/.claude/skills/cc-act/scripts/generate-status-report.sh +3 -0
- package/.claude/skills/cc-act/scripts/render-pr-brief.sh +6 -0
- package/.claude/skills/cc-act/scripts/sync-act-docs.sh +13 -0
- package/.claude/skills/cc-check/CHANGELOG.md +6 -0
- package/.claude/skills/cc-check/PLAYBOOK.md +4 -0
- package/.claude/skills/cc-check/SKILL.md +15 -2
- package/.claude/skills/cc-check/assets/REPORT_CARD_TEMPLATE.json +18 -0
- package/.claude/skills/cc-do/CHANGELOG.md +12 -0
- package/.claude/skills/cc-do/PLAYBOOK.md +13 -10
- package/.claude/skills/cc-do/SKILL.md +40 -16
- package/.claude/skills/cc-do/references/execution-recovery.md +12 -0
- package/.claude/skills/cc-do/references/parallel-dispatch.md +6 -4
- package/.claude/skills/cc-do/scripts/detect-file-conflicts.sh +49 -3
- package/.claude/skills/cc-investigate/CHANGELOG.md +12 -0
- package/.claude/skills/cc-investigate/PLAYBOOK.md +12 -1
- package/.claude/skills/cc-investigate/SKILL.md +31 -5
- package/.claude/skills/cc-investigate/assets/ANALYSIS_TEMPLATE.md +44 -0
- package/.claude/skills/cc-investigate/assets/TASKS_TEMPLATE.md +1 -0
- package/.claude/skills/cc-investigate/assets/TASK_MANIFEST_TEMPLATE.json +9 -1
- package/.claude/skills/cc-investigate/references/investigation-contract.md +2 -0
- package/.claude/skills/cc-plan/CHANGELOG.md +29 -0
- package/.claude/skills/cc-plan/PLAYBOOK.md +43 -17
- package/.claude/skills/cc-plan/SKILL.md +85 -44
- package/.claude/skills/cc-plan/assets/DESIGN_TEMPLATE.md +109 -3
- package/.claude/skills/cc-plan/assets/TASKS_TEMPLATE.md +32 -5
- package/.claude/skills/cc-plan/assets/TASK_MANIFEST_TEMPLATE.json +85 -4
- package/.claude/skills/cc-plan/assets/TINY_DESIGN_TEMPLATE.md +78 -0
- package/.claude/skills/cc-plan/references/planning-contract.md +29 -7
- package/.claude/skills/cc-roadmap/CHANGELOG.md +12 -0
- package/.claude/skills/cc-roadmap/PLAYBOOK.md +15 -9
- package/.claude/skills/cc-roadmap/SKILL.md +22 -16
- package/.claude/skills/cc-roadmap/assets/BACKLOG_TEMPLATE.md +3 -1
- package/.claude/skills/cc-roadmap/assets/ROADMAP_TEMPLATE.md +11 -1
- package/.claude/skills/cc-roadmap/assets/TRACKING_TEMPLATE.json +57 -10
- package/.claude/skills/cc-roadmap/scripts/lib/roadmap-tracking/markdown.js +68 -3
- package/.claude/skills/cc-roadmap/scripts/lib/roadmap-tracking/schema.js +120 -0
- package/.claude/skills/cc-roadmap/scripts/lib/roadmap-tracking/store.js +25 -1
- package/.claude/skills/cc-roadmap/scripts/locate-roadmap-item.sh +13 -5
- package/.claude/skills/cc-roadmap/scripts/roadmap-tracking.js +3 -3
- package/.claude/skills/cc-roadmap/scripts/sync-roadmap-progress.sh +3 -3
- package/CHANGELOG.md +15 -0
- package/README.md +5 -5
- package/README.zh-CN.md +5 -5
- package/bin/cc-devflow-cli.js +93 -2
- package/docs/CLAUDE.md +1 -1
- package/docs/examples/START-HERE.md +3 -3
- package/docs/examples/example-bindings.json +27 -10
- package/docs/examples/full-design-blocked/BACKLOG.md +4 -2
- package/docs/examples/full-design-blocked/README.md +4 -4
- package/docs/examples/full-design-blocked/ROADMAP.md +16 -2
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/design.md +39 -1
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json +41 -0
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md +8 -1
- package/docs/examples/full-design-blocked/roadmap.json +123 -0
- package/docs/examples/local-handoff/BACKLOG.md +4 -2
- package/docs/examples/local-handoff/README.md +4 -4
- package/docs/examples/local-handoff/ROADMAP.md +16 -2
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/design.md +19 -1
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json +26 -0
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md +8 -1
- package/docs/examples/local-handoff/roadmap.json +121 -0
- package/docs/examples/pdca-loop/BACKLOG.md +4 -2
- package/docs/examples/pdca-loop/README.md +4 -4
- package/docs/examples/pdca-loop/ROADMAP.md +16 -2
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/design.md +19 -1
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json +22 -3
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md +8 -1
- package/docs/examples/pdca-loop/roadmap.json +191 -0
- package/docs/examples/scripts/check-example-bindings.sh +7 -4
- package/docs/get-shit-done-strategy-audit.md +518 -0
- package/docs/guides/getting-started.md +2 -2
- package/docs/guides/getting-started.zh-CN.md +2 -2
- package/lib/compiler/__tests__/inventory.test.js +51 -0
- package/lib/compiler/__tests__/skills-registry.test.js +17 -3
- package/lib/compiler/inventory.js +78 -0
- package/lib/skill-runtime/__tests__/approve.test.js +92 -0
- package/lib/skill-runtime/__tests__/autopilot.test.js +4 -0
- package/lib/skill-runtime/__tests__/cli-bootstrap.integration.test.js +9 -1
- package/lib/skill-runtime/__tests__/planner.tdd.test.js +20 -0
- package/lib/skill-runtime/__tests__/query.test.js +147 -1
- package/lib/skill-runtime/__tests__/readiness.test.js +53 -0
- package/lib/skill-runtime/__tests__/release.test.js +85 -0
- package/lib/skill-runtime/__tests__/runtime.integration.test.js +11 -0
- package/lib/skill-runtime/__tests__/schemas.test.js +56 -0
- package/lib/skill-runtime/__tests__/worker-run.test.js +29 -0
- package/lib/skill-runtime/errors.js +39 -0
- package/lib/skill-runtime/index.js +8 -0
- package/lib/skill-runtime/operations/approve.js +17 -2
- package/lib/skill-runtime/operations/release.js +6 -3
- package/lib/skill-runtime/operations/worker-run.js +30 -0
- package/lib/skill-runtime/planner.js +10 -2
- package/lib/skill-runtime/query-registry.js +101 -0
- package/lib/skill-runtime/query.js +159 -91
- package/lib/skill-runtime/readiness.js +84 -0
- package/lib/skill-runtime/schemas.js +28 -3
- package/lib/skill-runtime/trace.js +22 -0
- package/package.json +1 -1
|
@@ -1,5 +1,17 @@
|
|
|
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
|
+
|
|
9
|
+
## v1.8.1 - 2026-04-29
|
|
10
|
+
|
|
11
|
+
- add structured ship preflight fields with `ShipPreflightError` rescue actions
|
|
12
|
+
- require rollback guards before publish, merge, PR update, or release note handoff
|
|
13
|
+
- add PR branch hygiene and learning extraction targets to delivery templates
|
|
14
|
+
|
|
3
15
|
## v1.8.0 - 2026-04-28
|
|
4
16
|
|
|
5
17
|
- add remote state consistency rules for issue, PR, tracker, `needs-info`, and `ready-for-agent` closeout handoffs
|
|
@@ -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`,锁定这些事实:
|
|
@@ -84,6 +94,9 @@ Ship 必须属于这 4 种模式之一:
|
|
|
84
94
|
4. 如果有 WIP commit,只能用非破坏性 rebase / fixup 处理,不允许盲目 soft reset。
|
|
85
95
|
5. push 前比较 local / remote HEAD;PR 前检查是否已有打开 PR / MR。
|
|
86
96
|
6. 生成 readiness dashboard:review freshness、review quality、QA coverage、browser QA、feedback loop、behavior evidence、failure ownership、documentation release、PR body accuracy。
|
|
97
|
+
7. 生成 ship preflight:branch/base/remote/auth/clean tree/review freshness/ship mode。
|
|
98
|
+
8. preflight 失败必须命名为 `ShipPreflightError`,并写明 rescue action 或切到 `local-handoff`。
|
|
99
|
+
9. 发布、合并、PR 更新或 release note 前必须写 rollback guard。
|
|
87
100
|
|
|
88
101
|
## Phase 3: Build Delivery Pack
|
|
89
102
|
|
|
@@ -115,6 +128,8 @@ Ship 必须属于这 4 种模式之一:
|
|
|
115
128
|
- review packet path / summary
|
|
116
129
|
- finding triage summary
|
|
117
130
|
- QA / claim evidence summary
|
|
131
|
+
- ship preflight and `ShipPreflightError` rescue if any
|
|
132
|
+
- rollback guard
|
|
118
133
|
- QA behavior evidence and feedback-loop quality
|
|
119
134
|
- readiness dashboard
|
|
120
135
|
- PR body accuracy check
|
|
@@ -175,19 +190,22 @@ Ship 必须属于这 4 种模式之一:
|
|
|
175
190
|
|
|
176
191
|
## Phase 6: Write Back The Learning
|
|
177
192
|
|
|
178
|
-
以下情况必须回写 `devflow/roadmap/
|
|
193
|
+
以下情况必须回写 `devflow/roadmap.json`,再重新生成 `devflow/ROADMAP.md` / `devflow/BACKLOG.md`:
|
|
179
194
|
|
|
180
195
|
1. 本次工作暴露了新的 follow-up
|
|
181
196
|
2. 原有优先级被改变
|
|
182
197
|
3. 有明确 deferred item 不能靠口头记忆保存
|
|
198
|
+
4. source RM 的 ship 现实从 planned / repair planned 推进到了 in review / ready for handoff / done
|
|
183
199
|
|
|
184
200
|
原则:
|
|
185
201
|
|
|
186
|
-
-
|
|
187
|
-
-
|
|
202
|
+
- 长期方向写进 `devflow/roadmap.json` 的 stage / item / backlog 字段
|
|
203
|
+
- 下一轮待排队动作写进对应 RM 的 backlog 字段,或交给 `cc-roadmap` 新增 RM
|
|
188
204
|
- 不要把噪音和碎念回写成系统真相
|
|
189
205
|
- follow-up 必须是 durable brief:用领域语言写 current behavior、desired behavior、key interfaces、acceptance criteria、out of scope
|
|
190
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`
|
|
191
209
|
|
|
192
210
|
## Phase 7: Declare The Next Entry
|
|
193
211
|
|
|
@@ -207,6 +225,9 @@ Ship 必须属于这 4 种模式之一:
|
|
|
207
225
|
5. PR body / release note / handoff / changelog 说的是不是同一套现实?
|
|
208
226
|
6. readiness dashboard 有没有 blocker 或 stale warning?
|
|
209
227
|
7. follow-up 是不是行为契约,而不是“改某文件某行”的易腐烂 TODO?
|
|
228
|
+
8. ship preflight failure 是否有 `ShipPreflightError`、artifact ref 和 rescue action?
|
|
229
|
+
9. rollback guard 是否足够让下一位维护者不靠聊天记录回退?
|
|
230
|
+
10. source RM 的 status、REQ/FIX、progress 是否已经和 ship 现实一致?
|
|
210
231
|
|
|
211
232
|
如果第 1 或第 3 题答案不是“能”,说明 `cc-act` 仍然太重或太糊。
|
|
212
233
|
|
|
@@ -216,7 +237,7 @@ Ship 必须属于这 4 种模式之一:
|
|
|
216
237
|
- `handoff/release-note.md`(需要发布时)
|
|
217
238
|
- 更新后的 `handoff/resume-index.md`
|
|
218
239
|
- 更新后的 `CLAUDE.md` / README / 架构文档(如果结构或行为变了)
|
|
219
|
-
- 必要时更新后的 `devflow/roadmap/
|
|
240
|
+
- 必要时更新后的 `devflow/roadmap.json` / `devflow/ROADMAP.md` / `devflow/BACKLOG.md`
|
|
220
241
|
|
|
221
242
|
## Local Kit
|
|
222
243
|
|
|
@@ -228,6 +249,8 @@ Ship 必须属于这 4 种模式之一:
|
|
|
228
249
|
- `scripts/render-pr-brief.sh` 负责从 requirement 真相源渲染 `pr-brief.md`
|
|
229
250
|
- `scripts/generate-status-report.sh` 负责汇总 requirement 与 ship 现状
|
|
230
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 并渲染投影
|
|
231
254
|
- `cc-simplify` 负责在 ship 前压掉重复、坏味道、低效实现
|
|
232
255
|
- `references/git-commit-guidelines.md` 负责提交规范真相源
|
|
233
256
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: cc-act
|
|
3
|
-
version: 1.8.
|
|
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
|
|
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
|
-
- Freeze current branch, PR,
|
|
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:
|
|
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/
|
|
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.
|
|
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/
|
|
181
|
+
- 必须把 follow-up 回写到 `devflow/roadmap.json`,并重新生成 `devflow/ROADMAP.md` / `devflow/BACKLOG.md`
|
|
177
182
|
|
|
178
183
|
不是每次都要把所有文件生成一遍。材料必须服务于当前 ship 模式,而不是为了流程好看。
|
|
179
184
|
|
|
@@ -218,6 +223,29 @@ tool_budget:
|
|
|
218
223
|
11. Remote state consistency:如果本次 closeout 触碰 GitHub issue / PR / tracker,必须记录当前 state、目标 state、允许转换、已保留事实和下一位 owner;`needs-info` 必须保留已确认事实和具体问题,`ready-for-agent` 必须有可执行 brief。
|
|
219
224
|
12. Tooling smoke:如果本次改动影响 hook、pre-commit、lint、publish、adapt 或验证脚本,必须跑真实入口或最接近真实入口的 smoke;只读配置文件不等于工具链可用。
|
|
220
225
|
|
|
226
|
+
## Ship Preflight And Rescue
|
|
227
|
+
|
|
228
|
+
ship preflight 必须结构化记录:
|
|
229
|
+
|
|
230
|
+
- `branch`: 当前分支、base、remote、local/remote HEAD 关系
|
|
231
|
+
- `auth`: `gh` / registry / deploy / package publish 等权限是否可用
|
|
232
|
+
- `workspace`: clean tree、staged files、未跟踪文件和相关 stash
|
|
233
|
+
- `reviewFreshness`: `cc-check` 审查范围是否仍绑定当前 HEAD
|
|
234
|
+
- `shipMode`: `create-pr` / `update-pr` / `local-handoff` / `post-merge-closeout`
|
|
235
|
+
|
|
236
|
+
任何 preflight failure 都必须命名为 `ShipPreflightError`,并写清 rescue action。
|
|
237
|
+
不能用“工具不可用”当作模糊失败;要明确切 `local-handoff`、补 auth、刷新 review,
|
|
238
|
+
还是返回 `cc-check`。
|
|
239
|
+
|
|
240
|
+
rollback guard 必须在 publish、merge、PR 更新或 release note 前写清:
|
|
241
|
+
|
|
242
|
+
- safe state
|
|
243
|
+
- rollback command 或人工回退步骤
|
|
244
|
+
- data / migration / package / remote side effect
|
|
245
|
+
- owner
|
|
246
|
+
|
|
247
|
+
没有 rollback guard 的 release 只能停在 handoff,不准发布。
|
|
248
|
+
|
|
221
249
|
## Readiness Dashboard
|
|
222
250
|
|
|
223
251
|
PR / handoff 之前必须把 readiness 压成一屏事实:
|
|
@@ -289,11 +317,12 @@ readiness dashboard 有 blocker 时,不能创建或更新 PR,只能 reroute
|
|
|
289
317
|
- `post-merge-closeout`:跳过 PR,完成发布与闭环回写
|
|
290
318
|
11. 处理 PR / MR body:从当前 `pr-brief.md`、最新验证、review、doc sync、TODO/backlog 结果重新渲染,不复用旧 body。
|
|
291
319
|
12. 在 `handoff/pr-brief.md` 写入 readiness dashboard 与 PR body accuracy check;已有 PR body 与当前事实不一致时先刷新再继续。
|
|
292
|
-
13. 回写 `devflow/roadmap/
|
|
320
|
+
13. 回写 `devflow/roadmap.json` 并重新生成 `devflow/ROADMAP.md` / `devflow/BACKLOG.md`:
|
|
293
321
|
- 新发现的 follow-up
|
|
294
322
|
- 被推迟但必须保留的事项
|
|
295
323
|
- 因本次结果而改变优先级的事项
|
|
296
|
-
14.
|
|
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 真正闭环,更新状态摘要并归档;否则把下一位接手者的入口写清楚。
|
|
297
326
|
|
|
298
327
|
## Output
|
|
299
328
|
|
|
@@ -301,7 +330,7 @@ readiness dashboard 有 blocker 时,不能创建或更新 PR,只能 reroute
|
|
|
301
330
|
- `handoff/release-note.md`(需要对外发布时)
|
|
302
331
|
- 更新后的 `handoff/resume-index.md`
|
|
303
332
|
- 同步后的 `CLAUDE.md` / README / 架构文档
|
|
304
|
-
- 必要时更新后的 `devflow/roadmap/
|
|
333
|
+
- 必要时更新后的 `devflow/roadmap.json` / `devflow/ROADMAP.md` / `devflow/BACKLOG.md`
|
|
305
334
|
- 单测 / e2e 的通过证据,或明确记录的 skip / blocker
|
|
306
335
|
- 必要时创建或更新的 PR / MR
|
|
307
336
|
- PR / MR body 中的 Summary、Test Coverage、Pre-Landing Review、Scope Drift、Plan Completion、Verification Results、Documentation、Test plan
|
|
@@ -316,6 +345,7 @@ readiness dashboard 有 blocker 时,不能创建或更新 PR,只能 reroute
|
|
|
316
345
|
- 现在谁都可以顺着 `handoff/pr-brief.md` 或 `handoff/resume-index.md` 继续往前走
|
|
317
346
|
- 文档、PR 描述、release note 说的是同一套现实
|
|
318
347
|
- `cc-simplify`、单测、e2e、commit/push 的结果都能被接手者追溯
|
|
348
|
+
- source RM 的 status、REQ/FIX 绑定、progress 和 follow-up 已经和 ship 现实一致
|
|
319
349
|
|
|
320
350
|
## Bundled Resources
|
|
321
351
|
|
|
@@ -330,6 +360,8 @@ readiness dashboard 有 blocker 时,不能创建或更新 PR,只能 reroute
|
|
|
330
360
|
- 文档同步:`scripts/sync-act-docs.sh`
|
|
331
361
|
- PR 简报生成:`scripts/render-pr-brief.sh`
|
|
332
362
|
- requirement 归档:`scripts/archive-requirement.sh`
|
|
363
|
+
- Roadmap 定位:`../cc-roadmap/scripts/locate-roadmap-item.sh`
|
|
364
|
+
- Roadmap 回写:`../cc-roadmap/scripts/sync-roadmap-progress.sh`
|
|
333
365
|
|
|
334
366
|
## Working Rules
|
|
335
367
|
|
|
@@ -340,12 +372,13 @@ readiness dashboard 有 blocker 时,不能创建或更新 PR,只能 reroute
|
|
|
340
372
|
5. 分支决策必须明确属于 4 种模式之一,不要含糊。
|
|
341
373
|
6. 已存在 PR / MR 时,优先更新,不重复创建。
|
|
342
374
|
7. `cc-simplify`、单测、e2e 任何一步只要导致代码变化或验证口径变化,必须回 `cc-check`。
|
|
343
|
-
8. `devflow/roadmap/
|
|
375
|
+
8. `devflow/roadmap.json` 只回写真正改变优先级或产生 follow-up 的事项,并用 `sync-roadmap-progress.sh` 重新生成 `devflow/ROADMAP.md` / `devflow/BACKLOG.md`,不写噪音。
|
|
344
376
|
9. `local-handoff` 不是偷懒模式,它仍然必须让下一位接手者知道做什么、怎么验证、卡在哪。
|
|
345
377
|
10. `create-pr` / `update-pr` 模式默认要求提交历史符合 `references/git-commit-guidelines.md`,并完成正确的 push、PR 创建或更新动作。
|
|
346
378
|
11. CHANGELOG 只能基于当前 diff / commit history / release truth 更新,不允许覆盖既有历史条目。
|
|
347
379
|
12. PR / MR body 每次都从当前事实重建,不沿用旧 body 或旧测试输出。
|
|
348
380
|
13. Verification 每次执行 `cc-act` 都必须重新运行;只有已完成且可证明幂等的动作可以跳过。
|
|
381
|
+
14. source RM 找不到时不能编造新 RM;写 no-op reason。如果 follow-up 改变阶段顺序或优先级,reroute 到 `cc-roadmap`。
|
|
349
382
|
|
|
350
383
|
## Exit Criteria
|
|
351
384
|
|
|
@@ -354,7 +387,7 @@ readiness dashboard 有 blocker 时,不能创建或更新 PR,只能 reroute
|
|
|
354
387
|
- reviewer / maintainer 能直接接手
|
|
355
388
|
- 需要同步的文档已经同步
|
|
356
389
|
- `cc-simplify`、单测、e2e 已执行完毕,或 skip / blocker 已被明确记录
|
|
357
|
-
- follow-up 已回写到正确的 backlog / roadmap 位置
|
|
390
|
+
- source RM 已回写最新进度,follow-up 已回写到正确的 backlog / roadmap 位置
|
|
358
391
|
- 下一轮该怎么继续已经写清楚
|
|
359
392
|
- requirement 不是“看起来结束”,而是真正闭环
|
|
360
393
|
|
|
@@ -24,6 +24,27 @@
|
|
|
24
24
|
- Base branch:
|
|
25
25
|
- PR / MR:
|
|
26
26
|
|
|
27
|
+
## Ship Preflight
|
|
28
|
+
|
|
29
|
+
- Branch:
|
|
30
|
+
- Base:
|
|
31
|
+
- Remote:
|
|
32
|
+
- Local / remote HEAD:
|
|
33
|
+
- Auth:
|
|
34
|
+
- Clean tree:
|
|
35
|
+
- Review freshness:
|
|
36
|
+
- Ship mode:
|
|
37
|
+
- `ShipPreflightError`:
|
|
38
|
+
- Rescue action:
|
|
39
|
+
|
|
40
|
+
## PR Branch Hygiene
|
|
41
|
+
|
|
42
|
+
- Existing PR / MR:
|
|
43
|
+
- Duplicate PR risk:
|
|
44
|
+
- Commit split:
|
|
45
|
+
- Push idempotency:
|
|
46
|
+
- Body source:
|
|
47
|
+
|
|
27
48
|
## Review Range
|
|
28
49
|
|
|
29
50
|
- Reviewed base SHA:
|
|
@@ -59,6 +80,13 @@
|
|
|
59
80
|
- Fresh evidence:
|
|
60
81
|
- Merged-result verification:
|
|
61
82
|
|
|
83
|
+
## Rollback Guard
|
|
84
|
+
|
|
85
|
+
- Safe state:
|
|
86
|
+
- Rollback command / manual steps:
|
|
87
|
+
- Side effects:
|
|
88
|
+
- Owner:
|
|
89
|
+
|
|
62
90
|
## QA Behavior Evidence
|
|
63
91
|
|
|
64
92
|
- Feedback loop:
|
|
@@ -74,6 +102,16 @@
|
|
|
74
102
|
- `release-note.md`:
|
|
75
103
|
- `resume-index.md`:
|
|
76
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
|
+
|
|
77
115
|
## Consolidated Memory
|
|
78
116
|
|
|
79
117
|
- `handoff path`:
|
|
@@ -96,6 +134,7 @@
|
|
|
96
134
|
- Key interfaces:
|
|
97
135
|
- Acceptance criteria:
|
|
98
136
|
- Out of scope:
|
|
137
|
+
- Learning extraction target:
|
|
99
138
|
|
|
100
139
|
## Risks
|
|
101
140
|
|
|
@@ -20,6 +20,13 @@
|
|
|
20
20
|
|
|
21
21
|
-
|
|
22
22
|
|
|
23
|
+
## Rollback Guard
|
|
24
|
+
|
|
25
|
+
- Safe state:
|
|
26
|
+
- Rollback command / manual steps:
|
|
27
|
+
- Side effects:
|
|
28
|
+
- Owner:
|
|
29
|
+
|
|
23
30
|
## QA Behavior Evidence
|
|
24
31
|
|
|
25
32
|
- Feedback loop:
|
|
@@ -30,9 +37,18 @@
|
|
|
30
37
|
|
|
31
38
|
-
|
|
32
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
|
+
|
|
33
48
|
## Follow-Ups
|
|
34
49
|
|
|
35
50
|
- Current behavior:
|
|
36
51
|
- Desired behavior:
|
|
37
52
|
- Acceptance criteria:
|
|
38
53
|
- Out of scope:
|
|
54
|
+
- Learning extraction target:
|
|
@@ -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-Check Skill Changelog
|
|
2
2
|
|
|
3
|
+
## v1.10.1 - 2026-04-29
|
|
4
|
+
|
|
5
|
+
- add named runtime failure fields with artifact references, owners, and rescue actions
|
|
6
|
+
- add human UAT evidence to the report card so manual acceptance can block or reroute honestly
|
|
7
|
+
- require review findings to carry explicit rescue actions instead of vague follow-up text
|
|
8
|
+
|
|
3
9
|
## v1.10.0 - 2026-04-28
|
|
4
10
|
|
|
5
11
|
- add test fixture honesty review for partial fixtures, generated stubs, casts, and missing mock payload fields
|
|
@@ -63,6 +63,8 @@ NO PASS WITHOUT FRESH EVIDENCE
|
|
|
63
63
|
6. 把每个成功声明映射到 `claimEvidence[]`
|
|
64
64
|
7. 行为变更必须补 `qa` 证据或例外理由
|
|
65
65
|
8. 失败输出必须写入 `runtime.failureOwnership[]`
|
|
66
|
+
9. failure ownership 必须包含 named error、artifact refs 和 rescue action
|
|
67
|
+
10. human UAT 必须 pass、fail、blocked 或带 skip reason;失败不能被测试绿灯覆盖
|
|
66
68
|
|
|
67
69
|
## Verification Layers
|
|
68
70
|
|
|
@@ -76,6 +78,8 @@ NO PASS WITHOUT FRESH EVIDENCE
|
|
|
76
78
|
8. Review freshness and confidence calibration
|
|
77
79
|
9. Failure ownership
|
|
78
80
|
10. Spec alignment and sync readiness
|
|
81
|
+
11. Human UAT
|
|
82
|
+
12. Named runtime errors and rescue actions
|
|
79
83
|
|
|
80
84
|
## Claim Evidence Matrix
|
|
81
85
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: cc-check
|
|
3
|
-
version: 1.10.
|
|
3
|
+
version: 1.10.1
|
|
4
4
|
description: Use when a planned or investigated change needs fresh verification evidence, layered gate proof, review truth, and an honest pass fail blocked verdict before entering cc-act.
|
|
5
5
|
triggers:
|
|
6
6
|
- 验收这个需求
|
|
@@ -25,7 +25,7 @@ entry_gate:
|
|
|
25
25
|
- Re-run fresh commands instead of inheriting cc-do narration.
|
|
26
26
|
- If evidence is stale or missing, reset context and rebuild the verdict from canonical artifacts.
|
|
27
27
|
exit_criteria:
|
|
28
|
-
- review/report-card.json records pass, fail, or blocked using fresh evidence, review freshness, claim evidence, QA coverage and browser evidence, failure ownership, plus spec alignment and sync readiness.
|
|
28
|
+
- review/report-card.json records pass, fail, or blocked using fresh evidence, review freshness, claim evidence, QA coverage and browser evidence, human UAT when applicable, named failure ownership, plus spec alignment and sync readiness.
|
|
29
29
|
- Task-level review and requirement-level diff review are separated clearly.
|
|
30
30
|
- 'The next step is unambiguous: cc-act, cc-do, cc-investigate, or cc-plan.'
|
|
31
31
|
reroutes:
|
|
@@ -169,6 +169,12 @@ NO PASS WITHOUT FRESH EVIDENCE
|
|
|
169
169
|
10. **Behavior Contract Layer**
|
|
170
170
|
- expected / actual / reproduction steps 是否用用户和领域语言写清
|
|
171
171
|
- follow-up 是否是行为契约,而不是易腐烂的文件行号 TODO
|
|
172
|
+
11. **Human UAT Layer**
|
|
173
|
+
- 人工验收是否 required、skipped with reason、pass、fail 或 blocked
|
|
174
|
+
- failed UAT 必须 reroute 到 `cc-do`、`cc-investigate` 或 `cc-plan`
|
|
175
|
+
12. **Named Error Layer**
|
|
176
|
+
- runtime failure 必须有 `errorName`、artifact refs、failure owner 和 rescue action
|
|
177
|
+
- invalid JSON、stale artifact、missing report 不能变成静默 `blocked`
|
|
172
178
|
|
|
173
179
|
任何一层失真,都不能写 `pass`。
|
|
174
180
|
|
|
@@ -284,6 +290,13 @@ NO PASS WITHOUT FRESH EVIDENCE
|
|
|
284
290
|
4. `environment` 必须记录缺失依赖、权限、服务、密钥或平台约束。
|
|
285
291
|
5. `pass` 不能带未解释的 `in-branch` 或 `ambiguous` 失败。
|
|
286
292
|
|
|
293
|
+
每条 failure ownership 还必须命名:
|
|
294
|
+
|
|
295
|
+
- `errorName`:可搜索的错误名,例如 `MissingSpecReviewProof`
|
|
296
|
+
- `artifactRefs`:指向 report、manifest、checkpoint、日志或命令输出
|
|
297
|
+
- `rescueAction`:下一步救援动作,不写空泛“检查一下”
|
|
298
|
+
- `owner`:`branch` / `baseline` / `environment` / `external` / `unknown`
|
|
299
|
+
|
|
287
300
|
## Entry Gate
|
|
288
301
|
|
|
289
302
|
1. 先读 `planning/design.md` 或 `planning/analysis.md`,再读 `planning/tasks.md`、`planning/task-manifest.json`。
|