cc-devflow 4.5.7 → 4.5.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/skills/cc-act/CHANGELOG.md +33 -0
- package/.claude/skills/cc-act/PLAYBOOK.md +18 -4
- package/.claude/skills/cc-act/SKILL.md +76 -7
- package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_INDEX_TEMPLATE.md +30 -0
- package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_PRINCIPLES_TEMPLATE.md +29 -0
- package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_TEMPLATE.md +103 -0
- package/.claude/skills/cc-act/assets/PR_BRIEF_TEMPLATE.md +60 -4
- package/.claude/skills/cc-act/references/closure-contract.md +7 -0
- package/.claude/skills/cc-act/references/git-commit-guidelines.md +342 -37
- package/.claude/skills/cc-act/scripts/cc-act-common.sh +29 -1
- package/.claude/skills/cc-act/scripts/detect-ship-target.sh +27 -0
- package/.claude/skills/cc-act/scripts/ensure-ship-branch.sh +93 -0
- package/.claude/skills/cc-act/scripts/generate-status-report.sh +6 -0
- package/.claude/skills/cc-act/scripts/render-pr-brief.sh +170 -0
- package/.claude/skills/cc-act/scripts/sync-act-docs.sh +15 -1
- package/.claude/skills/cc-dev/CHANGELOG.md +5 -0
- package/.claude/skills/cc-dev/PLAYBOOK.md +63 -0
- package/.claude/skills/cc-dev/SKILL.md +168 -0
- package/.claude/skills/cc-do/CHANGELOG.md +17 -0
- package/.claude/skills/cc-do/SKILL.md +41 -13
- package/.claude/skills/cc-do/scripts/build-task-context.sh +9 -5
- package/.claude/skills/cc-do/scripts/mark-task-complete.sh +0 -6
- package/.claude/skills/cc-investigate/CHANGELOG.md +17 -0
- package/.claude/skills/cc-investigate/PLAYBOOK.md +15 -0
- package/.claude/skills/cc-investigate/SKILL.md +46 -1
- package/.claude/skills/cc-investigate/assets/ANALYSIS_TEMPLATE.md +47 -0
- package/.claude/skills/cc-investigate/assets/TASKS_TEMPLATE.md +21 -2
- package/.claude/skills/cc-investigate/assets/TASK_MANIFEST_TEMPLATE.json +28 -58
- package/.claude/skills/cc-investigate/references/investigation-contract.md +14 -0
- package/.claude/skills/cc-next/CHANGELOG.md +11 -0
- package/.claude/skills/cc-next/PLAYBOOK.md +74 -0
- package/.claude/skills/cc-next/SKILL.md +196 -0
- package/.claude/skills/cc-plan/CHANGELOG.md +25 -0
- package/.claude/skills/cc-plan/PLAYBOOK.md +25 -20
- package/.claude/skills/cc-plan/SKILL.md +116 -13
- package/.claude/skills/cc-plan/assets/DESIGN_TEMPLATE.md +67 -0
- package/.claude/skills/cc-plan/assets/TASKS_TEMPLATE.md +85 -0
- package/.claude/skills/cc-plan/assets/TASK_MANIFEST_TEMPLATE.json +57 -182
- package/.claude/skills/cc-plan/assets/TINY_DESIGN_TEMPLATE.md +46 -0
- package/.claude/skills/cc-plan/references/planning-contract.md +51 -26
- package/.claude/skills/cc-pr-land/CHANGELOG.md +5 -0
- package/.claude/skills/cc-pr-land/PLAYBOOK.md +45 -0
- package/.claude/skills/cc-pr-land/SKILL.md +157 -0
- package/.claude/skills/cc-pr-review/CHANGELOG.md +5 -0
- package/.claude/skills/cc-pr-review/PLAYBOOK.md +46 -0
- package/.claude/skills/cc-pr-review/SKILL.md +142 -0
- package/.claude/skills/cc-review/CHANGELOG.md +21 -0
- package/.claude/skills/cc-review/PLAYBOOK.md +64 -10
- package/.claude/skills/cc-review/SKILL.md +185 -18
- package/.claude/skills/cc-review/references/e2e-and-plugin-verification.md +4 -0
- package/.claude/skills/cc-review/references/implementation-review-branch.md +37 -0
- package/.claude/skills/cc-review/references/plan-review-branch.md +36 -1
- package/.claude/skills/cc-review/references/review-methods.md +98 -3
- package/.claude/skills/cc-review/scripts/collect-review-context.sh +80 -0
- package/.claude/skills/cc-roadmap/CHANGELOG.md +6 -0
- package/.claude/skills/cc-roadmap/PLAYBOOK.md +30 -0
- package/.claude/skills/cc-roadmap/SKILL.md +45 -8
- package/.claude/skills/cc-roadmap/assets/BACKLOG_TEMPLATE.md +8 -0
- package/.claude/skills/cc-roadmap/assets/ROADMAP_TEMPLATE.md +22 -0
- package/.claude/skills/cc-roadmap/assets/TRACKING_TEMPLATE.json +32 -1
- package/.claude/skills/cc-roadmap/references/roadmap-dialogue.md +14 -14
- package/.claude/skills/cc-simplify/CHANGELOG.md +6 -0
- package/.claude/skills/cc-simplify/SKILL.md +19 -8
- package/CHANGELOG.md +20 -1
- package/README.md +60 -9
- package/README.zh-CN.md +60 -9
- package/config/distributable-skills.json +8 -0
- package/docs/assets/cc-devflow-pr-harness-en.svg +153 -0
- package/docs/assets/cc-devflow-pr-harness-zh.svg +152 -0
- package/docs/assets/wechat-group-qr.jpg +0 -0
- package/docs/examples/example-bindings.json +11 -7
- package/docs/examples/full-design-blocked/BACKLOG.md +1 -1
- package/docs/examples/full-design-blocked/README.md +1 -1
- package/docs/examples/full-design-blocked/ROADMAP.md +1 -1
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/design.md +1 -1
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json +102 -82
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md +45 -1
- package/docs/examples/full-design-blocked/roadmap.json +1 -1
- package/docs/examples/local-handoff/BACKLOG.md +1 -1
- package/docs/examples/local-handoff/README.md +1 -1
- package/docs/examples/local-handoff/ROADMAP.md +1 -1
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/design.md +1 -1
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json +70 -61
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md +35 -1
- package/docs/examples/local-handoff/roadmap.json +1 -1
- package/docs/examples/pdca-loop/BACKLOG.md +1 -1
- package/docs/examples/pdca-loop/README.md +1 -1
- package/docs/examples/pdca-loop/ROADMAP.md +1 -1
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/handoff/pr-brief.md +64 -0
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/design.md +1 -1
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json +71 -81
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md +35 -1
- package/docs/examples/pdca-loop/roadmap.json +1 -1
- package/docs/examples/scripts/check-example-bindings.sh +24 -2
- package/docs/get-shit-done-strategy-audit.md +4 -4
- package/docs/guides/artifact-contract.md +44 -0
- package/docs/guides/getting-started.md +1 -1
- package/docs/guides/getting-started.zh-CN.md +1 -1
- package/docs/guides/project-postmortem.md +78 -0
- package/lib/skill-runtime/__tests__/planner.tdd.test.js +2 -2
- package/lib/skill-runtime/__tests__/schemas.test.js +33 -2
- package/lib/skill-runtime/planner.js +1 -2
- package/lib/skill-runtime/query.js +1 -1
- package/lib/skill-runtime/schemas.js +5 -3
- package/package.json +6 -1
|
@@ -6,63 +6,30 @@
|
|
|
6
6
|
"requirementId": "REQ-002",
|
|
7
7
|
"requirementVersion": "REQ-002.v2",
|
|
8
8
|
"planningMeta": {
|
|
9
|
-
"reqPlanSkillVersion": "3.8.
|
|
9
|
+
"reqPlanSkillVersion": "3.8.5",
|
|
10
10
|
"designVersion": "design.v2",
|
|
11
11
|
"approvedAt": null,
|
|
12
|
-
"approvedBy": null,
|
|
13
12
|
"basedOnOption": "Option B",
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
"
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
"want": "see duplicate, invalid, and over-limit row states",
|
|
35
|
-
"benefit": "understand what happened without support help",
|
|
36
|
-
"acceptance": [
|
|
37
|
-
"Every skipped or rejected row has a reason"
|
|
38
|
-
]
|
|
39
|
-
}
|
|
40
|
-
],
|
|
41
|
-
"edgeOrRecoveryStories": [
|
|
42
|
-
{
|
|
43
|
-
"id": "US-EDGE-001",
|
|
44
|
-
"actor": "workspace admin",
|
|
45
|
-
"boundary": "CSV contains duplicates, invalid emails, or over-limit rows",
|
|
46
|
-
"desiredOutcome": "safe rows can proceed while bad rows are explained",
|
|
47
|
-
"acceptance": [
|
|
48
|
-
"Rule matrix covers duplicate, invalid, and seat-limit cases"
|
|
49
|
-
]
|
|
50
|
-
}
|
|
51
|
-
],
|
|
52
|
-
"implementationDecisions": [
|
|
53
|
-
"Freeze one row-outcome matrix before execution resumes"
|
|
54
|
-
],
|
|
55
|
-
"testingDecisions": [
|
|
56
|
-
"Test row semantics through bulk-import rules and the admin upload flow"
|
|
57
|
-
],
|
|
58
|
-
"outOfScope": [
|
|
59
|
-
"enterprise SCIM provisioning",
|
|
60
|
-
"background job redesign",
|
|
61
|
-
"rollback wizard for partial success"
|
|
62
|
-
],
|
|
63
|
-
"furtherNotes": [
|
|
64
|
-
"Design remains blocked until duplicate and seat-limit semantics are approved"
|
|
65
|
-
]
|
|
13
|
+
"aiLeverageDecisionLens": {
|
|
14
|
+
"realUserOrOperator": "workspace admin onboarding larger teams",
|
|
15
|
+
"statusQuoWorkaround": "paste invite emails one by one or track them in spreadsheets",
|
|
16
|
+
"humanTeamEffortForFullScope": "multiple weeks across product, engineering, billing, and support review",
|
|
17
|
+
"ccAgentEffortForFullScope": "several hours once row semantics are approved, but unbounded before that",
|
|
18
|
+
"aiCompressionRatio": "high after semantics freeze, low while the product contract is ambiguous",
|
|
19
|
+
"completeLakeBoundary": "row classification, admin upload flow, billing-seat checks, and audit mapping after rule approval",
|
|
20
|
+
"oceanBoundary": "SCIM, background retries, rollback wizard, and unspecified billing semantics",
|
|
21
|
+
"scopeRecommendation": "sharp-wedge",
|
|
22
|
+
"costModel": {
|
|
23
|
+
"agentTime": "medium after rule approval",
|
|
24
|
+
"humanReviewTime": "high until semantics are approved",
|
|
25
|
+
"verificationCost": "bulk rules, admin flow, billing, and audit tests",
|
|
26
|
+
"maintenanceCost": "medium after semantics freeze",
|
|
27
|
+
"failureCost": "high if billing or audit outcomes drift",
|
|
28
|
+
"reversibility": "limited once execution semantics ship"
|
|
29
|
+
},
|
|
30
|
+
"verdict": "sharp-wedge",
|
|
31
|
+
"missingEvidenceOrPivotReason": "none at plan approval; cc-check later reopened duplicate, invalid-row, partial-success, and seat-limit semantics before retry or cc-act",
|
|
32
|
+
"impactOnApprovedDirection": "allow bounded import-path execution, then block final proof if review finds row semantics drift"
|
|
66
33
|
},
|
|
67
34
|
"externalBestPractice": {
|
|
68
35
|
"needed": true,
|
|
@@ -172,31 +139,9 @@
|
|
|
172
139
|
"impact": "cc-do retry and cc-act must stay blocked until this is answered",
|
|
173
140
|
"status": "asked"
|
|
174
141
|
}
|
|
175
|
-
]
|
|
176
|
-
"aiLeverageDecisionLens": {
|
|
177
|
-
"realUserOrOperator": "workspace admin onboarding larger teams",
|
|
178
|
-
"statusQuoWorkaround": "paste invite emails one by one or track them in spreadsheets",
|
|
179
|
-
"humanTeamEffortForFullScope": "multiple weeks across product, engineering, billing, and support review",
|
|
180
|
-
"ccAgentEffortForFullScope": "several hours once row semantics are approved, but unbounded before that",
|
|
181
|
-
"aiCompressionRatio": "high after semantics freeze, low while the product contract is ambiguous",
|
|
182
|
-
"completeLakeBoundary": "row classification, admin upload flow, billing-seat checks, and audit mapping after rule approval",
|
|
183
|
-
"oceanBoundary": "SCIM, background retries, rollback wizard, and unspecified billing semantics",
|
|
184
|
-
"scopeRecommendation": "sharp-wedge",
|
|
185
|
-
"costModel": {
|
|
186
|
-
"agentTime": "medium after rule approval",
|
|
187
|
-
"humanReviewTime": "high until semantics are approved",
|
|
188
|
-
"verificationCost": "bulk rules, admin flow, billing, and audit tests",
|
|
189
|
-
"maintenanceCost": "medium after semantics freeze",
|
|
190
|
-
"failureCost": "high if billing or audit outcomes drift",
|
|
191
|
-
"reversibility": "limited once execution semantics ship"
|
|
192
|
-
},
|
|
193
|
-
"verdict": "sharp-wedge",
|
|
194
|
-
"missingEvidenceOrPivotReason": "none at plan approval; cc-check later reopened duplicate, invalid-row, partial-success, and seat-limit semantics before retry or cc-act",
|
|
195
|
-
"impactOnApprovedDirection": "allow bounded import-path execution, then block final proof if review finds row semantics drift"
|
|
196
|
-
}
|
|
142
|
+
]
|
|
197
143
|
},
|
|
198
144
|
"currentTaskId": null,
|
|
199
|
-
"activePhase": null,
|
|
200
145
|
"tasks": [
|
|
201
146
|
{
|
|
202
147
|
"id": "T001",
|
|
@@ -245,7 +190,22 @@
|
|
|
245
190
|
},
|
|
246
191
|
"status": "passed",
|
|
247
192
|
"attempts": 1,
|
|
248
|
-
"maxRetries": 1
|
|
193
|
+
"maxRetries": 1,
|
|
194
|
+
"tddPhase": "red",
|
|
195
|
+
"verticalSlice": "Slice 1",
|
|
196
|
+
"testSeam": {
|
|
197
|
+
"entry": "bulk invite rules and admin upload UI behavior",
|
|
198
|
+
"behaviorAsserted": "dangerous row outcomes are reproduced as explicit failing tests",
|
|
199
|
+
"specStyleTestName": "dangerous row outcomes are reproduced as explicit failing tests",
|
|
200
|
+
"oneLogicalBehavior": true,
|
|
201
|
+
"publicVerificationPath": "Run the bulk invite rule and admin panel tests through their public flows",
|
|
202
|
+
"implementationDetailRisk": "low"
|
|
203
|
+
},
|
|
204
|
+
"feedbackLoop": {
|
|
205
|
+
"type": "automated-test",
|
|
206
|
+
"determinism": "deterministic",
|
|
207
|
+
"expectedFailure": "Fails before the behavior exists"
|
|
208
|
+
}
|
|
249
209
|
},
|
|
250
210
|
{
|
|
251
211
|
"id": "T002",
|
|
@@ -297,7 +257,22 @@
|
|
|
297
257
|
},
|
|
298
258
|
"status": "passed",
|
|
299
259
|
"attempts": 1,
|
|
300
|
-
"maxRetries": 1
|
|
260
|
+
"maxRetries": 1,
|
|
261
|
+
"tddPhase": "green",
|
|
262
|
+
"verticalSlice": "Slice 2",
|
|
263
|
+
"testSeam": {
|
|
264
|
+
"entry": "bulk invite rules and admin upload UI behavior",
|
|
265
|
+
"behaviorAsserted": "bulk invite rows receive deterministic initial states",
|
|
266
|
+
"specStyleTestName": "bulk invite rows receive deterministic initial states",
|
|
267
|
+
"oneLogicalBehavior": true,
|
|
268
|
+
"publicVerificationPath": "Run the bulk invite rule and admin panel tests through their public flows",
|
|
269
|
+
"implementationDetailRisk": "low"
|
|
270
|
+
},
|
|
271
|
+
"feedbackLoop": {
|
|
272
|
+
"type": "automated-test",
|
|
273
|
+
"determinism": "deterministic",
|
|
274
|
+
"expectedFailure": ""
|
|
275
|
+
}
|
|
301
276
|
},
|
|
302
277
|
{
|
|
303
278
|
"id": "T003",
|
|
@@ -348,7 +323,22 @@
|
|
|
348
323
|
},
|
|
349
324
|
"status": "passed",
|
|
350
325
|
"attempts": 1,
|
|
351
|
-
"maxRetries": 1
|
|
326
|
+
"maxRetries": 1,
|
|
327
|
+
"tddPhase": "red",
|
|
328
|
+
"verticalSlice": "Slice 3",
|
|
329
|
+
"testSeam": {
|
|
330
|
+
"entry": "bulk invite rules and admin upload UI behavior",
|
|
331
|
+
"behaviorAsserted": "mixed row outcomes are visible as UI failures before implementation",
|
|
332
|
+
"specStyleTestName": "mixed row outcomes are visible as UI failures before implementation",
|
|
333
|
+
"oneLogicalBehavior": true,
|
|
334
|
+
"publicVerificationPath": "Run the bulk invite rule and admin panel tests through their public flows",
|
|
335
|
+
"implementationDetailRisk": "low"
|
|
336
|
+
},
|
|
337
|
+
"feedbackLoop": {
|
|
338
|
+
"type": "automated-test",
|
|
339
|
+
"determinism": "deterministic",
|
|
340
|
+
"expectedFailure": "Fails before the behavior exists"
|
|
341
|
+
}
|
|
352
342
|
},
|
|
353
343
|
{
|
|
354
344
|
"id": "T004",
|
|
@@ -400,7 +390,22 @@
|
|
|
400
390
|
},
|
|
401
391
|
"status": "passed",
|
|
402
392
|
"attempts": 1,
|
|
403
|
-
"maxRetries": 1
|
|
393
|
+
"maxRetries": 1,
|
|
394
|
+
"tddPhase": "green",
|
|
395
|
+
"verticalSlice": "Slice 3",
|
|
396
|
+
"testSeam": {
|
|
397
|
+
"entry": "bulk invite rules and admin upload UI behavior",
|
|
398
|
+
"behaviorAsserted": "admins can see accepted, skipped, and rejected rows in the panel",
|
|
399
|
+
"specStyleTestName": "admins can see accepted, skipped, and rejected rows in the panel",
|
|
400
|
+
"oneLogicalBehavior": true,
|
|
401
|
+
"publicVerificationPath": "Run the bulk invite rule and admin panel tests through their public flows",
|
|
402
|
+
"implementationDetailRisk": "low"
|
|
403
|
+
},
|
|
404
|
+
"feedbackLoop": {
|
|
405
|
+
"type": "automated-test",
|
|
406
|
+
"determinism": "deterministic",
|
|
407
|
+
"expectedFailure": ""
|
|
408
|
+
}
|
|
404
409
|
},
|
|
405
410
|
{
|
|
406
411
|
"id": "T005",
|
|
@@ -456,7 +461,22 @@
|
|
|
456
461
|
},
|
|
457
462
|
"status": "passed",
|
|
458
463
|
"attempts": 1,
|
|
459
|
-
"maxRetries": 1
|
|
464
|
+
"maxRetries": 1,
|
|
465
|
+
"tddPhase": "evidence",
|
|
466
|
+
"verticalSlice": "Slice 3",
|
|
467
|
+
"testSeam": {
|
|
468
|
+
"entry": "bulk invite rules and admin upload UI behavior",
|
|
469
|
+
"behaviorAsserted": "fresh verification evidence exists for cc-check",
|
|
470
|
+
"specStyleTestName": "fresh verification evidence exists for cc-check",
|
|
471
|
+
"oneLogicalBehavior": true,
|
|
472
|
+
"publicVerificationPath": "Run the bulk invite rule and admin panel tests through their public flows",
|
|
473
|
+
"implementationDetailRisk": "low"
|
|
474
|
+
},
|
|
475
|
+
"feedbackLoop": {
|
|
476
|
+
"type": "automated-test",
|
|
477
|
+
"determinism": "deterministic",
|
|
478
|
+
"expectedFailure": ""
|
|
479
|
+
}
|
|
460
480
|
}
|
|
461
481
|
],
|
|
462
482
|
"metadata": {
|
package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
- Requirement version: `REQ-002.v2`
|
|
6
6
|
- Design version: `design.v2`
|
|
7
|
-
- CC-Plan skill version: `3.8.
|
|
7
|
+
- CC-Plan skill version: `3.8.5`
|
|
8
8
|
- Source roadmap item: `RM-010`
|
|
9
9
|
- Source roadmap version: `roadmap.v2`
|
|
10
10
|
|
|
@@ -37,50 +37,94 @@
|
|
|
37
37
|
- audit row-result contract
|
|
38
38
|
- Parallel boundaries: no parallel execution until row-outcome semantics are frozen
|
|
39
39
|
|
|
40
|
+
## Execution Protocol
|
|
41
|
+
|
|
42
|
+
ClaudeCode / Codex 执行本计划时,必须把本文件当成任务模板合同,而不是普通 TODO 列表。
|
|
43
|
+
|
|
44
|
+
- Template source: `assets/TASKS_TEMPLATE.md`
|
|
45
|
+
- Task selection: read `planning/task-manifest.json.currentTaskId`; if empty, run the ready-task selector before choosing work.
|
|
46
|
+
- Task block rule: read the full task block before coding; title-only execution is invalid.
|
|
47
|
+
- Completion rule: after verification and review gates pass, run the completion script; do not manually edit checkbox, status, or `currentTaskId`.
|
|
48
|
+
- Completion failure: if the script fails, fix the missing checkpoint / review / dependency evidence and rerun it. Do not bypass it by editing JSON or Markdown.
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
SCRIPT_ROOT=".claude/skills/cc-do/scripts"
|
|
52
|
+
if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then
|
|
53
|
+
SCRIPT_ROOT=".codex/skills/cc-do/scripts"
|
|
54
|
+
fi
|
|
55
|
+
bash "$SCRIPT_ROOT/select-ready-tasks.sh" --manifest docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json
|
|
56
|
+
bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json --tasks docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md --task <task-id>
|
|
57
|
+
```
|
|
58
|
+
|
|
40
59
|
## Phase 1: Rule Matrix
|
|
41
60
|
|
|
42
61
|
- [x] T001 [TEST] Add failing tests for duplicate and over-limit row outcomes (dependsOn:none) `src/invite/bulk-import.test.ts`
|
|
43
62
|
Goal: 先把最危险的 bulk invite 行为变成红灯。
|
|
63
|
+
TDD phase: red
|
|
44
64
|
Files: `src/invite/bulk-import.test.ts`
|
|
45
65
|
Read first: `design.md`, `src/invite/bulk-import.ts`
|
|
46
66
|
Verification: `npm test -- src/invite/bulk-import.test.ts`
|
|
47
67
|
Evidence: failing output
|
|
68
|
+
Completion: after verification evidence and required checkpoint/review records exist, run `SCRIPT_ROOT=".claude/skills/cc-do/scripts"; if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then SCRIPT_ROOT=".codex/skills/cc-do/scripts"; fi; bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json --tasks docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md --task T001`; do not hand-edit status.
|
|
69
|
+
Test seam: bulk invite rules and admin upload UI behavior
|
|
70
|
+
Public verification path: Run the bulk invite rule and admin panel tests through their public flows
|
|
71
|
+
Allowed mocks: file upload boundary / billing / seat limit boundary
|
|
48
72
|
Ready when: 当前规则文件已经可定位
|
|
49
73
|
|
|
50
74
|
- [x] T002 [IMPL] Implement the initial bulk invite row classification (dependsOn:T001) `src/invite/bulk-import.ts`
|
|
51
75
|
Goal: 给 duplicate / over-limit 行为一个最小实现。
|
|
76
|
+
TDD phase: green
|
|
52
77
|
Files: `src/invite/bulk-import.ts`
|
|
53
78
|
Read first: `design.md`, `src/invite/bulk-import.test.ts`
|
|
54
79
|
Verification: `npm test -- src/invite/bulk-import.test.ts`
|
|
55
80
|
Evidence: passing output + checkpoint
|
|
81
|
+
Completion: after verification evidence and required checkpoint/review records exist, run `SCRIPT_ROOT=".claude/skills/cc-do/scripts"; if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then SCRIPT_ROOT=".codex/skills/cc-do/scripts"; fi; bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json --tasks docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md --task T002`; do not hand-edit status.
|
|
82
|
+
Test seam: bulk invite rules and admin upload UI behavior
|
|
83
|
+
Public verification path: Run the bulk invite rule and admin panel tests through their public flows
|
|
84
|
+
Allowed mocks: file upload boundary / billing / seat limit boundary
|
|
56
85
|
Ready when: T001 已见红
|
|
57
86
|
|
|
58
87
|
## Phase 2: Surface Integration
|
|
59
88
|
|
|
60
89
|
- [x] T003 [TEST] Add failing admin panel tests for mixed CSV results (dependsOn:T002) `src/admin/BulkInvitePanel.test.tsx`
|
|
61
90
|
Goal: 在 UI 层看到 mixed row outcomes 的真实表现。
|
|
91
|
+
TDD phase: red
|
|
62
92
|
Files: `src/admin/BulkInvitePanel.test.tsx`
|
|
63
93
|
Read first: `design.md`, `src/admin/BulkInvitePanel.tsx`
|
|
64
94
|
Verification: `npm test -- src/admin/BulkInvitePanel.test.tsx`
|
|
65
95
|
Evidence: failing output
|
|
96
|
+
Completion: after verification evidence and required checkpoint/review records exist, run `SCRIPT_ROOT=".claude/skills/cc-do/scripts"; if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then SCRIPT_ROOT=".codex/skills/cc-do/scripts"; fi; bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json --tasks docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md --task T003`; do not hand-edit status.
|
|
97
|
+
Test seam: bulk invite rules and admin upload UI behavior
|
|
98
|
+
Public verification path: Run the bulk invite rule and admin panel tests through their public flows
|
|
99
|
+
Allowed mocks: file upload boundary / billing / seat limit boundary
|
|
66
100
|
Ready when: T002 已完成
|
|
67
101
|
|
|
68
102
|
- [x] T004 [IMPL] Render bulk invite results in the admin panel (dependsOn:T003) `src/admin/BulkInvitePanel.tsx`
|
|
69
103
|
Goal: 把 row outcomes 接进管理界面。
|
|
104
|
+
TDD phase: green
|
|
70
105
|
Files: `src/admin/BulkInvitePanel.tsx`
|
|
71
106
|
Read first: `design.md`, `src/admin/BulkInvitePanel.test.tsx`
|
|
72
107
|
Verification: `npm test -- src/admin/BulkInvitePanel.test.tsx`
|
|
73
108
|
Evidence: passing output + review notes
|
|
109
|
+
Completion: after verification evidence and required checkpoint/review records exist, run `SCRIPT_ROOT=".claude/skills/cc-do/scripts"; if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then SCRIPT_ROOT=".codex/skills/cc-do/scripts"; fi; bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json --tasks docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md --task T004`; do not hand-edit status.
|
|
110
|
+
Test seam: bulk invite rules and admin upload UI behavior
|
|
111
|
+
Public verification path: Run the bulk invite rule and admin panel tests through their public flows
|
|
112
|
+
Allowed mocks: file upload boundary / billing / seat limit boundary
|
|
74
113
|
Ready when: T003 已见红
|
|
75
114
|
|
|
76
115
|
## Phase 3: Verification
|
|
77
116
|
|
|
78
117
|
- [x] T005 Run mixed-surface checks and gather review evidence (dependsOn:T004) `bulk invite quality gates`
|
|
79
118
|
Goal: 为 `cc-check` 准备 bulk invite 的新鲜证据。
|
|
119
|
+
TDD phase: evidence
|
|
80
120
|
Files: `src/admin/BulkInvitePanel.tsx`, `src/invite/bulk-import.ts`
|
|
81
121
|
Read first: `tasks.md`, `task-manifest.json`
|
|
82
122
|
Verification:
|
|
83
123
|
- `npm test -- src/invite/bulk-import.test.ts`
|
|
84
124
|
- `npm test -- src/admin/BulkInvitePanel.test.tsx`
|
|
85
125
|
Evidence: passing output + review notes
|
|
126
|
+
Completion: after verification evidence and required checkpoint/review records exist, run `SCRIPT_ROOT=".claude/skills/cc-do/scripts"; if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then SCRIPT_ROOT=".codex/skills/cc-do/scripts"; fi; bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json --tasks docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md --task T005`; do not hand-edit status.
|
|
127
|
+
Test seam: bulk invite rules and admin upload UI behavior
|
|
128
|
+
Public verification path: Run the bulk invite rule and admin panel tests through their public flows
|
|
129
|
+
Allowed mocks: file upload boundary / billing / seat limit boundary
|
|
86
130
|
Ready when: T004 已完成
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
- Example version: `1.0.0`
|
|
6
6
|
- Last reviewed: `2026-04-17`
|
|
7
|
-
- Bound skills: `cc-roadmap@5.
|
|
7
|
+
- Bound skills: `cc-roadmap@5.3.0`, `cc-plan@3.8.5`, `cc-do@1.6.5`, `cc-check@1.10.1`, `cc-act@1.8.7`
|
|
8
8
|
|
|
9
9
|
This example shows verified work that is **ready to move forward**, but `cc-act` still chooses `local-handoff`.
|
|
10
10
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
- Requirement version: `REQ-003.v1`
|
|
6
6
|
- Design version: `design.v1`
|
|
7
|
-
- CC-Plan skill version: `3.8.
|
|
7
|
+
- CC-Plan skill version: `3.8.5`
|
|
8
8
|
- Requirement ID: `REQ-003`
|
|
9
9
|
- Design mode: `tiny-design`
|
|
10
10
|
- Why this stays `tiny-design`: the patch adds one export action inside the existing admin audit UI without changing data contracts
|
package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json
CHANGED
|
@@ -6,44 +6,30 @@
|
|
|
6
6
|
"requirementId": "REQ-003",
|
|
7
7
|
"requirementVersion": "REQ-003.v1",
|
|
8
8
|
"planningMeta": {
|
|
9
|
-
"reqPlanSkillVersion": "3.8.
|
|
9
|
+
"reqPlanSkillVersion": "3.8.5",
|
|
10
10
|
"designVersion": "design.v1",
|
|
11
11
|
"approvedAt": "2026-04-16T13:10:00.000Z",
|
|
12
|
-
"approvedBy": "user",
|
|
13
12
|
"basedOnOption": "Tiny design card",
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
"
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
|
|
34
|
-
"Keep CSV as the only output format"
|
|
35
|
-
],
|
|
36
|
-
"testingDecisions": [
|
|
37
|
-
"Test through the admin panel action and visible row data"
|
|
38
|
-
],
|
|
39
|
-
"outOfScope": [
|
|
40
|
-
"JSON export",
|
|
41
|
-
"scheduled reporting",
|
|
42
|
-
"shared reporting backend"
|
|
43
|
-
],
|
|
44
|
-
"furtherNotes": [
|
|
45
|
-
"Richer machine-readable exports should become a separate requirement"
|
|
46
|
-
]
|
|
13
|
+
"aiLeverageDecisionLens": {
|
|
14
|
+
"realUserOrOperator": "workspace admin preparing weekly review notes",
|
|
15
|
+
"statusQuoWorkaround": "manual copy of visible audit rows",
|
|
16
|
+
"humanTeamEffortForFullScope": "about one day for an engineer to implement, test, and document the local export",
|
|
17
|
+
"ccAgentEffortForFullScope": "about 30 minutes for visible-row CSV export plus targeted test and lint",
|
|
18
|
+
"aiCompressionRatio": "roughly 10x for the bounded local export path",
|
|
19
|
+
"completeLakeBoundary": "visible-row CSV export, panel action, current data source, targeted panel test, and lint",
|
|
20
|
+
"oceanBoundary": "JSON export, scheduled reporting, shared reporting backend, and cross-panel reporting platform",
|
|
21
|
+
"scopeRecommendation": "boil-lake",
|
|
22
|
+
"costModel": {
|
|
23
|
+
"agentTime": "low",
|
|
24
|
+
"humanReviewTime": "low",
|
|
25
|
+
"verificationCost": "targeted panel test plus lint",
|
|
26
|
+
"maintenanceCost": "low while scoped to visible rows",
|
|
27
|
+
"failureCost": "admins keep copying rows manually",
|
|
28
|
+
"reversibility": "reversible UI action"
|
|
29
|
+
},
|
|
30
|
+
"verdict": "boil-lake",
|
|
31
|
+
"missingEvidenceOrPivotReason": "",
|
|
32
|
+
"impactOnApprovedDirection": "complete the local visible-row export lake while deferring reporting platform work"
|
|
47
33
|
},
|
|
48
34
|
"externalBestPractice": {
|
|
49
35
|
"needed": false,
|
|
@@ -89,31 +75,9 @@
|
|
|
89
75
|
"impact": "cc-do exports only visible rows from the current panel and avoids new reporting contracts",
|
|
90
76
|
"status": "answered"
|
|
91
77
|
}
|
|
92
|
-
]
|
|
93
|
-
"aiLeverageDecisionLens": {
|
|
94
|
-
"realUserOrOperator": "workspace admin preparing weekly review notes",
|
|
95
|
-
"statusQuoWorkaround": "manual copy of visible audit rows",
|
|
96
|
-
"humanTeamEffortForFullScope": "about one day for an engineer to implement, test, and document the local export",
|
|
97
|
-
"ccAgentEffortForFullScope": "about 30 minutes for visible-row CSV export plus targeted test and lint",
|
|
98
|
-
"aiCompressionRatio": "roughly 10x for the bounded local export path",
|
|
99
|
-
"completeLakeBoundary": "visible-row CSV export, panel action, current data source, targeted panel test, and lint",
|
|
100
|
-
"oceanBoundary": "JSON export, scheduled reporting, shared reporting backend, and cross-panel reporting platform",
|
|
101
|
-
"scopeRecommendation": "boil-lake",
|
|
102
|
-
"costModel": {
|
|
103
|
-
"agentTime": "low",
|
|
104
|
-
"humanReviewTime": "low",
|
|
105
|
-
"verificationCost": "targeted panel test plus lint",
|
|
106
|
-
"maintenanceCost": "low while scoped to visible rows",
|
|
107
|
-
"failureCost": "admins keep copying rows manually",
|
|
108
|
-
"reversibility": "reversible UI action"
|
|
109
|
-
},
|
|
110
|
-
"verdict": "boil-lake",
|
|
111
|
-
"missingEvidenceOrPivotReason": "",
|
|
112
|
-
"impactOnApprovedDirection": "complete the local visible-row export lake while deferring reporting platform work"
|
|
113
|
-
}
|
|
78
|
+
]
|
|
114
79
|
},
|
|
115
80
|
"currentTaskId": null,
|
|
116
|
-
"activePhase": null,
|
|
117
81
|
"tasks": [
|
|
118
82
|
{
|
|
119
83
|
"id": "T001",
|
|
@@ -163,7 +127,22 @@
|
|
|
163
127
|
},
|
|
164
128
|
"status": "passed",
|
|
165
129
|
"attempts": 1,
|
|
166
|
-
"maxRetries": 1
|
|
130
|
+
"maxRetries": 1,
|
|
131
|
+
"tddPhase": "red",
|
|
132
|
+
"verticalSlice": "Slice 1",
|
|
133
|
+
"testSeam": {
|
|
134
|
+
"entry": "admin audit panel UI behavior",
|
|
135
|
+
"behaviorAsserted": "the missing download action is reproduced as a failing test",
|
|
136
|
+
"specStyleTestName": "the missing download action is reproduced as a failing test",
|
|
137
|
+
"oneLogicalBehavior": true,
|
|
138
|
+
"publicVerificationPath": "Run the audit summary panel test and observe CSV export through visible rows",
|
|
139
|
+
"implementationDetailRisk": "low"
|
|
140
|
+
},
|
|
141
|
+
"feedbackLoop": {
|
|
142
|
+
"type": "automated-test",
|
|
143
|
+
"determinism": "deterministic",
|
|
144
|
+
"expectedFailure": "Fails before the behavior exists"
|
|
145
|
+
}
|
|
167
146
|
},
|
|
168
147
|
{
|
|
169
148
|
"id": "T002",
|
|
@@ -215,7 +194,22 @@
|
|
|
215
194
|
},
|
|
216
195
|
"status": "passed",
|
|
217
196
|
"attempts": 1,
|
|
218
|
-
"maxRetries": 1
|
|
197
|
+
"maxRetries": 1,
|
|
198
|
+
"tddPhase": "green",
|
|
199
|
+
"verticalSlice": "Slice 2",
|
|
200
|
+
"testSeam": {
|
|
201
|
+
"entry": "admin audit panel UI behavior",
|
|
202
|
+
"behaviorAsserted": "admins can trigger a CSV download from the existing summary panel",
|
|
203
|
+
"specStyleTestName": "admins can trigger a CSV download from the existing summary panel",
|
|
204
|
+
"oneLogicalBehavior": true,
|
|
205
|
+
"publicVerificationPath": "Run the audit summary panel test and observe CSV export through visible rows",
|
|
206
|
+
"implementationDetailRisk": "low"
|
|
207
|
+
},
|
|
208
|
+
"feedbackLoop": {
|
|
209
|
+
"type": "automated-test",
|
|
210
|
+
"determinism": "deterministic",
|
|
211
|
+
"expectedFailure": ""
|
|
212
|
+
}
|
|
219
213
|
},
|
|
220
214
|
{
|
|
221
215
|
"id": "T003",
|
|
@@ -271,7 +265,22 @@
|
|
|
271
265
|
},
|
|
272
266
|
"status": "passed",
|
|
273
267
|
"attempts": 1,
|
|
274
|
-
"maxRetries": 1
|
|
268
|
+
"maxRetries": 1,
|
|
269
|
+
"tddPhase": "evidence",
|
|
270
|
+
"verticalSlice": "Slice 3",
|
|
271
|
+
"testSeam": {
|
|
272
|
+
"entry": "admin audit panel UI behavior",
|
|
273
|
+
"behaviorAsserted": "fresh verification evidence exists for local handoff",
|
|
274
|
+
"specStyleTestName": "fresh verification evidence exists for local handoff",
|
|
275
|
+
"oneLogicalBehavior": true,
|
|
276
|
+
"publicVerificationPath": "Run the audit summary panel test and observe CSV export through visible rows",
|
|
277
|
+
"implementationDetailRisk": "low"
|
|
278
|
+
},
|
|
279
|
+
"feedbackLoop": {
|
|
280
|
+
"type": "automated-test",
|
|
281
|
+
"determinism": "deterministic",
|
|
282
|
+
"expectedFailure": ""
|
|
283
|
+
}
|
|
275
284
|
}
|
|
276
285
|
],
|
|
277
286
|
"metadata": {
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
- Requirement version: `REQ-003.v1`
|
|
6
6
|
- Design version: `design.v1`
|
|
7
|
-
- CC-Plan skill version: `3.8.
|
|
7
|
+
- CC-Plan skill version: `3.8.5`
|
|
8
8
|
- Source roadmap item: `RM-020`
|
|
9
9
|
- Source roadmap version: `roadmap.v3`
|
|
10
10
|
|
|
@@ -36,32 +36,66 @@
|
|
|
36
36
|
- panel placement
|
|
37
37
|
- Parallel boundaries: none
|
|
38
38
|
|
|
39
|
+
## Execution Protocol
|
|
40
|
+
|
|
41
|
+
ClaudeCode / Codex 执行本计划时,必须把本文件当成任务模板合同,而不是普通 TODO 列表。
|
|
42
|
+
|
|
43
|
+
- Template source: `assets/TASKS_TEMPLATE.md`
|
|
44
|
+
- Task selection: read `planning/task-manifest.json.currentTaskId`; if empty, run the ready-task selector before choosing work.
|
|
45
|
+
- Task block rule: read the full task block before coding; title-only execution is invalid.
|
|
46
|
+
- Completion rule: after verification and review gates pass, run the completion script; do not manually edit checkbox, status, or `currentTaskId`.
|
|
47
|
+
- Completion failure: if the script fails, fix the missing checkpoint / review / dependency evidence and rerun it. Do not bypass it by editing JSON or Markdown.
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
SCRIPT_ROOT=".claude/skills/cc-do/scripts"
|
|
51
|
+
if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then
|
|
52
|
+
SCRIPT_ROOT=".codex/skills/cc-do/scripts"
|
|
53
|
+
fi
|
|
54
|
+
bash "$SCRIPT_ROOT/select-ready-tasks.sh" --manifest docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json
|
|
55
|
+
bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json --tasks docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md --task <task-id>
|
|
56
|
+
```
|
|
57
|
+
|
|
39
58
|
## Phase 1: Foundation
|
|
40
59
|
|
|
41
60
|
- [x] T001 [TEST] Add a failing test for the missing download action (dependsOn:none) `src/admin/AuditSummaryPanel.test.tsx`
|
|
42
61
|
Goal: 证明现在还没有可下载的 summary export。
|
|
62
|
+
TDD phase: red
|
|
43
63
|
Files: `src/admin/AuditSummaryPanel.test.tsx`
|
|
44
64
|
Read first: `design.md`, `src/admin/AuditSummaryPanel.tsx`
|
|
45
65
|
Verification: `npm test -- src/admin/AuditSummaryPanel.test.tsx`
|
|
46
66
|
Evidence: failing output
|
|
67
|
+
Completion: after verification evidence and required checkpoint/review records exist, run `SCRIPT_ROOT=".claude/skills/cc-do/scripts"; if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then SCRIPT_ROOT=".codex/skills/cc-do/scripts"; fi; bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json --tasks docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md --task T001`; do not hand-edit status.
|
|
68
|
+
Test seam: admin audit panel UI behavior
|
|
69
|
+
Public verification path: Run the audit summary panel test and observe CSV export through visible rows
|
|
70
|
+
Allowed mocks: download / blob boundary
|
|
47
71
|
Ready when: 当前 audit summary test 已可运行
|
|
48
72
|
|
|
49
73
|
- [x] T002 [IMPL] Add the download summary action (dependsOn:T001) `src/admin/AuditSummaryPanel.tsx`
|
|
50
74
|
Goal: 用最小实现让 summary export 真的可用。
|
|
75
|
+
TDD phase: green
|
|
51
76
|
Files: `src/admin/AuditSummaryPanel.tsx`
|
|
52
77
|
Read first: `design.md`, `src/admin/AuditSummaryPanel.test.tsx`
|
|
53
78
|
Verification: `npm test -- src/admin/AuditSummaryPanel.test.tsx`
|
|
54
79
|
Evidence: passing output + checkpoint
|
|
80
|
+
Completion: after verification evidence and required checkpoint/review records exist, run `SCRIPT_ROOT=".claude/skills/cc-do/scripts"; if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then SCRIPT_ROOT=".codex/skills/cc-do/scripts"; fi; bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json --tasks docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md --task T002`; do not hand-edit status.
|
|
81
|
+
Test seam: admin audit panel UI behavior
|
|
82
|
+
Public verification path: Run the audit summary panel test and observe CSV export through visible rows
|
|
83
|
+
Allowed mocks: download / blob boundary
|
|
55
84
|
Ready when: T001 已见红
|
|
56
85
|
|
|
57
86
|
## Phase 2: Verify
|
|
58
87
|
|
|
59
88
|
- [x] T003 Run targeted checks and collect handoff evidence (dependsOn:T002) `audit summary quality gates`
|
|
60
89
|
Goal: 为 `cc-check` 和 `cc-act` 留下这次导出改动的真实证据。
|
|
90
|
+
TDD phase: evidence
|
|
61
91
|
Files: `src/admin/AuditSummaryPanel.tsx`, `src/admin/AuditSummaryPanel.test.tsx`
|
|
62
92
|
Read first: `tasks.md`, `task-manifest.json`
|
|
63
93
|
Verification:
|
|
64
94
|
- `npm test -- src/admin/AuditSummaryPanel.test.tsx`
|
|
65
95
|
- `npm run lint -- src/admin/AuditSummaryPanel.tsx`
|
|
66
96
|
Evidence: passing output + clean lint output
|
|
97
|
+
Completion: after verification evidence and required checkpoint/review records exist, run `SCRIPT_ROOT=".claude/skills/cc-do/scripts"; if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then SCRIPT_ROOT=".codex/skills/cc-do/scripts"; fi; bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json --tasks docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md --task T003`; do not hand-edit status.
|
|
98
|
+
Test seam: admin audit panel UI behavior
|
|
99
|
+
Public verification path: Run the audit summary panel test and observe CSV export through visible rows
|
|
100
|
+
Allowed mocks: download / blob boundary
|
|
67
101
|
Ready when: T002 已完成
|