cc-devflow 4.5.6 → 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 (65) 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 +22 -0
  7. package/.claude/skills/cc-plan/PLAYBOOK.md +20 -17
  8. package/.claude/skills/cc-plan/SKILL.md +91 -19
  9. package/.claude/skills/cc-plan/assets/DESIGN_TEMPLATE.md +42 -0
  10. package/.claude/skills/cc-plan/assets/TASKS_TEMPLATE.md +2 -0
  11. package/.claude/skills/cc-plan/assets/TASK_MANIFEST_TEMPLATE.json +36 -2
  12. package/.claude/skills/cc-plan/assets/TINY_DESIGN_TEMPLATE.md +30 -0
  13. package/.claude/skills/cc-plan/references/planning-contract.md +20 -15
  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 +9 -0
  31. package/README.md +9 -4
  32. package/README.zh-CN.md +9 -4
  33. package/bin/cc-devflow-cli.js +119 -0
  34. package/config/distributable-skills.json +2 -0
  35. package/docs/examples/example-bindings.json +5 -4
  36. package/docs/examples/full-design-blocked/BACKLOG.md +1 -1
  37. package/docs/examples/full-design-blocked/README.md +1 -1
  38. package/docs/examples/full-design-blocked/ROADMAP.md +16 -1
  39. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/design.md +36 -3
  40. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json +295 -71
  41. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md +2 -1
  42. package/docs/examples/full-design-blocked/roadmap.json +18 -2
  43. package/docs/examples/local-handoff/BACKLOG.md +1 -1
  44. package/docs/examples/local-handoff/README.md +1 -1
  45. package/docs/examples/local-handoff/ROADMAP.md +16 -1
  46. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/design.md +27 -1
  47. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json +170 -41
  48. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md +2 -1
  49. package/docs/examples/local-handoff/roadmap.json +16 -2
  50. package/docs/examples/pdca-loop/BACKLOG.md +1 -1
  51. package/docs/examples/pdca-loop/README.md +1 -1
  52. package/docs/examples/pdca-loop/ROADMAP.md +16 -1
  53. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/design.md +27 -1
  54. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json +62 -10
  55. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md +2 -1
  56. package/docs/examples/pdca-loop/roadmap.json +16 -2
  57. package/docs/examples/scripts/check-example-bindings.sh +2 -0
  58. package/docs/guides/getting-started.md +12 -9
  59. package/docs/guides/getting-started.zh-CN.md +12 -9
  60. package/lib/skill-runtime/__tests__/archive-change.test.js +124 -0
  61. package/lib/skill-runtime/__tests__/cli-bootstrap.integration.test.js +1 -0
  62. package/lib/skill-runtime/__tests__/paths.test.js +81 -1
  63. package/lib/skill-runtime/archive-change.js +64 -0
  64. package/lib/skill-runtime/paths.js +32 -0
  65. 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.7",
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,19 +44,51 @@
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"
47
83
  },
48
84
  "decisionQuestions": [
49
85
  {
50
86
  "questionId": "D1",
51
87
  "gate": "approach-approval",
52
- "knownEvidence": ["Best-effort upload would hide duplicate, invalid, and seat-limit semantics", "Audit mapping depends on deterministic row outcomes"],
88
+ "knownEvidence": [
89
+ "Best-effort upload would hide duplicate, invalid, and seat-limit semantics",
90
+ "Audit mapping depends on deterministic row outcomes"
91
+ ],
53
92
  "recommendation": "Choose Option B and freeze a rule matrix first",
54
93
  "options": [
55
94
  {
@@ -75,9 +114,42 @@
75
114
  },
76
115
  {
77
116
  "questionId": "D2",
78
- "gate": "ambiguity-blocker",
79
- "knownEvidence": ["Duplicate and seat-limit outcomes are still not explicit enough for tests", "Audit entries must match visible row outcomes"],
80
- "recommendation": "Answer the row-outcome matrix before task generation",
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",
81
153
  "options": [
82
154
  {
83
155
  "id": "A",
@@ -97,10 +169,31 @@
97
169
  }
98
170
  ],
99
171
  "userChoice": null,
100
- "impact": "No executable task manifest should be approved until this is answered",
172
+ "impact": "cc-do retry and cc-act must stay blocked until this is answered",
101
173
  "status": "asked"
102
174
  }
103
- ]
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
+ }
104
197
  },
105
198
  "currentTaskId": null,
106
199
  "activePhase": null,
@@ -112,19 +205,44 @@
112
205
  "phase": 1,
113
206
  "parallel": false,
114
207
  "dependsOn": [],
115
- "touches": ["bulk-invite-rules"],
116
- "files": ["src/invite/bulk-import.test.ts"],
117
- "run": ["npm test -- src/invite/bulk-import.test.ts"],
118
- "checks": ["tests fail before implementation"],
119
- "acceptance": ["dangerous row outcomes are reproduced as explicit failing tests"],
120
- "verification": ["npm test -- src/invite/bulk-import.test.ts"],
121
- "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
+ ],
122
229
  "context": {
123
- "readFiles": ["design.md", "tasks.md", "src/invite/bulk-import.ts"],
124
- "commands": ["npm test -- src/invite/bulk-import.test.ts"],
125
- "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"
126
245
  },
127
- "reviews": { "spec": "pass", "code": "pass" },
128
246
  "status": "passed",
129
247
  "attempts": 1,
130
248
  "maxRetries": 1
@@ -135,20 +253,48 @@
135
253
  "type": "IMPL",
136
254
  "phase": 1,
137
255
  "parallel": false,
138
- "dependsOn": ["T001"],
139
- "touches": ["bulk-invite-rules"],
140
- "files": ["src/invite/bulk-import.ts"],
141
- "run": ["npm test -- src/invite/bulk-import.test.ts"],
142
- "checks": ["rule tests pass"],
143
- "acceptance": ["bulk invite rows receive deterministic initial states"],
144
- "verification": ["npm test -- src/invite/bulk-import.test.ts"],
145
- "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
+ ],
146
281
  "context": {
147
- "readFiles": ["design.md", "tasks.md", "src/invite/bulk-import.test.ts"],
148
- "commands": ["npm test -- src/invite/bulk-import.test.ts"],
149
- "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"
150
297
  },
151
- "reviews": { "spec": "pass", "code": "pass" },
152
298
  "status": "passed",
153
299
  "attempts": 1,
154
300
  "maxRetries": 1
@@ -159,20 +305,47 @@
159
305
  "type": "TEST",
160
306
  "phase": 2,
161
307
  "parallel": false,
162
- "dependsOn": ["T002"],
163
- "touches": ["admin-bulk-invite-ui"],
164
- "files": ["src/admin/BulkInvitePanel.test.tsx"],
165
- "run": ["npm test -- src/admin/BulkInvitePanel.test.tsx"],
166
- "checks": ["admin panel tests fail before UI integration"],
167
- "acceptance": ["mixed row outcomes are visible as UI failures before implementation"],
168
- "verification": ["npm test -- src/admin/BulkInvitePanel.test.tsx"],
169
- "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
+ ],
170
332
  "context": {
171
- "readFiles": ["design.md", "tasks.md", "src/admin/BulkInvitePanel.tsx"],
172
- "commands": ["npm test -- src/admin/BulkInvitePanel.test.tsx"],
173
- "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"
174
348
  },
175
- "reviews": { "spec": "pass", "code": "pass" },
176
349
  "status": "passed",
177
350
  "attempts": 1,
178
351
  "maxRetries": 1
@@ -183,20 +356,48 @@
183
356
  "type": "IMPL",
184
357
  "phase": 2,
185
358
  "parallel": false,
186
- "dependsOn": ["T003"],
187
- "touches": ["admin-bulk-invite-ui"],
188
- "files": ["src/admin/BulkInvitePanel.tsx"],
189
- "run": ["npm test -- src/admin/BulkInvitePanel.test.tsx"],
190
- "checks": ["admin panel tests pass"],
191
- "acceptance": ["admins can see accepted, skipped, and rejected rows in the panel"],
192
- "verification": ["npm test -- src/admin/BulkInvitePanel.test.tsx"],
193
- "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
+ ],
194
384
  "context": {
195
- "readFiles": ["design.md", "tasks.md", "src/admin/BulkInvitePanel.test.tsx"],
196
- "commands": ["npm test -- src/admin/BulkInvitePanel.test.tsx"],
197
- "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"
198
400
  },
199
- "reviews": { "spec": "pass", "code": "pass" },
200
401
  "status": "passed",
201
402
  "attempts": 1,
202
403
  "maxRetries": 1
@@ -207,29 +408,52 @@
207
408
  "type": "OTHER",
208
409
  "phase": 3,
209
410
  "parallel": false,
210
- "dependsOn": ["T004"],
211
- "touches": ["quality-gates"],
212
- "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
+ ],
213
421
  "run": [
214
422
  "npm test -- src/invite/bulk-import.test.ts",
215
423
  "npm test -- src/admin/BulkInvitePanel.test.tsx"
216
424
  ],
217
- "checks": ["targeted tests pass", "review evidence collected"],
218
- "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
+ ],
219
432
  "verification": [
220
433
  "npm test -- src/invite/bulk-import.test.ts",
221
434
  "npm test -- src/admin/BulkInvitePanel.test.tsx"
222
435
  ],
223
- "evidence": ["passing targeted test output", "review notes"],
436
+ "evidence": [
437
+ "passing targeted test output",
438
+ "review notes"
439
+ ],
224
440
  "context": {
225
- "readFiles": ["tasks.md", "task-manifest.json"],
441
+ "readFiles": [
442
+ "tasks.md",
443
+ "task-manifest.json"
444
+ ],
226
445
  "commands": [
227
446
  "npm test -- src/invite/bulk-import.test.ts",
228
447
  "npm test -- src/admin/BulkInvitePanel.test.tsx"
229
448
  ],
230
- "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"
231
456
  },
232
- "reviews": { "spec": "pass", "code": "pass" },
233
457
  "status": "passed",
234
458
  "attempts": 1,
235
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.7`
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.7`, `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.7`
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,6 +98,8 @@
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
77
103
  - Decision question scan: pass; `D1` approved the tiny-design CSV-export boundary
78
104
  - Final recommendation: approved as `tiny-design`
79
105