cc-devflow 4.5.11 → 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.
- package/.claude/skills/cc-act/CHANGELOG.md +18 -0
- package/.claude/skills/cc-act/PLAYBOOK.md +17 -269
- package/.claude/skills/cc-act/SKILL.md +38 -425
- package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_INDEX_TEMPLATE.md +2 -13
- package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_TEMPLATE.md +1 -9
- package/.claude/skills/cc-act/assets/PR_BRIEF_TEMPLATE.md +21 -177
- package/.claude/skills/cc-act/references/closure-contract.md +12 -63
- package/.claude/skills/cc-act/references/git-commit-guidelines.md +5 -5
- package/.claude/skills/cc-act/scripts/cc-act-common.sh +5 -322
- package/.claude/skills/cc-act/scripts/detect-ship-target.sh +11 -2
- package/.claude/skills/cc-act/scripts/inspect-git-index.sh +58 -0
- package/.claude/skills/cc-act/scripts/render-pr-brief.sh +40 -440
- package/.claude/skills/cc-act/scripts/verify-act-gate.sh +10 -50
- package/.claude/skills/cc-check/CHANGELOG.md +18 -0
- package/.claude/skills/cc-check/PLAYBOOK.md +19 -273
- package/.claude/skills/cc-check/SKILL.md +33 -456
- package/.claude/skills/cc-check/references/review-contract.md +12 -147
- package/.claude/skills/cc-dev/CHANGELOG.md +15 -0
- package/.claude/skills/cc-dev/PLAYBOOK.md +1 -1
- package/.claude/skills/cc-dev/SKILL.md +52 -137
- package/.claude/skills/cc-dev/scripts/resolve-cc-devflow.sh +181 -0
- package/.claude/skills/cc-do/CHANGELOG.md +11 -0
- package/.claude/skills/cc-do/PLAYBOOK.md +19 -113
- package/.claude/skills/cc-do/SKILL.md +39 -245
- package/.claude/skills/cc-do/references/execution-recovery.md +15 -109
- package/.claude/skills/cc-do/scripts/cc-do-common.sh +5 -57
- package/.claude/skills/cc-do/scripts/check-task-status.sh +35 -65
- package/.claude/skills/cc-do/scripts/mark-task-complete.sh +9 -46
- package/.claude/skills/cc-do/scripts/select-ready-tasks.sh +29 -97
- package/.claude/skills/cc-investigate/CHANGELOG.md +16 -0
- package/.claude/skills/cc-investigate/PLAYBOOK.md +20 -180
- package/.claude/skills/cc-investigate/SKILL.md +64 -246
- package/.claude/skills/cc-investigate/assets/TASKS_TEMPLATE.md +48 -98
- package/.claude/skills/cc-investigate/references/investigation-contract.md +14 -218
- package/.claude/skills/cc-next/CHANGELOG.md +6 -0
- package/.claude/skills/cc-next/PLAYBOOK.md +12 -8
- package/.claude/skills/cc-next/SKILL.md +34 -140
- package/.claude/skills/cc-plan/CHANGELOG.md +16 -0
- package/.claude/skills/cc-plan/PLAYBOOK.md +22 -161
- package/.claude/skills/cc-plan/SKILL.md +45 -295
- package/.claude/skills/cc-plan/assets/TASKS_TEMPLATE.md +30 -228
- package/.claude/skills/cc-plan/references/planning-contract.md +24 -161
- package/.claude/skills/cc-plan/scripts/next-change-key.sh +8 -44
- package/.claude/skills/cc-plan/scripts/parse-task-dependencies.js +2 -2
- package/.claude/skills/cc-plan/scripts/validate-scope.sh +1 -1
- package/.claude/skills/cc-pr-land/SKILL.md +14 -114
- package/.claude/skills/cc-pr-review/CHANGELOG.md +4 -0
- package/.claude/skills/cc-pr-review/SKILL.md +20 -103
- package/.claude/skills/cc-review/CHANGELOG.md +17 -0
- package/.claude/skills/cc-review/PLAYBOOK.md +13 -86
- package/.claude/skills/cc-review/SKILL.md +53 -241
- package/.claude/skills/cc-review/references/e2e-and-plugin-verification.md +2 -2
- package/.claude/skills/cc-review/references/implementation-review-branch.md +7 -147
- package/.claude/skills/cc-review/references/plan-review-branch.md +5 -147
- package/.claude/skills/cc-review/references/review-methods.md +10 -218
- package/.claude/skills/cc-review/scripts/collect-review-context.sh +4 -63
- package/.claude/skills/cc-roadmap/PLAYBOOK.md +1 -1
- package/.claude/skills/cc-roadmap/SKILL.md +3 -3
- package/.claude/skills/cc-simplify/CHANGELOG.md +7 -0
- package/.claude/skills/cc-simplify/SKILL.md +26 -21
- package/.claude/skills/cc-spec-init/PLAYBOOK.md +12 -48
- package/.claude/skills/cc-spec-init/SKILL.md +29 -132
- package/.claude/skills/cc-spec-init/references/spec-contract.md +8 -17
- package/CHANGELOG.md +13 -0
- package/bin/cc-devflow-cli.js +20 -260
- package/bin/cc-devflow.js +44 -7
- package/docs/commands/README.md +1 -1
- package/docs/commands/README.zh-CN.md +1 -1
- package/docs/examples/README.md +1 -1
- package/docs/examples/START-HERE.md +14 -15
- package/docs/examples/example-bindings.json +11 -11
- package/docs/examples/full-design-blocked/README.md +4 -6
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/{planning/tasks.md → task.md} +20 -15
- package/docs/examples/local-handoff/README.md +8 -11
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/handoff/pr-brief.md +31 -0
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/{planning/tasks.md → task.md} +18 -13
- package/docs/examples/pdca-loop/README.md +6 -9
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/handoff/pr-brief.md +9 -11
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/{planning/tasks.md → task.md} +18 -13
- package/docs/examples/scripts/check-example-bindings.sh +11 -62
- package/docs/guides/artifact-contract.md +10 -40
- package/docs/guides/getting-started.md +8 -8
- package/docs/guides/getting-started.zh-CN.md +8 -8
- package/docs/guides/minimize-artifacts.md +16 -130
- package/docs/guides/project-postmortem.md +14 -71
- package/lib/compiler/__tests__/skills-registry.test.js +9 -8
- package/lib/compiler/resource-copier.js +29 -0
- package/lib/skill-runtime/__tests__/archive-change.test.js +2 -2
- package/lib/skill-runtime/__tests__/benchmark-skills.test.js +3 -3
- package/lib/skill-runtime/__tests__/cli-bootstrap.integration.test.js +14 -4
- package/lib/skill-runtime/errors.js +3 -3
- package/lib/skill-runtime/index.js +5 -23
- package/lib/skill-runtime/paths.js +5 -52
- package/lib/skill-runtime/query-registry.js +4 -4
- package/lib/skill-runtime/query.js +89 -201
- package/lib/skill-runtime/store.js +4 -40
- package/lib/skill-runtime/trace.js +2 -2
- package/package.json +2 -5
- package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_PRINCIPLES_TEMPLATE.md +0 -29
- package/.claude/skills/cc-act/assets/RELEASE_NOTE_TEMPLATE.md +0 -54
- package/.claude/skills/cc-act/scripts/generate-status-report.sh +0 -92
- package/.claude/skills/cc-act/scripts/sync-act-docs.sh +0 -355
- package/.claude/skills/cc-check/assets/REPORT_CARD_TEMPLATE.json +0 -234
- package/.claude/skills/cc-check/scripts/render-report-card.js +0 -438
- package/.claude/skills/cc-check/scripts/verify-gate.sh +0 -85
- package/.claude/skills/cc-do/scripts/build-task-context.sh +0 -175
- package/.claude/skills/cc-do/scripts/record-review-decision.sh +0 -88
- package/.claude/skills/cc-do/scripts/recover-workflow.sh +0 -82
- package/.claude/skills/cc-do/scripts/run-problem-analysis.sh +0 -70
- package/.claude/skills/cc-do/scripts/verify-task-gates.sh +0 -109
- package/.claude/skills/cc-do/scripts/write-task-checkpoint.sh +0 -92
- package/.claude/skills/cc-investigate/assets/TASK_MANIFEST_TEMPLATE.json +0 -224
- package/.claude/skills/cc-plan/assets/TASK_MANIFEST_TEMPLATE.json +0 -178
- package/.claude/skills/cc-spec-init/assets/CHANGE_META_TEMPLATE.json +0 -28
- package/.claude/skills/cc-spec-init/scripts/validate-spec-links.sh +0 -45
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/design.md +0 -234
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json +0 -488
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/review/report-card.json +0 -189
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/handoff/resume-index.md +0 -39
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/handoff/status.md +0 -29
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/design.md +0 -123
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json +0 -292
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/review/report-card.json +0 -136
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/handoff/status.md +0 -29
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/design.md +0 -124
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json +0 -292
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/review/report-card.json +0 -136
- package/docs/get-shit-done-strategy-audit.md +0 -518
- package/docs/skill-runtime-migration.md +0 -46
- package/lib/skill-runtime/__tests__/approve.test.js +0 -92
- package/lib/skill-runtime/__tests__/autopilot.test.js +0 -253
- package/lib/skill-runtime/__tests__/benchmark-artifacts.test.js +0 -165
- package/lib/skill-runtime/__tests__/delegation.test.js +0 -97
- package/lib/skill-runtime/__tests__/dispatch.test.js +0 -237
- package/lib/skill-runtime/__tests__/intent.test.js +0 -203
- package/lib/skill-runtime/__tests__/lifecycle.test.js +0 -169
- package/lib/skill-runtime/__tests__/planner.tdd.test.js +0 -331
- package/lib/skill-runtime/__tests__/prepare-pr.test.js +0 -126
- package/lib/skill-runtime/__tests__/query.test.js +0 -860
- package/lib/skill-runtime/__tests__/readiness.test.js +0 -53
- package/lib/skill-runtime/__tests__/release.test.js +0 -85
- package/lib/skill-runtime/__tests__/review-check-integration.test.js +0 -148
- package/lib/skill-runtime/__tests__/review-records.test.js +0 -619
- package/lib/skill-runtime/__tests__/runtime.integration.test.js +0 -351
- package/lib/skill-runtime/__tests__/schemas.test.js +0 -337
- package/lib/skill-runtime/__tests__/task-contract-migrate.test.js +0 -137
- package/lib/skill-runtime/__tests__/task-contract.test.js +0 -874
- package/lib/skill-runtime/__tests__/team-state.test.js +0 -51
- package/lib/skill-runtime/__tests__/verify-artifacts.test.js +0 -203
- package/lib/skill-runtime/__tests__/worker-run.test.js +0 -275
- package/lib/skill-runtime/__tests__/worker.test.js +0 -56
- package/lib/skill-runtime/__tests__/workflow-context-legacy-fallback.test.js +0 -31
- package/lib/skill-runtime/__tests__/workflow-context.test.js +0 -98
- package/lib/skill-runtime/artifacts.js +0 -88
- package/lib/skill-runtime/context-index.js +0 -545
- package/lib/skill-runtime/delegation.js +0 -533
- package/lib/skill-runtime/intent.js +0 -309
- package/lib/skill-runtime/lifecycle.js +0 -294
- package/lib/skill-runtime/operations/CLAUDE.md +0 -19
- package/lib/skill-runtime/operations/approve.js +0 -81
- package/lib/skill-runtime/operations/autopilot-core.js +0 -337
- package/lib/skill-runtime/operations/autopilot-execution.js +0 -307
- package/lib/skill-runtime/operations/autopilot-shared.js +0 -48
- package/lib/skill-runtime/operations/autopilot.js +0 -163
- package/lib/skill-runtime/operations/dispatch.js +0 -416
- package/lib/skill-runtime/operations/init.js +0 -60
- package/lib/skill-runtime/operations/janitor.js +0 -61
- package/lib/skill-runtime/operations/plan.js +0 -59
- package/lib/skill-runtime/operations/prepare-pr.js +0 -25
- package/lib/skill-runtime/operations/release.js +0 -99
- package/lib/skill-runtime/operations/resume.js +0 -126
- package/lib/skill-runtime/operations/review-records.js +0 -265
- package/lib/skill-runtime/operations/snapshot.js +0 -45
- package/lib/skill-runtime/operations/task-contract.js +0 -593
- package/lib/skill-runtime/operations/verify.js +0 -170
- package/lib/skill-runtime/operations/worker-run.js +0 -531
- package/lib/skill-runtime/operations/worker.js +0 -33
- package/lib/skill-runtime/planner.js +0 -539
- package/lib/skill-runtime/readiness.js +0 -84
- package/lib/skill-runtime/review-records.js +0 -123
- package/lib/skill-runtime/review.js +0 -855
- package/lib/skill-runtime/schemas.js +0 -746
- package/lib/skill-runtime/task-contract.js +0 -188
- package/lib/skill-runtime/team-state.js +0 -122
- package/lib/skill-runtime/workflow-context.js +0 -748
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: cc-check
|
|
3
|
-
version: 1.
|
|
4
|
-
description: Use when a planned or investigated change needs fresh verification evidence
|
|
3
|
+
version: 1.12.1
|
|
4
|
+
description: Use when a planned or investigated change needs fresh verification evidence and an honest pass/fail/blocked verdict before cc-act.
|
|
5
5
|
triggers:
|
|
6
6
|
- 验收这个需求
|
|
7
7
|
- 帮我确认是否完成
|
|
@@ -12,25 +12,28 @@ triggers:
|
|
|
12
12
|
- 是不是可以进 cc-act
|
|
13
13
|
reads:
|
|
14
14
|
- PLAYBOOK.md
|
|
15
|
-
- CHANGELOG.md
|
|
16
15
|
- references/gate-contract.md
|
|
17
16
|
- references/review-contract.md
|
|
18
|
-
-
|
|
17
|
+
- ../cc-dev/scripts/resolve-cc-devflow.sh
|
|
19
18
|
writes:
|
|
20
|
-
- path:
|
|
19
|
+
- path: current response
|
|
20
|
+
durability: ephemeral
|
|
21
|
+
required: true
|
|
22
|
+
- path: Git commit
|
|
21
23
|
durability: durable
|
|
22
24
|
required: true
|
|
25
|
+
when: verification completes a PDCA or IDCA environment stage
|
|
23
26
|
entry_gate:
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
- "Read requirement-level review truth in this order: `review/review-findings.json`, then `review/review-ledger.jsonl`, then legacy `review/cc-review-report.md` with `freshness=unknown`; if none exist, block with `review-missing`."
|
|
27
|
+
- Resolve the CLI with `../cc-dev/scripts/resolve-cc-devflow.sh require query workflow-context` when workflow query is needed; unsupported CLIs are blockers.
|
|
28
|
+
- Read `task.md`, current Git diff, relevant code/tests, PR text when present, and fresh command output.
|
|
27
29
|
- Re-run fresh commands instead of inheriting cc-do narration.
|
|
28
|
-
-
|
|
29
|
-
- If evidence is stale or missing, reset context and rebuild the verdict from canonical artifacts.
|
|
30
|
+
- Do not create process files.
|
|
30
31
|
exit_criteria:
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
-
|
|
32
|
+
- Verdict is exactly pass, fail, or blocked.
|
|
33
|
+
- Every passing statement cites fresh command output, exit status, and what claim it proves.
|
|
34
|
+
- Missing evidence is separated from real failure.
|
|
35
|
+
- After pass/fail/blocked, commit the stage state when repository policy allows it.
|
|
36
|
+
- The next step is unambiguous: cc-act, cc-do, cc-investigate, cc-plan, or stop.
|
|
34
37
|
reroutes:
|
|
35
38
|
- when: The implementation is incomplete, tests fail, or review findings require code changes.
|
|
36
39
|
target: cc-do
|
|
@@ -41,7 +44,7 @@ reroutes:
|
|
|
41
44
|
recovery_modes:
|
|
42
45
|
- name: clean-room-reset
|
|
43
46
|
when: The current verdict is contaminated by stale chat memory or old command output.
|
|
44
|
-
action: Discard narrative memory,
|
|
47
|
+
action: Discard narrative memory, reread task.md and current Git diff, rerun fresh gates, and rebuild the verdict in the response.
|
|
45
48
|
tool_budget:
|
|
46
49
|
read_files: 8
|
|
47
50
|
search_steps: 4
|
|
@@ -54,19 +57,9 @@ tool_budget:
|
|
|
54
57
|
|
|
55
58
|
## Role
|
|
56
59
|
|
|
57
|
-
`cc-check` 是 PDCA
|
|
58
|
-
|
|
59
|
-
它负责把“应该好了”变成“证据表明它好了”。
|
|
60
|
-
|
|
61
|
-
它不是收尾话术器,也不是替 `cc-do` 涂绿。
|
|
62
|
-
|
|
63
|
-
## Runtime Output Policy
|
|
60
|
+
`cc-check` 是 PDCA / IDCA 的验证节点。它把“应该好了”变成“证据表明它好了”。
|
|
64
61
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
- `Output language` 是机器约束,`review/report-card.json` 中新增的人类可读 verdict 和报告摘要必须记录并遵守它。
|
|
68
|
-
- `agent_preferences` 是用户偏好建议,只影响表达方式和结构选择,不覆盖本 Skill 的工作流边界。
|
|
69
|
-
- 如果配置解析失败,先修配置或向用户说明阻塞,不要用默认语言继续生成正式文档。
|
|
62
|
+
它不写过程文件。验证事实进入当前回复、PR 文件和 Git commit。
|
|
70
63
|
|
|
71
64
|
## Iron Law
|
|
72
65
|
|
|
@@ -74,439 +67,23 @@ tool_budget:
|
|
|
74
67
|
NO PASS WITHOUT FRESH EVIDENCE
|
|
75
68
|
```
|
|
76
69
|
|
|
77
|
-
如果本轮没有重新读取契约、重新跑 gate、重新核对 review,就没有资格写 `pass`。
|
|
78
|
-
|
|
79
|
-
`cc-check` 的失败不是“你不够努力”,而是“现实还没有被证据证明为绿色”。
|
|
80
|
-
|
|
81
|
-
## Read First
|
|
82
|
-
|
|
83
|
-
1. `PLAYBOOK.md`
|
|
84
|
-
2. `CHANGELOG.md`
|
|
85
|
-
3. `references/gate-contract.md`
|
|
86
|
-
4. `references/review-contract.md`
|
|
87
|
-
|
|
88
|
-
## Use This Skill When
|
|
89
|
-
|
|
90
|
-
- 代码改完,准备验收
|
|
91
|
-
- 需要跑测试、lint、类型检查、质量门
|
|
92
|
-
- 需要判断 requirement 是否真的完成
|
|
93
|
-
- 需要确认是否可以进入交付动作
|
|
94
|
-
- 需要判断一个 investigated bug fix 是否真的兑现了 `planning/tasks.md#Root Cause Contract`
|
|
95
|
-
|
|
96
|
-
如果代码还在继续变、任务还没收口,停下并回 `cc-do`。
|
|
97
|
-
|
|
98
|
-
## Quick Start
|
|
99
|
-
|
|
100
|
-
先判断当前现实属于哪一类,再选 verdict:
|
|
101
|
-
|
|
102
|
-
| 现实状态 | 先读成什么 |
|
|
103
|
-
| --- | --- |
|
|
104
|
-
| 命令和 review 都齐了,只差最终裁决 | `pass-candidate` |
|
|
105
|
-
| 已有明确失败输出或 review finding | `fail-candidate` |
|
|
106
|
-
| 关键证据、review、环境、输入缺件 | `blocked-candidate` |
|
|
107
|
-
|
|
108
|
-
`cc-check` 的第一步不是跑更多形容词,而是先判“我是缺证据,还是有失败,还是已经足够过门”。
|
|
109
|
-
|
|
110
|
-
## Four Verification Phases
|
|
111
|
-
|
|
112
|
-
你必须按阶段推进,不能跳着给结论:
|
|
113
|
-
|
|
114
|
-
1. **Reset Contract**
|
|
115
|
-
- 先读 `cc-devflow query workflow-context --data-only --no-trace --compact` 的 context index
|
|
116
|
-
- 默认只用 `progressiveDisclosure.packetOnly` 和 `mustNotForget`
|
|
117
|
-
- 先检查 `sourceHashes`;不匹配就重跑 query
|
|
118
|
-
- 只有 `openWhen.conditions` 触发时再读 `deepOpen` 里的 `planning/tasks.md`、完整 `planning/task-manifest.json`、`change-meta.json` 或 legacy fallback
|
|
119
|
-
- 明确本轮要验证的 capability / task / spec delta
|
|
120
|
-
2. **Re-run Reality**
|
|
121
|
-
- 重新执行 gate,不继承 `cc-do` 叙述
|
|
122
|
-
- 读取退出码、关键输出、失败位置、skip 原因
|
|
123
|
-
3. **Check Every Boundary**
|
|
124
|
-
- runtime gate
|
|
125
|
-
- task-level review proof
|
|
126
|
-
- requirement-level diff review
|
|
127
|
-
- claim evidence matrix
|
|
128
|
-
- QA feedback loop and behavior evidence
|
|
129
|
-
- QA regression / test-quality proof
|
|
130
|
-
- spec alignment / sync readiness
|
|
131
|
-
4. **Freeze Verdict**
|
|
132
|
-
- 只允许 `pass` / `fail` / `blocked`
|
|
133
|
-
- 明确 `reroute`
|
|
134
|
-
- 写入 `review/report-card.json`
|
|
135
|
-
|
|
136
|
-
任何阶段发现“证据过期、边界矛盾、结论无法诚实成立”,都必须停下重建,而不是硬凑 `pass`。
|
|
137
|
-
|
|
138
|
-
## Harness Contract
|
|
139
|
-
|
|
140
|
-
- Allowed actions: rerun gates, inspect review proof, record a verdict, and route the requirement honestly.
|
|
141
|
-
- Forbidden actions: continuing development, inheriting old execution claims without fresh proof, or masking blocked work as pass.
|
|
142
|
-
- Required evidence: every passing statement must cite fresh command output, exit status, key observation, and the claim it proves.
|
|
143
|
-
- Reroute rule: code and review fixes return to `cc-do`; root-cause drift returns to `cc-investigate`; scope or design invalidation returns to `cc-plan`.
|
|
144
|
-
- Verification discipline: a skipped gate, stale review, ambiguous owner, or test that proves implementation shape instead of user intent blocks `pass`; fail loudly with the next owner.
|
|
145
|
-
|
|
146
|
-
## Verification Layers
|
|
147
|
-
|
|
148
|
-
`cc-check` 不是只看“测试是不是绿的”,而是至少看 10 层:
|
|
149
|
-
|
|
150
|
-
1. **Runtime Layer**
|
|
151
|
-
- 测试、lint、typecheck、build、脚本 gate
|
|
152
|
-
2. **Task Review Layer**
|
|
153
|
-
- `planning/task-manifest.json` 里的 task proof 是否完整
|
|
154
|
-
- `reviews.spec` / `reviews.code` 是否与完成状态一致
|
|
155
|
-
3. **Requirement Diff Layer**
|
|
156
|
-
- 当前改动是否真的兑现 requirement,而不是只让局部测试通过
|
|
157
|
-
4. **Spec Sync Layer**
|
|
158
|
-
- capability truth、expected spec delta、handoff readiness 是否仍然一致
|
|
159
|
-
5. **Claim Evidence Layer**
|
|
160
|
-
- 测试通过、build 成功、bug 修复、需求完成、agent 完成等声明,是否各自有对应证据
|
|
161
|
-
6. **QA Test Layer**
|
|
162
|
-
- 回归测试是否有 red/green 证据
|
|
163
|
-
- 测试是否验证真实行为,而不是 mock 或 test-only production API
|
|
164
|
-
- 反馈环是否能稳定复现或证明用户描述的行为
|
|
165
|
-
7. **Review Freshness Layer**
|
|
166
|
-
- review 是否绑定当前 `headSha`
|
|
167
|
-
- 从 review 到当前 HEAD 是否还有新增 commit
|
|
168
|
-
- 质量分、置信度、finding 去噪是否可复盘
|
|
169
|
-
8. **QA Coverage / Browser Layer**
|
|
170
|
-
- 行为链路、错误态、边界条件是否被测试映射覆盖
|
|
171
|
-
- UI / 用户路径变更是否有浏览器证据、截图、console 结果或明确 skip 理由
|
|
172
|
-
9. **Failure Ownership Layer**
|
|
173
|
-
- 失败是本分支引入、基线已存在、环境阻塞,还是归属不明
|
|
174
|
-
- 归属不明默认不能支撑 `pass`
|
|
175
|
-
10. **Behavior Contract Layer**
|
|
176
|
-
- expected / actual / reproduction steps 是否用用户和领域语言写清
|
|
177
|
-
- follow-up 是否是行为契约,而不是易腐烂的文件行号 TODO
|
|
178
|
-
11. **Human UAT Layer**
|
|
179
|
-
- 人工验收是否 required、skipped with reason、pass、fail 或 blocked
|
|
180
|
-
- failed UAT 必须 reroute 到 `cc-do`、`cc-investigate` 或 `cc-plan`
|
|
181
|
-
12. **Named Error Layer**
|
|
182
|
-
- runtime failure 必须有 `errorName`、artifact refs、failure owner 和 rescue action
|
|
183
|
-
- invalid JSON、stale artifact、missing report 不能变成静默 `blocked`
|
|
184
|
-
|
|
185
|
-
任何一层失真,都不能写 `pass`。
|
|
186
|
-
|
|
187
|
-
## Claim Evidence Matrix
|
|
188
|
-
|
|
189
|
-
不要把所有绿色都写成“测试过了”。`cc-check` 必须把声明拆成证据:
|
|
190
|
-
|
|
191
|
-
| Claim | Required proof | Not enough |
|
|
192
|
-
| --- | --- | --- |
|
|
193
|
-
| Tests pass | 本轮 test command、exit 0、0 failures | 旧输出、局部日志、应该会过 |
|
|
194
|
-
| Lint clean | 本轮 lint command、0 errors | 只跑 formatter、只看 touched file 且声明全仓 clean |
|
|
195
|
-
| Build succeeds | build command exit 0 | test / lint 通过 |
|
|
196
|
-
| Bug fixed | 原始症状或回归测试通过 | 代码改了、推测已修 |
|
|
197
|
-
| Regression test works | red -> green 证据 | 测试只绿过一次 |
|
|
198
|
-
| Agent completed | VCS diff / artifact 证明实际变化 | agent 自报 success |
|
|
199
|
-
| Requirements met | 逐项 plan / manifest checklist | 测试通过 |
|
|
200
|
-
|
|
201
|
-
这些事实写入 `claimEvidence[]`。缺少关键 claim 的证据时,结论至少是 `blocked`。
|
|
202
|
-
|
|
203
|
-
## QA Test Review
|
|
204
|
-
|
|
205
|
-
`cc-check` 必须区分“有测试”和“测试证明了正确行为”:
|
|
206
|
-
|
|
207
|
-
1. 先建立反馈环,再谈修复:failing test、curl / HTTP、CLI fixture、headless browser、trace replay、throwaway harness、bisect / differential loop 都可以,但必须说明速度、确定性、信号锋利度和复现率。
|
|
208
|
-
2. 回归测试必须记录 red/green 证据;red 要因为目标行为缺失而失败,不是语法、fixture 或 mock 写错。
|
|
209
|
-
3. 测试应从公共接口验证真实行为;不准为了方便直接测私有实现。
|
|
210
|
-
4. mock 只允许站在系统边界:外部 API、数据库、时间、随机数、文件系统、网络。mock 自家模块、断言内部调用次数或顺序,默认是 review finding。
|
|
211
|
-
5. 生产代码里新增仅测试使用的 API,默认是坏味道,必须 blocking,除非有明确生产生命周期理由。
|
|
212
|
-
6. 复杂 mock setup 超过测试主体时,优先要求 integration / contract test 解释。
|
|
213
|
-
7. test fixture 必须诚实表达 contract:partial fixture、generated stub、`as` / `any` / 双重 cast、缺字段 mock payload 都要说明真实字段与填充字段;如果这些技巧让测试绕过公共 seam 或隐藏错误输入,默认是 review finding。
|
|
214
|
-
8. 如果没有正确测试 seam,不要硬造脆弱测试;记录 `qa.architectureFollowUps`,说明缺失 seam / hidden coupling / shallow module,并按严重度决定 reroute 或 follow-up。
|
|
215
|
-
|
|
216
|
-
这些事实写入 `qa.regressionProof` 和 `qa.testQuality`。如果本需求没有行为测试空间,必须记录 `tddException` 或替代验证命令。
|
|
217
|
-
|
|
218
|
-
## QA Behavior Evidence
|
|
219
|
-
|
|
220
|
-
用户可见行为、bugfix、regression、工作流、CLI 行为和 API 行为都必须留下行为证据:
|
|
221
|
-
|
|
222
|
-
1. `qa.feedbackLoop` 记录本轮用什么 loop 证明现实,包含 `status`、`mode`、`commandOrArtifact`、`speed`、`determinism`、`signalSharpness`、`reproductionRate`、`attempts`、`blockedReason`。
|
|
223
|
-
2. `qa.behaviorEvidence` 记录 `userFacingBoundary`、`expectedBehavior`、`actualBehavior`、`reproductionSteps`、`consistency`、`domainLanguage`、`status`。
|
|
224
|
-
3. bugfix 不能只写“代码改了”;必须证明用户描述的原始症状已经被同一条或更可信的反馈环覆盖。
|
|
225
|
-
4. 不能复现时,verdict 默认 `blocked` 或回 `cc-investigate`,并写清尝试过哪些 loop、还缺什么 artifact / 权限 / 输入。
|
|
226
|
-
5. QA issue / follow-up 必须用行为和验收条件表达,不写易失效的文件路径或行号,除非它是当前 review finding 的证据位置。
|
|
227
|
-
|
|
228
|
-
## QA Coverage And Browser Evidence
|
|
229
|
-
|
|
230
|
-
测试不是数量游戏。`cc-check` 必须判断测试覆盖了哪条真实路径:
|
|
231
|
-
|
|
232
|
-
1. `qa.coverageAudit` 记录 `coveragePct`、`pathMap`、`gaps`、`testsAdded`、`e2eRequired`、`evalRequired`、`qualityStars`。
|
|
233
|
-
2. UI、路由、端到端用户路径、可视状态、交互状态变化时,必须记录 `qa.browserEvidence`。
|
|
234
|
-
3. `qa.browserEvidence` 至少说明 `mode`、`affectedRoutes`、`screenshots`、`consoleErrors`、`healthScore`、`issues`、`skipReason`。
|
|
235
|
-
4. 前端变更没有浏览器证据也没有 skip reason,不能写 `pass`。
|
|
236
|
-
5. 非前端或纯内部变更可以把 `browserEvidence.status` 写成 `skipped`,但必须说明为什么不需要浏览器 QA。
|
|
237
|
-
|
|
238
|
-
## Diff Review Pipeline
|
|
239
|
-
|
|
240
|
-
`cc-check` 的 requirement-level review 不能只写“diff 看过了”。至少要形成这些事实:
|
|
241
|
-
|
|
242
|
-
1. Base truth:识别 base branch、当前分支、是否已有 PR / MR,避免拿错比较基准。
|
|
243
|
-
2. Plan completion audit:从 `planning/tasks.md` / `task-manifest.json` 抽取可执行项,逐项标 `DONE` / `PARTIAL` / `NOT_DONE` / `CHANGED`。
|
|
244
|
-
3. Scope drift:比较原始 intent 与当前 diff,标出 scope creep、missing requirement、意外文件触点。
|
|
245
|
-
4. Critical pass:检查数据安全、并发、shell injection、LLM trust boundary、enum/value completeness、time/window safety、错误吞噬、静默数据损坏。
|
|
246
|
-
5. Outside-diff lookup:新增枚举值、状态、路由、artifact 类型时,必须搜索 sibling references,不能只读 diff 内文件。
|
|
247
|
-
6. Documentation staleness:代码行为、入口、命令、结构变化时,检查 README / CLAUDE / architecture docs 是否漂移。
|
|
248
|
-
7. Adversarial synthesis:如果有 codex review、subagent review、人工 review,多视角 finding 要去重并标出高置信重叠项。
|
|
249
|
-
8. Specialist facets:按实际风险记录 `testing`、`security`、`performance`、`api-contract`、`data-migration`、`design` 等 review facet;没有派发也要写 skip reason,避免 reviewer 误以为已经覆盖。
|
|
250
|
-
9. Confidence calibration:每条 finding 必须有可比较的置信度和指纹,低置信 finding 不准伪装成 blocker。
|
|
251
|
-
|
|
252
|
-
这些事实写入 `review.diffReview.details` 或 `review.findings`。`pass` 只在 scope、completion、critical pass、doc staleness 都没有 blocking finding 时成立。
|
|
253
|
-
|
|
254
|
-
## Review Packet And Triage
|
|
255
|
-
|
|
256
|
-
每次 task-level 或 requirement-level review 都必须能脱离聊天记录复盘:
|
|
257
|
-
|
|
258
|
-
1. `reviewPacket.baseSha`
|
|
259
|
-
2. `reviewPacket.headSha`
|
|
260
|
-
3. `reviewPacket.requirements`
|
|
261
|
-
4. `reviewPacket.implemented`
|
|
262
|
-
5. `reviewPacket.reviewerContext`
|
|
263
|
-
|
|
264
|
-
每次 review 还必须记录 freshness:
|
|
265
|
-
|
|
266
|
-
1. `review.freshness.status`:`fresh` / `stale` / `unknown` / `not-applicable`
|
|
267
|
-
2. `review.freshness.reviewedCommit`
|
|
268
|
-
3. `review.freshness.currentCommit`
|
|
269
|
-
4. `review.freshness.commitsSinceReview`
|
|
270
|
-
5. `review.freshness.staleReason`
|
|
271
|
-
6. `review.qualityScore`:0-10,缺失时不能当成高置信审查
|
|
272
|
-
|
|
273
|
-
每条 finding 必须有 triage:
|
|
274
|
-
|
|
275
|
-
- `accepted-fixed`:已修并有验证
|
|
276
|
-
- `rejected-with-evidence`:经代码 / 测试证明不适用
|
|
277
|
-
- `deferred-minor`:非阻塞,已写入 follow-up
|
|
278
|
-
- `clarification-needed`:不清楚,当前 verdict 不能是 `pass`
|
|
279
|
-
|
|
280
|
-
`critical` / `important` finding 未 triage 或未闭环,不能进入 `cc-act`。
|
|
281
|
-
|
|
282
|
-
每条 finding 还必须带去噪字段:
|
|
283
|
-
|
|
284
|
-
- `confidenceScore`:1-10,低于 7 的 finding 只能作为 warning 或待验证 gap
|
|
285
|
-
- `fingerprint`:稳定去重键,避免多路 review 重复报同一件事
|
|
286
|
-
- `displayTier`:`blocking` / `warning` / `info` / `suppressed`
|
|
287
|
-
- `suppressionReason`:只有 `displayTier=suppressed` 时允许非空
|
|
288
|
-
|
|
289
|
-
## Failure Ownership
|
|
290
|
-
|
|
291
|
-
失败不能只写“测试红了”。`cc-check` 必须把失败归属写入 `runtime.failureOwnership[]`:
|
|
292
|
-
|
|
293
|
-
1. `classification` 只能是 `in-branch`、`pre-existing`、`environment`、`ambiguous`。
|
|
294
|
-
2. `ambiguous` 默认按 `in-branch` 处理,除非有 base branch 复验证据。
|
|
295
|
-
3. `pre-existing` 必须有 base branch 或历史证据,不能靠猜。
|
|
296
|
-
4. `environment` 必须记录缺失依赖、权限、服务、密钥或平台约束。
|
|
297
|
-
5. `pass` 不能带未解释的 `in-branch` 或 `ambiguous` 失败。
|
|
298
|
-
|
|
299
|
-
每条 failure ownership 还必须命名:
|
|
300
|
-
|
|
301
|
-
- `errorName`:可搜索的错误名,例如 `MissingSpecReviewProof`
|
|
302
|
-
- `artifactRefs`:指向 report、manifest、task state、日志或命令输出
|
|
303
|
-
- `rescueAction`:下一步救援动作,不写空泛“检查一下”
|
|
304
|
-
- `owner`:`branch` / `baseline` / `environment` / `external` / `unknown`
|
|
305
|
-
|
|
306
|
-
## Entry Gate
|
|
307
|
-
|
|
308
|
-
1. 先读 `planning/tasks.md#Contract Summary` 或 `planning/tasks.md#Root Cause Contract`,再读 `planning/task-manifest.json` 和 `change-meta.json`。
|
|
309
|
-
2. 明确本次要验证哪些事实,不做含糊验收。
|
|
310
|
-
3. 所有通过结论都必须来自本次新鲜命令输出。
|
|
311
|
-
4. 已完成任务必须能拿出 `spec/code` review 证据,并能说明 expected spec delta 是否已被验证。
|
|
312
|
-
5. 如果 review、manifest、spec truth、runtime output 彼此矛盾,先停下做 reset,不准直接选 verdict。
|
|
313
|
-
|
|
314
70
|
## Verification Loop
|
|
315
71
|
|
|
316
|
-
1.
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
-
|
|
322
|
-
-
|
|
323
|
-
-
|
|
324
|
-
|
|
325
|
-
- 对照 `planning/tasks.md` 的 canonical contract
|
|
326
|
-
- 对照 `planning/task-manifest.json` 和 `change-meta.json`
|
|
327
|
-
- 对照 review truth 和 spec delta
|
|
328
|
-
4. **Freeze verdict**
|
|
329
|
-
- `pass` 只在所有必要层都通过时成立
|
|
330
|
-
- `fail` 用于已有明确失败现实
|
|
331
|
-
- `blocked` 用于缺件、缺环境、缺 review、缺输入
|
|
332
|
-
5. **Route honestly**
|
|
333
|
-
- 代码修补回 `cc-do`
|
|
334
|
-
- 根因站不住回 `cc-investigate`
|
|
335
|
-
- 设计前提失效回 `cc-plan`
|
|
336
|
-
|
|
337
|
-
## Verdict Matrix
|
|
338
|
-
|
|
339
|
-
`cc-check` 不允许“差不多算过”。结论只能从下面这张表里选:
|
|
340
|
-
|
|
341
|
-
| Verdict | 什么时候用 | reroute |
|
|
342
|
-
|---------|------------|---------|
|
|
343
|
-
| `pass` | 快速质量门通过,review gate 通过,当前证据足够支持“可以进入 `cc-act`” | `none` |
|
|
344
|
-
| `fail` | 命令明确失败,或 review 给出明确未解决问题 | `cc-do` |
|
|
345
|
-
| `blocked` | 缺 review 证据、缺必要前提、缺环境、缺输入,导致现在还不能诚实地下 `pass` / `fail` | `cc-do`、`cc-investigate` 或 `cc-plan` |
|
|
346
|
-
|
|
347
|
-
优先级永远是:
|
|
348
|
-
|
|
349
|
-
1. 先问“有没有新鲜证据”
|
|
350
|
-
2. 再问“证据是失败还是缺条件”
|
|
351
|
-
3. 最后才允许给 verdict
|
|
352
|
-
|
|
353
|
-
如果你已经知道实现方向错了、范围错了、设计前提失效了,`blocked` 不是答案,应该直接 reroute 到 `cc-investigate` 或 `cc-plan`。
|
|
354
|
-
|
|
355
|
-
## Red Flags: STOP And Reset
|
|
356
|
-
|
|
357
|
-
如果你出现下面这些念头,说明 `cc-check` 已经跑偏:
|
|
358
|
-
|
|
359
|
-
- “上次测过是绿的,这次就沿用”
|
|
360
|
-
- “review 应该没问题,先写 pass”
|
|
361
|
-
- “这个 warning 不影响交付,先忽略”
|
|
362
|
-
- “task 已标 done,manifest proof 以后再补”
|
|
363
|
-
- “现在先给 blocked,省得判断 reroute”
|
|
364
|
-
- “用户看起来满意,应该能进 `cc-act`”
|
|
365
|
-
- “测试是绿的,所以 spec 一定同步了”
|
|
366
|
-
|
|
367
|
-
这些都不叫验证,叫叙述污染。回到 `Reset Contract`。
|
|
368
|
-
|
|
369
|
-
## Minimum Evidence Shape
|
|
370
|
-
|
|
371
|
-
每条 evidence 至少要能回答这 3 件事:
|
|
372
|
-
|
|
373
|
-
1. 跑了什么命令
|
|
374
|
-
2. 退出码 / status 是什么
|
|
375
|
-
3. 关键观察是什么
|
|
376
|
-
|
|
377
|
-
不要写:
|
|
378
|
-
|
|
379
|
-
- “测试过了”
|
|
380
|
-
- “本地看起来可以”
|
|
381
|
-
- “review 没问题”
|
|
382
|
-
|
|
383
|
-
要写:
|
|
384
|
-
|
|
385
|
-
- `npm test` exited `0`, all targeted tests passed
|
|
386
|
-
- `npm run lint` exited `1`, `src/foo.ts:18` 仍有 unused import
|
|
387
|
-
- `spec review` 缺失,当前无法确认 T003 是否满足 requirement
|
|
388
|
-
|
|
389
|
-
## Multi-Boundary Rule
|
|
390
|
-
|
|
391
|
-
如果系统是多层链路,不要只验最终按钮或最终命令。
|
|
392
|
-
|
|
393
|
-
至少要确认:
|
|
394
|
-
|
|
395
|
-
1. 输入契约有没有被正确读取
|
|
396
|
-
2. runtime gate 有没有真实执行
|
|
397
|
-
3. review proof 有没有真的落到 manifest / review 产物
|
|
398
|
-
4. spec / handoff truth 有没有和本次实现同步
|
|
399
|
-
|
|
400
|
-
哪一层先坏,就把 blocking finding 写到那一层,不要把深层症状伪装成最终 verdict。
|
|
401
|
-
|
|
402
|
-
## Finding Discipline
|
|
403
|
-
|
|
404
|
-
每个 finding 至少要写清:
|
|
405
|
-
|
|
406
|
-
1. severity:`critical` / `important` / `info`
|
|
407
|
-
2. confidence:`high` / `medium` / `low`,低置信不要伪装成 blocker
|
|
408
|
-
- 同时写 `confidenceScore`,用 1-10 数字表达可比较置信度
|
|
409
|
-
3. source:`runtime` / `task-review` / `diff-review` / `adversarial` / `docs`
|
|
410
|
-
4. evidence:文件、命令、退出码、manifest path、或具体观察
|
|
411
|
-
5. action:`fix-now` / `reroute-cc-do` / `reroute-cc-plan` / `reroute-cc-investigate` / `document-follow-up`
|
|
412
|
-
6. fingerprint:稳定去重键
|
|
413
|
-
7. displayTier:`blocking` / `warning` / `info` / `suppressed`
|
|
414
|
-
|
|
415
|
-
不能写“可能有问题”然后让接手者猜。要么证明,要么标成待验证 gap。
|
|
416
|
-
|
|
417
|
-
## Good Output
|
|
418
|
-
|
|
419
|
-
最小高质量 `review/report-card.json` 至少应该长这样:
|
|
420
|
-
|
|
421
|
-
```json
|
|
422
|
-
{
|
|
423
|
-
"changeId": "REQ-123",
|
|
424
|
-
"verdict": "pass",
|
|
425
|
-
"overall": "pass",
|
|
426
|
-
"summary": "verdict=pass quick=3/3 strict=0/0 review=pass",
|
|
427
|
-
"claimEvidence": [
|
|
428
|
-
{ "claim": "tests-pass", "requiredProof": "fresh test command", "commandOrArtifact": "npm test", "exitStatus": 0, "keyObservation": "0 failures", "status": "pass" },
|
|
429
|
-
{ "claim": "requirements-met", "requiredProof": "plan checklist", "commandOrArtifact": "planning/tasks.md", "exitStatus": null, "keyObservation": "all tasks complete", "status": "pass" }
|
|
430
|
-
],
|
|
431
|
-
"runtime": { "status": "pass", "failureOwnership": [] },
|
|
432
|
-
"qa": {
|
|
433
|
-
"status": "pass",
|
|
434
|
-
"regressionProof": [],
|
|
435
|
-
"testQuality": [],
|
|
436
|
-
"coverageAudit": { "status": "pass", "coveragePct": 80, "pathMap": [], "gaps": [], "testsAdded": [], "e2eRequired": false, "evalRequired": false, "qualityStars": "★★" },
|
|
437
|
-
"browserEvidence": { "status": "skipped", "mode": "not-applicable", "affectedRoutes": [], "screenshots": [], "consoleErrors": [], "healthScore": null, "issues": [], "skipReason": "not a UI or user-path change" },
|
|
438
|
-
"tddException": null
|
|
439
|
-
},
|
|
440
|
-
"quickGates": [],
|
|
441
|
-
"strictGates": [],
|
|
442
|
-
"review": {
|
|
443
|
-
"status": "pass",
|
|
444
|
-
"summary": "Task review and diff review both passed",
|
|
445
|
-
"details": "",
|
|
446
|
-
"freshness": { "status": "fresh", "reviewedCommit": "example-head", "currentCommit": "example-head", "commitsSinceReview": 0, "staleReason": "" },
|
|
447
|
-
"qualityScore": 9,
|
|
448
|
-
"specialistReviews": [],
|
|
449
|
-
"taskReviews": { "status": "pass", "required": true, "summary": "all completed tasks carry spec/code proof", "reviewPacket": {}, "reviewers": [], "findings": [] },
|
|
450
|
-
"diffReview": { "status": "pass", "required": true, "summary": "plan completion clean, no scope drift, no critical diff findings", "reviewPacket": {}, "reviewers": [], "findings": [] },
|
|
451
|
-
"findings": []
|
|
452
|
-
},
|
|
453
|
-
"blockingFindings": [],
|
|
454
|
-
"reroute": "none",
|
|
455
|
-
"timestamp": "2026-04-15T12:00:00.000Z"
|
|
456
|
-
}
|
|
457
|
-
```
|
|
458
|
-
|
|
459
|
-
看完第一屏,下一位接手者应该立刻知道:
|
|
460
|
-
|
|
461
|
-
1. 现在是 `pass`、`fail` 还是 `blocked`
|
|
462
|
-
2. 这个结论由哪条新鲜证据支撑
|
|
463
|
-
3. 如果没过,应该回 `cc-do`、`cc-investigate` 还是 `cc-plan`
|
|
72
|
+
1. Read `task.md` and the current diff.
|
|
73
|
+
2. Re-run the smallest trustworthy gate: tests, typecheck, lint, build, browser check, CLI smoke, or domain-specific verifier.
|
|
74
|
+
3. Map each explicit requirement to proof.
|
|
75
|
+
4. Review test quality when behavior changed: red/green proof, public seam, honest fixtures, no private implementation assertions.
|
|
76
|
+
5. Return verdict:
|
|
77
|
+
- `pass`: all required claims have fresh proof.
|
|
78
|
+
- `fail`: a command, review, or behavior check proves the change is wrong.
|
|
79
|
+
- `blocked`: required environment, auth, input, or evidence is missing.
|
|
80
|
+
6. Commit the stage when this PDCA/IDCA environment completes.
|
|
464
81
|
|
|
465
82
|
## Output
|
|
466
83
|
|
|
467
|
-
|
|
468
|
-
- 验证结果输出
|
|
469
|
-
- review 结论
|
|
470
|
-
- reroute 结论
|
|
471
|
-
|
|
472
|
-
## Bundled Resources
|
|
473
|
-
|
|
474
|
-
- 变更记录:`CHANGELOG.md`
|
|
475
|
-
- 契约:`references/gate-contract.md`
|
|
476
|
-
- 审查契约:`references/review-contract.md`
|
|
477
|
-
- 模板:`assets/REPORT_CARD_TEMPLATE.json`
|
|
478
|
-
- 质量门执行:`scripts/run-quality-gates.sh`
|
|
479
|
-
- 报告渲染:`scripts/render-report-card.js`
|
|
480
|
-
- 结论校验:`scripts/verify-gate.sh`
|
|
481
|
-
|
|
482
|
-
## Working Rules
|
|
483
|
-
|
|
484
|
-
1. 先验证,再说完成。
|
|
485
|
-
2. 失败项必须有明确回退方向。
|
|
486
|
-
3. 没有证据,不允许绿灯。
|
|
487
|
-
4. 验收只认当前代码现实,不认计划里的自我安慰。
|
|
488
|
-
5. 通过结论必须可被 reviewer 复跑。
|
|
489
|
-
6. `pass` / `fail` / `blocked` 的选择必须能从 verdict matrix 逐条解释。
|
|
490
|
-
7. `reroute` 必须和阻塞原因一致,不能随手填默认值。
|
|
491
|
-
8. 如果同一 requirement 连续出现“测试绿但 closeout 红”,优先怀疑 review truth、manifest proof、spec sync,而不是继续给模糊总结。
|
|
492
|
-
9. Requirement diff review 默认要做 plan completion、scope drift、critical pass、doc staleness 四项;跳过任一项必须写 skip 理由。
|
|
493
|
-
|
|
494
|
-
## Exit Criteria
|
|
495
|
-
|
|
496
|
-
- 验证结论明确
|
|
497
|
-
- 失败项已指向 `cc-plan` 或 `cc-do`
|
|
498
|
-
- 通过时下一步唯一答案是 `cc-act`
|
|
499
|
-
|
|
500
|
-
## Do Not
|
|
501
|
-
|
|
502
|
-
- 不在这里偷偷继续开发
|
|
503
|
-
- 不拿“本地感觉没问题”替代结果
|
|
504
|
-
- 不把 review 评论当成已经修复
|
|
505
|
-
- 不把 stale JSON、旧截图、旧日志当成当前现实
|
|
506
|
-
- 不用 `blocked` 掩盖本该明确 reroute 的失败类型
|
|
507
|
-
|
|
508
|
-
## Companion Files
|
|
84
|
+
只输出短结论,不写过程文件:
|
|
509
85
|
|
|
510
|
-
-
|
|
511
|
-
-
|
|
512
|
-
-
|
|
86
|
+
- Verdict: `pass` / `fail` / `blocked`
|
|
87
|
+
- Evidence: command, exit status, and the claim it proves
|
|
88
|
+
- Review: clean, findings remain, or not reviewed
|
|
89
|
+
- Route: `cc-act` / `cc-do` / `cc-investigate` / `cc-plan` / `stop`
|