cc-devflow 4.5.10 → 4.5.12

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 (187) hide show
  1. package/.claude/skills/cc-act/CHANGELOG.md +23 -0
  2. package/.claude/skills/cc-act/PLAYBOOK.md +17 -269
  3. package/.claude/skills/cc-act/SKILL.md +38 -418
  4. package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_INDEX_TEMPLATE.md +2 -13
  5. package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_TEMPLATE.md +1 -9
  6. package/.claude/skills/cc-act/assets/PR_BRIEF_TEMPLATE.md +21 -177
  7. package/.claude/skills/cc-act/references/closure-contract.md +12 -63
  8. package/.claude/skills/cc-act/references/git-commit-guidelines.md +5 -5
  9. package/.claude/skills/cc-act/scripts/cc-act-common.sh +5 -322
  10. package/.claude/skills/cc-act/scripts/detect-ship-target.sh +11 -2
  11. package/.claude/skills/cc-act/scripts/inspect-git-index.sh +58 -0
  12. package/.claude/skills/cc-act/scripts/render-pr-brief.sh +40 -440
  13. package/.claude/skills/cc-act/scripts/verify-act-gate.sh +10 -50
  14. package/.claude/skills/cc-check/CHANGELOG.md +24 -0
  15. package/.claude/skills/cc-check/PLAYBOOK.md +19 -273
  16. package/.claude/skills/cc-check/SKILL.md +33 -454
  17. package/.claude/skills/cc-check/references/review-contract.md +12 -147
  18. package/.claude/skills/cc-dev/CHANGELOG.md +20 -0
  19. package/.claude/skills/cc-dev/PLAYBOOK.md +1 -1
  20. package/.claude/skills/cc-dev/SKILL.md +52 -130
  21. package/.claude/skills/cc-dev/scripts/resolve-cc-devflow.sh +181 -0
  22. package/.claude/skills/cc-do/CHANGELOG.md +17 -0
  23. package/.claude/skills/cc-do/PLAYBOOK.md +19 -113
  24. package/.claude/skills/cc-do/SKILL.md +39 -236
  25. package/.claude/skills/cc-do/references/execution-recovery.md +15 -109
  26. package/.claude/skills/cc-do/scripts/cc-do-common.sh +5 -57
  27. package/.claude/skills/cc-do/scripts/check-task-status.sh +35 -65
  28. package/.claude/skills/cc-do/scripts/mark-task-complete.sh +9 -46
  29. package/.claude/skills/cc-do/scripts/select-ready-tasks.sh +29 -97
  30. package/.claude/skills/cc-investigate/CHANGELOG.md +23 -0
  31. package/.claude/skills/cc-investigate/PLAYBOOK.md +20 -180
  32. package/.claude/skills/cc-investigate/SKILL.md +65 -513
  33. package/.claude/skills/cc-investigate/assets/TASKS_TEMPLATE.md +48 -95
  34. package/.claude/skills/cc-investigate/references/investigation-contract.md +14 -217
  35. package/.claude/skills/cc-next/CHANGELOG.md +6 -0
  36. package/.claude/skills/cc-next/PLAYBOOK.md +12 -8
  37. package/.claude/skills/cc-next/SKILL.md +34 -140
  38. package/.claude/skills/cc-plan/CHANGELOG.md +29 -0
  39. package/.claude/skills/cc-plan/PLAYBOOK.md +22 -161
  40. package/.claude/skills/cc-plan/SKILL.md +47 -640
  41. package/.claude/skills/cc-plan/assets/TASKS_TEMPLATE.md +30 -225
  42. package/.claude/skills/cc-plan/references/planning-contract.md +24 -160
  43. package/.claude/skills/cc-plan/scripts/next-change-key.sh +8 -44
  44. package/.claude/skills/cc-plan/scripts/parse-task-dependencies.js +2 -2
  45. package/.claude/skills/cc-plan/scripts/validate-scope.sh +1 -1
  46. package/.claude/skills/cc-pr-land/SKILL.md +14 -114
  47. package/.claude/skills/cc-pr-review/CHANGELOG.md +4 -0
  48. package/.claude/skills/cc-pr-review/SKILL.md +20 -103
  49. package/.claude/skills/cc-review/CHANGELOG.md +17 -0
  50. package/.claude/skills/cc-review/PLAYBOOK.md +13 -86
  51. package/.claude/skills/cc-review/SKILL.md +53 -241
  52. package/.claude/skills/cc-review/references/e2e-and-plugin-verification.md +2 -2
  53. package/.claude/skills/cc-review/references/implementation-review-branch.md +7 -147
  54. package/.claude/skills/cc-review/references/plan-review-branch.md +5 -147
  55. package/.claude/skills/cc-review/references/review-methods.md +10 -218
  56. package/.claude/skills/cc-review/scripts/collect-review-context.sh +4 -63
  57. package/.claude/skills/cc-roadmap/PLAYBOOK.md +1 -1
  58. package/.claude/skills/cc-roadmap/SKILL.md +3 -3
  59. package/.claude/skills/cc-simplify/CHANGELOG.md +7 -0
  60. package/.claude/skills/cc-simplify/SKILL.md +26 -21
  61. package/.claude/skills/cc-spec-init/PLAYBOOK.md +12 -48
  62. package/.claude/skills/cc-spec-init/SKILL.md +29 -132
  63. package/.claude/skills/cc-spec-init/references/spec-contract.md +8 -17
  64. package/CHANGELOG.md +27 -0
  65. package/README.md +5 -3
  66. package/README.zh-CN.md +5 -3
  67. package/bin/cc-devflow-cli.js +20 -260
  68. package/bin/cc-devflow.js +44 -7
  69. package/docs/commands/README.md +1 -1
  70. package/docs/commands/README.zh-CN.md +1 -1
  71. package/docs/examples/README.md +1 -1
  72. package/docs/examples/START-HERE.md +14 -14
  73. package/docs/examples/example-bindings.json +11 -11
  74. package/docs/examples/full-design-blocked/README.md +4 -6
  75. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/{planning/tasks.md → task.md} +20 -15
  76. package/docs/examples/local-handoff/README.md +8 -11
  77. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/handoff/pr-brief.md +31 -0
  78. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/{planning/tasks.md → task.md} +18 -13
  79. package/docs/examples/pdca-loop/README.md +6 -9
  80. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/handoff/pr-brief.md +9 -11
  81. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/{planning/tasks.md → task.md} +18 -13
  82. package/docs/examples/scripts/check-example-bindings.sh +11 -62
  83. package/docs/guides/artifact-contract.md +10 -36
  84. package/docs/guides/getting-started.md +8 -7
  85. package/docs/guides/getting-started.zh-CN.md +8 -7
  86. package/docs/guides/minimize-artifacts.md +16 -116
  87. package/docs/guides/project-postmortem.md +14 -71
  88. package/lib/compiler/__tests__/skills-registry.test.js +9 -8
  89. package/lib/compiler/resource-copier.js +29 -0
  90. package/lib/skill-runtime/__tests__/archive-change.test.js +2 -2
  91. package/lib/skill-runtime/__tests__/benchmark-skills.test.js +109 -0
  92. package/lib/skill-runtime/__tests__/cli-bootstrap.integration.test.js +14 -4
  93. package/lib/skill-runtime/errors.js +3 -3
  94. package/lib/skill-runtime/index.js +5 -23
  95. package/lib/skill-runtime/paths.js +5 -52
  96. package/lib/skill-runtime/query-registry.js +4 -4
  97. package/lib/skill-runtime/query.js +89 -201
  98. package/lib/skill-runtime/store.js +4 -40
  99. package/lib/skill-runtime/trace.js +2 -2
  100. package/package.json +5 -7
  101. package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_PRINCIPLES_TEMPLATE.md +0 -29
  102. package/.claude/skills/cc-act/assets/RELEASE_NOTE_TEMPLATE.md +0 -54
  103. package/.claude/skills/cc-act/scripts/generate-status-report.sh +0 -92
  104. package/.claude/skills/cc-act/scripts/sync-act-docs.sh +0 -355
  105. package/.claude/skills/cc-check/assets/REPORT_CARD_TEMPLATE.json +0 -234
  106. package/.claude/skills/cc-check/scripts/render-report-card.js +0 -438
  107. package/.claude/skills/cc-check/scripts/verify-gate.sh +0 -85
  108. package/.claude/skills/cc-do/scripts/build-task-context.sh +0 -175
  109. package/.claude/skills/cc-do/scripts/record-review-decision.sh +0 -88
  110. package/.claude/skills/cc-do/scripts/recover-workflow.sh +0 -82
  111. package/.claude/skills/cc-do/scripts/run-problem-analysis.sh +0 -70
  112. package/.claude/skills/cc-do/scripts/verify-task-gates.sh +0 -109
  113. package/.claude/skills/cc-do/scripts/write-task-checkpoint.sh +0 -92
  114. package/.claude/skills/cc-investigate/assets/TASK_MANIFEST_TEMPLATE.json +0 -225
  115. package/.claude/skills/cc-plan/assets/TASK_MANIFEST_TEMPLATE.json +0 -179
  116. package/.claude/skills/cc-spec-init/assets/CHANGE_META_TEMPLATE.json +0 -28
  117. package/.claude/skills/cc-spec-init/scripts/validate-spec-links.sh +0 -45
  118. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/design.md +0 -234
  119. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json +0 -488
  120. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/review/report-card.json +0 -189
  121. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/handoff/resume-index.md +0 -39
  122. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/handoff/status.md +0 -29
  123. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/design.md +0 -123
  124. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json +0 -292
  125. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/review/report-card.json +0 -136
  126. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/handoff/status.md +0 -29
  127. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/design.md +0 -124
  128. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json +0 -292
  129. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/review/report-card.json +0 -136
  130. package/docs/get-shit-done-strategy-audit.md +0 -518
  131. package/docs/skill-runtime-migration.md +0 -46
  132. package/lib/skill-runtime/__tests__/approve.test.js +0 -92
  133. package/lib/skill-runtime/__tests__/autopilot.test.js +0 -253
  134. package/lib/skill-runtime/__tests__/benchmark-artifacts.test.js +0 -165
  135. package/lib/skill-runtime/__tests__/delegation.test.js +0 -97
  136. package/lib/skill-runtime/__tests__/dispatch.test.js +0 -237
  137. package/lib/skill-runtime/__tests__/intent.test.js +0 -203
  138. package/lib/skill-runtime/__tests__/lifecycle.test.js +0 -169
  139. package/lib/skill-runtime/__tests__/planner.tdd.test.js +0 -331
  140. package/lib/skill-runtime/__tests__/prepare-pr.test.js +0 -126
  141. package/lib/skill-runtime/__tests__/query.test.js +0 -860
  142. package/lib/skill-runtime/__tests__/readiness.test.js +0 -53
  143. package/lib/skill-runtime/__tests__/release.test.js +0 -85
  144. package/lib/skill-runtime/__tests__/review-check-integration.test.js +0 -148
  145. package/lib/skill-runtime/__tests__/review-records.test.js +0 -619
  146. package/lib/skill-runtime/__tests__/runtime.integration.test.js +0 -351
  147. package/lib/skill-runtime/__tests__/schemas.test.js +0 -337
  148. package/lib/skill-runtime/__tests__/task-contract-migrate.test.js +0 -137
  149. package/lib/skill-runtime/__tests__/task-contract.test.js +0 -783
  150. package/lib/skill-runtime/__tests__/team-state.test.js +0 -51
  151. package/lib/skill-runtime/__tests__/verify-artifacts.test.js +0 -203
  152. package/lib/skill-runtime/__tests__/worker-run.test.js +0 -275
  153. package/lib/skill-runtime/__tests__/worker.test.js +0 -56
  154. package/lib/skill-runtime/__tests__/workflow-context-legacy-fallback.test.js +0 -31
  155. package/lib/skill-runtime/__tests__/workflow-context.test.js +0 -98
  156. package/lib/skill-runtime/artifacts.js +0 -88
  157. package/lib/skill-runtime/context-index.js +0 -545
  158. package/lib/skill-runtime/delegation.js +0 -533
  159. package/lib/skill-runtime/intent.js +0 -309
  160. package/lib/skill-runtime/lifecycle.js +0 -294
  161. package/lib/skill-runtime/operations/CLAUDE.md +0 -19
  162. package/lib/skill-runtime/operations/approve.js +0 -81
  163. package/lib/skill-runtime/operations/autopilot-core.js +0 -337
  164. package/lib/skill-runtime/operations/autopilot-execution.js +0 -307
  165. package/lib/skill-runtime/operations/autopilot-shared.js +0 -48
  166. package/lib/skill-runtime/operations/autopilot.js +0 -163
  167. package/lib/skill-runtime/operations/dispatch.js +0 -416
  168. package/lib/skill-runtime/operations/init.js +0 -60
  169. package/lib/skill-runtime/operations/janitor.js +0 -61
  170. package/lib/skill-runtime/operations/plan.js +0 -59
  171. package/lib/skill-runtime/operations/prepare-pr.js +0 -25
  172. package/lib/skill-runtime/operations/release.js +0 -99
  173. package/lib/skill-runtime/operations/resume.js +0 -126
  174. package/lib/skill-runtime/operations/review-records.js +0 -265
  175. package/lib/skill-runtime/operations/snapshot.js +0 -45
  176. package/lib/skill-runtime/operations/task-contract.js +0 -524
  177. package/lib/skill-runtime/operations/verify.js +0 -170
  178. package/lib/skill-runtime/operations/worker-run.js +0 -531
  179. package/lib/skill-runtime/operations/worker.js +0 -33
  180. package/lib/skill-runtime/planner.js +0 -539
  181. package/lib/skill-runtime/readiness.js +0 -84
  182. package/lib/skill-runtime/review-records.js +0 -123
  183. package/lib/skill-runtime/review.js +0 -855
  184. package/lib/skill-runtime/schemas.js +0 -746
  185. package/lib/skill-runtime/task-contract.js +0 -187
  186. package/lib/skill-runtime/team-state.js +0 -122
  187. package/lib/skill-runtime/workflow-context.js +0 -748
@@ -1,355 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- set -euo pipefail
4
-
5
- # ------------------------------------------------------------
6
- # cc-act: 同步 requirement 级文档,并产出 doc sync 报告
7
- # ------------------------------------------------------------
8
-
9
- usage() {
10
- cat <<'EOF'
11
- Usage: sync-act-docs.sh --dir path/to/change [--repo-root path/to/repo]
12
- EOF
13
- }
14
-
15
- REQ_DIR=""
16
- REPO_ROOT=""
17
-
18
- while [[ $# -gt 0 ]]; do
19
- case "$1" in
20
- --dir) REQ_DIR="$2"; shift 2 ;;
21
- --repo-root) REPO_ROOT="$2"; shift 2 ;;
22
- -h|--help) usage; exit 0 ;;
23
- *) echo "Unknown arg: $1" >&2; usage; exit 1 ;;
24
- esac
25
- done
26
-
27
- if [[ -z "$REQ_DIR" || ! -d "$REQ_DIR" ]]; then
28
- usage
29
- exit 1
30
- fi
31
-
32
- if [[ -z "$REPO_ROOT" ]]; then
33
- REPO_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
34
- fi
35
-
36
- script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
37
- source "$script_dir/cc-act-common.sh"
38
- CHANGE_DIR="$(req_act_change_dir "$REQ_DIR")"
39
- report_card="$(req_act_report_path "$CHANGE_DIR")"
40
- manifest="$(req_act_manifest_path "$CHANGE_DIR")"
41
- tasks_file="$(req_act_tasks_path "$CHANGE_DIR")"
42
- design_file="$(req_act_contract_path "$CHANGE_DIR")"
43
- resume_index="$(req_act_resume_index_path "$CHANGE_DIR")"
44
- release_note="$(req_act_release_note_path "$CHANGE_DIR")"
45
- doc_sync_report="$(req_act_doc_sync_report_path "$CHANGE_DIR")"
46
-
47
- "$script_dir/verify-act-gate.sh" --dir "$CHANGE_DIR" >/dev/null
48
- mkdir -p "$(dirname "$resume_index")"
49
-
50
- ship_context="$("$script_dir/detect-ship-target.sh" 2>/dev/null || true)"
51
- current_branch="$(req_act_ship_field "$ship_context" "CURRENT_BRANCH")"
52
- branch_state="$(req_act_ship_field "$ship_context" "BRANCH_STATE")"
53
- branch_rescue="$(req_act_ship_field "$ship_context" "BRANCH_RESCUE")"
54
- rescue_action="$(req_act_ship_field "$ship_context" "RESCUE_ACTION")"
55
- base_branch="$(req_act_ship_field "$ship_context" "BASE_BRANCH")"
56
- ship_mode="$(req_act_ship_field "$ship_context" "DECISION_HINT")"
57
- pr_status="$(req_act_ship_field "$ship_context" "PR_STATUS")"
58
- pr_url="$(req_act_ship_field "$ship_context" "PR_URL")"
59
-
60
- timestamp="$(date '+%Y-%m-%d %H:%M:%S %z')"
61
- requirement_id="$(req_act_requirement_id "$manifest" "$CHANGE_DIR")"
62
- report_summary="$(req_act_report_summary "$report_card")"
63
- report_verdict="$(req_act_report_verdict "$report_card")"
64
- spec_sync_ready="$(req_act_spec_sync_ready "$report_card")"
65
- output_language="$(req_act_output_language "$report_card")"
66
- design_goal="$(req_act_design_goal "$design_file")"
67
- main_risk="$(req_act_main_risk "$design_file")"
68
- roadmap_sync_summary="$(req_act_roadmap_sync_summary "$manifest" "$REPO_ROOT")"
69
-
70
- tmp_changed="$(mktemp)"
71
- tmp_verify="$(mktemp)"
72
- tmp_followups="$(mktemp)"
73
- tmp_touched="$(mktemp)"
74
- tmp_specs="$(mktemp)"
75
- tmp_claude="$(mktemp)"
76
- tmp_readme="$(mktemp)"
77
- cleanup() {
78
- rm -f "$tmp_changed" "$tmp_verify" "$tmp_followups" "$tmp_touched" "$tmp_specs" "$tmp_claude" "$tmp_readme"
79
- }
80
- trap cleanup EXIT
81
-
82
- # ------------------------------------------------------------
83
- # 共享提取:变更 / 验证 / follow-up / touched
84
- # ------------------------------------------------------------
85
- req_act_collect_completed_titles "$manifest" "$tasks_file" "$tmp_changed"
86
- req_act_collect_verification_commands "$manifest" "$tmp_verify"
87
- req_act_collect_followups "$report_card" "$manifest" "$tmp_followups"
88
- req_act_collect_touched_files "$manifest" "$tmp_touched"
89
- req_act_collect_spec_files "$manifest" "$tmp_specs"
90
-
91
- nearest_claude() {
92
- local rel="$1"
93
- local dir candidate
94
-
95
- if [[ -z "$rel" ]]; then
96
- return 0
97
- fi
98
-
99
- dir="$(dirname "$rel")"
100
- while :; do
101
- if [[ "$dir" == "." ]]; then
102
- candidate="$REPO_ROOT/CLAUDE.md"
103
- else
104
- candidate="$REPO_ROOT/$dir/CLAUDE.md"
105
- fi
106
- if [[ -f "$candidate" ]]; then
107
- printf '%s\n' "${candidate#$REPO_ROOT/}"
108
- return 0
109
- fi
110
- if [[ "$dir" == "." || "$dir" == "/" ]]; then
111
- break
112
- fi
113
- dir="$(dirname "$dir")"
114
- done
115
-
116
- if [[ -f "$REPO_ROOT/CLAUDE.md" ]]; then
117
- printf '%s\n' "CLAUDE.md"
118
- fi
119
- }
120
-
121
- while IFS= read -r touched; do
122
- nearest_claude "$touched" >> "$tmp_claude" || true
123
- done < "$tmp_touched"
124
- awk 'NF && !seen[$0]++' "$tmp_claude" > "${tmp_claude}.dedup"
125
- mv "${tmp_claude}.dedup" "$tmp_claude"
126
-
127
- find "$REPO_ROOT" -maxdepth 2 -type f \( -iname 'README.md' -o -iname 'README*.md' \) \
128
- -print 2>/dev/null | sed "s|^$REPO_ROOT/||" | awk '!seen[$0]++' > "$tmp_readme" || true
129
-
130
- # ------------------------------------------------------------
131
- # 生成 release note
132
- # ------------------------------------------------------------
133
- {
134
- echo "# Release Note"
135
- echo
136
- echo "## Document Meta"
137
- echo
138
- echo "- Output language: $output_language"
139
- echo
140
- echo "## User Impact"
141
- if [[ -n "$report_summary" ]]; then
142
- echo
143
- echo "- $report_summary"
144
- fi
145
- if [[ -n "$design_goal" && "$design_goal" != "$report_summary" ]]; then
146
- echo "- $design_goal"
147
- fi
148
- if [[ ! -s "$tmp_changed" && -z "$report_summary" && -z "$design_goal" ]]; then
149
- echo
150
- echo "- No user-facing summary captured yet."
151
- fi
152
- echo
153
- echo "## What Is New"
154
- if [[ -s "$tmp_changed" ]]; then
155
- while IFS= read -r line; do
156
- echo "- $line"
157
- done < "$tmp_changed"
158
- else
159
- echo
160
- echo "- No completed task list captured yet."
161
- fi
162
- echo
163
- echo "## Verification"
164
- echo
165
- echo "- CC-Check verdict: $report_verdict"
166
- jq -r '(.evidence // [])[]?' "$report_card" 2>/dev/null | sed '/^$/d' | while IFS= read -r line; do
167
- echo "- $line"
168
- done
169
- if [[ -s "$tmp_verify" ]]; then
170
- while IFS= read -r cmd; do
171
- echo "- Verify with: \`$cmd\`"
172
- done < "$tmp_verify"
173
- fi
174
- echo
175
- echo "## Ops Notes"
176
- echo
177
- echo "- Ship mode: $ship_mode"
178
- [[ -n "$branch_state" ]] && echo "- Branch state: $branch_state"
179
- echo "- Spec sync ready: $spec_sync_ready"
180
- echo "- Current branch: ${current_branch:-unknown}"
181
- echo "- Base branch: ${base_branch:-unknown}"
182
- [[ -n "$branch_rescue" && "$branch_rescue" != "none" ]] && echo "- Branch rescue: $branch_rescue"
183
- [[ -n "$rescue_action" ]] && echo "- Rescue action: $rescue_action"
184
- [[ -n "$pr_status" ]] && echo "- PR status: $pr_status"
185
- [[ -n "$pr_url" ]] && echo "- PR url: $pr_url"
186
- echo "- Roadmap progress: $roadmap_sync_summary"
187
- echo
188
- echo "## Roadmap Progress"
189
- echo
190
- echo "- $roadmap_sync_summary"
191
- echo
192
- echo "## Follow-Ups"
193
- if [[ -s "$tmp_followups" ]]; then
194
- echo
195
- while IFS= read -r line; do
196
- echo "- $line"
197
- done < "$tmp_followups"
198
- else
199
- echo
200
- echo "- None recorded."
201
- fi
202
- } > "$release_note"
203
-
204
- # ------------------------------------------------------------
205
- # 生成 resume index
206
- # ------------------------------------------------------------
207
- next_action="Refresh handoff and close the requirement."
208
- case "$ship_mode" in
209
- create-pr) next_action="Push current branch and create PR / MR from pr-brief.md." ;;
210
- update-pr) next_action="Refresh the open PR / MR body and resolve outstanding review feedback." ;;
211
- local-handoff) next_action="Hand off with pr-brief.md and this resume index." ;;
212
- post-merge-closeout) next_action="Run release note/backlog writeback, then run cc-devflow archive-change $requirement_id and verify the archive path." ;;
213
- esac
214
- if [[ "$branch_rescue" == "create-branch-before-pr" ]]; then
215
- next_action="Run ensure-ship-branch.sh, rerun final verification, then push the named branch and create PR / MR from pr-brief.md."
216
- elif [[ "$branch_rescue" == "create-local-branch-or-handoff" ]]; then
217
- next_action="Run ensure-ship-branch.sh before local closeout, or keep local-handoff only if no branch should be created."
218
- fi
219
-
220
- {
221
- echo "# Resume Index"
222
- echo
223
- echo "## Document Meta"
224
- echo
225
- echo "- Output language: $output_language"
226
- echo
227
- echo "- Requirement: $requirement_id"
228
- echo "- Current stage: cc-act"
229
- echo "- Current task: ship:$ship_mode"
230
- [[ -n "$branch_state" ]] && echo "- Branch state: $branch_state"
231
- if [[ -s "$tmp_followups" ]]; then
232
- echo "- Ready tasks: follow-up review"
233
- else
234
- echo "- Ready tasks: none"
235
- fi
236
- echo "- Updated at: $timestamp"
237
- echo
238
- echo "## Last Good Checkpoint"
239
- echo
240
- if [[ -n "$report_summary" ]]; then
241
- echo "- $report_summary"
242
- else
243
- echo "- Req-Check passed; see review/report-card.json for evidence."
244
- fi
245
- echo "- Ship mode decided as \`$ship_mode\`."
246
- [[ -n "$branch_rescue" && "$branch_rescue" != "none" ]] && echo "- Branch rescue: \`$branch_rescue\`."
247
- [[ -n "$rescue_action" ]] && echo "- Rescue action: $rescue_action"
248
- echo "- Roadmap progress: $roadmap_sync_summary"
249
- [[ -n "$pr_url" ]] && echo "- Active PR / MR: $pr_url"
250
- echo
251
- echo "## Follow-Ups"
252
- echo
253
- if [[ -s "$tmp_followups" ]]; then
254
- while IFS= read -r line; do
255
- echo "- $line"
256
- done < "$tmp_followups"
257
- else
258
- echo "- None."
259
- fi
260
- echo
261
- echo "## Next Action"
262
- echo
263
- echo "- $next_action"
264
- echo "- Formal spec sync belongs in cc-act before final ship closeout."
265
- echo "- Roadmap progress must be synced through cc-roadmap before final closeout when a source RM exists."
266
- echo
267
- echo "## Parallel Notes"
268
- echo
269
- echo "- Safe to parallelize: documentation review, backlog wording, release note polish."
270
- echo "- Must stay sequential: cc-check pass -> doc sync -> pr brief render -> ship action."
271
- } > "$resume_index"
272
-
273
- # ------------------------------------------------------------
274
- # 生成 doc sync 报告:要求人工关注的项目级文档目标
275
- # ------------------------------------------------------------
276
- {
277
- echo "# Doc Sync Report"
278
- echo
279
- echo "## Document Meta"
280
- echo
281
- echo "- Output language: $output_language"
282
- echo
283
- echo "- Requirement: $requirement_id"
284
- echo "- Ship mode: $ship_mode"
285
- echo "- CC-Check verdict: $report_verdict"
286
- echo "- Spec sync ready: $spec_sync_ready"
287
- echo "- Updated at: $timestamp"
288
- echo
289
- echo "## Synced Requirement Artifacts"
290
- echo
291
- echo "- \`handoff/release-note.md\`: refreshed"
292
- echo "- \`resume-index.md\`: refreshed"
293
- echo
294
- echo "## Touched Files"
295
- echo
296
- if [[ -s "$tmp_touched" ]]; then
297
- while IFS= read -r line; do
298
- echo "- \`$line\`"
299
- done < "$tmp_touched"
300
- else
301
- echo "- No touched files recorded in task-manifest.json."
302
- fi
303
- echo
304
- echo "## Spec Targets"
305
- echo
306
- if [[ -s "$tmp_specs" ]]; then
307
- while IFS= read -r line; do
308
- echo "- \`$line\`"
309
- done < "$tmp_specs"
310
- else
311
- echo "- No capability spec files recorded in task-manifest.json."
312
- fi
313
- echo
314
- echo "## Roadmap Targets"
315
- echo
316
- echo "- $roadmap_sync_summary"
317
- echo
318
- echo "## Project Doc Targets"
319
- echo
320
- echo "### CLAUDE Targets"
321
- if [[ -s "$tmp_claude" ]]; then
322
- echo
323
- while IFS= read -r line; do
324
- echo "- \`$line\`"
325
- done < "$tmp_claude"
326
- else
327
- echo
328
- echo "- No scoped \`CLAUDE.md\` target detected from touched files."
329
- fi
330
- echo
331
- echo "### README Candidates"
332
- if [[ -s "$tmp_readme" ]]; then
333
- echo
334
- while IFS= read -r line; do
335
- echo "- \`$line\`"
336
- done < "$tmp_readme"
337
- else
338
- echo
339
- echo "- No README candidate found under repo root."
340
- fi
341
- echo
342
- echo "## Manual Follow-Ups"
343
- echo
344
- echo "- Update the listed \`CLAUDE.md\` files if structure, workflow, or operational truth changed."
345
- echo "- Update README candidates if user-visible behavior or setup flow changed."
346
- echo "- Update \`devflow/roadmap.json\` via \`sync-roadmap-progress.sh\` when source RM status, progress, or follow-up truth changed."
347
- echo "- Re-render \`pr-brief.md\` after any manual doc edits so the PR body stays in sync."
348
- if [[ -n "$main_risk" ]]; then
349
- echo "- Main risk to reflect in docs: $main_risk"
350
- fi
351
- } > "$doc_sync_report"
352
-
353
- echo "Synced $release_note"
354
- echo "Synced $resume_index"
355
- echo "Wrote $doc_sync_report"
@@ -1,234 +0,0 @@
1
- {
2
- "changeId": "REQ-123",
3
- "outputPolicy": {
4
- "documentLanguage": ""
5
- },
6
- "verdict": "blocked",
7
- "overall": "fail",
8
- "summary": "verdict=blocked quick=1/2 strict=0/0 review=blocked",
9
- "specAlignment": "blocked",
10
- "specDeltaVerified": false,
11
- "specSyncReady": false,
12
- "runtime": {
13
- "status": "blocked",
14
- "failureOwnership": [
15
- {
16
- "errorName": "MissingSpecReviewProof",
17
- "failure": "missing spec review proof",
18
- "classification": "in-branch",
19
- "owner": "branch",
20
- "touchedByDiff": true,
21
- "artifactRefs": [
22
- "planning/task-manifest.json",
23
- "review/report-card.json"
24
- ],
25
- "evidence": "planning/task-manifest.json tasks[T002].reviews.spec is empty",
26
- "rescueAction": "record spec review proof for T002 or reroute to cc-do",
27
- "action": "reroute-cc-do",
28
- "status": "open"
29
- }
30
- ]
31
- },
32
- "claimEvidence": [
33
- {
34
- "claim": "tests-pass",
35
- "requiredProof": "fresh test command with exit 0 and 0 failures",
36
- "commandOrArtifact": "npm test -- src/feature/feature.test.ts",
37
- "exitStatus": 0,
38
- "keyObservation": "targeted tests passed in this run",
39
- "status": "pass"
40
- },
41
- {
42
- "claim": "requirements-met",
43
- "requiredProof": "line-by-line planning/tasks.md and task-manifest.json checklist",
44
- "commandOrArtifact": "planning/tasks.md + planning/task-manifest.json",
45
- "exitStatus": null,
46
- "keyObservation": "T002 still lacks spec review proof",
47
- "status": "blocked"
48
- }
49
- ],
50
- "qa": {
51
- "status": "blocked",
52
- "feedbackLoop": {
53
- "status": "blocked",
54
- "mode": "targeted-test",
55
- "commandOrArtifact": "npm test -- src/feature/feature.test.ts",
56
- "speed": "fast",
57
- "determinism": "high",
58
- "signalSharpness": "targeted failure would indicate the user-visible behavior regressed",
59
- "reproductionRate": "not recorded",
60
- "attempts": [
61
- "targeted unit test"
62
- ],
63
- "blockedReason": "red/green reproduction is not recorded yet"
64
- },
65
- "behaviorEvidence": {
66
- "status": "blocked",
67
- "userFacingBoundary": "feature behavior",
68
- "expectedBehavior": "target behavior succeeds for the user",
69
- "actualBehavior": "not proven yet",
70
- "reproductionSteps": [
71
- "run the targeted verification command"
72
- ],
73
- "consistency": "not recorded",
74
- "domainLanguage": [
75
- "feature behavior"
76
- ]
77
- },
78
- "regressionProof": [
79
- {
80
- "behavior": "original symptom",
81
- "redCommand": "",
82
- "redFailure": "",
83
- "greenCommand": "",
84
- "greenObservation": "",
85
- "restoredState": false
86
- }
87
- ],
88
- "testQuality": [
89
- {
90
- "area": "targeted-tests",
91
- "checksRealBehavior": true,
92
- "mockBoundary": "none",
93
- "testOnlyProductionApi": false,
94
- "status": "pass"
95
- }
96
- ],
97
- "coverageAudit": {
98
- "status": "blocked",
99
- "coveragePct": null,
100
- "pathMap": ["planning/tasks.md#T002"],
101
- "gaps": ["T002 has no spec review proof, so the requirement cannot be marked covered"],
102
- "testsAdded": [],
103
- "e2eRequired": false,
104
- "evalRequired": false,
105
- "qualityStars": "★"
106
- },
107
- "browserEvidence": {
108
- "status": "skipped",
109
- "mode": "not-applicable",
110
- "affectedRoutes": [],
111
- "screenshots": [],
112
- "consoleErrors": [],
113
- "healthScore": null,
114
- "issues": [],
115
- "skipReason": "template example is not a UI browser QA scenario"
116
- },
117
- "humanUat": {
118
- "status": "skipped",
119
- "required": false,
120
- "scenario": "",
121
- "tester": "",
122
- "evidence": [],
123
- "failure": "",
124
- "reroute": "none",
125
- "skipReason": "not required for this template scenario"
126
- },
127
- "architectureFollowUps": [
128
- {
129
- "summary": "Add the missing public test seam before widening coverage",
130
- "currentBehavior": "review proof depends on task metadata instead of a direct behavior seam",
131
- "desiredBehavior": "tests verify the behavior through a stable public interface",
132
- "keyInterfaces": [
133
- "feature public API"
134
- ],
135
- "acceptanceCriteria": [
136
- "target behavior can be reproduced without private implementation hooks"
137
- ],
138
- "outOfScope": [
139
- "rewriting unrelated modules"
140
- ],
141
- "status": "deferred-minor"
142
- }
143
- ],
144
- "tddException": null
145
- },
146
- "quickGates": [
147
- {
148
- "name": "targeted-tests",
149
- "status": "pass",
150
- "command": "npm test -- src/feature/feature.test.ts",
151
- "summary": "targeted tests passed"
152
- },
153
- {
154
- "name": "review-proof",
155
- "status": "blocked",
156
- "command": "review artifacts",
157
- "summary": "missing spec review proof for T002"
158
- }
159
- ],
160
- "strictGates": [],
161
- "review": {
162
- "status": "blocked",
163
- "summary": "Task review evidence is incomplete",
164
- "details": "T002 is implemented, but the requirement still lacks spec review proof required by the gate.",
165
- "freshness": {
166
- "status": "unknown",
167
- "reviewedCommit": "",
168
- "currentCommit": "",
169
- "commitsSinceReview": null,
170
- "staleReason": "review range is not recorded yet"
171
- },
172
- "qualityScore": null,
173
- "specialistReviews": [
174
- {
175
- "name": "testing",
176
- "status": "blocked",
177
- "required": true,
178
- "summary": "testing facet cannot pass while task review proof is missing",
179
- "skipReason": "",
180
- "findings": []
181
- }
182
- ],
183
- "taskReviews": {
184
- "status": "blocked",
185
- "required": true,
186
- "summary": "T002 has no spec review record yet",
187
- "reviewPacket": {
188
- "baseSha": "",
189
- "headSha": "",
190
- "requirements": "planning/tasks.md#T002",
191
- "implemented": "implementation report for T002",
192
- "reviewerContext": "task spec and changed files"
193
- },
194
- "reviewers": [],
195
- "findings": [
196
- {
197
- "severity": "important",
198
- "confidence": "high",
199
- "source": "task-review",
200
- "summary": "T002 spec review proof is missing",
201
- "evidence": "planning/task-manifest.json tasks[T002].reviews.spec is empty",
202
- "action": "reroute-cc-do",
203
- "rescueAction": "record spec review proof for T002 or return to cc-do",
204
- "triageStatus": "clarification-needed",
205
- "confidenceScore": 9,
206
- "fingerprint": "task-review:T002:missing-spec-review",
207
- "displayTier": "blocking",
208
- "suppressionReason": null
209
- }
210
- ]
211
- },
212
- "diffReview": {
213
- "status": "skipped",
214
- "required": false,
215
- "summary": "",
216
- "reviewPacket": {
217
- "baseSha": "",
218
- "headSha": "",
219
- "requirements": "planning/design.md",
220
- "implemented": "",
221
- "reviewerContext": ""
222
- },
223
- "reviewers": [],
224
- "findings": []
225
- },
226
- "findings": []
227
- },
228
- "blockingFindings": [
229
- "review: missing spec review proof for T002"
230
- ],
231
- "gaps": [],
232
- "reroute": "cc-do",
233
- "timestamp": "2026-04-15T12:00:00.000Z"
234
- }