cc-devflow 4.5.8 → 4.5.10

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 (149) hide show
  1. package/.claude/skills/cc-act/CHANGELOG.md +33 -0
  2. package/.claude/skills/cc-act/PLAYBOOK.md +9 -4
  3. package/.claude/skills/cc-act/SKILL.md +73 -12
  4. package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_INDEX_TEMPLATE.md +30 -0
  5. package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_PRINCIPLES_TEMPLATE.md +29 -0
  6. package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_TEMPLATE.md +103 -0
  7. package/.claude/skills/cc-act/assets/PR_BRIEF_TEMPLATE.md +61 -5
  8. package/.claude/skills/cc-act/references/closure-contract.md +4 -1
  9. package/.claude/skills/cc-act/references/git-commit-guidelines.md +342 -37
  10. package/.claude/skills/cc-act/scripts/cc-act-common.sh +29 -1
  11. package/.claude/skills/cc-act/scripts/render-pr-brief.sh +164 -0
  12. package/.claude/skills/cc-act/scripts/sync-act-docs.sh +1 -1
  13. package/.claude/skills/cc-check/CHANGELOG.md +17 -0
  14. package/.claude/skills/cc-check/PLAYBOOK.md +1 -0
  15. package/.claude/skills/cc-check/SKILL.md +9 -5
  16. package/.claude/skills/cc-check/references/review-contract.md +7 -0
  17. package/.claude/skills/cc-check/scripts/render-report-card.js +6 -1
  18. package/.claude/skills/cc-dev/CHANGELOG.md +5 -0
  19. package/.claude/skills/cc-dev/SKILL.md +26 -1
  20. package/.claude/skills/cc-do/CHANGELOG.md +23 -0
  21. package/.claude/skills/cc-do/PLAYBOOK.md +7 -7
  22. package/.claude/skills/cc-do/SKILL.md +49 -45
  23. package/.claude/skills/cc-do/references/execution-recovery.md +18 -13
  24. package/.claude/skills/cc-do/scripts/build-task-context.sh +13 -22
  25. package/.claude/skills/cc-do/scripts/mark-task-complete.sh +0 -6
  26. package/.claude/skills/cc-do/scripts/record-review-decision.sh +4 -5
  27. package/.claude/skills/cc-do/scripts/recover-workflow.sh +9 -11
  28. package/.claude/skills/cc-do/scripts/verify-task-gates.sh +12 -10
  29. package/.claude/skills/cc-do/scripts/write-task-checkpoint.sh +7 -29
  30. package/.claude/skills/cc-investigate/CHANGELOG.md +34 -0
  31. package/.claude/skills/cc-investigate/PLAYBOOK.md +21 -5
  32. package/.claude/skills/cc-investigate/SKILL.md +97 -40
  33. package/.claude/skills/cc-investigate/assets/TASKS_TEMPLATE.md +66 -4
  34. package/.claude/skills/cc-investigate/assets/TASK_MANIFEST_TEMPLATE.json +30 -59
  35. package/.claude/skills/cc-investigate/assets/{ANALYSIS_TEMPLATE.md → legacy/ANALYSIS_TEMPLATE.md} +48 -0
  36. package/.claude/skills/cc-investigate/references/investigation-contract.md +16 -2
  37. package/.claude/skills/cc-investigate/scripts/bootstrap-analysis.sh +1 -1
  38. package/.claude/skills/cc-next/CHANGELOG.md +6 -0
  39. package/.claude/skills/cc-next/PLAYBOOK.md +26 -4
  40. package/.claude/skills/cc-next/SKILL.md +39 -4
  41. package/.claude/skills/cc-plan/CHANGELOG.md +38 -0
  42. package/.claude/skills/cc-plan/PLAYBOOK.md +60 -53
  43. package/.claude/skills/cc-plan/SKILL.md +164 -87
  44. package/.claude/skills/cc-plan/assets/TASKS_TEMPLATE.md +101 -9
  45. package/.claude/skills/cc-plan/assets/TASK_MANIFEST_TEMPLATE.json +58 -229
  46. package/.claude/skills/cc-plan/assets/{DESIGN_TEMPLATE.md → legacy/DESIGN_TEMPLATE.md} +68 -0
  47. package/.claude/skills/cc-plan/assets/{TINY_DESIGN_TEMPLATE.md → legacy/TINY_DESIGN_TEMPLATE.md} +47 -1
  48. package/.claude/skills/cc-plan/references/planning-contract.md +48 -33
  49. package/.claude/skills/cc-review/CHANGELOG.md +6 -0
  50. package/.claude/skills/cc-review/PLAYBOOK.md +9 -11
  51. package/.claude/skills/cc-review/SKILL.md +37 -61
  52. package/.claude/skills/cc-review/references/e2e-and-plugin-verification.md +1 -1
  53. package/.claude/skills/cc-review/references/implementation-review-branch.md +5 -5
  54. package/.claude/skills/cc-review/references/plan-review-branch.md +1 -1
  55. package/.claude/skills/cc-review/references/review-methods.md +4 -4
  56. package/.claude/skills/cc-review/scripts/collect-review-context.sh +14 -7
  57. package/.claude/skills/cc-roadmap/CHANGELOG.md +6 -0
  58. package/.claude/skills/cc-roadmap/PLAYBOOK.md +30 -0
  59. package/.claude/skills/cc-roadmap/SKILL.md +45 -8
  60. package/.claude/skills/cc-roadmap/assets/BACKLOG_TEMPLATE.md +8 -0
  61. package/.claude/skills/cc-roadmap/assets/ROADMAP_TEMPLATE.md +22 -0
  62. package/.claude/skills/cc-roadmap/assets/TRACKING_TEMPLATE.json +32 -1
  63. package/.claude/skills/cc-roadmap/references/roadmap-dialogue.md +14 -14
  64. package/CHANGELOG.md +28 -0
  65. package/CONTRIBUTING.md +40 -4
  66. package/CONTRIBUTING.zh-CN.md +40 -4
  67. package/README.md +57 -43
  68. package/README.zh-CN.md +57 -43
  69. package/bin/cc-devflow-cli.js +293 -36
  70. package/docs/examples/START-HERE.md +5 -4
  71. package/docs/examples/example-bindings.json +10 -10
  72. package/docs/examples/full-design-blocked/BACKLOG.md +1 -1
  73. package/docs/examples/full-design-blocked/README.md +2 -2
  74. package/docs/examples/full-design-blocked/ROADMAP.md +1 -1
  75. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/design.md +2 -1
  76. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json +29 -312
  77. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md +11 -8
  78. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/review/report-card.json +4 -4
  79. package/docs/examples/full-design-blocked/roadmap.json +1 -1
  80. package/docs/examples/local-handoff/BACKLOG.md +1 -1
  81. package/docs/examples/local-handoff/README.md +2 -2
  82. package/docs/examples/local-handoff/ROADMAP.md +1 -1
  83. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/design.md +2 -1
  84. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json +27 -210
  85. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md +9 -6
  86. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/review/report-card.json +1 -1
  87. package/docs/examples/local-handoff/roadmap.json +1 -1
  88. package/docs/examples/pdca-loop/BACKLOG.md +1 -1
  89. package/docs/examples/pdca-loop/README.md +2 -2
  90. package/docs/examples/pdca-loop/ROADMAP.md +1 -1
  91. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/handoff/pr-brief.md +65 -1
  92. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/design.md +2 -1
  93. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json +26 -228
  94. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md +9 -6
  95. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/review/report-card.json +1 -1
  96. package/docs/examples/pdca-loop/roadmap.json +1 -1
  97. package/docs/examples/scripts/check-example-bindings.sh +11 -5
  98. package/docs/get-shit-done-strategy-audit.md +22 -22
  99. package/docs/guides/artifact-contract.md +44 -0
  100. package/docs/guides/getting-started.md +10 -8
  101. package/docs/guides/getting-started.zh-CN.md +10 -8
  102. package/docs/guides/minimize-artifacts.md +123 -0
  103. package/docs/guides/project-postmortem.md +78 -0
  104. package/lib/compiler/__tests__/skills-registry.test.js +2 -2
  105. package/lib/skill-runtime/CLAUDE.md +1 -1
  106. package/lib/skill-runtime/__tests__/autopilot.test.js +42 -6
  107. package/lib/skill-runtime/__tests__/benchmark-artifacts.test.js +165 -0
  108. package/lib/skill-runtime/__tests__/cli-bootstrap.integration.test.js +2 -2
  109. package/lib/skill-runtime/__tests__/dispatch.test.js +8 -38
  110. package/lib/skill-runtime/__tests__/intent.test.js +4 -20
  111. package/lib/skill-runtime/__tests__/lifecycle.test.js +1 -1
  112. package/lib/skill-runtime/__tests__/paths.test.js +7 -1
  113. package/lib/skill-runtime/__tests__/planner.tdd.test.js +63 -2
  114. package/lib/skill-runtime/__tests__/prepare-pr.test.js +3 -16
  115. package/lib/skill-runtime/__tests__/query.test.js +388 -7
  116. package/lib/skill-runtime/__tests__/review-check-integration.test.js +148 -0
  117. package/lib/skill-runtime/__tests__/review-records.test.js +619 -0
  118. package/lib/skill-runtime/__tests__/runtime.integration.test.js +64 -23
  119. package/lib/skill-runtime/__tests__/schemas.test.js +76 -2
  120. package/lib/skill-runtime/__tests__/task-contract-migrate.test.js +137 -0
  121. package/lib/skill-runtime/__tests__/task-contract.test.js +783 -0
  122. package/lib/skill-runtime/__tests__/verify-artifacts.test.js +203 -0
  123. package/lib/skill-runtime/__tests__/worker-run.test.js +4 -11
  124. package/lib/skill-runtime/__tests__/workflow-context-legacy-fallback.test.js +31 -0
  125. package/lib/skill-runtime/__tests__/workflow-context.test.js +98 -0
  126. package/lib/skill-runtime/artifacts.js +0 -5
  127. package/lib/skill-runtime/context-index.js +545 -0
  128. package/lib/skill-runtime/intent.js +9 -33
  129. package/lib/skill-runtime/lifecycle.js +1 -1
  130. package/lib/skill-runtime/operations/CLAUDE.md +2 -2
  131. package/lib/skill-runtime/operations/dispatch.js +4 -42
  132. package/lib/skill-runtime/operations/init.js +2 -6
  133. package/lib/skill-runtime/operations/janitor.js +2 -18
  134. package/lib/skill-runtime/operations/resume.js +21 -38
  135. package/lib/skill-runtime/operations/review-records.js +265 -0
  136. package/lib/skill-runtime/operations/snapshot.js +1 -1
  137. package/lib/skill-runtime/operations/task-contract.js +524 -0
  138. package/lib/skill-runtime/operations/worker-run.js +2 -30
  139. package/lib/skill-runtime/paths.js +4 -4
  140. package/lib/skill-runtime/planner.js +25 -13
  141. package/lib/skill-runtime/query-registry.js +2 -2
  142. package/lib/skill-runtime/query.js +16 -3
  143. package/lib/skill-runtime/review-records.js +123 -0
  144. package/lib/skill-runtime/review.js +246 -11
  145. package/lib/skill-runtime/schemas.js +179 -15
  146. package/lib/skill-runtime/store.js +0 -10
  147. package/lib/skill-runtime/task-contract.js +187 -0
  148. package/lib/skill-runtime/workflow-context.js +748 -0
  149. package/package.json +7 -4
@@ -5,15 +5,52 @@
5
5
  - Requirement version:
6
6
  - Design version:
7
7
  - CC-Plan skill version:
8
+ - Work branch:
8
9
  - Output language:
9
10
  - Source roadmap item:
10
11
  - Source roadmap version:
11
12
  - Roadmap sync status:
12
13
  - Change meta: `change-meta.json`
13
14
 
15
+ ## Progressive Disclosure Index
16
+
17
+ - Default read: Plan Meta, Contract Summary, Execution Handoff, Execution Protocol, current task block.
18
+ - Open for scheduling: `planning/task-manifest.json`, ready-task selector output, dependencies, touched files.
19
+ - Open for parallel or ownership questions: Implementation Surface Map, Tracer Bullet Map.
20
+ - Open for audit/recovery: Task Quality Bar, Git state, CLI logs, review/report-card.json.
21
+
22
+ ## Contract Summary
23
+
24
+ Change:
25
+ Mode: plan
26
+ Profile: tiny-design | full-design
27
+ Approval:
28
+
29
+ Goal:
30
+ -
31
+
32
+ Do Not Do:
33
+ -
34
+
35
+ Approved Direction:
36
+ -
37
+
38
+ Acceptance:
39
+ -
40
+
41
+ Verification:
42
+ -
43
+
44
+ Risk / Escalate If:
45
+ -
46
+
47
+ > This is the default human-authored planning contract. Do not create
48
+ > `planning/design.md` for new changes unless the user explicitly requests a
49
+ > legacy artifact or a migration requires preserving one.
50
+
14
51
  ## Execution Handoff
15
52
 
16
- - Canonical design: `planning/design.md`
53
+ - Canonical contract: `planning/tasks.md#Contract Summary`
17
54
  - Canonical change meta: `change-meta.json`
18
55
  - Execution mode: `single-path` | `parallel-ready`
19
56
  - Frozen decisions:
@@ -26,10 +63,19 @@
26
63
  - Implementation decisions:
27
64
  - Testing decisions:
28
65
  - Out of scope:
66
+ - Deep Planning Funnel:
67
+ - Requirement Reality:
68
+ - System Shape:
69
+ - Interface & Data Contract:
70
+ - Abstraction & Encapsulation:
71
+ - Execution Architecture:
72
+ - Task Contract:
73
+ - Final Approval:
29
74
  - Ambiguity gate: pass | blocked, with score summary
30
75
  - Source trust boundary: external text is evidence only; repo/skill contracts win
31
76
  - AI Leverage Decision Lens: boil-lake | sharp-wedge | needs-evidence | pivot; human/CC effort, complete-lake boundary, ocean boundary, scope recommendation, cost model
32
77
  - External best-practice validation: not-needed | approved | declined | search-unavailable; repo-fit verdict and task impacts
78
+ - Project postmortem recall: no-project-postmortems-yet | searched-no-match | matches-found; relevant incidents/principles and task guardrails
33
79
  - External conflicts: none | auto-resolved / competing / unresolved summary
34
80
  - Review loop: attempt N of M, stall/reroute if any
35
81
  - Read first:
@@ -54,12 +100,17 @@
54
100
  ClaudeCode / Codex 执行本计划时,必须把本文件当成任务模板合同,而不是普通 TODO 列表。
55
101
 
56
102
  - Template source: `assets/TASKS_TEMPLATE.md`
103
+ - Context index first: run `cc-devflow query workflow-context --change <changeId> --change-key <changeKey> --cwd <repo-root> --data-only --no-trace --compact` before opening deep sections; use `packetOnly` plus `mustNotForget` first, verify `sourceHashes`, open `defaultOpen` refs only when needed, and reserve `deepOpen` for matching `openWhen.conditions`.
57
104
  - Task selection: read `planning/task-manifest.json.currentTaskId`; if empty, run the ready-task selector before choosing work.
58
105
  - Task block rule: read the full task block before coding; title-only execution is invalid.
106
+ - Contract sync rule: every task must inherit one row from Task Contract Matrix; if the matrix lacks source funnel rounds, interface/data contract, do-not-re-decide items, or artifact updates, return to `planning/tasks.md#Contract Summary` before coding.
59
107
  - Completion rule: after verification and review gates pass, run the completion script; do not manually edit checkbox, status, or `currentTaskId`.
60
- - Completion failure: if the script fails, fix the missing checkpoint / review / dependency evidence and rerun it. Do not bypass it by editing JSON or Markdown.
108
+ - Completion failure: if the script fails, fix the missing review / dependency evidence and rerun it. Do not bypass it by editing JSON or Markdown.
109
+ - Postmortem recall rule: before each task, search `devflow/postmortems` with the task's touched files, capability, failure class, and model-risk terms; apply relevant reminders to the work. Do not generate no-match process files.
110
+ - Runtime file ban: do not generate `execution/tasks/<task-id>/context.md`, `checkpoint.json`, review markdown, or any AI-written process file. Recovery reads code, Git, `planning/tasks.md`, `planning/task-manifest.json`, and CLI logs only.
61
111
 
62
112
  ```bash
113
+ cc-devflow query workflow-context --change <changeId> --change-key <changeKey> --cwd <repo-root> --data-only --no-trace --compact
63
114
  SCRIPT_ROOT=".claude/skills/cc-do/scripts"
64
115
  if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then
65
116
  SCRIPT_ROOT=".codex/skills/cc-do/scripts"
@@ -84,16 +135,29 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest devflow/changes/<change-key
84
135
 
85
136
  > 每个 slice 必须能独立证明一个端到端行为,不要按“只改数据层 / 只改 UI 层”横切。
86
137
 
138
+ ## Task Contract Matrix
139
+
140
+ | Task | Source funnel rounds | User / edge story | Interface / method | Key fields | File owner / responsibility | Do not re-decide | Artifact updates | Verification evidence |
141
+ |------|----------------------|-------------------|--------------------|------------|-----------------------------|------------------|------------------|-----------------------|
142
+ | T001 | Requirement Reality; Interface & Data Contract; Task Contract | US-001 / US-EDGE-001 | | | | | test file only | failing output |
143
+
144
+ > 这张表是 task block 的来源映射。每个 task 必须能追溯到已经确认的 funnel round,且明确哪些设计点不允许 `cc-do` 重新发明。
145
+
87
146
  ## Phase 1: Foundation
88
147
 
89
148
  - [ ] T001 [TEST] Write the first failing test (dependsOn:none) `path/to/test`
90
149
  Goal: 证明当前行为还没实现,必须先看到失败。
150
+ Source funnel rounds: Requirement Reality; Interface & Data Contract; Task Contract.
151
+ Contract: user story `US-001`; edge story `US-EDGE-001`; file responsibility `tests own behavior proof`; method/interface `<public seam>`; key fields `<field list>`; input/output `<contract>`; failure path `<expected missing behavior>`; AFK/HITL `AFK`.
152
+ Do not re-decide: target behavior, public seam, key fields, allowed mock boundary.
153
+ Artifact updates: `path/to/test`; no production files in Red.
91
154
  TDD phase: red
92
155
  Files: `path/to/test`
93
156
  Read first: `design.md`, `tasks.md`
157
+ Project postmortem search: `rg -n "<test seam|capability|module|model-risk>" devflow/postmortems` or record `no-project-postmortems-yet`
94
158
  Verification: `npm test -- path/to/test`
95
159
  Evidence: failing output
96
- Completion: after failing evidence and required checkpoint/review records exist, run `bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest devflow/changes/<change-key>/planning/task-manifest.json --tasks devflow/changes/<change-key>/planning/tasks.md --task T001`; do not hand-edit status.
160
+ Completion: after failing evidence and required review records exist, run `bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest devflow/changes/<change-key>/planning/task-manifest.json --tasks devflow/changes/<change-key>/planning/tasks.md --task T001`; do not hand-edit status.
97
161
  Coverage: unit / integration / e2e / eval; regression: yes / no
98
162
  Spec-style test name: 测试名像规格说明,描述可观察行为
99
163
  One logical behavior: yes / no
@@ -107,12 +171,17 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest devflow/changes/<change-key
107
171
 
108
172
  - [ ] T002 [IMPL] Make the first test pass (dependsOn:T001) `path/to/file`
109
173
  Goal: 用最小实现让 T001 转绿。
174
+ Source funnel rounds: System Shape; Abstraction & Encapsulation; Execution Architecture; Task Contract.
175
+ Contract: user story `US-001`; file responsibility `<module responsibility>`; method/interface `<method or operation>`; key fields `<field list>`; input/output `<contract>`; failure path `<rescue or error behavior>`; AFK/HITL `AFK`.
176
+ Do not re-decide: file ownership, method shape, key fields, error shape, Green minimality boundary.
177
+ Artifact updates: `path/to/file`; update tests only if the approved public seam changes.
110
178
  TDD phase: green
111
179
  Files: `path/to/file`
112
180
  Read first: `design.md`, `path/to/test`
181
+ Project postmortem search: `rg -n "<implementation surface|module|failure-class|model-risk>" devflow/postmortems` or record `no-project-postmortems-yet`
113
182
  Verification: `npm test -- path/to/test`
114
- Evidence: passing output + checkpoint
115
- Completion: after green evidence and required checkpoint/review records exist, run `bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest devflow/changes/<change-key>/planning/task-manifest.json --tasks devflow/changes/<change-key>/planning/tasks.md --task T002`; do not hand-edit status.
183
+ Evidence: passing output + Git diff
184
+ Completion: after green evidence and required review records exist, run `bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest devflow/changes/<change-key>/planning/task-manifest.json --tasks devflow/changes/<change-key>/planning/tasks.md --task T002`; do not hand-edit status.
116
185
  Green minimality guard: 只写当前红灯要求的最小实现,不预铺未来行为、分支或 API
117
186
  Vertical slice: Slice 1
118
187
  Ready when: T001 已经见红,且当前 touched files 不和其他并行任务冲突
@@ -121,12 +190,17 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest devflow/changes/<change-key
121
190
 
122
191
  - [ ] T003 [P] [TEST] Add another independent failing test (dependsOn:T002) `path/to/other.test`
123
192
  Goal: 为独立行为补红灯。
193
+ Source funnel rounds: Requirement Reality; Interface & Data Contract; Task Contract.
194
+ Contract: user story `US-002`; edge story `US-EDGE-002`; file responsibility `tests own behavior proof`; method/interface `<public seam>`; key fields `<field list>`; input/output `<contract>`; failure path `<expected missing behavior>`; AFK/HITL `AFK`.
195
+ Do not re-decide: behavior boundary, public seam, key fields, allowed mock boundary.
196
+ Artifact updates: `path/to/other.test`; no production files in Red.
124
197
  TDD phase: red
125
198
  Files: `path/to/other.test`
126
199
  Read first: `design.md`, `tasks.md`
200
+ Project postmortem search: `rg -n "<test seam|capability|module|model-risk>" devflow/postmortems` or record `no-project-postmortems-yet`
127
201
  Verification: `npm test -- path/to/other.test`
128
202
  Evidence: failing output
129
- Completion: after failing evidence and required checkpoint/review records exist, run `bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest devflow/changes/<change-key>/planning/task-manifest.json --tasks devflow/changes/<change-key>/planning/tasks.md --task T003`; do not hand-edit status.
203
+ Completion: after failing evidence and required review records exist, run `bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest devflow/changes/<change-key>/planning/task-manifest.json --tasks devflow/changes/<change-key>/planning/tasks.md --task T003`; do not hand-edit status.
130
204
  Coverage: unit / integration / e2e / eval; regression: yes / no
131
205
  Spec-style test name: 测试名像规格说明,描述可观察行为
132
206
  One logical behavior: yes / no
@@ -140,12 +214,17 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest devflow/changes/<change-key
140
214
 
141
215
  - [ ] T004 [P] [IMPL] Make the independent test pass (dependsOn:T003) `path/to/other-file`
142
216
  Goal: 用最小实现让 T003 转绿,并保留重构空间。
217
+ Source funnel rounds: System Shape; Abstraction & Encapsulation; Execution Architecture; Task Contract.
218
+ Contract: user story `US-002`; file responsibility `<module responsibility>`; method/interface `<method or operation>`; key fields `<field list>`; input/output `<contract>`; failure path `<rescue or error behavior>`; AFK/HITL `AFK`.
219
+ Do not re-decide: module ownership, method shape, key fields, Green minimality boundary.
220
+ Artifact updates: `path/to/other-file`; preserve public seam from T003.
143
221
  TDD phase: green
144
222
  Files: `path/to/other-file`
145
223
  Read first: `design.md`, `path/to/other.test`
224
+ Project postmortem search: `rg -n "<implementation surface|module|failure-class|model-risk>" devflow/postmortems` or record `no-project-postmortems-yet`
146
225
  Verification: `npm test -- path/to/other.test`
147
226
  Evidence: passing output + review notes
148
- Completion: after green evidence and required checkpoint/review records exist, run `bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest devflow/changes/<change-key>/planning/task-manifest.json --tasks devflow/changes/<change-key>/planning/tasks.md --task T004`; do not hand-edit status.
227
+ Completion: after green evidence and required review records exist, run `bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest devflow/changes/<change-key>/planning/task-manifest.json --tasks devflow/changes/<change-key>/planning/tasks.md --task T004`; do not hand-edit status.
149
228
  Green minimality guard: 只写当前红灯要求的最小实现,不预铺未来行为、分支或 API
150
229
  Vertical slice: Slice 2
151
230
  Ready when: T003 已经见红,且文件触点与其他 `[P]` 任务不冲突
@@ -154,23 +233,33 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest devflow/changes/<change-key
154
233
 
155
234
  - [ ] T005 [REFACTOR] Simplify after green evidence (dependsOn:T002,T004) `path/to/file`
156
235
  Goal: 在所有相关测试已绿后清理重复、命名、结构和坏味道。
236
+ Source funnel rounds: Abstraction & Encapsulation; Execution Architecture; Task Contract.
237
+ Contract: user story `US-001/US-002`; file responsibility `<module responsibility>`; method/interface `<public surface stays unchanged>`; key fields `<no contract drift>`; input/output `<unchanged>`; failure path `<green tests must still cover>`; AFK/HITL `AFK`.
238
+ Do not re-decide: public interface, key fields, user-visible behavior, scope boundary.
239
+ Artifact updates: implementation files only; update tests only to remove implementation coupling.
157
240
  TDD phase: refactor
158
241
  Files: `path/to/file`
159
242
  Read first: `design.md`, green test outputs
243
+ Project postmortem search: `rg -n "<refactor candidate|code smell|module|model-risk>" devflow/postmortems` or record `no-project-postmortems-yet`
160
244
  Verification: `npm test -- path/to/test path/to/other.test`
161
245
  Evidence: refactor diff + repeated green output
162
- Completion: after refactor evidence and required checkpoint/review records exist, run `bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest devflow/changes/<change-key>/planning/task-manifest.json --tasks devflow/changes/<change-key>/planning/tasks.md --task T005`; do not hand-edit status.
246
+ Completion: after refactor evidence and required review records exist, run `bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest devflow/changes/<change-key>/planning/task-manifest.json --tasks devflow/changes/<change-key>/planning/tasks.md --task T005`; do not hand-edit status.
163
247
  Refactor candidates: duplication / long method / shallow module / feature envy / primitive obsession / naming / >3 nesting / newly exposed old code smell
164
248
  Ready when: 对应 Red/Green 任务都已完成,且清理不会扩大 scope
165
249
 
166
250
  - [ ] T006 Run checks and collect evidence (dependsOn:T005) `command or file`
167
251
  Goal: 为 `cc-check` 准备新鲜证据。
252
+ Source funnel rounds: Execution Architecture; Task Contract; Final Approval.
253
+ Contract: user story `all planned stories`; file responsibility `verification evidence`; method/interface `all changed public seams`; key fields `all contract fields`; input/output `not applicable`; failure path `gate failure blocks completion`; AFK/HITL `AFK`.
254
+ Do not re-decide: scope, test framework, gate set, completion protocol.
255
+ Artifact updates: review evidence only; no behavior changes and no execution process files.
168
256
  TDD phase: evidence
169
257
  Files: `command or file`
170
258
  Read first: `tasks.md`, `task-manifest.json`
259
+ Project postmortem search: `rg -n "<verification|release|tooling|model-risk>" devflow/postmortems` or record `no-project-postmortems-yet`
171
260
  Verification: `npm test && npm run lint`
172
261
  Evidence: gate output
173
- Completion: after gate evidence and required checkpoint/review records exist, run `bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest devflow/changes/<change-key>/planning/task-manifest.json --tasks devflow/changes/<change-key>/planning/tasks.md --task T006`; do not hand-edit status.
262
+ Completion: after gate evidence and required review records exist, run `bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest devflow/changes/<change-key>/planning/task-manifest.json --tasks devflow/changes/<change-key>/planning/tasks.md --task T006`; do not hand-edit status.
174
263
  Ready when: 当前 requirement 的实现任务都已收口
175
264
 
176
265
  > `[P]` 只表示“依赖满足后有资格并行”,不表示可以无脑同时开发。
@@ -185,6 +274,8 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest devflow/changes/<change-key
185
274
  - 要留下什么证据给 `cc-check`
186
275
  - 它处于 Red、Green、Refactor,还是明确的 TDD exception
187
276
  - 它覆盖哪条 user story 或 edge / recovery story
277
+ - 它继承了 Deep Planning Funnel 里确认的哪个接口、方法、字段、分类、输入输出和失败路径
278
+ - 它来自哪几轮 funnel,哪些设计点不允许重决策,哪些 artifact 可以改、哪些不能改
188
279
  - 测试框架依据来自哪里,回归测试是否被明确处理
189
280
  - Red task 通过哪个公共 seam 证明行为缺失,允许 mock 的边界是什么
190
281
  - Red task 的测试名是否像规格,一个测试是否只证明一个逻辑行为,结果是否从公共入口读回
@@ -193,3 +284,4 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest devflow/changes/<change-key
193
284
  - 测试是否会在内部重构后继续成立,而不是绑定私有函数、调用次数或临时结构
194
285
  - 它属于哪个 tracer bullet 垂直切片,完成后哪个可观察行为被证明
195
286
  - 它完成后要运行哪条 `mark-task-complete.sh` 命令,以及为什么不能手工改状态
287
+ - 开工前查过哪些项目尸检报告,相关原则如何转成当前 task guardrail
@@ -1,57 +1,19 @@
1
1
  {
2
2
  "changeId": "REQ-XXX",
3
+ "goal": "Deliver planned requirement changes safely.",
4
+ "createdAt": "2026-05-11T00:00:00.000Z",
5
+ "updatedAt": "2026-05-11T00:00:00.000Z",
3
6
  "requirementId": "REQ-XXX",
4
7
  "requirementVersion": "REQ-XXX.v1",
5
8
  "outputPolicy": {
6
9
  "documentLanguage": ""
7
10
  },
8
- "sourceRoadmap": {
9
- "itemId": "RM-001",
10
- "roadmapVersion": "1.0",
11
- "roadmapSkillVersion": "5.2.0",
12
- "syncStatus": "pending",
13
- "syncCommand": ".claude/skills/cc-roadmap/scripts/sync-roadmap-progress.sh --rm RM-001 --status Planned --req REQ-XXX --progress 0%",
14
- "updatedFiles": [
15
- "devflow/roadmap.json",
16
- "devflow/ROADMAP.md",
17
- "devflow/BACKLOG.md"
18
- ],
19
- "noOpReason": "",
20
- "sourceStage": "Stage 1",
21
- "successSignal": "User can complete the new flow without manual workaround",
22
- "killSignal": "Implementation requires reworking unrelated modules",
23
- "dependencies": [
24
- "Existing auth/session contract stays unchanged"
25
- ],
26
- "nonGoals": [
27
- "No redesign of unrelated settings screens"
28
- ]
29
- },
30
11
  "planningMeta": {
31
- "reqPlanSkillVersion": "3.8.2",
12
+ "reqPlanSkillVersion": "3.9.0",
32
13
  "designVersion": "design.v1",
14
+ "workBranch": "REQ/XXX-short-feature-name",
33
15
  "approvedAt": "2026-04-15T12:00:00.000Z",
34
- "approvedBy": "user",
35
16
  "basedOnOption": "Option A",
36
- "requirementBrief": {
37
- "problemStatement": "The user-perspective problem this requirement solves.",
38
- "solutionSummary": "The user-perspective solution after the requirement lands.",
39
- "actors": [],
40
- "userStories": [
41
- {
42
- "id": "US-001",
43
- "actor": "",
44
- "want": "",
45
- "benefit": "",
46
- "acceptance": []
47
- }
48
- ],
49
- "edgeOrRecoveryStories": [],
50
- "implementationDecisions": [],
51
- "testingDecisions": [],
52
- "outOfScope": [],
53
- "furtherNotes": []
54
- },
55
17
  "aiLeverageDecisionLens": {
56
18
  "realUserOrOperator": "",
57
19
  "statusQuoWorkaround": "",
@@ -73,21 +35,6 @@
73
35
  "missingEvidenceOrPivotReason": "",
74
36
  "impactOnApprovedDirection": ""
75
37
  },
76
- "ambiguityGate": {
77
- "whatScore": 0,
78
- "whyScore": 0,
79
- "blockingThreshold": 3,
80
- "status": "pass",
81
- "assumptionsPreview": [],
82
- "blockedQuestions": []
83
- },
84
- "reviewLoop": {
85
- "attempt": 1,
86
- "maxAttempts": 3,
87
- "repeatedConcernFingerprints": [],
88
- "stallReason": "",
89
- "rerouteIfStalled": "ask-user"
90
- },
91
38
  "externalBestPractice": {
92
39
  "needed": false,
93
40
  "decisionStatus": "not-needed",
@@ -131,181 +78,39 @@
131
78
  }
132
79
  ]
133
80
  },
134
- "executionProtocol": {
135
- "templateCompliance": {
136
- "required": true,
137
- "sourceTemplate": "assets/TASKS_TEMPLATE.md",
138
- "taskBlockMustInclude": [
139
- "Goal",
140
- "TDD phase",
141
- "Files",
142
- "Read first",
143
- "Verification",
144
- "Evidence",
145
- "Test seam",
146
- "Public verification path",
147
- "Allowed mocks",
148
- "Completion"
149
- ],
150
- "titleOnlyTasks": "forbidden"
151
- },
152
- "selection": {
153
- "sourceOfTruth": "planning/task-manifest.json.currentTaskId",
154
- "commandTemplate": "SCRIPT_ROOT=\".claude/skills/cc-do/scripts\"; if [[ ! -d \"$SCRIPT_ROOT\" && -d \".codex/skills/cc-do/scripts\" ]]; then SCRIPT_ROOT=\".codex/skills/cc-do/scripts\"; fi; bash \"$SCRIPT_ROOT/select-ready-tasks.sh\" --manifest devflow/changes/<change-key>/planning/task-manifest.json"
155
- },
156
- "completion": {
157
- "manualStatusEdit": "forbidden",
158
- "commandTemplate": "SCRIPT_ROOT=\".claude/skills/cc-do/scripts\"; if [[ ! -d \"$SCRIPT_ROOT\" && -d \".codex/skills/cc-do/scripts\" ]]; then SCRIPT_ROOT=\".codex/skills/cc-do/scripts\"; fi; bash \"$SCRIPT_ROOT/mark-task-complete.sh\" --manifest devflow/changes/<change-key>/planning/task-manifest.json --tasks devflow/changes/<change-key>/planning/tasks.md --task <task-id>",
159
- "failurePolicy": "Do not hand-edit status; fix missing checkpoint, review gate, or dependency evidence and rerun the script.",
160
- "updates": [
161
- "planning/task-manifest.json.tasks[].status",
162
- "planning/task-manifest.json.currentTaskId",
163
- "planning/task-manifest.json.status",
164
- "planning/tasks.md checkbox"
165
- ]
166
- }
167
- },
168
- "sourceEvidence": [
169
- {
170
- "source": "planning/design.md",
171
- "trust": "internal-contract",
172
- "useAs": "contract",
173
- "instructionRisk": "low",
174
- "decision": "authoritative for this requirement"
175
- }
176
- ],
177
- "languageAndDecisions": {
178
- "languageSources": [],
179
- "canonicalTerms": [],
180
- "languageConflicts": [],
181
- "decisionDocs": [],
182
- "adrOrSpecConflicts": [],
183
- "externalDocConflicts": {
184
- "autoResolved": [],
185
- "competing": [],
186
- "unresolved": []
187
- }
188
- },
189
- "executionDiscipline": {
190
- "default": "red-green-refactor",
191
- "taskShape": "vertical-tracer-bullets",
192
- "testFirstRequired": true,
193
- "testFrameworkSource": "",
194
- "testQualityPolicy": {
195
- "publicInterfaceRequired": true,
196
- "behaviorAssertionRequired": true,
197
- "specStyleTestNameRequired": true,
198
- "oneLogicalBehaviorPerRed": true,
199
- "publicVerificationPathRequired": true,
200
- "mockBoundary": "system-boundaries-only",
201
- "implementationDetailTests": "blocked",
202
- "bulkRedTests": "blocked",
203
- "boundaryAdapterShape": "specific-operations-preferred",
204
- "feedbackLoopPreference": [
205
- "automated-test",
206
- "http-curl",
207
- "cli-fixture",
208
- "browser-script",
209
- "trace-replay",
210
- "throwaway-harness",
211
- "property-fuzz",
212
- "differential-loop",
213
- "hitl-script"
214
- ]
215
- },
216
- "regressionTestsRequired": [],
217
- "tddExceptions": []
218
- },
219
- "status": "planned",
220
- "designMode": "tiny-design",
221
- "approvedOption": "Option A",
222
- "designStatus": "approved",
223
- "reviewStatus": "approved",
224
- "spec": {
225
- "primaryCapability": "cap-example",
226
- "secondaryCapabilities": [],
227
- "expectedDelta": [
228
- "Tighten current truth for the capability"
229
- ],
230
- "affectedInvariants": [],
231
- "gapsClosed": [],
232
- "newGaps": [],
233
- "specFiles": [
234
- "devflow/specs/capabilities/cap-example.md"
235
- ],
236
- "syncStatus": "planned"
237
- },
238
- "tasteDecisions": [],
239
- "userChallenges": [],
240
81
  "currentTaskId": "T001",
241
- "activePhase": 1,
242
- "frozenDecisions": [
243
- "Keep the existing route and data contract",
244
- "Prefer a minimal patch over a broader refactor"
245
- ],
246
82
  "tasks": [
247
83
  {
248
84
  "id": "T001",
249
85
  "title": "[TEST] Add a failing test for the missing behavior",
86
+ "type": "TEST",
250
87
  "phase": 1,
251
- "status": "pending",
252
- "tddPhase": "red",
253
- "verticalSlice": "Slice 1",
254
- "testSeam": {
255
- "entry": "public interface / caller flow / CLI / API / UI / trace replay / harness",
256
- "behaviorAsserted": "The user or caller observable behavior that should exist",
257
- "specStyleTestName": "caller can observe the required behavior",
258
- "oneLogicalBehavior": true,
259
- "publicVerificationPath": "Read back through the same public interface or user-visible path",
260
- "implementationDetailRisk": "low"
261
- },
262
- "feedbackLoop": {
263
- "type": "automated-test",
264
- "determinism": "deterministic",
265
- "expectedFailure": "Fails because the target behavior is missing"
266
- },
267
- "allowedMocks": [
268
- "external API / time / randomness / filesystem / database boundary"
269
- ],
270
- "testQuality": {
271
- "usesPublicInterface": true,
272
- "describesBehavior": true,
273
- "specStyleName": true,
274
- "oneLogicalBehavior": true,
275
- "verifiesThroughPublicPath": true,
276
- "survivesInternalRefactor": true,
277
- "mocksOnlySystemBoundaries": true,
278
- "noBulkRed": true
279
- },
280
- "greenMinimality": {
281
- "guard": "Implement only the code needed to pass this Red behavior",
282
- "noSpeculativeBranches": true
283
- },
284
- "completion": {
285
- "command": "SCRIPT_ROOT=\".claude/skills/cc-do/scripts\"; if [[ ! -d \"$SCRIPT_ROOT\" && -d \".codex/skills/cc-do/scripts\" ]]; then SCRIPT_ROOT=\".codex/skills/cc-do/scripts\"; fi; bash \"$SCRIPT_ROOT/mark-task-complete.sh\" --manifest devflow/changes/REQ-XXX-short-name/planning/task-manifest.json --tasks devflow/changes/REQ-XXX-short-name/planning/tasks.md --task T001",
286
- "requiredBeforeCompletion": [
287
- "verification evidence captured",
288
- "checkpoint written",
289
- "spec review gate recorded",
290
- "code review gate recorded"
88
+ "contract": {
89
+ "sourceFunnelRounds": [
90
+ "Requirement Reality",
91
+ "Interface & Data Contract",
92
+ "Task Contract"
291
93
  ],
292
- "forbiddenShortcuts": [
293
- "manual checkbox edit",
294
- "manual manifest status edit",
295
- "leaving currentTaskId stale"
94
+ "userStory": "US-001",
95
+ "edgeOrRecoveryStory": "US-EDGE-001",
96
+ "fileResponsibility": "tests own behavior proof",
97
+ "methodOrInterface": "public interface / caller flow / CLI / API / UI / trace replay / harness",
98
+ "keyFields": [],
99
+ "inputOutput": "",
100
+ "failurePath": "The behavior is currently missing",
101
+ "afkOrHitl": "AFK",
102
+ "doNotRedecide": [
103
+ "target behavior",
104
+ "public seam",
105
+ "key fields",
106
+ "allowed mock boundary"
107
+ ],
108
+ "artifactUpdates": [
109
+ "src/feature/feature.test.ts"
296
110
  ]
297
111
  },
298
- "refactorCandidates": [
299
- "duplication",
300
- "long method",
301
- "shallow module",
302
- "feature envy",
303
- "primitive obsession",
304
- "naming",
305
- "more than three nested branches"
306
- ],
307
- "dependsOn": [],
308
112
  "parallel": false,
113
+ "dependsOn": [],
309
114
  "touches": [
310
115
  "tests",
311
116
  "requirement-behavior"
@@ -313,6 +118,9 @@
313
118
  "files": [
314
119
  "src/feature/feature.test.ts"
315
120
  ],
121
+ "run": [
122
+ "npm test -- src/feature/feature.test.ts"
123
+ ],
316
124
  "acceptance": [
317
125
  "The target behavior is reproduced as a failing test",
318
126
  "The failure message points to the missing requirement behavior"
@@ -334,17 +142,38 @@
334
142
  ],
335
143
  "notes": [
336
144
  "Write the failing test first",
337
- "Do not change unrelated contracts in this task"
145
+ "Do not change unrelated contracts in this task",
146
+ "Do not generate execution context.md, checkpoint.json, review markdown, or AI-written process files"
338
147
  ]
339
148
  },
340
149
  "reviews": {
341
150
  "spec": "pending",
342
151
  "code": "pending"
343
- }
152
+ },
153
+ "status": "pending",
154
+ "tddPhase": "red",
155
+ "verticalSlice": "Slice 1",
156
+ "testSeam": {
157
+ "entry": "public interface / caller flow / CLI / API / UI / trace replay / harness",
158
+ "behaviorAsserted": "The user or caller observable behavior that should exist",
159
+ "specStyleTestName": "caller can observe the required behavior",
160
+ "oneLogicalBehavior": true,
161
+ "publicVerificationPath": "Read back through the same public interface or user-visible path",
162
+ "implementationDetailRisk": "low"
163
+ },
164
+ "feedbackLoop": {
165
+ "type": "automated-test",
166
+ "determinism": "deterministic",
167
+ "expectedFailure": "Fails because the target behavior is missing"
168
+ },
169
+ "checks": [],
170
+ "attempts": 0,
171
+ "maxRetries": 1
344
172
  }
345
173
  ],
346
- "openQuestions": [],
347
- "deferredQuestions": [
348
- "If the patch touches shared contracts, upgrade the design to full-design"
349
- ]
174
+ "metadata": {
175
+ "source": "tasks.md",
176
+ "generatedBy": "skill:cc-plan",
177
+ "planVersion": 1
178
+ }
350
179
  }