cc-devflow 4.5.5 → 4.5.7

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 (73) hide show
  1. package/.claude/skills/cc-act/PLAYBOOK.md +2 -2
  2. package/.claude/skills/cc-act/SKILL.md +2 -2
  3. package/.claude/skills/cc-act/scripts/{archive-requirement.sh → archive-change.sh} +7 -7
  4. package/.claude/skills/cc-investigate/CHANGELOG.md +5 -0
  5. package/.claude/skills/cc-investigate/SKILL.md +2 -2
  6. package/.claude/skills/cc-plan/CHANGELOG.md +34 -0
  7. package/.claude/skills/cc-plan/PLAYBOOK.md +22 -17
  8. package/.claude/skills/cc-plan/SKILL.md +135 -12
  9. package/.claude/skills/cc-plan/assets/DESIGN_TEMPLATE.md +51 -0
  10. package/.claude/skills/cc-plan/assets/TASKS_TEMPLATE.md +2 -0
  11. package/.claude/skills/cc-plan/assets/TASK_MANIFEST_TEMPLATE.json +66 -3
  12. package/.claude/skills/cc-plan/assets/TINY_DESIGN_TEMPLATE.md +37 -0
  13. package/.claude/skills/cc-plan/references/planning-contract.md +33 -10
  14. package/.claude/skills/cc-plan/scripts/next-change-key.sh +78 -0
  15. package/.claude/skills/cc-review/CHANGELOG.md +7 -0
  16. package/.claude/skills/cc-review/PLAYBOOK.md +54 -0
  17. package/.claude/skills/cc-review/SKILL.md +173 -0
  18. package/.claude/skills/cc-review/references/e2e-and-plugin-verification.md +81 -0
  19. package/.claude/skills/cc-review/references/implementation-review-branch.md +115 -0
  20. package/.claude/skills/cc-review/references/plan-review-branch.md +116 -0
  21. package/.claude/skills/cc-review/references/review-methods.md +126 -0
  22. package/.claude/skills/cc-roadmap/CHANGELOG.md +6 -0
  23. package/.claude/skills/cc-roadmap/SKILL.md +102 -8
  24. package/.claude/skills/cc-roadmap/assets/BACKLOG_TEMPLATE.md +3 -0
  25. package/.claude/skills/cc-roadmap/assets/ROADMAP_TEMPLATE.md +23 -0
  26. package/.claude/skills/cc-roadmap/assets/TRACKING_TEMPLATE.json +20 -1
  27. package/.claude/skills/cc-roadmap/references/roadmap-dialogue.md +28 -13
  28. package/.claude/skills/cc-roadmap/scripts/lib/roadmap-tracking/markdown.js +18 -0
  29. package/.claude/skills/cc-roadmap/scripts/lib/roadmap-tracking/schema.js +8 -0
  30. package/CHANGELOG.md +21 -0
  31. package/README.md +10 -5
  32. package/README.zh-CN.md +10 -5
  33. package/bin/cc-devflow-cli.js +135 -2
  34. package/config/distributable-skills.json +2 -0
  35. package/docs/CLAUDE.md +1 -1
  36. package/docs/examples/example-bindings.json +5 -4
  37. package/docs/examples/full-design-blocked/BACKLOG.md +1 -1
  38. package/docs/examples/full-design-blocked/README.md +1 -1
  39. package/docs/examples/full-design-blocked/ROADMAP.md +16 -1
  40. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/design.md +42 -1
  41. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json +345 -65
  42. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md +2 -1
  43. package/docs/examples/full-design-blocked/roadmap.json +18 -2
  44. package/docs/examples/local-handoff/BACKLOG.md +1 -1
  45. package/docs/examples/local-handoff/README.md +1 -1
  46. package/docs/examples/local-handoff/ROADMAP.md +16 -1
  47. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/design.md +34 -1
  48. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json +197 -39
  49. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md +2 -1
  50. package/docs/examples/local-handoff/roadmap.json +16 -2
  51. package/docs/examples/pdca-loop/BACKLOG.md +1 -1
  52. package/docs/examples/pdca-loop/README.md +1 -1
  53. package/docs/examples/pdca-loop/ROADMAP.md +16 -1
  54. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/design.md +34 -1
  55. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json +89 -8
  56. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md +2 -1
  57. package/docs/examples/pdca-loop/roadmap.json +16 -2
  58. package/docs/examples/scripts/check-example-bindings.sh +2 -0
  59. package/docs/guides/getting-started.md +13 -10
  60. package/docs/guides/getting-started.zh-CN.md +13 -10
  61. package/lib/skill-runtime/__tests__/archive-change.test.js +124 -0
  62. package/lib/skill-runtime/__tests__/autopilot.test.js +13 -10
  63. package/lib/skill-runtime/__tests__/cli-bootstrap.integration.test.js +1 -0
  64. package/lib/skill-runtime/__tests__/paths.test.js +106 -1
  65. package/lib/skill-runtime/__tests__/query.test.js +49 -0
  66. package/lib/skill-runtime/archive-change.js +64 -0
  67. package/lib/skill-runtime/artifacts.js +2 -2
  68. package/lib/skill-runtime/intent.js +14 -14
  69. package/lib/skill-runtime/operations/autopilot-shared.js +4 -4
  70. package/lib/skill-runtime/paths.js +60 -7
  71. package/lib/skill-runtime/query-registry.js +3 -3
  72. package/lib/skill-runtime/query.js +30 -30
  73. package/package.json +2 -1
@@ -6,7 +6,7 @@
6
6
  "requirementId": "REQ-002",
7
7
  "requirementVersion": "REQ-002.v2",
8
8
  "planningMeta": {
9
- "reqPlanSkillVersion": "3.7.5",
9
+ "reqPlanSkillVersion": "3.8.1",
10
10
  "designVersion": "design.v2",
11
11
  "approvedAt": null,
12
12
  "approvedBy": null,
@@ -14,21 +14,28 @@
14
14
  "requirementBrief": {
15
15
  "problemStatement": "Admins onboarding larger teams need predictable bulk invite behavior for duplicates, invalid rows, and seat limits.",
16
16
  "solutionSummary": "Freeze deterministic CSV row outcomes before executing the bulk invite flow.",
17
- "actors": ["workspace admin", "support operator"],
17
+ "actors": [
18
+ "workspace admin",
19
+ "support operator"
20
+ ],
18
21
  "userStories": [
19
22
  {
20
23
  "id": "US-001",
21
24
  "actor": "workspace admin",
22
25
  "want": "upload a CSV of invite emails",
23
26
  "benefit": "invite many collaborators without one-by-one entry",
24
- "acceptance": ["Mixed valid rows produce visible accepted outcomes"]
27
+ "acceptance": [
28
+ "Mixed valid rows produce visible accepted outcomes"
29
+ ]
25
30
  },
26
31
  {
27
32
  "id": "US-002",
28
33
  "actor": "workspace admin",
29
34
  "want": "see duplicate, invalid, and over-limit row states",
30
35
  "benefit": "understand what happened without support help",
31
- "acceptance": ["Every skipped or rejected row has a reason"]
36
+ "acceptance": [
37
+ "Every skipped or rejected row has a reason"
38
+ ]
32
39
  }
33
40
  ],
34
41
  "edgeOrRecoveryStories": [
@@ -37,13 +44,155 @@
37
44
  "actor": "workspace admin",
38
45
  "boundary": "CSV contains duplicates, invalid emails, or over-limit rows",
39
46
  "desiredOutcome": "safe rows can proceed while bad rows are explained",
40
- "acceptance": ["Rule matrix covers duplicate, invalid, and seat-limit cases"]
47
+ "acceptance": [
48
+ "Rule matrix covers duplicate, invalid, and seat-limit cases"
49
+ ]
41
50
  }
42
51
  ],
43
- "implementationDecisions": ["Freeze one row-outcome matrix before execution resumes"],
44
- "testingDecisions": ["Test row semantics through bulk-import rules and the admin upload flow"],
45
- "outOfScope": ["enterprise SCIM provisioning", "background job redesign", "rollback wizard for partial success"],
46
- "furtherNotes": ["Design remains blocked until duplicate and seat-limit semantics are approved"]
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
+ ]
66
+ },
67
+ "externalBestPractice": {
68
+ "needed": true,
69
+ "decisionStatus": "declined",
70
+ "decisionQuestionId": "D2",
71
+ "privacyGuard": "generalized terms only; no project names, private requirements, customer names, secrets, logs, or proprietary concepts",
72
+ "generalizedSearchTerms": [
73
+ "bulk invite CSV import validation best practices"
74
+ ],
75
+ "sourcesChecked": [],
76
+ "conventionalWisdom": "",
77
+ "currentDiscourse": "",
78
+ "repoFitVerdict": "skipped",
79
+ "designImpacts": [
80
+ "keep the design blocked until row-outcome semantics are approved from internal evidence"
81
+ ],
82
+ "skippedReason": "user kept the example repo-local for the blocked design"
83
+ },
84
+ "decisionQuestions": [
85
+ {
86
+ "questionId": "D1",
87
+ "gate": "approach-approval",
88
+ "knownEvidence": [
89
+ "Best-effort upload would hide duplicate, invalid, and seat-limit semantics",
90
+ "Audit mapping depends on deterministic row outcomes"
91
+ ],
92
+ "recommendation": "Choose Option B and freeze a rule matrix first",
93
+ "options": [
94
+ {
95
+ "id": "A",
96
+ "label": "Front-end-only CSV upload",
97
+ "recommended": false,
98
+ "completeness": "5/10",
99
+ "good": "Fastest prototype and reuses the existing single-invite API",
100
+ "costRisk": "Lets hidden backend edge cases define user-visible semantics"
101
+ },
102
+ {
103
+ "id": "B",
104
+ "label": "Rule matrix first",
105
+ "recommended": true,
106
+ "completeness": "9/10",
107
+ "good": "Makes billing, duplicate, invalid, and audit behavior reviewable",
108
+ "costRisk": "Requires one more planning pass before execution can start"
109
+ }
110
+ ],
111
+ "userChoice": "B",
112
+ "impact": "cc-do stays blocked until row outcomes are modeled",
113
+ "status": "answered"
114
+ },
115
+ {
116
+ "questionId": "D2",
117
+ "gate": "external-best-practice",
118
+ "knownEvidence": [
119
+ "Bulk CSV import semantics could benefit from generalized external practice",
120
+ "The example keeps private details out of any external lookup"
121
+ ],
122
+ "recommendation": "Stay repo-local for this blocked example",
123
+ "options": [
124
+ {
125
+ "id": "A",
126
+ "label": "Search generalized best practices",
127
+ "recommended": false,
128
+ "completeness": "9/10",
129
+ "good": "Could improve row-outcome terminology before task generation",
130
+ "costRisk": "Sends generalized category terms outside the local repo"
131
+ },
132
+ {
133
+ "id": "B",
134
+ "label": "Stay repo-local",
135
+ "recommended": true,
136
+ "completeness": "7/10",
137
+ "good": "Keeps the blocked example private and focused on internal semantics",
138
+ "costRisk": "Does not compare against external CSV-import conventions"
139
+ }
140
+ ],
141
+ "userChoice": "B",
142
+ "impact": "cc-do still must not start implementation until row outcomes are answered from internal evidence",
143
+ "status": "answered"
144
+ },
145
+ {
146
+ "questionId": "D3",
147
+ "gate": "review-blocker",
148
+ "knownEvidence": [
149
+ "Duplicate and seat-limit outcomes are still not explicit enough for final requirement proof",
150
+ "Audit entries must match visible row outcomes"
151
+ ],
152
+ "recommendation": "Answer the row-outcome matrix before retry or cc-act",
153
+ "options": [
154
+ {
155
+ "id": "A",
156
+ "label": "Block execution until matrix is explicit",
157
+ "recommended": true,
158
+ "completeness": "10/10",
159
+ "good": "Prevents cc-do from inventing semantics during implementation",
160
+ "costRisk": "Requires user/product input before coding can continue"
161
+ },
162
+ {
163
+ "id": "B",
164
+ "label": "Let implementation choose defaults",
165
+ "recommended": false,
166
+ "completeness": "4/10",
167
+ "good": "Starts coding sooner with fewer planning minutes",
168
+ "costRisk": "Creates invisible product decisions inside implementation tasks"
169
+ }
170
+ ],
171
+ "userChoice": null,
172
+ "impact": "cc-do retry and cc-act must stay blocked until this is answered",
173
+ "status": "asked"
174
+ }
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"
47
196
  }
48
197
  },
49
198
  "currentTaskId": null,
@@ -56,19 +205,44 @@
56
205
  "phase": 1,
57
206
  "parallel": false,
58
207
  "dependsOn": [],
59
- "touches": ["bulk-invite-rules"],
60
- "files": ["src/invite/bulk-import.test.ts"],
61
- "run": ["npm test -- src/invite/bulk-import.test.ts"],
62
- "checks": ["tests fail before implementation"],
63
- "acceptance": ["dangerous row outcomes are reproduced as explicit failing tests"],
64
- "verification": ["npm test -- src/invite/bulk-import.test.ts"],
65
- "evidence": ["failing test output"],
208
+ "touches": [
209
+ "bulk-invite-rules"
210
+ ],
211
+ "files": [
212
+ "src/invite/bulk-import.test.ts"
213
+ ],
214
+ "run": [
215
+ "npm test -- src/invite/bulk-import.test.ts"
216
+ ],
217
+ "checks": [
218
+ "tests fail before implementation"
219
+ ],
220
+ "acceptance": [
221
+ "dangerous row outcomes are reproduced as explicit failing tests"
222
+ ],
223
+ "verification": [
224
+ "npm test -- src/invite/bulk-import.test.ts"
225
+ ],
226
+ "evidence": [
227
+ "failing test output"
228
+ ],
66
229
  "context": {
67
- "readFiles": ["design.md", "tasks.md", "src/invite/bulk-import.ts"],
68
- "commands": ["npm test -- src/invite/bulk-import.test.ts"],
69
- "notes": ["freeze row semantics before broader execution"]
230
+ "readFiles": [
231
+ "design.md",
232
+ "tasks.md",
233
+ "src/invite/bulk-import.ts"
234
+ ],
235
+ "commands": [
236
+ "npm test -- src/invite/bulk-import.test.ts"
237
+ ],
238
+ "notes": [
239
+ "freeze row semantics before broader execution"
240
+ ]
241
+ },
242
+ "reviews": {
243
+ "spec": "pass",
244
+ "code": "pass"
70
245
  },
71
- "reviews": { "spec": "pass", "code": "pass" },
72
246
  "status": "passed",
73
247
  "attempts": 1,
74
248
  "maxRetries": 1
@@ -79,20 +253,48 @@
79
253
  "type": "IMPL",
80
254
  "phase": 1,
81
255
  "parallel": false,
82
- "dependsOn": ["T001"],
83
- "touches": ["bulk-invite-rules"],
84
- "files": ["src/invite/bulk-import.ts"],
85
- "run": ["npm test -- src/invite/bulk-import.test.ts"],
86
- "checks": ["rule tests pass"],
87
- "acceptance": ["bulk invite rows receive deterministic initial states"],
88
- "verification": ["npm test -- src/invite/bulk-import.test.ts"],
89
- "evidence": ["passing test output", "checkpoint summary"],
256
+ "dependsOn": [
257
+ "T001"
258
+ ],
259
+ "touches": [
260
+ "bulk-invite-rules"
261
+ ],
262
+ "files": [
263
+ "src/invite/bulk-import.ts"
264
+ ],
265
+ "run": [
266
+ "npm test -- src/invite/bulk-import.test.ts"
267
+ ],
268
+ "checks": [
269
+ "rule tests pass"
270
+ ],
271
+ "acceptance": [
272
+ "bulk invite rows receive deterministic initial states"
273
+ ],
274
+ "verification": [
275
+ "npm test -- src/invite/bulk-import.test.ts"
276
+ ],
277
+ "evidence": [
278
+ "passing test output",
279
+ "checkpoint summary"
280
+ ],
90
281
  "context": {
91
- "readFiles": ["design.md", "tasks.md", "src/invite/bulk-import.test.ts"],
92
- "commands": ["npm test -- src/invite/bulk-import.test.ts"],
93
- "notes": ["do not invent partial-failure semantics outside the approved design"]
282
+ "readFiles": [
283
+ "design.md",
284
+ "tasks.md",
285
+ "src/invite/bulk-import.test.ts"
286
+ ],
287
+ "commands": [
288
+ "npm test -- src/invite/bulk-import.test.ts"
289
+ ],
290
+ "notes": [
291
+ "do not invent partial-failure semantics outside the approved design"
292
+ ]
293
+ },
294
+ "reviews": {
295
+ "spec": "pass",
296
+ "code": "pass"
94
297
  },
95
- "reviews": { "spec": "pass", "code": "pass" },
96
298
  "status": "passed",
97
299
  "attempts": 1,
98
300
  "maxRetries": 1
@@ -103,20 +305,47 @@
103
305
  "type": "TEST",
104
306
  "phase": 2,
105
307
  "parallel": false,
106
- "dependsOn": ["T002"],
107
- "touches": ["admin-bulk-invite-ui"],
108
- "files": ["src/admin/BulkInvitePanel.test.tsx"],
109
- "run": ["npm test -- src/admin/BulkInvitePanel.test.tsx"],
110
- "checks": ["admin panel tests fail before UI integration"],
111
- "acceptance": ["mixed row outcomes are visible as UI failures before implementation"],
112
- "verification": ["npm test -- src/admin/BulkInvitePanel.test.tsx"],
113
- "evidence": ["failing test output"],
308
+ "dependsOn": [
309
+ "T002"
310
+ ],
311
+ "touches": [
312
+ "admin-bulk-invite-ui"
313
+ ],
314
+ "files": [
315
+ "src/admin/BulkInvitePanel.test.tsx"
316
+ ],
317
+ "run": [
318
+ "npm test -- src/admin/BulkInvitePanel.test.tsx"
319
+ ],
320
+ "checks": [
321
+ "admin panel tests fail before UI integration"
322
+ ],
323
+ "acceptance": [
324
+ "mixed row outcomes are visible as UI failures before implementation"
325
+ ],
326
+ "verification": [
327
+ "npm test -- src/admin/BulkInvitePanel.test.tsx"
328
+ ],
329
+ "evidence": [
330
+ "failing test output"
331
+ ],
114
332
  "context": {
115
- "readFiles": ["design.md", "tasks.md", "src/admin/BulkInvitePanel.tsx"],
116
- "commands": ["npm test -- src/admin/BulkInvitePanel.test.tsx"],
117
- "notes": ["UI must not hide ambiguous row states"]
333
+ "readFiles": [
334
+ "design.md",
335
+ "tasks.md",
336
+ "src/admin/BulkInvitePanel.tsx"
337
+ ],
338
+ "commands": [
339
+ "npm test -- src/admin/BulkInvitePanel.test.tsx"
340
+ ],
341
+ "notes": [
342
+ "UI must not hide ambiguous row states"
343
+ ]
344
+ },
345
+ "reviews": {
346
+ "spec": "pass",
347
+ "code": "pass"
118
348
  },
119
- "reviews": { "spec": "pass", "code": "pass" },
120
349
  "status": "passed",
121
350
  "attempts": 1,
122
351
  "maxRetries": 1
@@ -127,20 +356,48 @@
127
356
  "type": "IMPL",
128
357
  "phase": 2,
129
358
  "parallel": false,
130
- "dependsOn": ["T003"],
131
- "touches": ["admin-bulk-invite-ui"],
132
- "files": ["src/admin/BulkInvitePanel.tsx"],
133
- "run": ["npm test -- src/admin/BulkInvitePanel.test.tsx"],
134
- "checks": ["admin panel tests pass"],
135
- "acceptance": ["admins can see accepted, skipped, and rejected rows in the panel"],
136
- "verification": ["npm test -- src/admin/BulkInvitePanel.test.tsx"],
137
- "evidence": ["passing test output", "review notes"],
359
+ "dependsOn": [
360
+ "T003"
361
+ ],
362
+ "touches": [
363
+ "admin-bulk-invite-ui"
364
+ ],
365
+ "files": [
366
+ "src/admin/BulkInvitePanel.tsx"
367
+ ],
368
+ "run": [
369
+ "npm test -- src/admin/BulkInvitePanel.test.tsx"
370
+ ],
371
+ "checks": [
372
+ "admin panel tests pass"
373
+ ],
374
+ "acceptance": [
375
+ "admins can see accepted, skipped, and rejected rows in the panel"
376
+ ],
377
+ "verification": [
378
+ "npm test -- src/admin/BulkInvitePanel.test.tsx"
379
+ ],
380
+ "evidence": [
381
+ "passing test output",
382
+ "review notes"
383
+ ],
138
384
  "context": {
139
- "readFiles": ["design.md", "tasks.md", "src/admin/BulkInvitePanel.test.tsx"],
140
- "commands": ["npm test -- src/admin/BulkInvitePanel.test.tsx"],
141
- "notes": ["surface row states without redefining backend truth"]
385
+ "readFiles": [
386
+ "design.md",
387
+ "tasks.md",
388
+ "src/admin/BulkInvitePanel.test.tsx"
389
+ ],
390
+ "commands": [
391
+ "npm test -- src/admin/BulkInvitePanel.test.tsx"
392
+ ],
393
+ "notes": [
394
+ "surface row states without redefining backend truth"
395
+ ]
396
+ },
397
+ "reviews": {
398
+ "spec": "pass",
399
+ "code": "pass"
142
400
  },
143
- "reviews": { "spec": "pass", "code": "pass" },
144
401
  "status": "passed",
145
402
  "attempts": 1,
146
403
  "maxRetries": 1
@@ -151,29 +408,52 @@
151
408
  "type": "OTHER",
152
409
  "phase": 3,
153
410
  "parallel": false,
154
- "dependsOn": ["T004"],
155
- "touches": ["quality-gates"],
156
- "files": ["src/admin/BulkInvitePanel.tsx", "src/invite/bulk-import.ts"],
411
+ "dependsOn": [
412
+ "T004"
413
+ ],
414
+ "touches": [
415
+ "quality-gates"
416
+ ],
417
+ "files": [
418
+ "src/admin/BulkInvitePanel.tsx",
419
+ "src/invite/bulk-import.ts"
420
+ ],
157
421
  "run": [
158
422
  "npm test -- src/invite/bulk-import.test.ts",
159
423
  "npm test -- src/admin/BulkInvitePanel.test.tsx"
160
424
  ],
161
- "checks": ["targeted tests pass", "review evidence collected"],
162
- "acceptance": ["fresh verification evidence exists for cc-check"],
425
+ "checks": [
426
+ "targeted tests pass",
427
+ "review evidence collected"
428
+ ],
429
+ "acceptance": [
430
+ "fresh verification evidence exists for cc-check"
431
+ ],
163
432
  "verification": [
164
433
  "npm test -- src/invite/bulk-import.test.ts",
165
434
  "npm test -- src/admin/BulkInvitePanel.test.tsx"
166
435
  ],
167
- "evidence": ["passing targeted test output", "review notes"],
436
+ "evidence": [
437
+ "passing targeted test output",
438
+ "review notes"
439
+ ],
168
440
  "context": {
169
- "readFiles": ["tasks.md", "task-manifest.json"],
441
+ "readFiles": [
442
+ "tasks.md",
443
+ "task-manifest.json"
444
+ ],
170
445
  "commands": [
171
446
  "npm test -- src/invite/bulk-import.test.ts",
172
447
  "npm test -- src/admin/BulkInvitePanel.test.tsx"
173
448
  ],
174
- "notes": ["fresh evidence can still block if the design contract is incomplete"]
449
+ "notes": [
450
+ "fresh evidence can still block if the design contract is incomplete"
451
+ ]
452
+ },
453
+ "reviews": {
454
+ "spec": "pass",
455
+ "code": "pass"
175
456
  },
176
- "reviews": { "spec": "pass", "code": "pass" },
177
457
  "status": "passed",
178
458
  "attempts": 1,
179
459
  "maxRetries": 1
@@ -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.7.5`
7
+ - CC-Plan skill version: `3.8.1`
8
8
  - Source roadmap item: `RM-010`
9
9
  - Source roadmap version: `roadmap.v2`
10
10
 
@@ -22,6 +22,7 @@
22
22
  - Implementation decisions: reuse invite engine, billing checks, and audit contract after the row-outcome matrix is approved
23
23
  - Testing decisions: test bulk-import rules, admin upload flow, and audit mapping
24
24
  - Out of scope: SCIM provisioning, background jobs, rollback wizard
25
+ - AI Leverage Decision Lens: sharp-wedge; AI can implement this bounded import path fast, but cc-check may still block final proof if row semantics drift
25
26
  - Read first:
26
27
  - `design.md`
27
28
  - `src/admin/BulkInvitePanel.tsx`
@@ -5,7 +5,7 @@
5
5
  },
6
6
  "meta": {
7
7
  "roadmapVersion": "roadmap.v2",
8
- "skillVersion": "5.0.0",
8
+ "skillVersion": "5.2.0",
9
9
  "status": "active",
10
10
  "lastUpdated": "2026-04-19",
11
11
  "currentFocusStage": "Stage 2"
@@ -14,7 +14,23 @@
14
14
  "planningPosture": "",
15
15
  "evidenceMaturity": "",
16
16
  "canonicalTerms": [],
17
- "durableDecisionSources": []
17
+ "durableDecisionSources": [],
18
+ "aiLeverageRouteLens": {
19
+ "realUserOrOperator": "workspace admin onboarding 20-200 collaborators",
20
+ "statusQuoWorkaround": "paste individual invite emails or coordinate in spreadsheets",
21
+ "humanTeamEffortForFullScope": "multiple weeks across product, engineering, billing, and support review",
22
+ "ccAgentEffortForFullScope": "several hours once row semantics are approved, but unbounded before that",
23
+ "aiCompressionRatio": "high after semantics freeze, low while the product contract is ambiguous",
24
+ "completeLakeBoundary": "row classification, admin upload flow, billing-seat checks, and audit mapping after rule approval",
25
+ "oceanBoundary": "SCIM, background retries, rollback wizard, and unspecified billing semantics",
26
+ "scopeRecommendation": "sharp-wedge",
27
+ "firstSuccessSignal": "admins can predict duplicate, invalid, and over-limit outcomes",
28
+ "killSignal": "duplicate and seat-limit semantics remain unresolved",
29
+ "verdict": "sharp-wedge",
30
+ "missingEvidence": [
31
+ "none recorded at route handoff; cc-check later reopened duplicate, invalid-row, partial-success, and seat-limit semantics"
32
+ ]
33
+ }
18
34
  },
19
35
  "evidence": [],
20
36
  "route": {
@@ -5,7 +5,7 @@
5
5
  ## Backlog Meta
6
6
 
7
7
  - Roadmap version: `roadmap.v2`
8
- - Skill version: `5.0.0`
8
+ - Skill version: `5.2.0`
9
9
  - Last synced: `2026-04-19`
10
10
  - Current focus stage: `Stage 2`
11
11
  - Roadmap state source: `roadmap.json`
@@ -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.0.0`, `cc-plan@3.7.5`, `cc-do@1.6.2`, `cc-check@1.10.1`, `cc-act@1.8.2`
7
+ - Bound skills: `cc-roadmap@5.2.0`, `cc-plan@3.8.1`, `cc-do@1.6.2`, `cc-check@1.10.1`, `cc-act@1.8.2`
8
8
 
9
9
  This example shows verified work that is **ready to move forward**, but `cc-act` still chooses `local-handoff`.
10
10
 
@@ -3,7 +3,7 @@
3
3
  ## Roadmap Meta
4
4
 
5
5
  - Roadmap version: `roadmap.v3`
6
- - Skill version: `5.0.0`
6
+ - Skill version: `5.2.0`
7
7
  - Status: `active`
8
8
  - Last updated: `2026-04-16`
9
9
  - Owner / decider: `product-owner`
@@ -27,6 +27,21 @@
27
27
  - Adoption / trust bottleneck: admins want proof they can take activity history out of the UI cleanly
28
28
  - Known unknowns: whether CSV alone is enough or if JSON export will be needed later
29
29
 
30
+ ## AI Leverage Route Lens
31
+
32
+ - Real user / operator: workspace admin preparing weekly activity review notes
33
+ - Status quo workaround: manually copy visible audit rows into an internal note
34
+ - Human-team effort for full scope: about one day for an engineer to implement, test, and document the local export
35
+ - CC / agent effort for full scope: about 30 minutes for visible-row CSV export plus targeted test and lint
36
+ - AI compression ratio: roughly 10x for the bounded local export path
37
+ - Complete-lake boundary: visible-row CSV export, panel action, current data source, targeted panel test, and lint
38
+ - Ocean boundary: JSON export, scheduled reporting, shared reporting backend, and cross-panel reporting platform
39
+ - Scope recommendation: `boil-lake`
40
+ - First success signal: admins finish weekly review without manual row copying
41
+ - Kill signal: implementation requires shared reporting pipeline redesign
42
+ - Verdict: `boil-lake`
43
+ - Missing evidence before ready-for-cc-plan: none
44
+
30
45
  ## Recommended Route
31
46
 
32
47
  - Recommendation: `wedge-first`
@@ -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.7.5`
7
+ - CC-Plan skill version: `3.8.1`
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
@@ -66,6 +66,30 @@
66
66
  - Risk: admins may soon ask for more export formats
67
67
  - Mitigation: treat JSON or scheduled exports as later roadmap items
68
68
 
69
+ ## AI Leverage Decision Lens
70
+
71
+ - Real user / operator: workspace admin preparing weekly review notes
72
+ - Status quo workaround: manually copy visible audit rows
73
+ - Human-team effort for full scope: about one day for an engineer to implement, test, and document the local export
74
+ - CC / agent effort for full scope: about 30 minutes for visible-row CSV export plus targeted test and lint
75
+ - AI compression ratio: roughly 10x for the bounded local export path
76
+ - Complete-lake boundary: visible-row CSV export, panel action, current data source, targeted panel test, and lint
77
+ - Ocean boundary: JSON export, scheduled reporting, shared reporting backend, and cross-panel reporting platform
78
+ - Scope recommendation: `boil-lake`
79
+ - Cost model: low agent time, low human review time, targeted panel test plus lint, low maintenance cost while scoped to visible rows, reversible UI action
80
+ - Verdict: `boil-lake`
81
+ - Missing evidence or pivot reason: none
82
+
83
+ ## External Best-Practice Validation
84
+
85
+ - Needed: No
86
+ - Decision status: not-needed
87
+ - Generalized search terms:
88
+ - Sources checked:
89
+ - Repo-fit verdict: skipped
90
+ - Changes to frozen design:
91
+ - Skipped reason: the local handoff exports existing visible rows and does not introduce a new reporting standard
92
+
69
93
  ## Review Gate
70
94
 
71
95
  - Placeholder scan: pass
@@ -74,8 +98,17 @@
74
98
  - Ambiguity scan: pass
75
99
  - Feasibility scan: pass
76
100
  - PRD brief scan: pass; the export story and scope boundaries are explicit
101
+ - AI Leverage Decision Lens scan: pass; visible-row export lake is bounded enough to complete while reporting platform work stays out
102
+ - External best-practice scan: pass; not needed for a repo-local visible-row export
103
+ - Decision question scan: pass; `D1` approved the tiny-design CSV-export boundary
77
104
  - Final recommendation: approved as `tiny-design`
78
105
 
106
+ ## Decision Questions
107
+
108
+ | ID | Gate | Known evidence | Recommendation | User choice | Impact on `cc-do` | Status |
109
+ |----|------|----------------|----------------|-------------|-------------------|--------|
110
+ | D1 | approach-approval | Existing admin panel already owns visible summary rows and the change does not need a reporting backend | Approve the tiny-design CSV export | Tiny design CSV export | Export only visible rows from the current panel; do not create reporting contracts | answered |
111
+
79
112
  ## Approval
80
113
 
81
114
  - User approval status: approved