cc-devflow 4.5.10 → 4.5.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/skills/cc-act/CHANGELOG.md +23 -0
- package/.claude/skills/cc-act/PLAYBOOK.md +17 -269
- package/.claude/skills/cc-act/SKILL.md +38 -418
- package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_INDEX_TEMPLATE.md +2 -13
- package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_TEMPLATE.md +1 -9
- package/.claude/skills/cc-act/assets/PR_BRIEF_TEMPLATE.md +21 -177
- package/.claude/skills/cc-act/references/closure-contract.md +12 -63
- package/.claude/skills/cc-act/references/git-commit-guidelines.md +5 -5
- package/.claude/skills/cc-act/scripts/cc-act-common.sh +5 -322
- package/.claude/skills/cc-act/scripts/detect-ship-target.sh +11 -2
- package/.claude/skills/cc-act/scripts/inspect-git-index.sh +58 -0
- package/.claude/skills/cc-act/scripts/render-pr-brief.sh +40 -440
- package/.claude/skills/cc-act/scripts/verify-act-gate.sh +10 -50
- package/.claude/skills/cc-check/CHANGELOG.md +24 -0
- package/.claude/skills/cc-check/PLAYBOOK.md +19 -273
- package/.claude/skills/cc-check/SKILL.md +33 -454
- package/.claude/skills/cc-check/references/review-contract.md +12 -147
- package/.claude/skills/cc-dev/CHANGELOG.md +20 -0
- package/.claude/skills/cc-dev/PLAYBOOK.md +1 -1
- package/.claude/skills/cc-dev/SKILL.md +52 -130
- package/.claude/skills/cc-dev/scripts/resolve-cc-devflow.sh +181 -0
- package/.claude/skills/cc-do/CHANGELOG.md +17 -0
- package/.claude/skills/cc-do/PLAYBOOK.md +19 -113
- package/.claude/skills/cc-do/SKILL.md +39 -236
- package/.claude/skills/cc-do/references/execution-recovery.md +15 -109
- package/.claude/skills/cc-do/scripts/cc-do-common.sh +5 -57
- package/.claude/skills/cc-do/scripts/check-task-status.sh +35 -65
- package/.claude/skills/cc-do/scripts/mark-task-complete.sh +9 -46
- package/.claude/skills/cc-do/scripts/select-ready-tasks.sh +29 -97
- package/.claude/skills/cc-investigate/CHANGELOG.md +23 -0
- package/.claude/skills/cc-investigate/PLAYBOOK.md +20 -180
- package/.claude/skills/cc-investigate/SKILL.md +65 -513
- package/.claude/skills/cc-investigate/assets/TASKS_TEMPLATE.md +48 -95
- package/.claude/skills/cc-investigate/references/investigation-contract.md +14 -217
- package/.claude/skills/cc-next/CHANGELOG.md +6 -0
- package/.claude/skills/cc-next/PLAYBOOK.md +12 -8
- package/.claude/skills/cc-next/SKILL.md +34 -140
- package/.claude/skills/cc-plan/CHANGELOG.md +29 -0
- package/.claude/skills/cc-plan/PLAYBOOK.md +22 -161
- package/.claude/skills/cc-plan/SKILL.md +47 -640
- package/.claude/skills/cc-plan/assets/TASKS_TEMPLATE.md +30 -225
- package/.claude/skills/cc-plan/references/planning-contract.md +24 -160
- package/.claude/skills/cc-plan/scripts/next-change-key.sh +8 -44
- package/.claude/skills/cc-plan/scripts/parse-task-dependencies.js +2 -2
- package/.claude/skills/cc-plan/scripts/validate-scope.sh +1 -1
- package/.claude/skills/cc-pr-land/SKILL.md +14 -114
- package/.claude/skills/cc-pr-review/CHANGELOG.md +4 -0
- package/.claude/skills/cc-pr-review/SKILL.md +20 -103
- package/.claude/skills/cc-review/CHANGELOG.md +17 -0
- package/.claude/skills/cc-review/PLAYBOOK.md +13 -86
- package/.claude/skills/cc-review/SKILL.md +53 -241
- package/.claude/skills/cc-review/references/e2e-and-plugin-verification.md +2 -2
- package/.claude/skills/cc-review/references/implementation-review-branch.md +7 -147
- package/.claude/skills/cc-review/references/plan-review-branch.md +5 -147
- package/.claude/skills/cc-review/references/review-methods.md +10 -218
- package/.claude/skills/cc-review/scripts/collect-review-context.sh +4 -63
- package/.claude/skills/cc-roadmap/PLAYBOOK.md +1 -1
- package/.claude/skills/cc-roadmap/SKILL.md +3 -3
- package/.claude/skills/cc-simplify/CHANGELOG.md +7 -0
- package/.claude/skills/cc-simplify/SKILL.md +26 -21
- package/.claude/skills/cc-spec-init/PLAYBOOK.md +12 -48
- package/.claude/skills/cc-spec-init/SKILL.md +29 -132
- package/.claude/skills/cc-spec-init/references/spec-contract.md +8 -17
- package/CHANGELOG.md +27 -0
- package/README.md +5 -3
- package/README.zh-CN.md +5 -3
- package/bin/cc-devflow-cli.js +20 -260
- package/bin/cc-devflow.js +44 -7
- package/docs/commands/README.md +1 -1
- package/docs/commands/README.zh-CN.md +1 -1
- package/docs/examples/README.md +1 -1
- package/docs/examples/START-HERE.md +14 -14
- package/docs/examples/example-bindings.json +11 -11
- package/docs/examples/full-design-blocked/README.md +4 -6
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/{planning/tasks.md → task.md} +20 -15
- package/docs/examples/local-handoff/README.md +8 -11
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/handoff/pr-brief.md +31 -0
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/{planning/tasks.md → task.md} +18 -13
- package/docs/examples/pdca-loop/README.md +6 -9
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/handoff/pr-brief.md +9 -11
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/{planning/tasks.md → task.md} +18 -13
- package/docs/examples/scripts/check-example-bindings.sh +11 -62
- package/docs/guides/artifact-contract.md +10 -36
- package/docs/guides/getting-started.md +8 -7
- package/docs/guides/getting-started.zh-CN.md +8 -7
- package/docs/guides/minimize-artifacts.md +16 -116
- package/docs/guides/project-postmortem.md +14 -71
- package/lib/compiler/__tests__/skills-registry.test.js +9 -8
- package/lib/compiler/resource-copier.js +29 -0
- package/lib/skill-runtime/__tests__/archive-change.test.js +2 -2
- package/lib/skill-runtime/__tests__/benchmark-skills.test.js +109 -0
- package/lib/skill-runtime/__tests__/cli-bootstrap.integration.test.js +14 -4
- package/lib/skill-runtime/errors.js +3 -3
- package/lib/skill-runtime/index.js +5 -23
- package/lib/skill-runtime/paths.js +5 -52
- package/lib/skill-runtime/query-registry.js +4 -4
- package/lib/skill-runtime/query.js +89 -201
- package/lib/skill-runtime/store.js +4 -40
- package/lib/skill-runtime/trace.js +2 -2
- package/package.json +5 -7
- package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_PRINCIPLES_TEMPLATE.md +0 -29
- package/.claude/skills/cc-act/assets/RELEASE_NOTE_TEMPLATE.md +0 -54
- package/.claude/skills/cc-act/scripts/generate-status-report.sh +0 -92
- package/.claude/skills/cc-act/scripts/sync-act-docs.sh +0 -355
- package/.claude/skills/cc-check/assets/REPORT_CARD_TEMPLATE.json +0 -234
- package/.claude/skills/cc-check/scripts/render-report-card.js +0 -438
- package/.claude/skills/cc-check/scripts/verify-gate.sh +0 -85
- package/.claude/skills/cc-do/scripts/build-task-context.sh +0 -175
- package/.claude/skills/cc-do/scripts/record-review-decision.sh +0 -88
- package/.claude/skills/cc-do/scripts/recover-workflow.sh +0 -82
- package/.claude/skills/cc-do/scripts/run-problem-analysis.sh +0 -70
- package/.claude/skills/cc-do/scripts/verify-task-gates.sh +0 -109
- package/.claude/skills/cc-do/scripts/write-task-checkpoint.sh +0 -92
- package/.claude/skills/cc-investigate/assets/TASK_MANIFEST_TEMPLATE.json +0 -225
- package/.claude/skills/cc-plan/assets/TASK_MANIFEST_TEMPLATE.json +0 -179
- package/.claude/skills/cc-spec-init/assets/CHANGE_META_TEMPLATE.json +0 -28
- package/.claude/skills/cc-spec-init/scripts/validate-spec-links.sh +0 -45
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/design.md +0 -234
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json +0 -488
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/review/report-card.json +0 -189
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/handoff/resume-index.md +0 -39
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/handoff/status.md +0 -29
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/design.md +0 -123
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json +0 -292
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/review/report-card.json +0 -136
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/handoff/status.md +0 -29
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/design.md +0 -124
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json +0 -292
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/review/report-card.json +0 -136
- package/docs/get-shit-done-strategy-audit.md +0 -518
- package/docs/skill-runtime-migration.md +0 -46
- package/lib/skill-runtime/__tests__/approve.test.js +0 -92
- package/lib/skill-runtime/__tests__/autopilot.test.js +0 -253
- package/lib/skill-runtime/__tests__/benchmark-artifacts.test.js +0 -165
- package/lib/skill-runtime/__tests__/delegation.test.js +0 -97
- package/lib/skill-runtime/__tests__/dispatch.test.js +0 -237
- package/lib/skill-runtime/__tests__/intent.test.js +0 -203
- package/lib/skill-runtime/__tests__/lifecycle.test.js +0 -169
- package/lib/skill-runtime/__tests__/planner.tdd.test.js +0 -331
- package/lib/skill-runtime/__tests__/prepare-pr.test.js +0 -126
- package/lib/skill-runtime/__tests__/query.test.js +0 -860
- package/lib/skill-runtime/__tests__/readiness.test.js +0 -53
- package/lib/skill-runtime/__tests__/release.test.js +0 -85
- package/lib/skill-runtime/__tests__/review-check-integration.test.js +0 -148
- package/lib/skill-runtime/__tests__/review-records.test.js +0 -619
- package/lib/skill-runtime/__tests__/runtime.integration.test.js +0 -351
- package/lib/skill-runtime/__tests__/schemas.test.js +0 -337
- package/lib/skill-runtime/__tests__/task-contract-migrate.test.js +0 -137
- package/lib/skill-runtime/__tests__/task-contract.test.js +0 -783
- package/lib/skill-runtime/__tests__/team-state.test.js +0 -51
- package/lib/skill-runtime/__tests__/verify-artifacts.test.js +0 -203
- package/lib/skill-runtime/__tests__/worker-run.test.js +0 -275
- package/lib/skill-runtime/__tests__/worker.test.js +0 -56
- package/lib/skill-runtime/__tests__/workflow-context-legacy-fallback.test.js +0 -31
- package/lib/skill-runtime/__tests__/workflow-context.test.js +0 -98
- package/lib/skill-runtime/artifacts.js +0 -88
- package/lib/skill-runtime/context-index.js +0 -545
- package/lib/skill-runtime/delegation.js +0 -533
- package/lib/skill-runtime/intent.js +0 -309
- package/lib/skill-runtime/lifecycle.js +0 -294
- package/lib/skill-runtime/operations/CLAUDE.md +0 -19
- package/lib/skill-runtime/operations/approve.js +0 -81
- package/lib/skill-runtime/operations/autopilot-core.js +0 -337
- package/lib/skill-runtime/operations/autopilot-execution.js +0 -307
- package/lib/skill-runtime/operations/autopilot-shared.js +0 -48
- package/lib/skill-runtime/operations/autopilot.js +0 -163
- package/lib/skill-runtime/operations/dispatch.js +0 -416
- package/lib/skill-runtime/operations/init.js +0 -60
- package/lib/skill-runtime/operations/janitor.js +0 -61
- package/lib/skill-runtime/operations/plan.js +0 -59
- package/lib/skill-runtime/operations/prepare-pr.js +0 -25
- package/lib/skill-runtime/operations/release.js +0 -99
- package/lib/skill-runtime/operations/resume.js +0 -126
- package/lib/skill-runtime/operations/review-records.js +0 -265
- package/lib/skill-runtime/operations/snapshot.js +0 -45
- package/lib/skill-runtime/operations/task-contract.js +0 -524
- package/lib/skill-runtime/operations/verify.js +0 -170
- package/lib/skill-runtime/operations/worker-run.js +0 -531
- package/lib/skill-runtime/operations/worker.js +0 -33
- package/lib/skill-runtime/planner.js +0 -539
- package/lib/skill-runtime/readiness.js +0 -84
- package/lib/skill-runtime/review-records.js +0 -123
- package/lib/skill-runtime/review.js +0 -855
- package/lib/skill-runtime/schemas.js +0 -746
- package/lib/skill-runtime/task-contract.js +0 -187
- package/lib/skill-runtime/team-state.js +0 -122
- package/lib/skill-runtime/workflow-context.js +0 -748
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
# DESIGN
|
|
2
|
-
|
|
3
|
-
## Document Meta
|
|
4
|
-
|
|
5
|
-
- Requirement version: `REQ-001.v1`
|
|
6
|
-
- Design version: `design.v1`
|
|
7
|
-
- CC-Plan skill version: `3.9.0`
|
|
8
|
-
- Work branch: `REQ/001-copy-invite-link`
|
|
9
|
-
- Requirement ID: `REQ-001`
|
|
10
|
-
- Design mode: `tiny-design`
|
|
11
|
-
- Why this stays `tiny-design`: the patch is limited to an existing dialog and test file, with no API or data model changes
|
|
12
|
-
- Approval status: `approved`
|
|
13
|
-
- Source roadmap item: `RM-001`
|
|
14
|
-
- Source roadmap version: `roadmap.v1`
|
|
15
|
-
|
|
16
|
-
## Source Handoff
|
|
17
|
-
|
|
18
|
-
- Why now: Stage 1 needs the smallest possible share-flow win
|
|
19
|
-
- Inherited success signal: a user can copy the invite link with one click
|
|
20
|
-
- Inherited kill signal: if the patch requires backend or permission changes, reopen planning
|
|
21
|
-
- Inherited non-goals: no invite role controls, no analytics, no dialog redesign
|
|
22
|
-
- Upstream evidence: repeated support notes and observed manual copying
|
|
23
|
-
|
|
24
|
-
## Frozen Design Card
|
|
25
|
-
|
|
26
|
-
- Change: add a `Copy invite link` button beside the existing read-only invite URL in the share dialog
|
|
27
|
-
- Keep out: no new invite generation flow and no fallback redesign for unsupported browsers
|
|
28
|
-
- Touched files:
|
|
29
|
-
- `src/features/share/ShareDialog.tsx`
|
|
30
|
-
- `src/features/share/ShareDialog.test.tsx`
|
|
31
|
-
- Contract changes: none; reuse the existing invite link source and existing dialog props
|
|
32
|
-
- Key decisions that `cc-do` must not re-decide:
|
|
33
|
-
- use `navigator.clipboard.writeText`
|
|
34
|
-
- keep the current invite URL source of truth
|
|
35
|
-
- show a lightweight copied-state confirmation inside the current dialog
|
|
36
|
-
- Upgrade trigger to `full-design`: if clipboard support requires new platform fallbacks, or if the patch spills into shared share-service contracts
|
|
37
|
-
|
|
38
|
-
## PRD-Grade Brief
|
|
39
|
-
|
|
40
|
-
- Problem statement: users can see the invite URL, but copying it still requires manual selection and creates avoidable share-flow friction.
|
|
41
|
-
- Solution summary: users get a one-click copy action in the existing share dialog and see lightweight confirmation after the link is copied.
|
|
42
|
-
- Actors / personas:
|
|
43
|
-
- workspace member sharing an invite
|
|
44
|
-
- User stories:
|
|
45
|
-
- US-001: As a workspace member, I want to copy the invite link with one click, so that I can share it without manually selecting text.
|
|
46
|
-
- Implementation decisions:
|
|
47
|
-
- Reuse the existing invite URL source and dialog props.
|
|
48
|
-
- Keep clipboard behavior inside the current share dialog surface.
|
|
49
|
-
- Testing decisions:
|
|
50
|
-
- Test through the dialog behavior, not an internal helper.
|
|
51
|
-
- Existing share-dialog tests are the prior art.
|
|
52
|
-
- Out of scope: new invite generation, role controls, analytics, or clipboard fallback redesign.
|
|
53
|
-
- Further notes: if confirmation remains unclear, open a separate UX requirement.
|
|
54
|
-
|
|
55
|
-
## Validation
|
|
56
|
-
|
|
57
|
-
- Primary check: targeted dialog test proves the button renders and copies the current invite URL
|
|
58
|
-
- Secondary checks:
|
|
59
|
-
- existing share dialog tests remain green
|
|
60
|
-
- lint stays green for the touched files
|
|
61
|
-
- Evidence to collect:
|
|
62
|
-
- failing test before implementation
|
|
63
|
-
- passing targeted test after implementation
|
|
64
|
-
- fresh gate output for `cc-check`
|
|
65
|
-
|
|
66
|
-
## Main Risk
|
|
67
|
-
|
|
68
|
-
- Risk: copied-state feedback may be too subtle for users
|
|
69
|
-
- Mitigation: keep the first patch minimal and log a follow-up roadmap item if support friction remains
|
|
70
|
-
|
|
71
|
-
## AI Leverage Decision Lens
|
|
72
|
-
|
|
73
|
-
- Real user / operator: workspace member sharing an invite
|
|
74
|
-
- Status quo workaround: manually select the visible invite URL
|
|
75
|
-
- Human-team effort for full scope: about half a day for one engineer including test and review
|
|
76
|
-
- CC / agent effort for full scope: about 20 minutes for a targeted UI patch plus test update
|
|
77
|
-
- AI compression ratio: roughly 10x for this bounded UI slice
|
|
78
|
-
- Complete-lake boundary: copy action, current invite URL source, copied-state feedback, and dialog behavior test
|
|
79
|
-
- Ocean boundary: invite generation, permissions, analytics, and clipboard fallback redesign
|
|
80
|
-
- Scope recommendation: `boil-lake`
|
|
81
|
-
- Cost model: low agent time, low human review time, targeted dialog test, no backend maintenance cost, reversible UI patch
|
|
82
|
-
- Verdict: `boil-lake`
|
|
83
|
-
- Missing evidence or pivot reason: none
|
|
84
|
-
|
|
85
|
-
## External Best-Practice Validation
|
|
86
|
-
|
|
87
|
-
- Needed: No
|
|
88
|
-
- Decision status: not-needed
|
|
89
|
-
- Generalized search terms:
|
|
90
|
-
- Sources checked:
|
|
91
|
-
- Repo-fit verdict: skipped
|
|
92
|
-
- Changes to frozen design:
|
|
93
|
-
- Skipped reason: existing share-dialog behavior and repo tests are sufficient for the tiny design
|
|
94
|
-
|
|
95
|
-
## Review Gate
|
|
96
|
-
|
|
97
|
-
- Placeholder scan: pass
|
|
98
|
-
- Consistency scan: pass; scope, files, and validation all point to the same tiny patch
|
|
99
|
-
- Scope scan: pass; no backend, no permission work
|
|
100
|
-
- Ambiguity scan: pass; execution does not need to re-decide button placement or clipboard source
|
|
101
|
-
- Feasibility scan: pass; existing dialog and tests already cover the target surface
|
|
102
|
-
- PRD brief scan: pass; problem, story, implementation decision, testing decision, and out-of-scope are durable
|
|
103
|
-
- AI Leverage Decision Lens scan: pass; bounded same-dialog lake is cheap enough to complete, not just render a happy-path button
|
|
104
|
-
- External best-practice scan: pass; not needed for a repo-local tiny design
|
|
105
|
-
- Decision question scan: pass; `D1` approved the tiny-design copy-action boundary
|
|
106
|
-
- Final recommendation: approved as `tiny-design`
|
|
107
|
-
|
|
108
|
-
## Decision Questions
|
|
109
|
-
|
|
110
|
-
| ID | Gate | Known evidence | Recommendation | User choice | Impact on `cc-do` | Status |
|
|
111
|
-
|----|------|----------------|----------------|-------------|-------------------|--------|
|
|
112
|
-
| D1 | approach-approval | Existing dialog already renders the invite URL and the change stays inside one UI/test surface | Approve the tiny-design copy action | Tiny design copy action | Keep implementation inside the share dialog; do not add backend or permission work | answered |
|
|
113
|
-
|
|
114
|
-
## Approval
|
|
115
|
-
|
|
116
|
-
- User approval status: approved
|
|
117
|
-
- Deferred questions:
|
|
118
|
-
- if copied-state feedback still feels weak, open a separate requirement for richer UX
|
|
119
|
-
|
|
120
|
-
## First-Read Test
|
|
121
|
-
|
|
122
|
-
- This is clearly small because it stays inside one UI surface and one test surface
|
|
123
|
-
- The upgrade path is explicit: any contract or fallback work forces `full-design`
|
|
124
|
-
- `cc-do` should not need to ask where the URL comes from or how the copy action is triggered
|
package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json
DELETED
|
@@ -1,292 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"changeId": "REQ-001",
|
|
3
|
-
"goal": "Add a one-click copy action to the existing share dialog without changing backend contracts.",
|
|
4
|
-
"createdAt": "2026-04-15T10:00:00.000Z",
|
|
5
|
-
"updatedAt": "2026-04-15T11:10:00.000Z",
|
|
6
|
-
"requirementId": "REQ-001",
|
|
7
|
-
"requirementVersion": "REQ-001.v1",
|
|
8
|
-
"planningMeta": {
|
|
9
|
-
"reqPlanSkillVersion": "3.9.0",
|
|
10
|
-
"designVersion": "design.v1",
|
|
11
|
-
"workBranch": "REQ/001-copy-invite-link",
|
|
12
|
-
"approvedAt": "2026-04-15T10:05:00.000Z",
|
|
13
|
-
"basedOnOption": "Tiny design card",
|
|
14
|
-
"aiLeverageDecisionLens": {
|
|
15
|
-
"realUserOrOperator": "workspace member sharing an invite",
|
|
16
|
-
"statusQuoWorkaround": "manual selection and copy of the visible invite URL",
|
|
17
|
-
"humanTeamEffortForFullScope": "about half a day for one engineer including test and review",
|
|
18
|
-
"ccAgentEffortForFullScope": "about 20 minutes for a targeted UI patch plus test update",
|
|
19
|
-
"aiCompressionRatio": "roughly 10x for this bounded UI slice",
|
|
20
|
-
"completeLakeBoundary": "copy action, current invite URL source, copied-state feedback, and dialog behavior test",
|
|
21
|
-
"oceanBoundary": "invite generation, permissions, analytics, or clipboard fallback redesign",
|
|
22
|
-
"scopeRecommendation": "boil-lake",
|
|
23
|
-
"costModel": {
|
|
24
|
-
"agentTime": "low",
|
|
25
|
-
"humanReviewTime": "low",
|
|
26
|
-
"verificationCost": "targeted dialog test",
|
|
27
|
-
"maintenanceCost": "low while scoped to the dialog",
|
|
28
|
-
"failureCost": "sharing friction remains",
|
|
29
|
-
"reversibility": "reversible UI patch"
|
|
30
|
-
},
|
|
31
|
-
"verdict": "boil-lake",
|
|
32
|
-
"missingEvidenceOrPivotReason": "",
|
|
33
|
-
"impactOnApprovedDirection": "cover the full same-dialog copy lake instead of only a happy-path button render"
|
|
34
|
-
},
|
|
35
|
-
"externalBestPractice": {
|
|
36
|
-
"needed": false,
|
|
37
|
-
"decisionStatus": "not-needed",
|
|
38
|
-
"decisionQuestionId": "",
|
|
39
|
-
"privacyGuard": "generalized terms only; no project names, private requirements, customer names, secrets, logs, or proprietary concepts",
|
|
40
|
-
"generalizedSearchTerms": [],
|
|
41
|
-
"sourcesChecked": [],
|
|
42
|
-
"conventionalWisdom": "",
|
|
43
|
-
"currentDiscourse": "",
|
|
44
|
-
"repoFitVerdict": "skipped",
|
|
45
|
-
"designImpacts": [],
|
|
46
|
-
"skippedReason": "existing share-dialog behavior and repo tests are sufficient for the tiny design"
|
|
47
|
-
},
|
|
48
|
-
"decisionQuestions": [
|
|
49
|
-
{
|
|
50
|
-
"questionId": "D1",
|
|
51
|
-
"gate": "approach-approval",
|
|
52
|
-
"knownEvidence": [
|
|
53
|
-
"Existing dialog already renders the invite URL",
|
|
54
|
-
"The patch stays inside one UI/test surface"
|
|
55
|
-
],
|
|
56
|
-
"recommendation": "Approve the tiny-design copy action",
|
|
57
|
-
"options": [
|
|
58
|
-
{
|
|
59
|
-
"id": "A",
|
|
60
|
-
"label": "Tiny design copy action",
|
|
61
|
-
"recommended": true,
|
|
62
|
-
"completeness": "8/10",
|
|
63
|
-
"good": "Ships the visible user win with one dialog and one behavior test",
|
|
64
|
-
"costRisk": "Leaves richer feedback and clipboard fallback work for later"
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
"id": "B",
|
|
68
|
-
"label": "Full share-flow redesign",
|
|
69
|
-
"recommended": false,
|
|
70
|
-
"completeness": "10/10",
|
|
71
|
-
"good": "Could solve broader invite UX issues in one larger pass",
|
|
72
|
-
"costRisk": "Expands beyond the roadmap wedge and touches unrelated share contracts"
|
|
73
|
-
}
|
|
74
|
-
],
|
|
75
|
-
"userChoice": "A",
|
|
76
|
-
"impact": "cc-do keeps implementation inside the share dialog and avoids backend or permission work",
|
|
77
|
-
"status": "answered"
|
|
78
|
-
}
|
|
79
|
-
]
|
|
80
|
-
},
|
|
81
|
-
"currentTaskId": null,
|
|
82
|
-
"tasks": [
|
|
83
|
-
{
|
|
84
|
-
"id": "T001",
|
|
85
|
-
"title": "[TEST] Add a failing dialog test for the missing copy action",
|
|
86
|
-
"type": "TEST",
|
|
87
|
-
"phase": 1,
|
|
88
|
-
"parallel": false,
|
|
89
|
-
"dependsOn": [],
|
|
90
|
-
"touches": [
|
|
91
|
-
"share-dialog",
|
|
92
|
-
"tests"
|
|
93
|
-
],
|
|
94
|
-
"files": [
|
|
95
|
-
"src/features/share/ShareDialog.test.tsx"
|
|
96
|
-
],
|
|
97
|
-
"run": [
|
|
98
|
-
"npm test -- src/features/share/ShareDialog.test.tsx"
|
|
99
|
-
],
|
|
100
|
-
"checks": [
|
|
101
|
-
"test fails before implementation"
|
|
102
|
-
],
|
|
103
|
-
"acceptance": [
|
|
104
|
-
"The missing copy action is reproduced as a failing test"
|
|
105
|
-
],
|
|
106
|
-
"verification": [
|
|
107
|
-
"npm test -- src/features/share/ShareDialog.test.tsx"
|
|
108
|
-
],
|
|
109
|
-
"evidence": [
|
|
110
|
-
"Failing test output"
|
|
111
|
-
],
|
|
112
|
-
"context": {
|
|
113
|
-
"readFiles": [
|
|
114
|
-
"design.md",
|
|
115
|
-
"tasks.md",
|
|
116
|
-
"src/features/share/ShareDialog.tsx"
|
|
117
|
-
],
|
|
118
|
-
"commands": [
|
|
119
|
-
"npm test -- src/features/share/ShareDialog.test.tsx"
|
|
120
|
-
],
|
|
121
|
-
"notes": [
|
|
122
|
-
"Do not change share-service contracts in this task"
|
|
123
|
-
]
|
|
124
|
-
},
|
|
125
|
-
"reviews": {
|
|
126
|
-
"spec": "pass",
|
|
127
|
-
"code": "pass"
|
|
128
|
-
},
|
|
129
|
-
"status": "passed",
|
|
130
|
-
"attempts": 1,
|
|
131
|
-
"maxRetries": 1,
|
|
132
|
-
"tddPhase": "red",
|
|
133
|
-
"verticalSlice": "Slice 1",
|
|
134
|
-
"testSeam": {
|
|
135
|
-
"entry": "share dialog UI behavior",
|
|
136
|
-
"behaviorAsserted": "The missing copy action is reproduced as a failing test",
|
|
137
|
-
"specStyleTestName": "The missing copy action is reproduced as a failing test",
|
|
138
|
-
"oneLogicalBehavior": true,
|
|
139
|
-
"publicVerificationPath": "Run the share dialog test and observe the copy action through the rendered dialog",
|
|
140
|
-
"implementationDetailRisk": "low"
|
|
141
|
-
},
|
|
142
|
-
"feedbackLoop": {
|
|
143
|
-
"type": "automated-test",
|
|
144
|
-
"determinism": "deterministic",
|
|
145
|
-
"expectedFailure": "Fails before the behavior exists"
|
|
146
|
-
}
|
|
147
|
-
},
|
|
148
|
-
{
|
|
149
|
-
"id": "T002",
|
|
150
|
-
"title": "[IMPL] Add the copy button and copied-state confirmation",
|
|
151
|
-
"type": "IMPL",
|
|
152
|
-
"phase": 1,
|
|
153
|
-
"parallel": false,
|
|
154
|
-
"dependsOn": [
|
|
155
|
-
"T001"
|
|
156
|
-
],
|
|
157
|
-
"touches": [
|
|
158
|
-
"share-dialog"
|
|
159
|
-
],
|
|
160
|
-
"files": [
|
|
161
|
-
"src/features/share/ShareDialog.tsx"
|
|
162
|
-
],
|
|
163
|
-
"run": [
|
|
164
|
-
"npm test -- src/features/share/ShareDialog.test.tsx"
|
|
165
|
-
],
|
|
166
|
-
"checks": [
|
|
167
|
-
"dialog test passes after implementation"
|
|
168
|
-
],
|
|
169
|
-
"acceptance": [
|
|
170
|
-
"The dialog exposes a copy button and confirms the copied state"
|
|
171
|
-
],
|
|
172
|
-
"verification": [
|
|
173
|
-
"npm test -- src/features/share/ShareDialog.test.tsx"
|
|
174
|
-
],
|
|
175
|
-
"evidence": [
|
|
176
|
-
"Passing targeted test output",
|
|
177
|
-
"Checkpoint summary"
|
|
178
|
-
],
|
|
179
|
-
"context": {
|
|
180
|
-
"readFiles": [
|
|
181
|
-
"design.md",
|
|
182
|
-
"tasks.md",
|
|
183
|
-
"src/features/share/ShareDialog.test.tsx"
|
|
184
|
-
],
|
|
185
|
-
"commands": [
|
|
186
|
-
"npm test -- src/features/share/ShareDialog.test.tsx"
|
|
187
|
-
],
|
|
188
|
-
"notes": [
|
|
189
|
-
"Keep the patch inside the existing dialog"
|
|
190
|
-
]
|
|
191
|
-
},
|
|
192
|
-
"reviews": {
|
|
193
|
-
"spec": "pass",
|
|
194
|
-
"code": "pass"
|
|
195
|
-
},
|
|
196
|
-
"status": "passed",
|
|
197
|
-
"attempts": 1,
|
|
198
|
-
"maxRetries": 1,
|
|
199
|
-
"tddPhase": "green",
|
|
200
|
-
"verticalSlice": "Slice 2",
|
|
201
|
-
"testSeam": {
|
|
202
|
-
"entry": "share dialog UI behavior",
|
|
203
|
-
"behaviorAsserted": "The dialog exposes a copy button and confirms the copied state",
|
|
204
|
-
"specStyleTestName": "The dialog exposes a copy button and confirms the copied state",
|
|
205
|
-
"oneLogicalBehavior": true,
|
|
206
|
-
"publicVerificationPath": "Run the share dialog test and observe the copy action through the rendered dialog",
|
|
207
|
-
"implementationDetailRisk": "low"
|
|
208
|
-
},
|
|
209
|
-
"feedbackLoop": {
|
|
210
|
-
"type": "automated-test",
|
|
211
|
-
"determinism": "deterministic",
|
|
212
|
-
"expectedFailure": ""
|
|
213
|
-
}
|
|
214
|
-
},
|
|
215
|
-
{
|
|
216
|
-
"id": "T003",
|
|
217
|
-
"title": "Run targeted checks and collect fresh evidence",
|
|
218
|
-
"type": "OTHER",
|
|
219
|
-
"phase": 2,
|
|
220
|
-
"parallel": false,
|
|
221
|
-
"dependsOn": [
|
|
222
|
-
"T002"
|
|
223
|
-
],
|
|
224
|
-
"touches": [
|
|
225
|
-
"quality-gates"
|
|
226
|
-
],
|
|
227
|
-
"files": [
|
|
228
|
-
"src/features/share/ShareDialog.tsx",
|
|
229
|
-
"src/features/share/ShareDialog.test.tsx"
|
|
230
|
-
],
|
|
231
|
-
"run": [
|
|
232
|
-
"npm test -- src/features/share/ShareDialog.test.tsx",
|
|
233
|
-
"npm run lint -- src/features/share/ShareDialog.tsx"
|
|
234
|
-
],
|
|
235
|
-
"checks": [
|
|
236
|
-
"targeted test passes",
|
|
237
|
-
"lint passes"
|
|
238
|
-
],
|
|
239
|
-
"acceptance": [
|
|
240
|
-
"Fresh verification evidence is ready for cc-check"
|
|
241
|
-
],
|
|
242
|
-
"verification": [
|
|
243
|
-
"npm test -- src/features/share/ShareDialog.test.tsx",
|
|
244
|
-
"npm run lint -- src/features/share/ShareDialog.tsx"
|
|
245
|
-
],
|
|
246
|
-
"evidence": [
|
|
247
|
-
"Passing targeted test output",
|
|
248
|
-
"Clean lint output"
|
|
249
|
-
],
|
|
250
|
-
"context": {
|
|
251
|
-
"readFiles": [
|
|
252
|
-
"tasks.md",
|
|
253
|
-
"task-manifest.json"
|
|
254
|
-
],
|
|
255
|
-
"commands": [
|
|
256
|
-
"npm test -- src/features/share/ShareDialog.test.tsx",
|
|
257
|
-
"npm run lint -- src/features/share/ShareDialog.tsx"
|
|
258
|
-
],
|
|
259
|
-
"notes": [
|
|
260
|
-
"Collect only fresh evidence from this run"
|
|
261
|
-
]
|
|
262
|
-
},
|
|
263
|
-
"reviews": {
|
|
264
|
-
"spec": "pass",
|
|
265
|
-
"code": "pass"
|
|
266
|
-
},
|
|
267
|
-
"status": "passed",
|
|
268
|
-
"attempts": 1,
|
|
269
|
-
"maxRetries": 1,
|
|
270
|
-
"tddPhase": "evidence",
|
|
271
|
-
"verticalSlice": "Slice 3",
|
|
272
|
-
"testSeam": {
|
|
273
|
-
"entry": "share dialog UI behavior",
|
|
274
|
-
"behaviorAsserted": "Fresh verification evidence is ready for cc-check",
|
|
275
|
-
"specStyleTestName": "Fresh verification evidence is ready for cc-check",
|
|
276
|
-
"oneLogicalBehavior": true,
|
|
277
|
-
"publicVerificationPath": "Run the share dialog test and observe the copy action through the rendered dialog",
|
|
278
|
-
"implementationDetailRisk": "low"
|
|
279
|
-
},
|
|
280
|
-
"feedbackLoop": {
|
|
281
|
-
"type": "automated-test",
|
|
282
|
-
"determinism": "deterministic",
|
|
283
|
-
"expectedFailure": ""
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
],
|
|
287
|
-
"metadata": {
|
|
288
|
-
"source": "tasks.md",
|
|
289
|
-
"generatedBy": "docs-example",
|
|
290
|
-
"planVersion": 1
|
|
291
|
-
}
|
|
292
|
-
}
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"changeId": "REQ-001",
|
|
3
|
-
"verdict": "pass",
|
|
4
|
-
"overall": "pass",
|
|
5
|
-
"summary": "verdict=pass quick=2/2 strict=0/0 review=pass",
|
|
6
|
-
"specAlignment": "pass",
|
|
7
|
-
"specDeltaVerified": true,
|
|
8
|
-
"specSyncReady": true,
|
|
9
|
-
"runtime": {
|
|
10
|
-
"status": "pass",
|
|
11
|
-
"failureOwnership": []
|
|
12
|
-
},
|
|
13
|
-
"claimEvidence": [
|
|
14
|
-
{
|
|
15
|
-
"claim": "tests-pass",
|
|
16
|
-
"requiredProof": "fresh targeted test command with exit 0",
|
|
17
|
-
"commandOrArtifact": "npm test -- src/features/share/ShareDialog.test.tsx",
|
|
18
|
-
"exitStatus": 0,
|
|
19
|
-
"keyObservation": "share dialog targeted tests passed",
|
|
20
|
-
"status": "pass"
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
"claim": "requirements-met",
|
|
24
|
-
"requiredProof": "line-by-line planning/tasks.md and task-manifest.json checklist",
|
|
25
|
-
"commandOrArtifact": "planning/tasks.md + planning/task-manifest.json",
|
|
26
|
-
"exitStatus": null,
|
|
27
|
-
"keyObservation": "T001-T003 complete with spec/code review proof",
|
|
28
|
-
"status": "pass"
|
|
29
|
-
}
|
|
30
|
-
],
|
|
31
|
-
"qa": {
|
|
32
|
-
"status": "pass",
|
|
33
|
-
"regressionProof": [],
|
|
34
|
-
"testQuality": [
|
|
35
|
-
{
|
|
36
|
-
"area": "share-dialog",
|
|
37
|
-
"checksRealBehavior": true,
|
|
38
|
-
"mockBoundary": "none",
|
|
39
|
-
"testOnlyProductionApi": false,
|
|
40
|
-
"status": "pass"
|
|
41
|
-
}
|
|
42
|
-
],
|
|
43
|
-
"coverageAudit": {
|
|
44
|
-
"status": "pass",
|
|
45
|
-
"coveragePct": 80,
|
|
46
|
-
"pathMap": ["copy invite link success path", "clipboard fallback error path"],
|
|
47
|
-
"gaps": [],
|
|
48
|
-
"testsAdded": ["src/features/share/ShareDialog.test.tsx"],
|
|
49
|
-
"e2eRequired": false,
|
|
50
|
-
"evalRequired": false,
|
|
51
|
-
"qualityStars": "★★"
|
|
52
|
-
},
|
|
53
|
-
"browserEvidence": {
|
|
54
|
-
"status": "skipped",
|
|
55
|
-
"mode": "not-applicable",
|
|
56
|
-
"affectedRoutes": [],
|
|
57
|
-
"screenshots": [],
|
|
58
|
-
"consoleErrors": [],
|
|
59
|
-
"healthScore": null,
|
|
60
|
-
"issues": [],
|
|
61
|
-
"skipReason": "example fixture uses targeted component evidence instead of a live browser"
|
|
62
|
-
},
|
|
63
|
-
"tddException": null
|
|
64
|
-
},
|
|
65
|
-
"quickGates": [
|
|
66
|
-
{
|
|
67
|
-
"name": "targeted-tests",
|
|
68
|
-
"status": "pass",
|
|
69
|
-
"command": "npm test -- src/features/share/ShareDialog.test.tsx",
|
|
70
|
-
"summary": "share dialog targeted tests passed"
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
"name": "lint",
|
|
74
|
-
"status": "pass",
|
|
75
|
-
"command": "npm run lint -- src/features/share/ShareDialog.tsx",
|
|
76
|
-
"summary": "lint passed for the touched dialog file"
|
|
77
|
-
}
|
|
78
|
-
],
|
|
79
|
-
"strictGates": [],
|
|
80
|
-
"review": {
|
|
81
|
-
"status": "pass",
|
|
82
|
-
"summary": "Task review proof and requirement-level diff review both passed",
|
|
83
|
-
"details": "T001-T003 have matching spec/code review proof and the diff stays inside the approved tiny-design boundary.",
|
|
84
|
-
"freshness": {
|
|
85
|
-
"status": "fresh",
|
|
86
|
-
"reviewedCommit": "example-head",
|
|
87
|
-
"currentCommit": "example-head",
|
|
88
|
-
"commitsSinceReview": 0,
|
|
89
|
-
"staleReason": ""
|
|
90
|
-
},
|
|
91
|
-
"qualityScore": 9,
|
|
92
|
-
"specialistReviews": [
|
|
93
|
-
{
|
|
94
|
-
"name": "testing",
|
|
95
|
-
"status": "pass",
|
|
96
|
-
"required": true,
|
|
97
|
-
"summary": "targeted tests cover the share dialog behavior for this example",
|
|
98
|
-
"skipReason": "",
|
|
99
|
-
"findings": []
|
|
100
|
-
}
|
|
101
|
-
],
|
|
102
|
-
"taskReviews": {
|
|
103
|
-
"status": "pass",
|
|
104
|
-
"required": true,
|
|
105
|
-
"summary": "All completed tasks carry spec/code proof",
|
|
106
|
-
"reviewPacket": {
|
|
107
|
-
"baseSha": "example-base",
|
|
108
|
-
"headSha": "example-head",
|
|
109
|
-
"requirements": "planning/tasks.md#T001-T003",
|
|
110
|
-
"implemented": "copy invite link workflow",
|
|
111
|
-
"reviewerContext": "task manifest plus changed share dialog files"
|
|
112
|
-
},
|
|
113
|
-
"reviewers": [],
|
|
114
|
-
"findings": []
|
|
115
|
-
},
|
|
116
|
-
"diffReview": {
|
|
117
|
-
"status": "pass",
|
|
118
|
-
"required": false,
|
|
119
|
-
"summary": "No blocking requirement-level findings",
|
|
120
|
-
"reviewPacket": {
|
|
121
|
-
"baseSha": "example-base",
|
|
122
|
-
"headSha": "example-head",
|
|
123
|
-
"requirements": "planning/tasks.md#Contract Summary",
|
|
124
|
-
"implemented": "copy invite link workflow",
|
|
125
|
-
"reviewerContext": "requirement diff, plan completion, scope drift, docs staleness"
|
|
126
|
-
},
|
|
127
|
-
"reviewers": [],
|
|
128
|
-
"findings": []
|
|
129
|
-
},
|
|
130
|
-
"findings": []
|
|
131
|
-
},
|
|
132
|
-
"blockingFindings": [],
|
|
133
|
-
"gaps": [],
|
|
134
|
-
"reroute": "none",
|
|
135
|
-
"timestamp": "2026-04-15T11:20:00.000Z"
|
|
136
|
-
}
|