cc-devflow 4.5.4 → 4.5.6

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 (84) hide show
  1. package/.claude/skills/cc-act/CHANGELOG.md +6 -0
  2. package/.claude/skills/cc-act/PLAYBOOK.md +21 -5
  3. package/.claude/skills/cc-act/SKILL.md +21 -11
  4. package/.claude/skills/cc-act/assets/PR_BRIEF_TEMPLATE.md +10 -0
  5. package/.claude/skills/cc-act/assets/RELEASE_NOTE_TEMPLATE.md +8 -0
  6. package/.claude/skills/cc-act/references/closure-contract.md +3 -0
  7. package/.claude/skills/cc-act/scripts/cc-act-common.sh +48 -0
  8. package/.claude/skills/cc-act/scripts/generate-status-report.sh +3 -0
  9. package/.claude/skills/cc-act/scripts/render-pr-brief.sh +6 -0
  10. package/.claude/skills/cc-act/scripts/sync-act-docs.sh +13 -0
  11. package/.claude/skills/cc-do/CHANGELOG.md +6 -0
  12. package/.claude/skills/cc-do/PLAYBOOK.md +7 -6
  13. package/.claude/skills/cc-do/SKILL.md +27 -12
  14. package/.claude/skills/cc-do/references/execution-recovery.md +9 -0
  15. package/.claude/skills/cc-investigate/CHANGELOG.md +6 -0
  16. package/.claude/skills/cc-investigate/PLAYBOOK.md +5 -1
  17. package/.claude/skills/cc-investigate/SKILL.md +22 -5
  18. package/.claude/skills/cc-investigate/assets/ANALYSIS_TEMPLATE.md +14 -0
  19. package/.claude/skills/cc-investigate/assets/TASKS_TEMPLATE.md +1 -0
  20. package/.claude/skills/cc-investigate/assets/TASK_MANIFEST_TEMPLATE.json +9 -1
  21. package/.claude/skills/cc-investigate/references/investigation-contract.md +2 -0
  22. package/.claude/skills/cc-plan/CHANGELOG.md +35 -0
  23. package/.claude/skills/cc-plan/PLAYBOOK.md +41 -19
  24. package/.claude/skills/cc-plan/SKILL.md +132 -47
  25. package/.claude/skills/cc-plan/assets/DESIGN_TEMPLATE.md +77 -3
  26. package/.claude/skills/cc-plan/assets/TASKS_TEMPLATE.md +28 -5
  27. package/.claude/skills/cc-plan/assets/TASK_MANIFEST_TEMPLATE.json +84 -3
  28. package/.claude/skills/cc-plan/assets/TINY_DESIGN_TEMPLATE.md +51 -0
  29. package/.claude/skills/cc-plan/references/planning-contract.md +47 -15
  30. package/.claude/skills/cc-roadmap/CHANGELOG.md +12 -0
  31. package/.claude/skills/cc-roadmap/PLAYBOOK.md +15 -9
  32. package/.claude/skills/cc-roadmap/SKILL.md +22 -16
  33. package/.claude/skills/cc-roadmap/assets/BACKLOG_TEMPLATE.md +3 -1
  34. package/.claude/skills/cc-roadmap/assets/ROADMAP_TEMPLATE.md +11 -1
  35. package/.claude/skills/cc-roadmap/assets/TRACKING_TEMPLATE.json +57 -10
  36. package/.claude/skills/cc-roadmap/scripts/lib/roadmap-tracking/markdown.js +68 -3
  37. package/.claude/skills/cc-roadmap/scripts/lib/roadmap-tracking/schema.js +120 -0
  38. package/.claude/skills/cc-roadmap/scripts/lib/roadmap-tracking/store.js +25 -1
  39. package/.claude/skills/cc-roadmap/scripts/locate-roadmap-item.sh +13 -5
  40. package/.claude/skills/cc-roadmap/scripts/roadmap-tracking.js +3 -3
  41. package/.claude/skills/cc-roadmap/scripts/sync-roadmap-progress.sh +3 -3
  42. package/CHANGELOG.md +19 -0
  43. package/README.md +5 -5
  44. package/README.zh-CN.md +5 -5
  45. package/bin/cc-devflow-cli.js +16 -2
  46. package/docs/CLAUDE.md +1 -1
  47. package/docs/examples/START-HERE.md +3 -3
  48. package/docs/examples/example-bindings.json +26 -9
  49. package/docs/examples/full-design-blocked/BACKLOG.md +4 -2
  50. package/docs/examples/full-design-blocked/README.md +4 -4
  51. package/docs/examples/full-design-blocked/ROADMAP.md +16 -2
  52. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/design.md +47 -1
  53. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json +97 -0
  54. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md +8 -1
  55. package/docs/examples/full-design-blocked/roadmap.json +123 -0
  56. package/docs/examples/local-handoff/BACKLOG.md +4 -2
  57. package/docs/examples/local-handoff/README.md +4 -4
  58. package/docs/examples/local-handoff/ROADMAP.md +16 -2
  59. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/design.md +26 -1
  60. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json +55 -0
  61. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md +8 -1
  62. package/docs/examples/local-handoff/roadmap.json +121 -0
  63. package/docs/examples/pdca-loop/BACKLOG.md +4 -2
  64. package/docs/examples/pdca-loop/README.md +4 -4
  65. package/docs/examples/pdca-loop/ROADMAP.md +16 -2
  66. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/design.md +26 -1
  67. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json +51 -3
  68. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md +8 -1
  69. package/docs/examples/pdca-loop/roadmap.json +191 -0
  70. package/docs/examples/scripts/check-example-bindings.sh +7 -4
  71. package/docs/guides/getting-started.md +2 -2
  72. package/docs/guides/getting-started.zh-CN.md +2 -2
  73. package/lib/compiler/__tests__/skills-registry.test.js +17 -3
  74. package/lib/skill-runtime/__tests__/autopilot.test.js +13 -10
  75. package/lib/skill-runtime/__tests__/cli-bootstrap.integration.test.js +9 -1
  76. package/lib/skill-runtime/__tests__/paths.test.js +25 -0
  77. package/lib/skill-runtime/__tests__/query.test.js +49 -0
  78. package/lib/skill-runtime/artifacts.js +2 -2
  79. package/lib/skill-runtime/intent.js +14 -14
  80. package/lib/skill-runtime/operations/autopilot-shared.js +4 -4
  81. package/lib/skill-runtime/paths.js +28 -7
  82. package/lib/skill-runtime/query-registry.js +3 -3
  83. package/lib/skill-runtime/query.js +30 -30
  84. package/package.json +1 -1
@@ -64,9 +64,9 @@ Use this when the only thing you know is the file in front of you.
64
64
 
65
65
  | If the main file you have is... | You are probably here | Read this first |
66
66
  | --- | --- | --- |
67
- | `ROADMAP.md` | `cc-roadmap` | [pdca-loop/ROADMAP.md](./pdca-loop/ROADMAP.md) |
68
- | `roadmap-tracking.json` | `cc-roadmap` machine truth source for roadmap + backlog | [pdca-loop/roadmap-tracking.json](./pdca-loop/roadmap-tracking.json) |
69
- | `BACKLOG.md` | `cc-roadmap` -> `cc-plan` handoff | [pdca-loop/BACKLOG.md](./pdca-loop/BACKLOG.md) |
67
+ | `roadmap.json` | `cc-roadmap` editable machine truth source | [pdca-loop/roadmap.json](./pdca-loop/roadmap.json) |
68
+ | `ROADMAP.md` | `cc-roadmap` generated human view | [pdca-loop/ROADMAP.md](./pdca-loop/ROADMAP.md) |
69
+ | `BACKLOG.md` | deprecated `cc-roadmap` -> `cc-plan` projection | [pdca-loop/BACKLOG.md](./pdca-loop/BACKLOG.md) |
70
70
  | `design.md` | `cc-plan` | [pdca-loop/design.md](./pdca-loop/changes/REQ-001-copy-invite-link/planning/design.md) or [full-design-blocked/design.md](./full-design-blocked/changes/REQ-002-bulk-invite-import/planning/design.md) |
71
71
  | `tasks.md` | `cc-plan` or `cc-do` | [pdca-loop/tasks.md](./pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md) |
72
72
  | `task-manifest.json` | `cc-do` | [pdca-loop/task-manifest.json](./pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json) |
@@ -1,12 +1,12 @@
1
1
  {
2
- "updatedAt": "2026-04-28",
2
+ "updatedAt": "2026-05-06",
3
3
  "skills": {
4
- "cc-roadmap": "4.4.1",
5
- "cc-plan": "3.7.1",
6
- "cc-investigate": "1.2.1",
7
- "cc-do": "1.6.1",
4
+ "cc-roadmap": "5.0.0",
5
+ "cc-plan": "3.7.7",
6
+ "cc-investigate": "1.2.2",
7
+ "cc-do": "1.6.2",
8
8
  "cc-check": "1.10.1",
9
- "cc-act": "1.8.1",
9
+ "cc-act": "1.8.2",
10
10
  "cc-spec-init": "1.1.0"
11
11
  },
12
12
  "examples": [
@@ -15,7 +15,13 @@
15
15
  "readme": "docs/examples/pdca-loop/README.md",
16
16
  "root": "docs/examples/pdca-loop",
17
17
  "changeDir": "docs/examples/pdca-loop/changes/REQ-001-copy-invite-link",
18
- "covers": ["cc-roadmap", "cc-plan", "cc-do", "cc-check", "cc-act"],
18
+ "covers": [
19
+ "cc-roadmap",
20
+ "cc-plan",
21
+ "cc-do",
22
+ "cc-check",
23
+ "cc-act"
24
+ ],
19
25
  "expectedShipMode": "create-pr"
20
26
  },
21
27
  {
@@ -23,7 +29,12 @@
23
29
  "readme": "docs/examples/full-design-blocked/README.md",
24
30
  "root": "docs/examples/full-design-blocked",
25
31
  "changeDir": "docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import",
26
- "covers": ["cc-roadmap", "cc-plan", "cc-do", "cc-check"],
32
+ "covers": [
33
+ "cc-roadmap",
34
+ "cc-plan",
35
+ "cc-do",
36
+ "cc-check"
37
+ ],
27
38
  "expectedShipMode": "none"
28
39
  },
29
40
  {
@@ -31,7 +42,13 @@
31
42
  "readme": "docs/examples/local-handoff/README.md",
32
43
  "root": "docs/examples/local-handoff",
33
44
  "changeDir": "docs/examples/local-handoff/changes/REQ-003-audit-log-export",
34
- "covers": ["cc-roadmap", "cc-plan", "cc-do", "cc-check", "cc-act"],
45
+ "covers": [
46
+ "cc-roadmap",
47
+ "cc-plan",
48
+ "cc-do",
49
+ "cc-check",
50
+ "cc-act"
51
+ ],
35
52
  "expectedShipMode": "local-handoff"
36
53
  }
37
54
  ]
@@ -1,12 +1,14 @@
1
1
  # BACKLOG
2
2
 
3
+ > Deprecated projection. Edit `roadmap.json` instead.
4
+
3
5
  ## Backlog Meta
4
6
 
5
7
  - Roadmap version: `roadmap.v2`
6
- - Skill version: `4.4.1`
8
+ - Skill version: `5.0.0`
7
9
  - Last synced: `2026-04-19`
8
10
  - Current focus stage: `Stage 2`
9
- - Tracking source: `roadmap-tracking.json`
11
+ - Roadmap state source: `roadmap.json`
10
12
 
11
13
  ## Queue
12
14
 
@@ -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@4.4.1`, `cc-plan@3.7.1`, `cc-do@1.6.1`, `cc-check@1.10.1`
7
+ - Bound skills: `cc-roadmap@5.0.0`, `cc-plan@3.7.7`, `cc-do@1.6.2`, `cc-check@1.10.1`
8
8
 
9
9
  This example shows a requirement that **looked executable**, but `cc-check` correctly stopped it and sent it back to `cc-plan`.
10
10
 
@@ -40,9 +40,9 @@ The sample shows what happens when implementation moved before the integration d
40
40
 
41
41
  ## Artifact Map
42
42
 
43
- - `ROADMAP.md`
44
- - `roadmap-tracking.json` (shared roadmap/backlog truth)
45
- - `BACKLOG.md`
43
+ - `roadmap.json` (editable roadmap truth)
44
+ - `ROADMAP.md` (generated view)
45
+ - `BACKLOG.md` (deprecated projection)
46
46
  - `changes/REQ-002-bulk-invite-import/planning/design.md`
47
47
  - `changes/REQ-002-bulk-invite-import/planning/tasks.md`
48
48
  - `changes/REQ-002-bulk-invite-import/planning/task-manifest.json`
@@ -3,7 +3,7 @@
3
3
  ## Roadmap Meta
4
4
 
5
5
  - Roadmap version: `roadmap.v2`
6
- - Skill version: `4.4.1`
6
+ - Skill version: `5.0.0`
7
7
  - Status: `active`
8
8
  - Last updated: `2026-04-16`
9
9
  - Owner / decider: `product-owner`
@@ -44,10 +44,24 @@
44
44
  - Kill signal / stop condition: if the team cannot specify bulk invite semantics before implementation starts
45
45
 
46
46
  ## Implementation Tracking
47
- - Tracking source: `roadmap-tracking.json`
47
+ - Roadmap state source: `roadmap.json`
48
48
 
49
49
  <!-- roadmap-tracking:start -->
50
50
  | RM-ID | Item | Stage | Priority | Primary Capability | Secondary Capabilities | Expected Spec Delta | Depends On | Status | REQ | Progress |
51
51
  |------|------|------|------|------|------|------|------|------|------|------|
52
52
  | RM-010 | Add CSV bulk invite import for admins | Stage 2 | P1 | cap-bulk-invite-import | cap-workspace-membership | define import semantics before widening current truth | - | Verification blocked | REQ-002 | 80% |
53
53
  <!-- roadmap-tracking:end -->
54
+
55
+
56
+ ## Technical Architecture
57
+
58
+ ```mermaid
59
+ flowchart TD
60
+ roadmap_json["roadmap.json"]
61
+ roadmap_md["ROADMAP.md"]
62
+ backlog_md["BACKLOG.md (deprecated)"]
63
+ cc_plan["cc-plan"]
64
+ roadmap_json -->|renders| roadmap_md
65
+ roadmap_json -->|projects| backlog_md
66
+ roadmap_md -->|hands off| cc_plan
67
+ ```
@@ -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.1`
7
+ - CC-Plan skill version: `3.7.7`
8
8
  - Requirement ID: `REQ-002`
9
9
  - Design mode: `full-design`
10
10
  - Why not `tiny-design`: the feature crosses import parsing, invite rules, billing limits, duplicate handling, and audit logging
@@ -42,6 +42,43 @@
42
42
  - enterprise SCIM provisioning
43
43
  - background retry orchestration
44
44
 
45
+ ## PRD-Grade Requirement Brief
46
+
47
+ - Problem statement: admins onboarding larger teams spend too much time sending individual invites, and they cannot predict how duplicates, invalid rows, and seat limits will resolve in bulk.
48
+ - Solution summary: admins upload a CSV and receive deterministic row outcomes before the invite flow can be trusted for execution.
49
+ - Actors / personas:
50
+ - workspace admin onboarding 20-200 collaborators
51
+ - support operator explaining invite outcomes
52
+ - Primary user stories:
53
+
54
+ | ID | Actor | Wants | Benefit | Acceptance / evidence |
55
+ |----|-------|-------|---------|-----------------------|
56
+ | US-001 | Workspace admin | upload a CSV of invite emails | invite many collaborators without one-by-one entry | mixed valid rows produce visible accepted outcomes |
57
+ | US-002 | Workspace admin | see duplicate, invalid, and over-limit row states | understand what happened without support help | every skipped or rejected row has a reason |
58
+ | US-003 | Support operator | trust the audit trail for each row outcome | explain invite history consistently | audit entries match visible row outcomes |
59
+
60
+ - Edge / recovery stories:
61
+
62
+ | ID | Actor | Failure / boundary | Desired outcome | Acceptance / evidence |
63
+ |----|-------|--------------------|-----------------|-----------------------|
64
+ | US-EDGE-001 | Workspace admin | CSV contains duplicates and invalid emails | safe rows can proceed while bad rows are explained | rule matrix covers duplicate and invalid cases |
65
+ | US-EDGE-002 | Workspace admin | upload exceeds seat limits | over-limit rows are rejected consistently | billing-seat tests match UI summary |
66
+
67
+ - Implementation decisions:
68
+ - Freeze one row-outcome matrix before execution resumes.
69
+ - Reuse the existing invite engine, billing seat checks, and audit log contract.
70
+ - Keep enterprise provisioning and background retry orchestration outside this requirement.
71
+ - Testing decisions:
72
+ - Test row semantics through bulk-import rules and the admin upload flow.
73
+ - Verify audit mapping against visible row outcomes.
74
+ - Use existing invite and admin panel tests as prior art.
75
+ - Out of scope:
76
+ - enterprise SCIM provisioning
77
+ - background job redesign
78
+ - rollback wizard for partial success
79
+ - Further notes:
80
+ - This design remains blocked until duplicate and seat-limit semantics are approved.
81
+
45
82
  ## Success Criteria
46
83
 
47
84
  - Observable success signals:
@@ -83,6 +120,13 @@
83
120
  - Deferred questions:
84
121
  - whether partial success needs an explicit rollback option
85
122
 
123
+ ## Decision Questions
124
+
125
+ | ID | Gate | Known evidence | Recommendation | User choice | Impact on `cc-do` | Status |
126
+ |----|------|----------------|----------------|-------------|-------------------|--------|
127
+ | D1 | approach-approval | Best-effort upload would let duplicate, invalid, and seat-limit semantics drift during execution | Choose Option B and freeze a rule matrix first | Option B | Keep execution blocked until row outcomes are modeled | answered |
128
+ | D2 | ambiguity-blocker | Duplicate and seat-limit outcomes are still not explicit enough for tests or audit mapping | Answer the row-outcome matrix before task generation | pending | `cc-do` must not start implementation until this is answered | asked |
129
+
86
130
  ## Design
87
131
 
88
132
  - Modules touched:
@@ -131,6 +175,8 @@
131
175
  - Ambiguity scan: blocked; duplicate + seat-limit semantics still need sharper wording
132
176
  - Feasibility scan: pass
133
177
  - Source alignment: pass; roadmap still prioritizes trust over speed
178
+ - PRD brief scan: pass for actors and stories; blocked on duplicate and seat-limit semantics
179
+ - Decision question scan: blocked; `D2` is still unanswered
134
180
  - UI / interaction review summary: result states are acceptable if semantics are frozen first
135
181
  - DX review summary: execution still needs a single row-outcome matrix
136
182
  - Auto-decided items:
@@ -5,6 +5,103 @@
5
5
  "updatedAt": "2026-04-16T12:00:00.000Z",
6
6
  "requirementId": "REQ-002",
7
7
  "requirementVersion": "REQ-002.v2",
8
+ "planningMeta": {
9
+ "reqPlanSkillVersion": "3.7.7",
10
+ "designVersion": "design.v2",
11
+ "approvedAt": null,
12
+ "approvedBy": null,
13
+ "basedOnOption": "Option B",
14
+ "requirementBrief": {
15
+ "problemStatement": "Admins onboarding larger teams need predictable bulk invite behavior for duplicates, invalid rows, and seat limits.",
16
+ "solutionSummary": "Freeze deterministic CSV row outcomes before executing the bulk invite flow.",
17
+ "actors": ["workspace admin", "support operator"],
18
+ "userStories": [
19
+ {
20
+ "id": "US-001",
21
+ "actor": "workspace admin",
22
+ "want": "upload a CSV of invite emails",
23
+ "benefit": "invite many collaborators without one-by-one entry",
24
+ "acceptance": ["Mixed valid rows produce visible accepted outcomes"]
25
+ },
26
+ {
27
+ "id": "US-002",
28
+ "actor": "workspace admin",
29
+ "want": "see duplicate, invalid, and over-limit row states",
30
+ "benefit": "understand what happened without support help",
31
+ "acceptance": ["Every skipped or rejected row has a reason"]
32
+ }
33
+ ],
34
+ "edgeOrRecoveryStories": [
35
+ {
36
+ "id": "US-EDGE-001",
37
+ "actor": "workspace admin",
38
+ "boundary": "CSV contains duplicates, invalid emails, or over-limit rows",
39
+ "desiredOutcome": "safe rows can proceed while bad rows are explained",
40
+ "acceptance": ["Rule matrix covers duplicate, invalid, and seat-limit cases"]
41
+ }
42
+ ],
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"]
47
+ },
48
+ "decisionQuestions": [
49
+ {
50
+ "questionId": "D1",
51
+ "gate": "approach-approval",
52
+ "knownEvidence": ["Best-effort upload would hide duplicate, invalid, and seat-limit semantics", "Audit mapping depends on deterministic row outcomes"],
53
+ "recommendation": "Choose Option B and freeze a rule matrix first",
54
+ "options": [
55
+ {
56
+ "id": "A",
57
+ "label": "Front-end-only CSV upload",
58
+ "recommended": false,
59
+ "completeness": "5/10",
60
+ "good": "Fastest prototype and reuses the existing single-invite API",
61
+ "costRisk": "Lets hidden backend edge cases define user-visible semantics"
62
+ },
63
+ {
64
+ "id": "B",
65
+ "label": "Rule matrix first",
66
+ "recommended": true,
67
+ "completeness": "9/10",
68
+ "good": "Makes billing, duplicate, invalid, and audit behavior reviewable",
69
+ "costRisk": "Requires one more planning pass before execution can start"
70
+ }
71
+ ],
72
+ "userChoice": "B",
73
+ "impact": "cc-do stays blocked until row outcomes are modeled",
74
+ "status": "answered"
75
+ },
76
+ {
77
+ "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",
81
+ "options": [
82
+ {
83
+ "id": "A",
84
+ "label": "Block execution until matrix is explicit",
85
+ "recommended": true,
86
+ "completeness": "10/10",
87
+ "good": "Prevents cc-do from inventing semantics during implementation",
88
+ "costRisk": "Requires user/product input before coding can continue"
89
+ },
90
+ {
91
+ "id": "B",
92
+ "label": "Let implementation choose defaults",
93
+ "recommended": false,
94
+ "completeness": "4/10",
95
+ "good": "Starts coding sooner with fewer planning minutes",
96
+ "costRisk": "Creates invisible product decisions inside implementation tasks"
97
+ }
98
+ ],
99
+ "userChoice": null,
100
+ "impact": "No executable task manifest should be approved until this is answered",
101
+ "status": "asked"
102
+ }
103
+ ]
104
+ },
8
105
  "currentTaskId": null,
9
106
  "activePhase": null,
10
107
  "tasks": [
@@ -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.1`
7
+ - CC-Plan skill version: `3.7.7`
8
8
  - Source roadmap item: `RM-010`
9
9
  - Source roadmap version: `roadmap.v2`
10
10
 
@@ -15,6 +15,13 @@
15
15
  - Frozen decisions:
16
16
  - bulk invite results must classify each row
17
17
  - audit behavior must match visible results
18
+ - PRD brief:
19
+ - Problem statement: admins need predictable CSV invite outcomes for duplicates, invalid rows, and seat limits
20
+ - Solution summary: freeze deterministic row outcomes before executing the bulk invite flow
21
+ - User stories covered: `US-001`, `US-002`, `US-003`, `US-EDGE-001`, `US-EDGE-002`
22
+ - Implementation decisions: reuse invite engine, billing checks, and audit contract after the row-outcome matrix is approved
23
+ - Testing decisions: test bulk-import rules, admin upload flow, and audit mapping
24
+ - Out of scope: SCIM provisioning, background jobs, rollback wizard
18
25
  - Read first:
19
26
  - `design.md`
20
27
  - `src/admin/BulkInvitePanel.tsx`
@@ -0,0 +1,123 @@
1
+ {
2
+ "version": 3,
3
+ "outputPolicy": {
4
+ "documentLanguage": "en"
5
+ },
6
+ "meta": {
7
+ "roadmapVersion": "roadmap.v2",
8
+ "skillVersion": "5.0.0",
9
+ "status": "active",
10
+ "lastUpdated": "2026-04-19",
11
+ "currentFocusStage": "Stage 2"
12
+ },
13
+ "context": {
14
+ "planningPosture": "",
15
+ "evidenceMaturity": "",
16
+ "canonicalTerms": [],
17
+ "durableDecisionSources": []
18
+ },
19
+ "evidence": [],
20
+ "route": {
21
+ "recommended": "",
22
+ "whyThisWinsNow": "",
23
+ "rejectedRoutes": [],
24
+ "firstSignal": "",
25
+ "killSignal": ""
26
+ },
27
+ "stages": [],
28
+ "items": [
29
+ {
30
+ "rmId": "RM-010",
31
+ "item": "Add CSV bulk invite import for admins",
32
+ "stage": "Stage 2",
33
+ "priority": "P1",
34
+ "primaryCapability": "cap-bulk-invite-import",
35
+ "secondaryCapabilities": [
36
+ "cap-workspace-membership"
37
+ ],
38
+ "expectedSpecDelta": "define import semantics before widening current truth",
39
+ "dependsOn": [],
40
+ "status": "Verification blocked",
41
+ "req": "REQ-002",
42
+ "progress": "80%",
43
+ "backlog": {
44
+ "capabilityGap": "admins can invite one user at a time but cannot safely import invite batches",
45
+ "evidence": "sales onboarding asks for spreadsheet-scale invites",
46
+ "parallelWith": [],
47
+ "unknowns": "duplicate-email policy, seat enforcement, audit fan-out",
48
+ "nextDecision": "reroute to full design before more execution work",
49
+ "ready": true,
50
+ "whyNow": "demand is real, but the contract is too wide to keep improvising in code",
51
+ "successSignal": "the capability has a trusted import contract before implementation resumes",
52
+ "entryConstraints": "must freeze limits, duplicates, warnings, and audit behavior first",
53
+ "openRisks": "another partial implementation pass would deepen the semantic drift",
54
+ "firstPlanningQuestion": "which subflows share one import contract and which need explicit splits?",
55
+ "requiredContextToLoad": "invite limits, billing rules, duplicate handling, audit logging",
56
+ "whyReadyNow": "the blocker is design truth, not implementation effort",
57
+ "parked": false,
58
+ "parkedReason": "",
59
+ "triggerToReopen": "",
60
+ "missingEvidence": ""
61
+ }
62
+ }
63
+ ],
64
+ "handoff": {
65
+ "readyForCcPlan": [
66
+ "RM-010"
67
+ ],
68
+ "parked": [],
69
+ "serialSpine": [
70
+ "RM-010"
71
+ ],
72
+ "parallelWaves": []
73
+ },
74
+ "architecture": {
75
+ "diagramType": "flowchart",
76
+ "nodes": [
77
+ {
78
+ "id": "roadmap_json",
79
+ "label": "roadmap.json"
80
+ },
81
+ {
82
+ "id": "roadmap_md",
83
+ "label": "ROADMAP.md"
84
+ },
85
+ {
86
+ "id": "backlog_md",
87
+ "label": "BACKLOG.md (deprecated)"
88
+ },
89
+ {
90
+ "id": "cc_plan",
91
+ "label": "cc-plan"
92
+ }
93
+ ],
94
+ "edges": [
95
+ {
96
+ "from": "roadmap_json",
97
+ "to": "roadmap_md",
98
+ "label": "renders"
99
+ },
100
+ {
101
+ "from": "roadmap_json",
102
+ "to": "backlog_md",
103
+ "label": "projects"
104
+ },
105
+ {
106
+ "from": "roadmap_md",
107
+ "to": "cc_plan",
108
+ "label": "hands off"
109
+ }
110
+ ]
111
+ },
112
+ "backlogMeta": {
113
+ "roadmapVersion": "roadmap.v2",
114
+ "skillVersion": "4.4.1",
115
+ "currentFocusStage": "Stage 2"
116
+ },
117
+ "dependencyHandoff": {
118
+ "serialSpine": "RM-010",
119
+ "parallelReadyNextWave": "-",
120
+ "notesOnBlockers": "verification is blocked until the import contract covers limits, duplicates, billing, and audit consistency"
121
+ },
122
+ "lastSyncedAt": "2026-04-19"
123
+ }
@@ -1,12 +1,14 @@
1
1
  # BACKLOG
2
2
 
3
+ > Deprecated projection. Edit `roadmap.json` instead.
4
+
3
5
  ## Backlog Meta
4
6
 
5
7
  - Roadmap version: `roadmap.v2`
6
- - Skill version: `4.4.1`
8
+ - Skill version: `5.0.0`
7
9
  - Last synced: `2026-04-19`
8
10
  - Current focus stage: `Stage 2`
9
- - Tracking source: `roadmap-tracking.json`
11
+ - Roadmap state source: `roadmap.json`
10
12
 
11
13
  ## Queue
12
14
 
@@ -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@4.4.1`, `cc-plan@3.7.1`, `cc-do@1.6.1`, `cc-check@1.10.1`, `cc-act@1.8.1`
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`
8
8
 
9
9
  This example shows verified work that is **ready to move forward**, but `cc-act` still chooses `local-handoff`.
10
10
 
@@ -36,9 +36,9 @@ But the current environment is local-only:
36
36
 
37
37
  ## Artifact Map
38
38
 
39
- - `ROADMAP.md`
40
- - `roadmap-tracking.json` (shared roadmap/backlog truth)
41
- - `BACKLOG.md`
39
+ - `roadmap.json` (editable roadmap truth)
40
+ - `ROADMAP.md` (generated view)
41
+ - `BACKLOG.md` (deprecated projection)
42
42
  - `changes/REQ-003-audit-log-export/planning/design.md`
43
43
  - `changes/REQ-003-audit-log-export/planning/tasks.md`
44
44
  - `changes/REQ-003-audit-log-export/planning/task-manifest.json`
@@ -3,7 +3,7 @@
3
3
  ## Roadmap Meta
4
4
 
5
5
  - Roadmap version: `roadmap.v3`
6
- - Skill version: `4.4.1`
6
+ - Skill version: `5.0.0`
7
7
  - Status: `active`
8
8
  - Last updated: `2026-04-16`
9
9
  - Owner / decider: `product-owner`
@@ -36,10 +36,24 @@
36
36
  - Kill signal / stop condition: if export requires a shared reporting pipeline redesign
37
37
 
38
38
  ## Implementation Tracking
39
- - Tracking source: `roadmap-tracking.json`
39
+ - Roadmap state source: `roadmap.json`
40
40
 
41
41
  <!-- roadmap-tracking:start -->
42
42
  | RM-ID | Item | Stage | Priority | Primary Capability | Secondary Capabilities | Expected Spec Delta | Depends On | Status | REQ | Progress |
43
43
  |------|------|------|------|------|------|------|------|------|------|------|
44
44
  | RM-020 | Add an audit-log export summary download | Stage 2 | P1 | cap-audit-log-export | - | codify local export summary truth | - | Local handoff | REQ-003 | 100% |
45
45
  <!-- roadmap-tracking:end -->
46
+
47
+
48
+ ## Technical Architecture
49
+
50
+ ```mermaid
51
+ flowchart TD
52
+ roadmap_json["roadmap.json"]
53
+ roadmap_md["ROADMAP.md"]
54
+ backlog_md["BACKLOG.md (deprecated)"]
55
+ cc_plan["cc-plan"]
56
+ roadmap_json -->|renders| roadmap_md
57
+ roadmap_json -->|projects| backlog_md
58
+ roadmap_md -->|hands off| cc_plan
59
+ ```
@@ -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.1`
7
+ - CC-Plan skill version: `3.7.7`
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
@@ -34,6 +34,23 @@
34
34
  - keep the action inside the current admin panel
35
35
  - Upgrade trigger to `full-design`: if export needs background generation or new reporting contracts
36
36
 
37
+ ## PRD-Grade Brief
38
+
39
+ - Problem statement: admins can review audit summary rows in the UI, but taking them into weekly reports requires manual copying.
40
+ - Solution summary: admins can download the currently visible audit summary rows as a CSV from the existing admin panel.
41
+ - Actors / personas:
42
+ - workspace admin reviewing weekly activity
43
+ - User stories:
44
+ - US-001: As a workspace admin, I want to download visible audit summary rows as CSV, so that I can include them in weekly reporting without manual copying.
45
+ - Implementation decisions:
46
+ - Export only the rows already visible in the panel.
47
+ - Keep CSV as the only output format.
48
+ - Testing decisions:
49
+ - Test through the admin panel action and visible row data.
50
+ - Existing audit summary panel tests are the prior art.
51
+ - Out of scope: JSON export, scheduled reporting, and shared reporting backend work.
52
+ - Further notes: richer machine-readable exports should become a separate requirement.
53
+
37
54
  ## Validation
38
55
 
39
56
  - Primary check: targeted panel test proves the export action is available and uses current summary rows
@@ -56,8 +73,16 @@
56
73
  - Scope scan: pass
57
74
  - Ambiguity scan: pass
58
75
  - Feasibility scan: pass
76
+ - PRD brief scan: pass; the export story and scope boundaries are explicit
77
+ - Decision question scan: pass; `D1` approved the tiny-design CSV-export boundary
59
78
  - Final recommendation: approved as `tiny-design`
60
79
 
80
+ ## Decision Questions
81
+
82
+ | ID | Gate | Known evidence | Recommendation | User choice | Impact on `cc-do` | Status |
83
+ |----|------|----------------|----------------|-------------|-------------------|--------|
84
+ | 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 |
85
+
61
86
  ## Approval
62
87
 
63
88
  - User approval status: approved
@@ -5,6 +5,61 @@
5
5
  "updatedAt": "2026-04-16T14:20:00.000Z",
6
6
  "requirementId": "REQ-003",
7
7
  "requirementVersion": "REQ-003.v1",
8
+ "planningMeta": {
9
+ "reqPlanSkillVersion": "3.7.7",
10
+ "designVersion": "design.v1",
11
+ "approvedAt": "2026-04-16T13:10:00.000Z",
12
+ "approvedBy": "user",
13
+ "basedOnOption": "Tiny design card",
14
+ "requirementBrief": {
15
+ "problemStatement": "Admins can review audit summary rows in the UI, but weekly reporting requires manual copying.",
16
+ "solutionSummary": "Add a CSV download action for the currently visible audit summary rows.",
17
+ "actors": ["workspace admin reviewing weekly activity"],
18
+ "userStories": [
19
+ {
20
+ "id": "US-001",
21
+ "actor": "workspace admin",
22
+ "want": "download visible audit summary rows as CSV",
23
+ "benefit": "include them in weekly reporting without manual copying",
24
+ "acceptance": ["Panel behavior test proves the export action uses current summary rows"]
25
+ }
26
+ ],
27
+ "edgeOrRecoveryStories": [],
28
+ "implementationDecisions": ["Export only rows already visible in the panel", "Keep CSV as the only output format"],
29
+ "testingDecisions": ["Test through the admin panel action and visible row data"],
30
+ "outOfScope": ["JSON export", "scheduled reporting", "shared reporting backend"],
31
+ "furtherNotes": ["Richer machine-readable exports should become a separate requirement"]
32
+ },
33
+ "decisionQuestions": [
34
+ {
35
+ "questionId": "D1",
36
+ "gate": "approach-approval",
37
+ "knownEvidence": ["Existing admin panel already owns the visible summary rows", "No reporting backend is needed for the first useful export"],
38
+ "recommendation": "Approve the tiny-design CSV export",
39
+ "options": [
40
+ {
41
+ "id": "A",
42
+ "label": "Tiny design CSV export",
43
+ "recommended": true,
44
+ "completeness": "8/10",
45
+ "good": "Solves weekly reporting friction with the current panel data",
46
+ "costRisk": "Does not handle JSON, scheduling, or shared reporting contracts"
47
+ },
48
+ {
49
+ "id": "B",
50
+ "label": "Shared reporting pipeline",
51
+ "recommended": false,
52
+ "completeness": "10/10",
53
+ "good": "Could support more formats and future scheduled reports",
54
+ "costRisk": "Creates a larger platform surface before the local export is proven"
55
+ }
56
+ ],
57
+ "userChoice": "A",
58
+ "impact": "cc-do exports only visible rows from the current panel and avoids new reporting contracts",
59
+ "status": "answered"
60
+ }
61
+ ]
62
+ },
8
63
  "currentTaskId": null,
9
64
  "activePhase": null,
10
65
  "tasks": [