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.
- package/.claude/skills/cc-act/CHANGELOG.md +33 -0
- package/.claude/skills/cc-act/PLAYBOOK.md +9 -4
- package/.claude/skills/cc-act/SKILL.md +73 -12
- package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_INDEX_TEMPLATE.md +30 -0
- package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_PRINCIPLES_TEMPLATE.md +29 -0
- package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_TEMPLATE.md +103 -0
- package/.claude/skills/cc-act/assets/PR_BRIEF_TEMPLATE.md +61 -5
- package/.claude/skills/cc-act/references/closure-contract.md +4 -1
- package/.claude/skills/cc-act/references/git-commit-guidelines.md +342 -37
- package/.claude/skills/cc-act/scripts/cc-act-common.sh +29 -1
- package/.claude/skills/cc-act/scripts/render-pr-brief.sh +164 -0
- package/.claude/skills/cc-act/scripts/sync-act-docs.sh +1 -1
- package/.claude/skills/cc-check/CHANGELOG.md +17 -0
- package/.claude/skills/cc-check/PLAYBOOK.md +1 -0
- package/.claude/skills/cc-check/SKILL.md +9 -5
- package/.claude/skills/cc-check/references/review-contract.md +7 -0
- package/.claude/skills/cc-check/scripts/render-report-card.js +6 -1
- package/.claude/skills/cc-dev/CHANGELOG.md +5 -0
- package/.claude/skills/cc-dev/SKILL.md +26 -1
- package/.claude/skills/cc-do/CHANGELOG.md +23 -0
- package/.claude/skills/cc-do/PLAYBOOK.md +7 -7
- package/.claude/skills/cc-do/SKILL.md +49 -45
- package/.claude/skills/cc-do/references/execution-recovery.md +18 -13
- package/.claude/skills/cc-do/scripts/build-task-context.sh +13 -22
- package/.claude/skills/cc-do/scripts/mark-task-complete.sh +0 -6
- package/.claude/skills/cc-do/scripts/record-review-decision.sh +4 -5
- package/.claude/skills/cc-do/scripts/recover-workflow.sh +9 -11
- package/.claude/skills/cc-do/scripts/verify-task-gates.sh +12 -10
- package/.claude/skills/cc-do/scripts/write-task-checkpoint.sh +7 -29
- package/.claude/skills/cc-investigate/CHANGELOG.md +34 -0
- package/.claude/skills/cc-investigate/PLAYBOOK.md +21 -5
- package/.claude/skills/cc-investigate/SKILL.md +97 -40
- package/.claude/skills/cc-investigate/assets/TASKS_TEMPLATE.md +66 -4
- package/.claude/skills/cc-investigate/assets/TASK_MANIFEST_TEMPLATE.json +30 -59
- package/.claude/skills/cc-investigate/assets/{ANALYSIS_TEMPLATE.md → legacy/ANALYSIS_TEMPLATE.md} +48 -0
- package/.claude/skills/cc-investigate/references/investigation-contract.md +16 -2
- package/.claude/skills/cc-investigate/scripts/bootstrap-analysis.sh +1 -1
- package/.claude/skills/cc-next/CHANGELOG.md +6 -0
- package/.claude/skills/cc-next/PLAYBOOK.md +26 -4
- package/.claude/skills/cc-next/SKILL.md +39 -4
- package/.claude/skills/cc-plan/CHANGELOG.md +38 -0
- package/.claude/skills/cc-plan/PLAYBOOK.md +60 -53
- package/.claude/skills/cc-plan/SKILL.md +164 -87
- package/.claude/skills/cc-plan/assets/TASKS_TEMPLATE.md +101 -9
- package/.claude/skills/cc-plan/assets/TASK_MANIFEST_TEMPLATE.json +58 -229
- package/.claude/skills/cc-plan/assets/{DESIGN_TEMPLATE.md → legacy/DESIGN_TEMPLATE.md} +68 -0
- package/.claude/skills/cc-plan/assets/{TINY_DESIGN_TEMPLATE.md → legacy/TINY_DESIGN_TEMPLATE.md} +47 -1
- package/.claude/skills/cc-plan/references/planning-contract.md +48 -33
- package/.claude/skills/cc-review/CHANGELOG.md +6 -0
- package/.claude/skills/cc-review/PLAYBOOK.md +9 -11
- package/.claude/skills/cc-review/SKILL.md +37 -61
- package/.claude/skills/cc-review/references/e2e-and-plugin-verification.md +1 -1
- package/.claude/skills/cc-review/references/implementation-review-branch.md +5 -5
- package/.claude/skills/cc-review/references/plan-review-branch.md +1 -1
- package/.claude/skills/cc-review/references/review-methods.md +4 -4
- package/.claude/skills/cc-review/scripts/collect-review-context.sh +14 -7
- package/.claude/skills/cc-roadmap/CHANGELOG.md +6 -0
- package/.claude/skills/cc-roadmap/PLAYBOOK.md +30 -0
- package/.claude/skills/cc-roadmap/SKILL.md +45 -8
- package/.claude/skills/cc-roadmap/assets/BACKLOG_TEMPLATE.md +8 -0
- package/.claude/skills/cc-roadmap/assets/ROADMAP_TEMPLATE.md +22 -0
- package/.claude/skills/cc-roadmap/assets/TRACKING_TEMPLATE.json +32 -1
- package/.claude/skills/cc-roadmap/references/roadmap-dialogue.md +14 -14
- package/CHANGELOG.md +28 -0
- package/CONTRIBUTING.md +40 -4
- package/CONTRIBUTING.zh-CN.md +40 -4
- package/README.md +57 -43
- package/README.zh-CN.md +57 -43
- package/bin/cc-devflow-cli.js +293 -36
- package/docs/examples/START-HERE.md +5 -4
- package/docs/examples/example-bindings.json +10 -10
- package/docs/examples/full-design-blocked/BACKLOG.md +1 -1
- package/docs/examples/full-design-blocked/README.md +2 -2
- package/docs/examples/full-design-blocked/ROADMAP.md +1 -1
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/design.md +2 -1
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json +29 -312
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md +11 -8
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/review/report-card.json +4 -4
- package/docs/examples/full-design-blocked/roadmap.json +1 -1
- package/docs/examples/local-handoff/BACKLOG.md +1 -1
- package/docs/examples/local-handoff/README.md +2 -2
- package/docs/examples/local-handoff/ROADMAP.md +1 -1
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/design.md +2 -1
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json +27 -210
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md +9 -6
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/review/report-card.json +1 -1
- package/docs/examples/local-handoff/roadmap.json +1 -1
- package/docs/examples/pdca-loop/BACKLOG.md +1 -1
- package/docs/examples/pdca-loop/README.md +2 -2
- package/docs/examples/pdca-loop/ROADMAP.md +1 -1
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/handoff/pr-brief.md +65 -1
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/design.md +2 -1
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json +26 -228
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md +9 -6
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/review/report-card.json +1 -1
- package/docs/examples/pdca-loop/roadmap.json +1 -1
- package/docs/examples/scripts/check-example-bindings.sh +11 -5
- package/docs/get-shit-done-strategy-audit.md +22 -22
- package/docs/guides/artifact-contract.md +44 -0
- package/docs/guides/getting-started.md +10 -8
- package/docs/guides/getting-started.zh-CN.md +10 -8
- package/docs/guides/minimize-artifacts.md +123 -0
- package/docs/guides/project-postmortem.md +78 -0
- package/lib/compiler/__tests__/skills-registry.test.js +2 -2
- package/lib/skill-runtime/CLAUDE.md +1 -1
- package/lib/skill-runtime/__tests__/autopilot.test.js +42 -6
- package/lib/skill-runtime/__tests__/benchmark-artifacts.test.js +165 -0
- package/lib/skill-runtime/__tests__/cli-bootstrap.integration.test.js +2 -2
- package/lib/skill-runtime/__tests__/dispatch.test.js +8 -38
- package/lib/skill-runtime/__tests__/intent.test.js +4 -20
- package/lib/skill-runtime/__tests__/lifecycle.test.js +1 -1
- package/lib/skill-runtime/__tests__/paths.test.js +7 -1
- package/lib/skill-runtime/__tests__/planner.tdd.test.js +63 -2
- package/lib/skill-runtime/__tests__/prepare-pr.test.js +3 -16
- package/lib/skill-runtime/__tests__/query.test.js +388 -7
- package/lib/skill-runtime/__tests__/review-check-integration.test.js +148 -0
- package/lib/skill-runtime/__tests__/review-records.test.js +619 -0
- package/lib/skill-runtime/__tests__/runtime.integration.test.js +64 -23
- package/lib/skill-runtime/__tests__/schemas.test.js +76 -2
- package/lib/skill-runtime/__tests__/task-contract-migrate.test.js +137 -0
- package/lib/skill-runtime/__tests__/task-contract.test.js +783 -0
- package/lib/skill-runtime/__tests__/verify-artifacts.test.js +203 -0
- package/lib/skill-runtime/__tests__/worker-run.test.js +4 -11
- package/lib/skill-runtime/__tests__/workflow-context-legacy-fallback.test.js +31 -0
- package/lib/skill-runtime/__tests__/workflow-context.test.js +98 -0
- package/lib/skill-runtime/artifacts.js +0 -5
- package/lib/skill-runtime/context-index.js +545 -0
- package/lib/skill-runtime/intent.js +9 -33
- package/lib/skill-runtime/lifecycle.js +1 -1
- package/lib/skill-runtime/operations/CLAUDE.md +2 -2
- package/lib/skill-runtime/operations/dispatch.js +4 -42
- package/lib/skill-runtime/operations/init.js +2 -6
- package/lib/skill-runtime/operations/janitor.js +2 -18
- package/lib/skill-runtime/operations/resume.js +21 -38
- package/lib/skill-runtime/operations/review-records.js +265 -0
- package/lib/skill-runtime/operations/snapshot.js +1 -1
- package/lib/skill-runtime/operations/task-contract.js +524 -0
- package/lib/skill-runtime/operations/worker-run.js +2 -30
- package/lib/skill-runtime/paths.js +4 -4
- package/lib/skill-runtime/planner.js +25 -13
- package/lib/skill-runtime/query-registry.js +2 -2
- package/lib/skill-runtime/query.js +16 -3
- package/lib/skill-runtime/review-records.js +123 -0
- package/lib/skill-runtime/review.js +246 -11
- package/lib/skill-runtime/schemas.js +179 -15
- package/lib/skill-runtime/store.js +0 -10
- package/lib/skill-runtime/task-contract.js +187 -0
- package/lib/skill-runtime/workflow-context.js +748 -0
- 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
|
|
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
|
|
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
|
|
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 +
|
|
115
|
-
Completion: after green evidence and required
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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
|
-
"
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
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
|
-
"
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
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
|
-
"
|
|
347
|
-
|
|
348
|
-
"
|
|
349
|
-
|
|
174
|
+
"metadata": {
|
|
175
|
+
"source": "tasks.md",
|
|
176
|
+
"generatedBy": "skill:cc-plan",
|
|
177
|
+
"planVersion": 1
|
|
178
|
+
}
|
|
350
179
|
}
|