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,488 +0,0 @@
1
- {
2
- "changeId": "REQ-002",
3
- "goal": "Add a trustworthy CSV bulk invite flow for admins without inventing row-outcome semantics during execution.",
4
- "createdAt": "2026-04-16T09:00:00.000Z",
5
- "updatedAt": "2026-04-16T12:00:00.000Z",
6
- "requirementId": "REQ-002",
7
- "requirementVersion": "REQ-002.v2",
8
- "planningMeta": {
9
- "reqPlanSkillVersion": "3.9.0",
10
- "designVersion": "design.v2",
11
- "workBranch": "REQ/002-bulk-invite-import",
12
- "approvedAt": null,
13
- "basedOnOption": "Option B",
14
- "aiLeverageDecisionLens": {
15
- "realUserOrOperator": "workspace admin onboarding larger teams",
16
- "statusQuoWorkaround": "paste invite emails one by one or track them in spreadsheets",
17
- "humanTeamEffortForFullScope": "multiple weeks across product, engineering, billing, and support review",
18
- "ccAgentEffortForFullScope": "several hours once row semantics are approved, but unbounded before that",
19
- "aiCompressionRatio": "high after semantics freeze, low while the product contract is ambiguous",
20
- "completeLakeBoundary": "row classification, admin upload flow, billing-seat checks, and audit mapping after rule approval",
21
- "oceanBoundary": "SCIM, background retries, rollback wizard, and unspecified billing semantics",
22
- "scopeRecommendation": "sharp-wedge",
23
- "costModel": {
24
- "agentTime": "medium after rule approval",
25
- "humanReviewTime": "high until semantics are approved",
26
- "verificationCost": "bulk rules, admin flow, billing, and audit tests",
27
- "maintenanceCost": "medium after semantics freeze",
28
- "failureCost": "high if billing or audit outcomes drift",
29
- "reversibility": "limited once execution semantics ship"
30
- },
31
- "verdict": "sharp-wedge",
32
- "missingEvidenceOrPivotReason": "none at plan approval; cc-check later reopened duplicate, invalid-row, partial-success, and seat-limit semantics before retry or cc-act",
33
- "impactOnApprovedDirection": "allow bounded import-path execution, then block final proof if review finds row semantics drift"
34
- },
35
- "externalBestPractice": {
36
- "needed": true,
37
- "decisionStatus": "declined",
38
- "decisionQuestionId": "D2",
39
- "privacyGuard": "generalized terms only; no project names, private requirements, customer names, secrets, logs, or proprietary concepts",
40
- "generalizedSearchTerms": [
41
- "bulk invite CSV import validation best practices"
42
- ],
43
- "sourcesChecked": [],
44
- "conventionalWisdom": "",
45
- "currentDiscourse": "",
46
- "repoFitVerdict": "skipped",
47
- "designImpacts": [
48
- "keep the design blocked until row-outcome semantics are approved from internal evidence"
49
- ],
50
- "skippedReason": "user kept the example repo-local for the blocked design"
51
- },
52
- "decisionQuestions": [
53
- {
54
- "questionId": "D1",
55
- "gate": "approach-approval",
56
- "knownEvidence": [
57
- "Best-effort upload would hide duplicate, invalid, and seat-limit semantics",
58
- "Audit mapping depends on deterministic row outcomes"
59
- ],
60
- "recommendation": "Choose Option B and freeze a rule matrix first",
61
- "options": [
62
- {
63
- "id": "A",
64
- "label": "Front-end-only CSV upload",
65
- "recommended": false,
66
- "completeness": "5/10",
67
- "good": "Fastest prototype and reuses the existing single-invite API",
68
- "costRisk": "Lets hidden backend edge cases define user-visible semantics"
69
- },
70
- {
71
- "id": "B",
72
- "label": "Rule matrix first",
73
- "recommended": true,
74
- "completeness": "9/10",
75
- "good": "Makes billing, duplicate, invalid, and audit behavior reviewable",
76
- "costRisk": "Requires one more planning pass before execution can start"
77
- }
78
- ],
79
- "userChoice": "B",
80
- "impact": "cc-do stays blocked until row outcomes are modeled",
81
- "status": "answered"
82
- },
83
- {
84
- "questionId": "D2",
85
- "gate": "external-best-practice",
86
- "knownEvidence": [
87
- "Bulk CSV import semantics could benefit from generalized external practice",
88
- "The example keeps private details out of any external lookup"
89
- ],
90
- "recommendation": "Stay repo-local for this blocked example",
91
- "options": [
92
- {
93
- "id": "A",
94
- "label": "Search generalized best practices",
95
- "recommended": false,
96
- "completeness": "9/10",
97
- "good": "Could improve row-outcome terminology before task generation",
98
- "costRisk": "Sends generalized category terms outside the local repo"
99
- },
100
- {
101
- "id": "B",
102
- "label": "Stay repo-local",
103
- "recommended": true,
104
- "completeness": "7/10",
105
- "good": "Keeps the blocked example private and focused on internal semantics",
106
- "costRisk": "Does not compare against external CSV-import conventions"
107
- }
108
- ],
109
- "userChoice": "B",
110
- "impact": "cc-do still must not start implementation until row outcomes are answered from internal evidence",
111
- "status": "answered"
112
- },
113
- {
114
- "questionId": "D3",
115
- "gate": "review-blocker",
116
- "knownEvidence": [
117
- "Duplicate and seat-limit outcomes are still not explicit enough for final requirement proof",
118
- "Audit entries must match visible row outcomes"
119
- ],
120
- "recommendation": "Answer the row-outcome matrix before retry or cc-act",
121
- "options": [
122
- {
123
- "id": "A",
124
- "label": "Block execution until matrix is explicit",
125
- "recommended": true,
126
- "completeness": "10/10",
127
- "good": "Prevents cc-do from inventing semantics during implementation",
128
- "costRisk": "Requires user/product input before coding can continue"
129
- },
130
- {
131
- "id": "B",
132
- "label": "Let implementation choose defaults",
133
- "recommended": false,
134
- "completeness": "4/10",
135
- "good": "Starts coding sooner with fewer planning minutes",
136
- "costRisk": "Creates invisible product decisions inside implementation tasks"
137
- }
138
- ],
139
- "userChoice": null,
140
- "impact": "cc-do retry and cc-act must stay blocked until this is answered",
141
- "status": "asked"
142
- }
143
- ]
144
- },
145
- "currentTaskId": null,
146
- "tasks": [
147
- {
148
- "id": "T001",
149
- "title": "[TEST] Add failing tests for duplicate and over-limit row outcomes",
150
- "type": "TEST",
151
- "phase": 1,
152
- "parallel": false,
153
- "dependsOn": [],
154
- "touches": [
155
- "bulk-invite-rules"
156
- ],
157
- "files": [
158
- "src/invite/bulk-import.test.ts"
159
- ],
160
- "run": [
161
- "npm test -- src/invite/bulk-import.test.ts"
162
- ],
163
- "checks": [
164
- "tests fail before implementation"
165
- ],
166
- "acceptance": [
167
- "dangerous row outcomes are reproduced as explicit failing tests"
168
- ],
169
- "verification": [
170
- "npm test -- src/invite/bulk-import.test.ts"
171
- ],
172
- "evidence": [
173
- "failing test output"
174
- ],
175
- "context": {
176
- "readFiles": [
177
- "design.md",
178
- "tasks.md",
179
- "src/invite/bulk-import.ts"
180
- ],
181
- "commands": [
182
- "npm test -- src/invite/bulk-import.test.ts"
183
- ],
184
- "notes": [
185
- "freeze row semantics before broader execution"
186
- ]
187
- },
188
- "reviews": {
189
- "spec": "pass",
190
- "code": "pass"
191
- },
192
- "status": "passed",
193
- "attempts": 1,
194
- "maxRetries": 1,
195
- "tddPhase": "red",
196
- "verticalSlice": "Slice 1",
197
- "testSeam": {
198
- "entry": "bulk invite rules and admin upload UI behavior",
199
- "behaviorAsserted": "dangerous row outcomes are reproduced as explicit failing tests",
200
- "specStyleTestName": "dangerous row outcomes are reproduced as explicit failing tests",
201
- "oneLogicalBehavior": true,
202
- "publicVerificationPath": "Run the bulk invite rule and admin panel tests through their public flows",
203
- "implementationDetailRisk": "low"
204
- },
205
- "feedbackLoop": {
206
- "type": "automated-test",
207
- "determinism": "deterministic",
208
- "expectedFailure": "Fails before the behavior exists"
209
- }
210
- },
211
- {
212
- "id": "T002",
213
- "title": "[IMPL] Implement the initial bulk invite row classification",
214
- "type": "IMPL",
215
- "phase": 1,
216
- "parallel": false,
217
- "dependsOn": [
218
- "T001"
219
- ],
220
- "touches": [
221
- "bulk-invite-rules"
222
- ],
223
- "files": [
224
- "src/invite/bulk-import.ts"
225
- ],
226
- "run": [
227
- "npm test -- src/invite/bulk-import.test.ts"
228
- ],
229
- "checks": [
230
- "rule tests pass"
231
- ],
232
- "acceptance": [
233
- "bulk invite rows receive deterministic initial states"
234
- ],
235
- "verification": [
236
- "npm test -- src/invite/bulk-import.test.ts"
237
- ],
238
- "evidence": [
239
- "passing test output",
240
- "CLI log summary"
241
- ],
242
- "context": {
243
- "readFiles": [
244
- "design.md",
245
- "tasks.md",
246
- "src/invite/bulk-import.test.ts"
247
- ],
248
- "commands": [
249
- "npm test -- src/invite/bulk-import.test.ts"
250
- ],
251
- "notes": [
252
- "do not invent partial-failure semantics outside the approved design"
253
- ]
254
- },
255
- "reviews": {
256
- "spec": "pass",
257
- "code": "pass"
258
- },
259
- "status": "passed",
260
- "attempts": 1,
261
- "maxRetries": 1,
262
- "tddPhase": "green",
263
- "verticalSlice": "Slice 2",
264
- "testSeam": {
265
- "entry": "bulk invite rules and admin upload UI behavior",
266
- "behaviorAsserted": "bulk invite rows receive deterministic initial states",
267
- "specStyleTestName": "bulk invite rows receive deterministic initial states",
268
- "oneLogicalBehavior": true,
269
- "publicVerificationPath": "Run the bulk invite rule and admin panel tests through their public flows",
270
- "implementationDetailRisk": "low"
271
- },
272
- "feedbackLoop": {
273
- "type": "automated-test",
274
- "determinism": "deterministic",
275
- "expectedFailure": ""
276
- }
277
- },
278
- {
279
- "id": "T003",
280
- "title": "[TEST] Add failing admin panel tests for mixed CSV results",
281
- "type": "TEST",
282
- "phase": 2,
283
- "parallel": false,
284
- "dependsOn": [
285
- "T002"
286
- ],
287
- "touches": [
288
- "admin-bulk-invite-ui"
289
- ],
290
- "files": [
291
- "src/admin/BulkInvitePanel.test.tsx"
292
- ],
293
- "run": [
294
- "npm test -- src/admin/BulkInvitePanel.test.tsx"
295
- ],
296
- "checks": [
297
- "admin panel tests fail before UI integration"
298
- ],
299
- "acceptance": [
300
- "mixed row outcomes are visible as UI failures before implementation"
301
- ],
302
- "verification": [
303
- "npm test -- src/admin/BulkInvitePanel.test.tsx"
304
- ],
305
- "evidence": [
306
- "failing test output"
307
- ],
308
- "context": {
309
- "readFiles": [
310
- "design.md",
311
- "tasks.md",
312
- "src/admin/BulkInvitePanel.tsx"
313
- ],
314
- "commands": [
315
- "npm test -- src/admin/BulkInvitePanel.test.tsx"
316
- ],
317
- "notes": [
318
- "UI must not hide ambiguous row states"
319
- ]
320
- },
321
- "reviews": {
322
- "spec": "pass",
323
- "code": "pass"
324
- },
325
- "status": "passed",
326
- "attempts": 1,
327
- "maxRetries": 1,
328
- "tddPhase": "red",
329
- "verticalSlice": "Slice 3",
330
- "testSeam": {
331
- "entry": "bulk invite rules and admin upload UI behavior",
332
- "behaviorAsserted": "mixed row outcomes are visible as UI failures before implementation",
333
- "specStyleTestName": "mixed row outcomes are visible as UI failures before implementation",
334
- "oneLogicalBehavior": true,
335
- "publicVerificationPath": "Run the bulk invite rule and admin panel tests through their public flows",
336
- "implementationDetailRisk": "low"
337
- },
338
- "feedbackLoop": {
339
- "type": "automated-test",
340
- "determinism": "deterministic",
341
- "expectedFailure": "Fails before the behavior exists"
342
- }
343
- },
344
- {
345
- "id": "T004",
346
- "title": "[IMPL] Render bulk invite results in the admin panel",
347
- "type": "IMPL",
348
- "phase": 2,
349
- "parallel": false,
350
- "dependsOn": [
351
- "T003"
352
- ],
353
- "touches": [
354
- "admin-bulk-invite-ui"
355
- ],
356
- "files": [
357
- "src/admin/BulkInvitePanel.tsx"
358
- ],
359
- "run": [
360
- "npm test -- src/admin/BulkInvitePanel.test.tsx"
361
- ],
362
- "checks": [
363
- "admin panel tests pass"
364
- ],
365
- "acceptance": [
366
- "admins can see accepted, skipped, and rejected rows in the panel"
367
- ],
368
- "verification": [
369
- "npm test -- src/admin/BulkInvitePanel.test.tsx"
370
- ],
371
- "evidence": [
372
- "passing test output",
373
- "review notes"
374
- ],
375
- "context": {
376
- "readFiles": [
377
- "design.md",
378
- "tasks.md",
379
- "src/admin/BulkInvitePanel.test.tsx"
380
- ],
381
- "commands": [
382
- "npm test -- src/admin/BulkInvitePanel.test.tsx"
383
- ],
384
- "notes": [
385
- "surface row states without redefining backend truth"
386
- ]
387
- },
388
- "reviews": {
389
- "spec": "pass",
390
- "code": "pass"
391
- },
392
- "status": "passed",
393
- "attempts": 1,
394
- "maxRetries": 1,
395
- "tddPhase": "green",
396
- "verticalSlice": "Slice 3",
397
- "testSeam": {
398
- "entry": "bulk invite rules and admin upload UI behavior",
399
- "behaviorAsserted": "admins can see accepted, skipped, and rejected rows in the panel",
400
- "specStyleTestName": "admins can see accepted, skipped, and rejected rows in the panel",
401
- "oneLogicalBehavior": true,
402
- "publicVerificationPath": "Run the bulk invite rule and admin panel tests through their public flows",
403
- "implementationDetailRisk": "low"
404
- },
405
- "feedbackLoop": {
406
- "type": "automated-test",
407
- "determinism": "deterministic",
408
- "expectedFailure": ""
409
- }
410
- },
411
- {
412
- "id": "T005",
413
- "title": "Run mixed-surface checks and gather review evidence",
414
- "type": "OTHER",
415
- "phase": 3,
416
- "parallel": false,
417
- "dependsOn": [
418
- "T004"
419
- ],
420
- "touches": [
421
- "quality-gates"
422
- ],
423
- "files": [
424
- "src/admin/BulkInvitePanel.tsx",
425
- "src/invite/bulk-import.ts"
426
- ],
427
- "run": [
428
- "npm test -- src/invite/bulk-import.test.ts",
429
- "npm test -- src/admin/BulkInvitePanel.test.tsx"
430
- ],
431
- "checks": [
432
- "targeted tests pass",
433
- "review evidence collected"
434
- ],
435
- "acceptance": [
436
- "fresh verification evidence exists for cc-check"
437
- ],
438
- "verification": [
439
- "npm test -- src/invite/bulk-import.test.ts",
440
- "npm test -- src/admin/BulkInvitePanel.test.tsx"
441
- ],
442
- "evidence": [
443
- "passing targeted test output",
444
- "review notes"
445
- ],
446
- "context": {
447
- "readFiles": [
448
- "tasks.md",
449
- "task-manifest.json"
450
- ],
451
- "commands": [
452
- "npm test -- src/invite/bulk-import.test.ts",
453
- "npm test -- src/admin/BulkInvitePanel.test.tsx"
454
- ],
455
- "notes": [
456
- "fresh evidence can still block if the design contract is incomplete"
457
- ]
458
- },
459
- "reviews": {
460
- "spec": "pass",
461
- "code": "pass"
462
- },
463
- "status": "passed",
464
- "attempts": 1,
465
- "maxRetries": 1,
466
- "tddPhase": "evidence",
467
- "verticalSlice": "Slice 3",
468
- "testSeam": {
469
- "entry": "bulk invite rules and admin upload UI behavior",
470
- "behaviorAsserted": "fresh verification evidence exists for cc-check",
471
- "specStyleTestName": "fresh verification evidence exists for cc-check",
472
- "oneLogicalBehavior": true,
473
- "publicVerificationPath": "Run the bulk invite rule and admin panel tests through their public flows",
474
- "implementationDetailRisk": "low"
475
- },
476
- "feedbackLoop": {
477
- "type": "automated-test",
478
- "determinism": "deterministic",
479
- "expectedFailure": ""
480
- }
481
- }
482
- ],
483
- "metadata": {
484
- "source": "tasks.md",
485
- "generatedBy": "docs-example",
486
- "planVersion": 1
487
- }
488
- }
@@ -1,189 +0,0 @@
1
- {
2
- "changeId": "REQ-002",
3
- "verdict": "blocked",
4
- "overall": "fail",
5
- "summary": "verdict=blocked quick=2/2 strict=0/0 review=blocked",
6
- "specAlignment": "blocked",
7
- "specDeltaVerified": false,
8
- "specSyncReady": false,
9
- "runtime": {
10
- "status": "blocked",
11
- "failureOwnership": [
12
- {
13
- "failure": "requirement semantics cannot be proven from current design",
14
- "classification": "ambiguous",
15
- "touchedByDiff": true,
16
- "evidence": "duplicate-email and seat-limit outcomes lack a frozen row matrix",
17
- "action": "reroute-cc-plan",
18
- "status": "open"
19
- }
20
- ]
21
- },
22
- "claimEvidence": [
23
- {
24
- "claim": "tests-pass",
25
- "requiredProof": "fresh targeted test command with exit 0",
26
- "commandOrArtifact": "npm test -- src/invite/bulk-import.test.ts",
27
- "exitStatus": 0,
28
- "keyObservation": "targeted bulk invite rule tests passed",
29
- "status": "pass"
30
- },
31
- {
32
- "claim": "requirements-met",
33
- "requiredProof": "line-by-line planning/tasks.md and task-manifest.json checklist",
34
- "commandOrArtifact": "planning/tasks.md#Contract Summary + planning/task-manifest.json",
35
- "exitStatus": null,
36
- "keyObservation": "duplicate-email and seat-limit semantics are still underspecified",
37
- "status": "blocked"
38
- }
39
- ],
40
- "qa": {
41
- "status": "blocked",
42
- "regressionProof": [],
43
- "testQuality": [
44
- {
45
- "area": "bulk-invite-rules",
46
- "checksRealBehavior": true,
47
- "mockBoundary": "none",
48
- "testOnlyProductionApi": false,
49
- "status": "pass"
50
- }
51
- ],
52
- "coverageAudit": {
53
- "status": "blocked",
54
- "coveragePct": null,
55
- "pathMap": ["bulk invite parser", "admin panel happy path"],
56
- "gaps": ["duplicate-email row semantics", "seat-limit partial-failure semantics"],
57
- "testsAdded": ["src/invite/bulk-import.test.ts", "src/admin/BulkInvitePanel.test.tsx"],
58
- "e2eRequired": true,
59
- "evalRequired": false,
60
- "qualityStars": "★"
61
- },
62
- "browserEvidence": {
63
- "status": "skipped",
64
- "mode": "not-applicable",
65
- "affectedRoutes": [],
66
- "screenshots": [],
67
- "consoleErrors": [],
68
- "healthScore": null,
69
- "issues": [],
70
- "skipReason": "design contract is blocked before browser QA can prove the intended behavior"
71
- },
72
- "tddException": "design contract is incomplete, so tests cannot prove final requirement semantics yet"
73
- },
74
- "quickGates": [
75
- {
76
- "name": "bulk-rule-tests",
77
- "status": "pass",
78
- "command": "npm test -- src/invite/bulk-import.test.ts",
79
- "summary": "targeted bulk invite rule tests passed"
80
- },
81
- {
82
- "name": "admin-panel-tests",
83
- "status": "pass",
84
- "command": "npm test -- src/admin/BulkInvitePanel.test.tsx",
85
- "summary": "admin panel tests passed for the current diff"
86
- }
87
- ],
88
- "strictGates": [],
89
- "review": {
90
- "status": "blocked",
91
- "summary": "The implementation evidence is real, but the requirement-level design contract is still incomplete",
92
- "details": "Diff review found that duplicate-email and seat-limit semantics are still not frozen tightly enough to trust the current implementation as the requirement truth.",
93
- "freshness": {
94
- "status": "fresh",
95
- "reviewedCommit": "example-head",
96
- "currentCommit": "example-head",
97
- "commitsSinceReview": 0,
98
- "staleReason": ""
99
- },
100
- "qualityScore": 6,
101
- "specialistReviews": [
102
- {
103
- "name": "testing",
104
- "status": "blocked",
105
- "required": true,
106
- "summary": "tests are real but cannot cover semantics that are not frozen in design",
107
- "skipReason": "",
108
- "findings": []
109
- }
110
- ],
111
- "taskReviews": {
112
- "status": "pass",
113
- "required": true,
114
- "summary": "All completed tasks carry spec/code proof",
115
- "reviewPacket": {
116
- "baseSha": "example-base",
117
- "headSha": "example-head",
118
- "requirements": "planning/tasks.md",
119
- "implemented": "bulk invite import implementation",
120
- "reviewerContext": "task manifest plus current implementation evidence"
121
- },
122
- "reviewers": [],
123
- "findings": []
124
- },
125
- "diffReview": {
126
- "status": "blocked",
127
- "required": false,
128
- "summary": "Requirement-level review says the row-outcome matrix must be reopened in planning",
129
- "reviewPacket": {
130
- "baseSha": "example-base",
131
- "headSha": "example-head",
132
- "requirements": "planning/tasks.md#Contract Summary",
133
- "implemented": "bulk invite import implementation",
134
- "reviewerContext": "requirement diff, plan completion, scope drift, docs staleness"
135
- },
136
- "reviewers": [],
137
- "findings": [
138
- {
139
- "severity": "important",
140
- "confidence": "high",
141
- "source": "diff-review",
142
- "summary": "duplicate-email behavior is still underspecified",
143
- "evidence": "planning/tasks.md#Contract Summary does not freeze row-level duplicate semantics",
144
- "action": "reroute-cc-plan",
145
- "triageStatus": "clarification-needed",
146
- "confidenceScore": 9,
147
- "fingerprint": "diff-review:bulk-invite:duplicate-email-semantics",
148
- "displayTier": "blocking",
149
- "suppressionReason": null
150
- },
151
- {
152
- "severity": "important",
153
- "confidence": "high",
154
- "source": "diff-review",
155
- "summary": "seat-limit partial-failure semantics are not frozen in design.md",
156
- "evidence": "planning/tasks.md#Contract Summary lacks accepted row-outcome matrix",
157
- "action": "reroute-cc-plan",
158
- "triageStatus": "clarification-needed",
159
- "confidenceScore": 9,
160
- "fingerprint": "diff-review:bulk-invite:seat-limit-partial-failure",
161
- "displayTier": "blocking",
162
- "suppressionReason": null
163
- }
164
- ]
165
- },
166
- "findings": [
167
- {
168
- "severity": "important",
169
- "confidence": "medium",
170
- "source": "diff-review",
171
- "summary": "The current code may be locally green while still violating the intended admin trust model",
172
- "evidence": "tests pass but requirement claim remains blocked by design ambiguity",
173
- "action": "reroute-cc-plan",
174
- "triageStatus": "clarification-needed",
175
- "confidenceScore": 7,
176
- "fingerprint": "diff-review:bulk-invite:trust-model-ambiguous",
177
- "displayTier": "warning",
178
- "suppressionReason": null
179
- }
180
- ]
181
- },
182
- "blockingFindings": [
183
- "design: duplicate-email row handling is not frozen tightly enough",
184
- "design: seat-limit partial-failure semantics must be reopened in cc-plan"
185
- ],
186
- "gaps": ["duplicate-email row handling", "seat-limit partial-failure semantics"],
187
- "reroute": "cc-plan",
188
- "timestamp": "2026-04-16T12:15:00.000Z"
189
- }