cc-devflow 4.5.11 → 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 +18 -0
- package/.claude/skills/cc-act/PLAYBOOK.md +17 -269
- package/.claude/skills/cc-act/SKILL.md +38 -425
- 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 +18 -0
- package/.claude/skills/cc-check/PLAYBOOK.md +19 -273
- package/.claude/skills/cc-check/SKILL.md +33 -456
- package/.claude/skills/cc-check/references/review-contract.md +12 -147
- package/.claude/skills/cc-dev/CHANGELOG.md +15 -0
- package/.claude/skills/cc-dev/PLAYBOOK.md +1 -1
- package/.claude/skills/cc-dev/SKILL.md +52 -137
- package/.claude/skills/cc-dev/scripts/resolve-cc-devflow.sh +181 -0
- package/.claude/skills/cc-do/CHANGELOG.md +11 -0
- package/.claude/skills/cc-do/PLAYBOOK.md +19 -113
- package/.claude/skills/cc-do/SKILL.md +39 -245
- 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 +16 -0
- package/.claude/skills/cc-investigate/PLAYBOOK.md +20 -180
- package/.claude/skills/cc-investigate/SKILL.md +64 -246
- package/.claude/skills/cc-investigate/assets/TASKS_TEMPLATE.md +48 -98
- package/.claude/skills/cc-investigate/references/investigation-contract.md +14 -218
- 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 +16 -0
- package/.claude/skills/cc-plan/PLAYBOOK.md +22 -161
- package/.claude/skills/cc-plan/SKILL.md +45 -295
- package/.claude/skills/cc-plan/assets/TASKS_TEMPLATE.md +30 -228
- package/.claude/skills/cc-plan/references/planning-contract.md +24 -161
- 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 +13 -0
- 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 -15
- 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 -40
- package/docs/guides/getting-started.md +8 -8
- package/docs/guides/getting-started.zh-CN.md +8 -8
- package/docs/guides/minimize-artifacts.md +16 -130
- 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 +3 -3
- 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 +2 -5
- 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 -224
- package/.claude/skills/cc-plan/assets/TASK_MANIFEST_TEMPLATE.json +0 -178
- 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 -874
- 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 -593
- 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 -188
- package/lib/skill-runtime/team-state.js +0 -122
- package/lib/skill-runtime/workflow-context.js +0 -748
package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/handoff/resume-index.md
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
# Resume Index
|
|
2
|
-
|
|
3
|
-
## Current Reality
|
|
4
|
-
|
|
5
|
-
- Requirement: `REQ-003`
|
|
6
|
-
- Roadmap item: `RM-020`
|
|
7
|
-
- Verification state: `pass`
|
|
8
|
-
- Ship mode: `local-handoff`
|
|
9
|
-
- Current branch: `feature/audit-summary-export`
|
|
10
|
-
- Blocking environment fact: remote push / PR creation is unavailable right now
|
|
11
|
-
|
|
12
|
-
## What Is Already Done
|
|
13
|
-
|
|
14
|
-
- design approved as `tiny-design`
|
|
15
|
-
- implementation tasks `T001-T003` completed
|
|
16
|
-
- targeted test and lint evidence collected
|
|
17
|
-
- `report-card.json` confirms `pass`
|
|
18
|
-
|
|
19
|
-
## Next Entry
|
|
20
|
-
|
|
21
|
-
- when remote access is restored, rerun `detect-ship-target`
|
|
22
|
-
- if the branch still has no PR, switch from `local-handoff` to `create-pr`
|
|
23
|
-
- use `resume-index.md` and `report-card.json` as the truth sources for the next ship step
|
|
24
|
-
|
|
25
|
-
## Read First
|
|
26
|
-
|
|
27
|
-
- `design.md`
|
|
28
|
-
- `tasks.md`
|
|
29
|
-
- `task-manifest.json`
|
|
30
|
-
- `report-card.json`
|
|
31
|
-
|
|
32
|
-
## How To Re-Verify
|
|
33
|
-
|
|
34
|
-
- `npm test -- src/admin/AuditSummaryPanel.test.tsx`
|
|
35
|
-
- `npm run lint -- src/admin/AuditSummaryPanel.tsx`
|
|
36
|
-
|
|
37
|
-
## Open Follow-Up
|
|
38
|
-
|
|
39
|
-
- if operators ask for JSON or scheduled exports, lift that into a new roadmap item instead of reopening `REQ-003`
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# Status Report
|
|
2
|
-
|
|
3
|
-
## Requirement
|
|
4
|
-
|
|
5
|
-
- Change ID: `REQ-003`
|
|
6
|
-
- Roadmap item: `RM-020`
|
|
7
|
-
- Current state: verified and ready for `local-handoff`
|
|
8
|
-
|
|
9
|
-
## What Is True Now
|
|
10
|
-
|
|
11
|
-
- The admin audit summary panel can export the currently visible summary rows as CSV
|
|
12
|
-
- The patch stayed inside the approved `tiny-design` boundary
|
|
13
|
-
- Fresh targeted test and lint evidence both passed
|
|
14
|
-
- `cc-check` returned `pass`
|
|
15
|
-
|
|
16
|
-
## Ship Decision
|
|
17
|
-
|
|
18
|
-
- Recommended mode: `local-handoff`
|
|
19
|
-
- Why now: the work is verified, but remote push / PR creation is intentionally unavailable in this environment
|
|
20
|
-
- Why not others:
|
|
21
|
-
- not `create-pr`: remote access is unavailable
|
|
22
|
-
- not `update-pr`: there is no existing PR to refresh
|
|
23
|
-
- not `post-merge-closeout`: the change is not merged yet
|
|
24
|
-
|
|
25
|
-
## Docs And Follow-Up
|
|
26
|
-
|
|
27
|
-
- README / release docs: unchanged; this is not a public release step
|
|
28
|
-
- Backlog writeback: if admins request additional export formats, open a new roadmap item
|
|
29
|
-
- Next entry point: use `resume-index.md` to pick up the branch when remote access becomes available
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
# DESIGN
|
|
2
|
-
|
|
3
|
-
## Document Meta
|
|
4
|
-
|
|
5
|
-
- Requirement version: `REQ-003.v1`
|
|
6
|
-
- Design version: `design.v1`
|
|
7
|
-
- CC-Plan skill version: `3.9.2`
|
|
8
|
-
- Work branch: `REQ/003-audit-log-export`
|
|
9
|
-
- Requirement ID: `REQ-003`
|
|
10
|
-
- Design mode: `tiny-design`
|
|
11
|
-
- Why this stays `tiny-design`: the patch adds one export action inside the existing admin audit UI without changing data contracts
|
|
12
|
-
- Approval status: `approved`
|
|
13
|
-
- Source roadmap item: `RM-020`
|
|
14
|
-
- Source roadmap version: `roadmap.v3`
|
|
15
|
-
|
|
16
|
-
## Source Handoff
|
|
17
|
-
|
|
18
|
-
- Why now: admins need a lightweight way to take weekly activity summaries out of the UI
|
|
19
|
-
- Inherited success signal: admins can download the summary without manual row copying
|
|
20
|
-
- Inherited kill signal: if export requires a shared reporting pipeline, reopen planning
|
|
21
|
-
- Inherited non-goals: no JSON export mode, no scheduled reporting
|
|
22
|
-
- Upstream evidence: repeated internal admin requests during weekly reviews
|
|
23
|
-
|
|
24
|
-
## Frozen Design Card
|
|
25
|
-
|
|
26
|
-
- Change: add a `Download summary` action that exports the visible audit summary rows as CSV
|
|
27
|
-
- Keep out: no multi-format export and no shared reporting backend
|
|
28
|
-
- Touched files:
|
|
29
|
-
- `src/admin/AuditSummaryPanel.tsx`
|
|
30
|
-
- `src/admin/AuditSummaryPanel.test.tsx`
|
|
31
|
-
- Contract changes: none; reuse the existing summary rows already shown in the panel
|
|
32
|
-
- Key decisions that `cc-do` must not re-decide:
|
|
33
|
-
- export only what is already visible in the panel
|
|
34
|
-
- use CSV as the single output format
|
|
35
|
-
- keep the action inside the current admin panel
|
|
36
|
-
- Upgrade trigger to `full-design`: if export needs background generation or new reporting contracts
|
|
37
|
-
|
|
38
|
-
## PRD-Grade Brief
|
|
39
|
-
|
|
40
|
-
- Problem statement: admins can review audit summary rows in the UI, but taking them into weekly reports requires manual copying.
|
|
41
|
-
- Solution summary: admins can download the currently visible audit summary rows as a CSV from the existing admin panel.
|
|
42
|
-
- Actors / personas:
|
|
43
|
-
- workspace admin reviewing weekly activity
|
|
44
|
-
- User stories:
|
|
45
|
-
- 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.
|
|
46
|
-
- Implementation decisions:
|
|
47
|
-
- Export only the rows already visible in the panel.
|
|
48
|
-
- Keep CSV as the only output format.
|
|
49
|
-
- Testing decisions:
|
|
50
|
-
- Test through the admin panel action and visible row data.
|
|
51
|
-
- Existing audit summary panel tests are the prior art.
|
|
52
|
-
- Out of scope: JSON export, scheduled reporting, and shared reporting backend work.
|
|
53
|
-
- Further notes: richer machine-readable exports should become a separate requirement.
|
|
54
|
-
|
|
55
|
-
## Validation
|
|
56
|
-
|
|
57
|
-
- Primary check: targeted panel test proves the export action is available and uses current summary rows
|
|
58
|
-
- Secondary checks:
|
|
59
|
-
- existing audit summary rendering stays green
|
|
60
|
-
- lint passes for the touched panel
|
|
61
|
-
- Evidence to collect:
|
|
62
|
-
- failing test before implementation
|
|
63
|
-
- passing test and lint after implementation
|
|
64
|
-
|
|
65
|
-
## Main Risk
|
|
66
|
-
|
|
67
|
-
- Risk: admins may soon ask for more export formats
|
|
68
|
-
- Mitigation: treat JSON or scheduled exports as later roadmap items
|
|
69
|
-
|
|
70
|
-
## AI Leverage Decision Lens
|
|
71
|
-
|
|
72
|
-
- Real user / operator: workspace admin preparing weekly review notes
|
|
73
|
-
- Status quo workaround: manually copy visible audit rows
|
|
74
|
-
- Human-team effort for full scope: about one day for an engineer to implement, test, and document the local export
|
|
75
|
-
- CC / agent effort for full scope: about 30 minutes for visible-row CSV export plus targeted test and lint
|
|
76
|
-
- AI compression ratio: roughly 10x for the bounded local export path
|
|
77
|
-
- Complete-lake boundary: visible-row CSV export, panel action, current data source, targeted panel test, and lint
|
|
78
|
-
- Ocean boundary: JSON export, scheduled reporting, shared reporting backend, and cross-panel reporting platform
|
|
79
|
-
- Scope recommendation: `boil-lake`
|
|
80
|
-
- 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
|
|
81
|
-
- Verdict: `boil-lake`
|
|
82
|
-
- Missing evidence or pivot reason: none
|
|
83
|
-
|
|
84
|
-
## External Best-Practice Validation
|
|
85
|
-
|
|
86
|
-
- Needed: No
|
|
87
|
-
- Decision status: not-needed
|
|
88
|
-
- Generalized search terms:
|
|
89
|
-
- Sources checked:
|
|
90
|
-
- Repo-fit verdict: skipped
|
|
91
|
-
- Changes to frozen design:
|
|
92
|
-
- Skipped reason: the local handoff exports existing visible rows and does not introduce a new reporting standard
|
|
93
|
-
|
|
94
|
-
## Review Gate
|
|
95
|
-
|
|
96
|
-
- Placeholder scan: pass
|
|
97
|
-
- Consistency scan: pass
|
|
98
|
-
- Scope scan: pass
|
|
99
|
-
- Ambiguity scan: pass
|
|
100
|
-
- Feasibility scan: pass
|
|
101
|
-
- PRD brief scan: pass; the export story and scope boundaries are explicit
|
|
102
|
-
- AI Leverage Decision Lens scan: pass; visible-row export lake is bounded enough to complete while reporting platform work stays out
|
|
103
|
-
- External best-practice scan: pass; not needed for a repo-local visible-row export
|
|
104
|
-
- Decision question scan: pass; `D1` approved the tiny-design CSV-export boundary
|
|
105
|
-
- Final recommendation: approved as `tiny-design`
|
|
106
|
-
|
|
107
|
-
## Decision Questions
|
|
108
|
-
|
|
109
|
-
| ID | Gate | Known evidence | Recommendation | User choice | Impact on `cc-do` | Status |
|
|
110
|
-
|----|------|----------------|----------------|-------------|-------------------|--------|
|
|
111
|
-
| 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 |
|
|
112
|
-
|
|
113
|
-
## Approval
|
|
114
|
-
|
|
115
|
-
- User approval status: approved
|
|
116
|
-
- Deferred questions:
|
|
117
|
-
- if admins ask for machine-readable export next, open a separate requirement
|
|
118
|
-
|
|
119
|
-
## First-Read Test
|
|
120
|
-
|
|
121
|
-
- 一眼能看出这次为什么够小
|
|
122
|
-
- 一眼能看出什么情况会逼它升级成 `full-design`
|
|
123
|
-
- `cc-do` 看完不会继续追问“导出的字段从哪里来”
|
package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json
DELETED
|
@@ -1,292 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"changeId": "REQ-003",
|
|
3
|
-
"goal": "Add a local CSV export for the existing audit summary panel without introducing new reporting contracts.",
|
|
4
|
-
"createdAt": "2026-04-16T13:00:00.000Z",
|
|
5
|
-
"updatedAt": "2026-04-16T14:20:00.000Z",
|
|
6
|
-
"requirementId": "REQ-003",
|
|
7
|
-
"requirementVersion": "REQ-003.v1",
|
|
8
|
-
"planningMeta": {
|
|
9
|
-
"reqPlanSkillVersion": "3.9.2",
|
|
10
|
-
"designVersion": "design.v1",
|
|
11
|
-
"workBranch": "REQ/003-audit-log-export",
|
|
12
|
-
"approvedAt": "2026-04-16T13:10:00.000Z",
|
|
13
|
-
"basedOnOption": "Tiny design card",
|
|
14
|
-
"aiLeverageDecisionLens": {
|
|
15
|
-
"realUserOrOperator": "workspace admin preparing weekly review notes",
|
|
16
|
-
"statusQuoWorkaround": "manual copy of visible audit rows",
|
|
17
|
-
"humanTeamEffortForFullScope": "about one day for an engineer to implement, test, and document the local export",
|
|
18
|
-
"ccAgentEffortForFullScope": "about 30 minutes for visible-row CSV export plus targeted test and lint",
|
|
19
|
-
"aiCompressionRatio": "roughly 10x for the bounded local export path",
|
|
20
|
-
"completeLakeBoundary": "visible-row CSV export, panel action, current data source, targeted panel test, and lint",
|
|
21
|
-
"oceanBoundary": "JSON export, scheduled reporting, shared reporting backend, and cross-panel reporting platform",
|
|
22
|
-
"scopeRecommendation": "boil-lake",
|
|
23
|
-
"costModel": {
|
|
24
|
-
"agentTime": "low",
|
|
25
|
-
"humanReviewTime": "low",
|
|
26
|
-
"verificationCost": "targeted panel test plus lint",
|
|
27
|
-
"maintenanceCost": "low while scoped to visible rows",
|
|
28
|
-
"failureCost": "admins keep copying rows manually",
|
|
29
|
-
"reversibility": "reversible UI action"
|
|
30
|
-
},
|
|
31
|
-
"verdict": "boil-lake",
|
|
32
|
-
"missingEvidenceOrPivotReason": "",
|
|
33
|
-
"impactOnApprovedDirection": "complete the local visible-row export lake while deferring reporting platform work"
|
|
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": "the local handoff exports existing visible rows and does not introduce a new reporting standard"
|
|
47
|
-
},
|
|
48
|
-
"decisionQuestions": [
|
|
49
|
-
{
|
|
50
|
-
"questionId": "D1",
|
|
51
|
-
"gate": "approach-approval",
|
|
52
|
-
"knownEvidence": [
|
|
53
|
-
"Existing admin panel already owns the visible summary rows",
|
|
54
|
-
"No reporting backend is needed for the first useful export"
|
|
55
|
-
],
|
|
56
|
-
"recommendation": "Approve the tiny-design CSV export",
|
|
57
|
-
"options": [
|
|
58
|
-
{
|
|
59
|
-
"id": "A",
|
|
60
|
-
"label": "Tiny design CSV export",
|
|
61
|
-
"recommended": true,
|
|
62
|
-
"completeness": "8/10",
|
|
63
|
-
"good": "Solves weekly reporting friction with the current panel data",
|
|
64
|
-
"costRisk": "Does not handle JSON, scheduling, or shared reporting contracts"
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
"id": "B",
|
|
68
|
-
"label": "Shared reporting pipeline",
|
|
69
|
-
"recommended": false,
|
|
70
|
-
"completeness": "10/10",
|
|
71
|
-
"good": "Could support more formats and future scheduled reports",
|
|
72
|
-
"costRisk": "Creates a larger platform surface before the local export is proven"
|
|
73
|
-
}
|
|
74
|
-
],
|
|
75
|
-
"userChoice": "A",
|
|
76
|
-
"impact": "cc-do exports only visible rows from the current panel and avoids new reporting contracts",
|
|
77
|
-
"status": "answered"
|
|
78
|
-
}
|
|
79
|
-
]
|
|
80
|
-
},
|
|
81
|
-
"currentTaskId": null,
|
|
82
|
-
"tasks": [
|
|
83
|
-
{
|
|
84
|
-
"id": "T001",
|
|
85
|
-
"title": "[TEST] Add a failing test for the missing download action",
|
|
86
|
-
"type": "TEST",
|
|
87
|
-
"phase": 1,
|
|
88
|
-
"parallel": false,
|
|
89
|
-
"dependsOn": [],
|
|
90
|
-
"touches": [
|
|
91
|
-
"audit-summary",
|
|
92
|
-
"tests"
|
|
93
|
-
],
|
|
94
|
-
"files": [
|
|
95
|
-
"src/admin/AuditSummaryPanel.test.tsx"
|
|
96
|
-
],
|
|
97
|
-
"run": [
|
|
98
|
-
"npm test -- src/admin/AuditSummaryPanel.test.tsx"
|
|
99
|
-
],
|
|
100
|
-
"checks": [
|
|
101
|
-
"test fails before implementation"
|
|
102
|
-
],
|
|
103
|
-
"acceptance": [
|
|
104
|
-
"the missing download action is reproduced as a failing test"
|
|
105
|
-
],
|
|
106
|
-
"verification": [
|
|
107
|
-
"npm test -- src/admin/AuditSummaryPanel.test.tsx"
|
|
108
|
-
],
|
|
109
|
-
"evidence": [
|
|
110
|
-
"failing test output"
|
|
111
|
-
],
|
|
112
|
-
"context": {
|
|
113
|
-
"readFiles": [
|
|
114
|
-
"design.md",
|
|
115
|
-
"tasks.md",
|
|
116
|
-
"src/admin/AuditSummaryPanel.tsx"
|
|
117
|
-
],
|
|
118
|
-
"commands": [
|
|
119
|
-
"npm test -- src/admin/AuditSummaryPanel.test.tsx"
|
|
120
|
-
],
|
|
121
|
-
"notes": [
|
|
122
|
-
"stay inside the current audit summary panel"
|
|
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": "admin audit panel UI behavior",
|
|
136
|
-
"behaviorAsserted": "the missing download action is reproduced as a failing test",
|
|
137
|
-
"specStyleTestName": "the missing download action is reproduced as a failing test",
|
|
138
|
-
"oneLogicalBehavior": true,
|
|
139
|
-
"publicVerificationPath": "Run the audit summary panel test and observe CSV export through visible rows",
|
|
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 download summary action",
|
|
151
|
-
"type": "IMPL",
|
|
152
|
-
"phase": 1,
|
|
153
|
-
"parallel": false,
|
|
154
|
-
"dependsOn": [
|
|
155
|
-
"T001"
|
|
156
|
-
],
|
|
157
|
-
"touches": [
|
|
158
|
-
"audit-summary"
|
|
159
|
-
],
|
|
160
|
-
"files": [
|
|
161
|
-
"src/admin/AuditSummaryPanel.tsx"
|
|
162
|
-
],
|
|
163
|
-
"run": [
|
|
164
|
-
"npm test -- src/admin/AuditSummaryPanel.test.tsx"
|
|
165
|
-
],
|
|
166
|
-
"checks": [
|
|
167
|
-
"panel test passes"
|
|
168
|
-
],
|
|
169
|
-
"acceptance": [
|
|
170
|
-
"admins can trigger a CSV download from the existing summary panel"
|
|
171
|
-
],
|
|
172
|
-
"verification": [
|
|
173
|
-
"npm test -- src/admin/AuditSummaryPanel.test.tsx"
|
|
174
|
-
],
|
|
175
|
-
"evidence": [
|
|
176
|
-
"passing test output",
|
|
177
|
-
"CLI log summary"
|
|
178
|
-
],
|
|
179
|
-
"context": {
|
|
180
|
-
"readFiles": [
|
|
181
|
-
"design.md",
|
|
182
|
-
"tasks.md",
|
|
183
|
-
"src/admin/AuditSummaryPanel.test.tsx"
|
|
184
|
-
],
|
|
185
|
-
"commands": [
|
|
186
|
-
"npm test -- src/admin/AuditSummaryPanel.test.tsx"
|
|
187
|
-
],
|
|
188
|
-
"notes": [
|
|
189
|
-
"reuse visible summary rows as the export source"
|
|
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": "admin audit panel UI behavior",
|
|
203
|
-
"behaviorAsserted": "admins can trigger a CSV download from the existing summary panel",
|
|
204
|
-
"specStyleTestName": "admins can trigger a CSV download from the existing summary panel",
|
|
205
|
-
"oneLogicalBehavior": true,
|
|
206
|
-
"publicVerificationPath": "Run the audit summary panel test and observe CSV export through visible rows",
|
|
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 handoff 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/admin/AuditSummaryPanel.tsx",
|
|
229
|
-
"src/admin/AuditSummaryPanel.test.tsx"
|
|
230
|
-
],
|
|
231
|
-
"run": [
|
|
232
|
-
"npm test -- src/admin/AuditSummaryPanel.test.tsx",
|
|
233
|
-
"npm run lint -- src/admin/AuditSummaryPanel.tsx"
|
|
234
|
-
],
|
|
235
|
-
"checks": [
|
|
236
|
-
"targeted tests pass",
|
|
237
|
-
"lint passes"
|
|
238
|
-
],
|
|
239
|
-
"acceptance": [
|
|
240
|
-
"fresh verification evidence exists for local handoff"
|
|
241
|
-
],
|
|
242
|
-
"verification": [
|
|
243
|
-
"npm test -- src/admin/AuditSummaryPanel.test.tsx",
|
|
244
|
-
"npm run lint -- src/admin/AuditSummaryPanel.tsx"
|
|
245
|
-
],
|
|
246
|
-
"evidence": [
|
|
247
|
-
"passing 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/admin/AuditSummaryPanel.test.tsx",
|
|
257
|
-
"npm run lint -- src/admin/AuditSummaryPanel.tsx"
|
|
258
|
-
],
|
|
259
|
-
"notes": [
|
|
260
|
-
"remote push is intentionally out of scope for this example"
|
|
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": "admin audit panel UI behavior",
|
|
274
|
-
"behaviorAsserted": "fresh verification evidence exists for local handoff",
|
|
275
|
-
"specStyleTestName": "fresh verification evidence exists for local handoff",
|
|
276
|
-
"oneLogicalBehavior": true,
|
|
277
|
-
"publicVerificationPath": "Run the audit summary panel test and observe CSV export through visible rows",
|
|
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
|
-
}
|
package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/review/report-card.json
DELETED
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"changeId": "REQ-003",
|
|
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/admin/AuditSummaryPanel.test.tsx",
|
|
18
|
-
"exitStatus": 0,
|
|
19
|
-
"keyObservation": "audit summary panel 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": "approved tiny-design scope completed",
|
|
28
|
-
"status": "pass"
|
|
29
|
-
}
|
|
30
|
-
],
|
|
31
|
-
"qa": {
|
|
32
|
-
"status": "pass",
|
|
33
|
-
"regressionProof": [],
|
|
34
|
-
"testQuality": [
|
|
35
|
-
{
|
|
36
|
-
"area": "audit-summary-panel",
|
|
37
|
-
"checksRealBehavior": true,
|
|
38
|
-
"mockBoundary": "none",
|
|
39
|
-
"testOnlyProductionApi": false,
|
|
40
|
-
"status": "pass"
|
|
41
|
-
}
|
|
42
|
-
],
|
|
43
|
-
"coverageAudit": {
|
|
44
|
-
"status": "pass",
|
|
45
|
-
"coveragePct": 80,
|
|
46
|
-
"pathMap": ["audit summary render path", "empty audit state"],
|
|
47
|
-
"gaps": [],
|
|
48
|
-
"testsAdded": ["src/admin/AuditSummaryPanel.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": "local handoff example records component evidence without a live browser fixture"
|
|
62
|
-
},
|
|
63
|
-
"tddException": null
|
|
64
|
-
},
|
|
65
|
-
"quickGates": [
|
|
66
|
-
{
|
|
67
|
-
"name": "targeted-tests",
|
|
68
|
-
"status": "pass",
|
|
69
|
-
"command": "npm test -- src/admin/AuditSummaryPanel.test.tsx",
|
|
70
|
-
"summary": "audit summary panel targeted tests passed"
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
"name": "lint",
|
|
74
|
-
"status": "pass",
|
|
75
|
-
"command": "npm run lint -- src/admin/AuditSummaryPanel.tsx",
|
|
76
|
-
"summary": "lint passed for the touched panel file"
|
|
77
|
-
}
|
|
78
|
-
],
|
|
79
|
-
"strictGates": [],
|
|
80
|
-
"review": {
|
|
81
|
-
"status": "pass",
|
|
82
|
-
"summary": "Task review proof and requirement-level diff review both passed",
|
|
83
|
-
"details": "The diff stayed inside the approved tiny-design scope and verification evidence is fresh.",
|
|
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 audit summary 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",
|
|
110
|
-
"implemented": "audit log export summary view",
|
|
111
|
-
"reviewerContext": "task manifest plus changed audit panel 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": "audit log export summary view",
|
|
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-16T14:30:00.000Z"
|
|
136
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# Status Report
|
|
2
|
-
|
|
3
|
-
## Requirement
|
|
4
|
-
|
|
5
|
-
- Change ID: `REQ-001`
|
|
6
|
-
- Roadmap item: `RM-001`
|
|
7
|
-
- Current state: verified and ready to ship as `create-pr`
|
|
8
|
-
|
|
9
|
-
## What Is True Now
|
|
10
|
-
|
|
11
|
-
- The share dialog exposes a one-click copy action for the existing invite URL
|
|
12
|
-
- The patch stayed inside the approved `tiny-design` boundary
|
|
13
|
-
- Fresh targeted test and lint evidence both passed
|
|
14
|
-
- Review proof is present, so `cc-check` returned `pass`
|
|
15
|
-
|
|
16
|
-
## Ship Decision
|
|
17
|
-
|
|
18
|
-
- Recommended mode: `create-pr`
|
|
19
|
-
- Why now: the work is verified, the branch is assumed to be a feature branch, and no open PR exists yet
|
|
20
|
-
- Why not others:
|
|
21
|
-
- not `update-pr`: there is no existing PR to refresh
|
|
22
|
-
- not `local-handoff`: the work is ready to move forward
|
|
23
|
-
- not `post-merge-closeout`: the change is not merged yet
|
|
24
|
-
|
|
25
|
-
## Docs And Follow-Up
|
|
26
|
-
|
|
27
|
-
- README / release docs: no public user-facing release note yet
|
|
28
|
-
- Backlog writeback: keep `RM-002` parked as the next UX refinement if support friction remains
|
|
29
|
-
- Next entry point: create the PR using `pr-brief.md` as the truth source
|