create-quiver 0.15.1 → 0.15.3
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/.github/workflows/ci.yml +3 -0
- package/README.md +3 -0
- package/README_FOR_AI.md +11 -7
- package/docs/CLI_UX_GUIDE.md +16 -2
- package/docs/COMMANDS.md.template +16 -4
- package/docs/INDEX.md +87 -0
- package/docs/WORKFLOW.md.template +4 -4
- package/docs/reference/commands.md +23 -5
- package/package.json +3 -1
- package/specs/quiver-v33-approval-ux-and-planner-progress/EVIDENCE_REPORT.md +93 -0
- package/specs/quiver-v33-approval-ux-and-planner-progress/EXECUTION_PLAN.md +83 -0
- package/specs/quiver-v33-approval-ux-and-planner-progress/SPEC.md +158 -0
- package/specs/quiver-v33-approval-ux-and-planner-progress/STATUS.md +31 -0
- package/specs/quiver-v33-approval-ux-and-planner-progress/pr.md +109 -0
- package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-00-approval-ux-foundation/CLOSURE_BRIEF.md +30 -0
- package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-00-approval-ux-foundation/EXECUTION_BRIEF.md +56 -0
- package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-00-approval-ux-foundation/slice.json +65 -0
- package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-01-approval-candidates-model/CLOSURE_BRIEF.md +19 -0
- package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-01-approval-candidates-model/EXECUTION_BRIEF.md +51 -0
- package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-01-approval-candidates-model/slice.json +74 -0
- package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-02-approve-interactive-selection/CLOSURE_BRIEF.md +20 -0
- package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-02-approve-interactive-selection/EXECUTION_BRIEF.md +53 -0
- package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-02-approve-interactive-selection/slice.json +79 -0
- package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-03-technical-plan-review-decision-data/CLOSURE_BRIEF.md +19 -0
- package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-03-technical-plan-review-decision-data/EXECUTION_BRIEF.md +50 -0
- package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-03-technical-plan-review-decision-data/slice.json +75 -0
- package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-04-revise-input-guardrails/CLOSURE_BRIEF.md +19 -0
- package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-04-revise-input-guardrails/EXECUTION_BRIEF.md +51 -0
- package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-04-revise-input-guardrails/slice.json +73 -0
- package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-05-provider-progress-alignment/CLOSURE_BRIEF.md +20 -0
- package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-05-provider-progress-alignment/EXECUTION_BRIEF.md +51 -0
- package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-05-provider-progress-alignment/slice.json +91 -0
- package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-06-workflow-surface-integration/CLOSURE_BRIEF.md +20 -0
- package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-06-workflow-surface-integration/EXECUTION_BRIEF.md +53 -0
- package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-06-workflow-surface-integration/slice.json +87 -0
- package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-07-docs-tests-release-readiness/CLOSURE_BRIEF.md +21 -0
- package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-07-docs-tests-release-readiness/EXECUTION_BRIEF.md +55 -0
- package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-07-docs-tests-release-readiness/slice.json +97 -0
- package/specs/quiver-v34-cli-dashboard-status/EVIDENCE_REPORT.md +119 -0
- package/specs/quiver-v34-cli-dashboard-status/EXECUTION_PLAN.md +77 -0
- package/specs/quiver-v34-cli-dashboard-status/SPEC.md +152 -0
- package/specs/quiver-v34-cli-dashboard-status/STATUS.md +29 -0
- package/specs/quiver-v34-cli-dashboard-status/pr.md +99 -0
- package/specs/quiver-v34-cli-dashboard-status/slices/slice-00-dashboard-foundation/CLOSURE_BRIEF.md +19 -0
- package/specs/quiver-v34-cli-dashboard-status/slices/slice-00-dashboard-foundation/EXECUTION_BRIEF.md +49 -0
- package/specs/quiver-v34-cli-dashboard-status/slices/slice-00-dashboard-foundation/slice.json +68 -0
- package/specs/quiver-v34-cli-dashboard-status/slices/slice-01-dashboard-report-contract/CLOSURE_BRIEF.md +19 -0
- package/specs/quiver-v34-cli-dashboard-status/slices/slice-01-dashboard-report-contract/EXECUTION_BRIEF.md +53 -0
- package/specs/quiver-v34-cli-dashboard-status/slices/slice-01-dashboard-report-contract/slice.json +78 -0
- package/specs/quiver-v34-cli-dashboard-status/slices/slice-02-dashboard-command-rendering/CLOSURE_BRIEF.md +19 -0
- package/specs/quiver-v34-cli-dashboard-status/slices/slice-02-dashboard-command-rendering/EXECUTION_BRIEF.md +53 -0
- package/specs/quiver-v34-cli-dashboard-status/slices/slice-02-dashboard-command-rendering/slice.json +82 -0
- package/specs/quiver-v34-cli-dashboard-status/slices/slice-03-dashboard-edge-cases-and-guardrails/CLOSURE_BRIEF.md +19 -0
- package/specs/quiver-v34-cli-dashboard-status/slices/slice-03-dashboard-edge-cases-and-guardrails/EXECUTION_BRIEF.md +54 -0
- package/specs/quiver-v34-cli-dashboard-status/slices/slice-03-dashboard-edge-cases-and-guardrails/slice.json +77 -0
- package/specs/quiver-v34-cli-dashboard-status/slices/slice-04-docs-templates-and-scripts/CLOSURE_BRIEF.md +19 -0
- package/specs/quiver-v34-cli-dashboard-status/slices/slice-04-docs-templates-and-scripts/EXECUTION_BRIEF.md +54 -0
- package/specs/quiver-v34-cli-dashboard-status/slices/slice-04-docs-templates-and-scripts/slice.json +88 -0
- package/specs/quiver-v34-cli-dashboard-status/slices/slice-05-tests-smokes-release-readiness/CLOSURE_BRIEF.md +26 -0
- package/specs/quiver-v34-cli-dashboard-status/slices/slice-05-tests-smokes-release-readiness/EXECUTION_BRIEF.md +57 -0
- package/specs/quiver-v34-cli-dashboard-status/slices/slice-05-tests-smokes-release-readiness/slice.json +85 -0
- package/specs/quiver-v35-compact-dashboard-version-ux/EVIDENCE_REPORT.md +43 -0
- package/specs/quiver-v35-compact-dashboard-version-ux/EXECUTION_PLAN.md +85 -0
- package/specs/quiver-v35-compact-dashboard-version-ux/SPEC.md +147 -0
- package/specs/quiver-v35-compact-dashboard-version-ux/STATUS.md +33 -0
- package/specs/quiver-v35-compact-dashboard-version-ux/pr.md +106 -0
- package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-00-foundation-and-doc-router/CLOSURE_BRIEF.md +19 -0
- package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-00-foundation-and-doc-router/EXECUTION_BRIEF.md +38 -0
- package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-00-foundation-and-doc-router/slice.json +64 -0
- package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-01-dashboard-cli-contract/CLOSURE_BRIEF.md +19 -0
- package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-01-dashboard-cli-contract/EXECUTION_BRIEF.md +49 -0
- package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-01-dashboard-cli-contract/slice.json +80 -0
- package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-02-dashboard-compact-renderer/CLOSURE_BRIEF.md +19 -0
- package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-02-dashboard-compact-renderer/EXECUTION_BRIEF.md +48 -0
- package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-02-dashboard-compact-renderer/slice.json +73 -0
- package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-03-dashboard-details-sections/CLOSURE_BRIEF.md +19 -0
- package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-03-dashboard-details-sections/EXECUTION_BRIEF.md +48 -0
- package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-03-dashboard-details-sections/slice.json +72 -0
- package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-04-version-command/CLOSURE_BRIEF.md +19 -0
- package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-04-version-command/EXECUTION_BRIEF.md +49 -0
- package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-04-version-command/slice.json +82 -0
- package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-05-docs-help-generated-guidance/CLOSURE_BRIEF.md +19 -0
- package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-05-docs-help-generated-guidance/EXECUTION_BRIEF.md +50 -0
- package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-05-docs-help-generated-guidance/slice.json +90 -0
- package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-06-tests-smokes-release-readiness/CLOSURE_BRIEF.md +21 -0
- package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-06-tests-smokes-release-readiness/EXECUTION_BRIEF.md +51 -0
- package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-06-tests-smokes-release-readiness/slice.json +85 -0
- package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-07-package-and-cross-platform-smoke/CLOSURE_BRIEF.md +20 -0
- package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-07-package-and-cross-platform-smoke/EXECUTION_BRIEF.md +49 -0
- package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-07-package-and-cross-platform-smoke/slice.json +79 -0
- package/specs/quiver-v36-ai-run-watch-portable/EVIDENCE_REPORT.md +33 -0
- package/specs/quiver-v36-ai-run-watch-portable/EXECUTION_PLAN.md +39 -0
- package/specs/quiver-v36-ai-run-watch-portable/SPEC.md +166 -0
- package/specs/quiver-v36-ai-run-watch-portable/STATUS.md +31 -0
- package/specs/quiver-v36-ai-run-watch-portable/pr.md +78 -0
- package/specs/quiver-v36-ai-run-watch-portable/slices/slice-00-foundation-and-handoffs/CLOSURE_BRIEF.md +19 -0
- package/specs/quiver-v36-ai-run-watch-portable/slices/slice-00-foundation-and-handoffs/EXECUTION_BRIEF.md +43 -0
- package/specs/quiver-v36-ai-run-watch-portable/slices/slice-00-foundation-and-handoffs/slice.json +61 -0
- package/specs/quiver-v36-ai-run-watch-portable/slices/slice-01-run-schema-path-safety/CLOSURE_BRIEF.md +18 -0
- package/specs/quiver-v36-ai-run-watch-portable/slices/slice-01-run-schema-path-safety/EXECUTION_BRIEF.md +43 -0
- package/specs/quiver-v36-ai-run-watch-portable/slices/slice-01-run-schema-path-safety/slice.json +65 -0
- package/specs/quiver-v36-ai-run-watch-portable/slices/slice-02-event-writer-redacted-logs/CLOSURE_BRIEF.md +18 -0
- package/specs/quiver-v36-ai-run-watch-portable/slices/slice-02-event-writer-redacted-logs/EXECUTION_BRIEF.md +43 -0
- package/specs/quiver-v36-ai-run-watch-portable/slices/slice-02-event-writer-redacted-logs/slice.json +66 -0
- package/specs/quiver-v36-ai-run-watch-portable/slices/slice-03-provider-streaming-integration/CLOSURE_BRIEF.md +18 -0
- package/specs/quiver-v36-ai-run-watch-portable/slices/slice-03-provider-streaming-integration/EXECUTION_BRIEF.md +41 -0
- package/specs/quiver-v36-ai-run-watch-portable/slices/slice-03-provider-streaming-integration/slice.json +71 -0
- package/specs/quiver-v36-ai-run-watch-portable/slices/slice-04-ai-run-watch-command/CLOSURE_BRIEF.md +18 -0
- package/specs/quiver-v36-ai-run-watch-portable/slices/slice-04-ai-run-watch-command/EXECUTION_BRIEF.md +44 -0
- package/specs/quiver-v36-ai-run-watch-portable/slices/slice-04-ai-run-watch-command/slice.json +73 -0
- package/specs/quiver-v36-ai-run-watch-portable/slices/slice-05-main-progress-user-guidance/CLOSURE_BRIEF.md +18 -0
- package/specs/quiver-v36-ai-run-watch-portable/slices/slice-05-main-progress-user-guidance/EXECUTION_BRIEF.md +44 -0
- package/specs/quiver-v36-ai-run-watch-portable/slices/slice-05-main-progress-user-guidance/slice.json +71 -0
- package/specs/quiver-v36-ai-run-watch-portable/slices/slice-06-docs-generated-guidance/CLOSURE_BRIEF.md +19 -0
- package/specs/quiver-v36-ai-run-watch-portable/slices/slice-06-docs-generated-guidance/EXECUTION_BRIEF.md +45 -0
- package/specs/quiver-v36-ai-run-watch-portable/slices/slice-06-docs-generated-guidance/slice.json +77 -0
- package/specs/quiver-v36-ai-run-watch-portable/slices/slice-07-tests-cross-platform-readiness/CLOSURE_BRIEF.md +22 -0
- package/specs/quiver-v36-ai-run-watch-portable/slices/slice-07-tests-cross-platform-readiness/EXECUTION_BRIEF.md +46 -0
- package/specs/quiver-v36-ai-run-watch-portable/slices/slice-07-tests-cross-platform-readiness/slice.json +87 -0
- package/src/create-quiver/commands/ai.js +112 -12
- package/src/create-quiver/commands/dashboard.js +31 -0
- package/src/create-quiver/commands/flow.js +74 -12
- package/src/create-quiver/commands/spec.js +8 -1
- package/src/create-quiver/index.js +107 -4
- package/src/create-quiver/lib/ai/approval-candidates.js +86 -0
- package/src/create-quiver/lib/ai/plan-review.js +77 -1
- package/src/create-quiver/lib/ai/run-state.js +21 -4
- package/src/create-quiver/lib/approvals.js +103 -0
- package/src/create-quiver/lib/cli/ux-flags.js +6 -0
- package/src/create-quiver/lib/dashboard.js +896 -0
- package/src/create-quiver/lib/git.js +13 -4
- package/src/create-quiver/lib/init-docs.js +6 -0
- package/src/create-quiver/lib/init-layout.js +2 -0
- package/src/create-quiver/lib/paths.js +45 -3
- package/src/create-quiver/lib/project-state-resolver.js +22 -2
- package/src/create-quiver/lib/version.js +157 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
## Title
|
|
2
|
+
|
|
3
|
+
Quiver v34: CLI dashboard status
|
|
4
|
+
|
|
5
|
+
## Summary
|
|
6
|
+
|
|
7
|
+
- Adds a read-only `dashboard` command for consolidated Quiver project state.
|
|
8
|
+
- Shows specs, slices, global progress, visible progress, next ready work, blockers, warnings, approvals, agents, active-slice state, runs, evidence counts, and next safe commands.
|
|
9
|
+
- Keeps the dashboard CLI-first and script-safe: no Ink, no prompts, no provider execution, no writes.
|
|
10
|
+
- Adds compact `dashboard --json` output with a stable schema.
|
|
11
|
+
- Adds docs, generated scripts, tests, smokes, and release-readiness evidence.
|
|
12
|
+
|
|
13
|
+
## Scope
|
|
14
|
+
|
|
15
|
+
- Dashboard report contract.
|
|
16
|
+
- Human and JSON dashboard output.
|
|
17
|
+
- Top-level CLI command routing and help.
|
|
18
|
+
- Edge-case handling for missing specs, invalid graphs, legacy/incomplete layouts, no-spec states, no-color, CI/no-TTY, and evidence/log redaction.
|
|
19
|
+
- Docs, generated templates, package scripts, tests, and evidence.
|
|
20
|
+
|
|
21
|
+
## Files
|
|
22
|
+
|
|
23
|
+
- `README.md`
|
|
24
|
+
- `README_FOR_AI.md`
|
|
25
|
+
- `docs/CLI_UX_GUIDE.md`
|
|
26
|
+
- `docs/reference/commands.md`
|
|
27
|
+
- `src/create-quiver/commands/dashboard.js`
|
|
28
|
+
- `src/create-quiver/index.js`
|
|
29
|
+
- `src/create-quiver/lib/dashboard.js`
|
|
30
|
+
- `src/create-quiver/lib/init-docs.js`
|
|
31
|
+
- `tests/commands/dashboard.test.js`
|
|
32
|
+
- `tests/commands/cli-contract.test.js`
|
|
33
|
+
- `tests/commands/ux-flags.test.js`
|
|
34
|
+
- `tests/lib/dashboard.test.js`
|
|
35
|
+
- `tests/lib/init-docs.test.js`
|
|
36
|
+
- `tests/lib/init-layout.test.js`
|
|
37
|
+
- `specs/quiver-v34-cli-dashboard-status/**`
|
|
38
|
+
|
|
39
|
+
## How to Test (DETAILED - REQUIRED)
|
|
40
|
+
|
|
41
|
+
### Required Environment
|
|
42
|
+
|
|
43
|
+
- Node.js and npm.
|
|
44
|
+
- No provider credentials are required.
|
|
45
|
+
- No GitHub credentials are required.
|
|
46
|
+
|
|
47
|
+
### Worktree Access
|
|
48
|
+
|
|
49
|
+
- One dedicated branch/worktree for `quiver-v34-cli-dashboard-status`.
|
|
50
|
+
- One commit per slice.
|
|
51
|
+
|
|
52
|
+
### Use Cases
|
|
53
|
+
|
|
54
|
+
- Run `npx create-quiver dashboard` in a project with specs and slices.
|
|
55
|
+
- Run `npx create-quiver dashboard --json` and parse stdout as JSON.
|
|
56
|
+
- Run `npx create-quiver dashboard --spec <slug>` for an existing spec.
|
|
57
|
+
- Run `npx create-quiver dashboard --spec missing-spec` and verify actionable failure.
|
|
58
|
+
- Run `npx create-quiver dashboard --include-completed` and verify completed slices are visible while global progress remains correct.
|
|
59
|
+
- Run in legacy/incomplete/no-spec/no-slice fixtures and verify useful output without crashes.
|
|
60
|
+
- Run with no-color/CI/no-TTY conditions and verify no prompts, spinners, or color-only semantics.
|
|
61
|
+
|
|
62
|
+
### Technical Verification
|
|
63
|
+
|
|
64
|
+
- `node --test tests/lib/dashboard.test.js`
|
|
65
|
+
- `node --test tests/commands/dashboard.test.js`
|
|
66
|
+
- `node --test tests/commands/cli-contract.test.js tests/commands/ux-flags.test.js`
|
|
67
|
+
- `node --test tests/lib/ai-export-state.test.js tests/commands/ai-export.test.js`
|
|
68
|
+
- `node --test tests/lib/init-docs.test.js tests/lib/init-layout.test.js`
|
|
69
|
+
- `node --test tests/**/*.test.js`
|
|
70
|
+
- `npm run smoke:create-quiver`
|
|
71
|
+
- `npm run smoke:doctor-fixtures`
|
|
72
|
+
- `npm run smoke:guided-workflow`
|
|
73
|
+
- `npm run package:quiver`
|
|
74
|
+
- `git diff --check`
|
|
75
|
+
- `node bin/create-quiver.js spec validate specs/quiver-v34-cli-dashboard-status`
|
|
76
|
+
|
|
77
|
+
## Evidence
|
|
78
|
+
|
|
79
|
+
- `node --test tests/lib/dashboard.test.js tests/commands/dashboard.test.js tests/commands/cli-contract.test.js tests/commands/ux-flags.test.js tests/lib/init-layout.test.js tests/lib/init-docs.test.js` passed.
|
|
80
|
+
- `node --test` passed: 511 tests.
|
|
81
|
+
- `npm run smoke:create-quiver` passed.
|
|
82
|
+
- `npm run smoke:doctor-fixtures` passed: 13 states.
|
|
83
|
+
- `npm run smoke:guided-workflow` passed.
|
|
84
|
+
- `npm run package:quiver` passed: `create-quiver-0.15.2.tgz`.
|
|
85
|
+
- `node bin/create-quiver.js dashboard --json --spec quiver-v34-cli-dashboard-status` passed.
|
|
86
|
+
- `git diff --check` passed.
|
|
87
|
+
- `node bin/create-quiver.js spec validate specs/quiver-v34-cli-dashboard-status` passed.
|
|
88
|
+
|
|
89
|
+
## Rollback
|
|
90
|
+
|
|
91
|
+
Revert slice commits in reverse order. The dashboard is additive and read-only, so rollback should not affect existing workflow commands if done by slice.
|
|
92
|
+
|
|
93
|
+
## Risks / Notes
|
|
94
|
+
|
|
95
|
+
- Dashboard progress must distinguish global progress from visible filtered progress.
|
|
96
|
+
- `dashboard --json` must stay compact and must not duplicate the full `ai export` contract.
|
|
97
|
+
- Graph errors must not break the entire dashboard.
|
|
98
|
+
- Evidence/log content must not be printed.
|
|
99
|
+
- This PR does not publish npm.
|
package/specs/quiver-v34-cli-dashboard-status/slices/slice-00-dashboard-foundation/CLOSURE_BRIEF.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# CLOSURE_BRIEF - slice-00 Dashboard foundation
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Created the v34 spec package for the CLI dashboard status feature. This foundation is documentation-only and does not implement product behavior.
|
|
6
|
+
|
|
7
|
+
## Validation
|
|
8
|
+
|
|
9
|
+
- [x] Slice JSON parse command passed for 6 slice files.
|
|
10
|
+
- [x] `node bin/create-quiver.js spec validate specs/quiver-v34-cli-dashboard-status` passed.
|
|
11
|
+
- [x] `git diff --check` passed.
|
|
12
|
+
|
|
13
|
+
## Pending
|
|
14
|
+
|
|
15
|
+
- Execute `slice-01-dashboard-report-contract`.
|
|
16
|
+
|
|
17
|
+
## Remaining Risks
|
|
18
|
+
|
|
19
|
+
- None critical for the foundation package.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# EXECUTION_BRIEF - slice-00 Dashboard foundation
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
The user approved a read-only CLI dashboard initiative after acceptance criteria and production-plan review. The repository already has lifecycle export state and CLI UX rules, so this foundation slice only creates the durable spec package.
|
|
6
|
+
|
|
7
|
+
## Objective
|
|
8
|
+
|
|
9
|
+
Create the v34 spec package for `quiver dashboard` without changing product code.
|
|
10
|
+
|
|
11
|
+
## Scope
|
|
12
|
+
|
|
13
|
+
- `specs/quiver-v34-cli-dashboard-status/**`
|
|
14
|
+
|
|
15
|
+
## Acceptance Criteria
|
|
16
|
+
|
|
17
|
+
- `SPEC.md`, `STATUS.md`, `EVIDENCE_REPORT.md`, `EXECUTION_PLAN.md`, and `pr.md` exist.
|
|
18
|
+
- Every slice has `slice.json`, `EXECUTION_BRIEF.md`, and `CLOSURE_BRIEF.md`.
|
|
19
|
+
- The approved acceptance criteria and reviewed technical plan are captured.
|
|
20
|
+
- No product code is modified.
|
|
21
|
+
|
|
22
|
+
## Technical Plan Summary
|
|
23
|
+
|
|
24
|
+
Create a complete spec package following the existing `specs/quiver-vNN-*` pattern. Mark this foundation slice completed and leave implementation slices ready/planned.
|
|
25
|
+
|
|
26
|
+
## Suggested Steps
|
|
27
|
+
|
|
28
|
+
1. Create the spec directory and top-level documents.
|
|
29
|
+
2. Create all slice directories and handoffs.
|
|
30
|
+
3. Validate every `slice.json`.
|
|
31
|
+
4. Validate the spec package.
|
|
32
|
+
5. Record evidence.
|
|
33
|
+
|
|
34
|
+
## Restrictions
|
|
35
|
+
|
|
36
|
+
- Do not implement the dashboard.
|
|
37
|
+
- Do not update root README or command docs in this slice.
|
|
38
|
+
- Do not claim npm publication.
|
|
39
|
+
|
|
40
|
+
## Risks
|
|
41
|
+
|
|
42
|
+
- Missing handoffs would block future executor agents.
|
|
43
|
+
|
|
44
|
+
## Completion Checklist
|
|
45
|
+
|
|
46
|
+
- [ ] Spec package created.
|
|
47
|
+
- [ ] Slice handoffs created.
|
|
48
|
+
- [ ] Slice JSON files parse.
|
|
49
|
+
- [ ] Spec validation passes.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slice_id": "slice-00-dashboard-foundation",
|
|
3
|
+
"ticket": "QUIVER-34-00",
|
|
4
|
+
"type": "docs",
|
|
5
|
+
"title": "Dashboard foundation",
|
|
6
|
+
"objective": "Create the v34 spec package for the read-only CLI dashboard status feature.",
|
|
7
|
+
"description": "Publishes the approved spec, execution plan, PR body, status, evidence report, slice definitions, and handoffs without changing product code.",
|
|
8
|
+
"git": {
|
|
9
|
+
"branch_type": "feature",
|
|
10
|
+
"base_branch": "main",
|
|
11
|
+
"branch_slug": "v34-dashboard-foundation",
|
|
12
|
+
"branch_name": "feature/QUIVER-34-00-v34-dashboard-foundation"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"specs/quiver-v34-cli-dashboard-status/**"
|
|
16
|
+
],
|
|
17
|
+
"expected_read_paths": [
|
|
18
|
+
"README_FOR_AI.md",
|
|
19
|
+
"ROADMAP.md",
|
|
20
|
+
"BACKLOG.md",
|
|
21
|
+
"docs/CLI_UX_GUIDE.md",
|
|
22
|
+
"docs/reference/commands.md",
|
|
23
|
+
"docs/workflows/full-ai-spec-to-pr.md",
|
|
24
|
+
"specs/quiver-v23-guided-flow-productization/**",
|
|
25
|
+
"specs/quiver-v29-planner-prepare-context-cli-ux/**",
|
|
26
|
+
"specs/quiver-v30-interactive-cli-ux-agent-selection/**",
|
|
27
|
+
"specs/quiver-v33-approval-ux-and-planner-progress/**"
|
|
28
|
+
],
|
|
29
|
+
"allowed_write_paths": [
|
|
30
|
+
"specs/quiver-v34-cli-dashboard-status/**"
|
|
31
|
+
],
|
|
32
|
+
"depends_on": [],
|
|
33
|
+
"parallel_safe": "no",
|
|
34
|
+
"parallel_safe_reason": "slice-00 is the foundation barrier for the spec.",
|
|
35
|
+
"must": [
|
|
36
|
+
"Create SPEC.md, STATUS.md, EVIDENCE_REPORT.md, EXECUTION_PLAN.md, and pr.md.",
|
|
37
|
+
"Create slice.json, EXECUTION_BRIEF.md, and CLOSURE_BRIEF.md for every slice.",
|
|
38
|
+
"Capture approved acceptance criteria, review findings, and technical plan.",
|
|
39
|
+
"Avoid product code changes."
|
|
40
|
+
],
|
|
41
|
+
"not_included": [
|
|
42
|
+
"Implementing the dashboard command.",
|
|
43
|
+
"Changing CLI routing.",
|
|
44
|
+
"Updating public docs outside this spec package.",
|
|
45
|
+
"Publishing a package."
|
|
46
|
+
],
|
|
47
|
+
"acceptance": [
|
|
48
|
+
"Spec folder exists under specs/quiver-v34-cli-dashboard-status.",
|
|
49
|
+
"Every slice has slice.json, EXECUTION_BRIEF.md, and CLOSURE_BRIEF.md.",
|
|
50
|
+
"Every slice.json parses successfully.",
|
|
51
|
+
"Spec validation passes.",
|
|
52
|
+
"No product code is modified."
|
|
53
|
+
],
|
|
54
|
+
"tests": [
|
|
55
|
+
"git diff --check",
|
|
56
|
+
"find specs/quiver-v34-cli-dashboard-status -name \"slice.json\" -print -exec node -e \"JSON.parse(require('fs').readFileSync(process.argv[1], 'utf8'))\" {} \\;",
|
|
57
|
+
"node bin/create-quiver.js spec validate specs/quiver-v34-cli-dashboard-status"
|
|
58
|
+
],
|
|
59
|
+
"validation_hints": [
|
|
60
|
+
"Keep this slice documentation-only.",
|
|
61
|
+
"Do not claim implementation or package publication."
|
|
62
|
+
],
|
|
63
|
+
"estimated_hours": 2,
|
|
64
|
+
"status": "completed",
|
|
65
|
+
"blocked_reason": null,
|
|
66
|
+
"actual_hours": 2,
|
|
67
|
+
"completed_at": "2026-05-28"
|
|
68
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# CLOSURE_BRIEF - slice-01 Dashboard report contract
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Implemented the compact dashboard report contract in `src/create-quiver/lib/dashboard.js`. The report exposes schema version 1, global vs visible progress, filtered specs/slices, next-ready work, blockers, warnings, agents, approvals, active-slice reconciliation, run summaries, evidence counts, and next safe commands without leaking raw evidence values.
|
|
6
|
+
|
|
7
|
+
## Validation
|
|
8
|
+
|
|
9
|
+
- [x] `node --test tests/lib/dashboard.test.js`
|
|
10
|
+
- [x] `node --test tests/lib/ai-export-state.test.js tests/commands/ai-export.test.js` covered by full `node --test`.
|
|
11
|
+
- [x] `git diff --check`
|
|
12
|
+
|
|
13
|
+
## Pending
|
|
14
|
+
|
|
15
|
+
- None for this slice.
|
|
16
|
+
|
|
17
|
+
## Remaining Risks
|
|
18
|
+
|
|
19
|
+
- None critical.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# EXECUTION_BRIEF - slice-01 Dashboard report contract
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
`ai export --format json` already exposes lifecycle state and a `dashboard` subobject, but the new public dashboard needs a compact purpose-built contract. It must not become a second source of truth.
|
|
6
|
+
|
|
7
|
+
## Objective
|
|
8
|
+
|
|
9
|
+
Create the dashboard report model that future command rendering can consume.
|
|
10
|
+
|
|
11
|
+
## Scope
|
|
12
|
+
|
|
13
|
+
- `src/create-quiver/lib/dashboard.js`
|
|
14
|
+
- compatible helper extraction in `src/create-quiver/lib/ai/export-state.js` if needed
|
|
15
|
+
- focused model tests
|
|
16
|
+
|
|
17
|
+
## Acceptance Criteria
|
|
18
|
+
|
|
19
|
+
- Report includes `dashboard_schema_version: 1`.
|
|
20
|
+
- Report includes `summary`, `global_progress`, `visible_progress`, `next_ready`, `specs`, `slices`, `agents`, `approvals`, `active_slice`, `blockers`, `warnings`, and `next_steps`.
|
|
21
|
+
- Global progress includes completed slices even when visible work hides them.
|
|
22
|
+
- Visible progress respects `--spec` and `--include-completed`.
|
|
23
|
+
- Evidence and run details are summarized without raw logs or evidence values.
|
|
24
|
+
- Missing data is represented with stable nulls/empty arrays rather than crashes.
|
|
25
|
+
|
|
26
|
+
## Technical Plan Summary
|
|
27
|
+
|
|
28
|
+
Build pure dashboard helpers on top of existing lifecycle export and project-state resolver data. Keep CLI routing and formatting out of this slice.
|
|
29
|
+
|
|
30
|
+
## Suggested Steps
|
|
31
|
+
|
|
32
|
+
1. Define the compact report shape.
|
|
33
|
+
2. Add report construction from existing export state.
|
|
34
|
+
3. Add global vs visible progress calculation.
|
|
35
|
+
4. Add safe evidence/run summaries.
|
|
36
|
+
5. Add next-ready derivation where graph data allows it.
|
|
37
|
+
6. Add model tests for default, include-completed, spec filter, missing data, and evidence safety.
|
|
38
|
+
|
|
39
|
+
## Restrictions
|
|
40
|
+
|
|
41
|
+
- Do not add top-level command routing.
|
|
42
|
+
- Do not add prompts, spinners, writes, providers, or shell-outs.
|
|
43
|
+
- Do not return the full lifecycle export as dashboard JSON.
|
|
44
|
+
|
|
45
|
+
## Risks
|
|
46
|
+
|
|
47
|
+
- Progress can be misleading if global and visible counts are collapsed into one number.
|
|
48
|
+
|
|
49
|
+
## Completion Checklist
|
|
50
|
+
|
|
51
|
+
- [ ] Report contract implemented.
|
|
52
|
+
- [ ] Focused tests added.
|
|
53
|
+
- [ ] Existing `ai export` tests still pass.
|
package/specs/quiver-v34-cli-dashboard-status/slices/slice-01-dashboard-report-contract/slice.json
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slice_id": "slice-01-dashboard-report-contract",
|
|
3
|
+
"ticket": "QUIVER-34-01",
|
|
4
|
+
"type": "feature",
|
|
5
|
+
"title": "Dashboard report contract",
|
|
6
|
+
"objective": "Create a compact read-only dashboard report contract from existing Quiver lifecycle state.",
|
|
7
|
+
"description": "Adds the dashboard data model that separates global progress from visible progress, exposes next-ready work, and summarizes state without duplicating lifecycle export or leaking evidence/log content.",
|
|
8
|
+
"git": {
|
|
9
|
+
"branch_type": "feature",
|
|
10
|
+
"base_branch": "main",
|
|
11
|
+
"branch_slug": "v34-dashboard-report-contract",
|
|
12
|
+
"branch_name": "feature/QUIVER-34-01-v34-dashboard-report-contract"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"src/create-quiver/lib/dashboard.js",
|
|
16
|
+
"src/create-quiver/lib/ai/export-state.js",
|
|
17
|
+
"tests/lib/dashboard.test.js",
|
|
18
|
+
"tests/lib/ai-export-state.test.js"
|
|
19
|
+
],
|
|
20
|
+
"expected_read_paths": [
|
|
21
|
+
"src/create-quiver/lib/ai/export-state.js",
|
|
22
|
+
"src/create-quiver/lib/project-state-resolver.js",
|
|
23
|
+
"src/create-quiver/commands/plan.js",
|
|
24
|
+
"src/create-quiver/commands/next.js",
|
|
25
|
+
"tests/commands/ai-export.test.js",
|
|
26
|
+
"tests/lib/ai-export-state.test.js",
|
|
27
|
+
"specs/quiver-v34-cli-dashboard-status/SPEC.md"
|
|
28
|
+
],
|
|
29
|
+
"allowed_write_paths": [
|
|
30
|
+
"src/create-quiver/lib/dashboard.js",
|
|
31
|
+
"src/create-quiver/lib/ai/export-state.js",
|
|
32
|
+
"tests/lib/dashboard.test.js",
|
|
33
|
+
"tests/lib/ai-export-state.test.js",
|
|
34
|
+
"specs/quiver-v34-cli-dashboard-status/**"
|
|
35
|
+
],
|
|
36
|
+
"depends_on": [
|
|
37
|
+
"slice-00-dashboard-foundation"
|
|
38
|
+
],
|
|
39
|
+
"parallel_safe": "no",
|
|
40
|
+
"parallel_safe_reason": "The report contract is the dependency for command rendering and edge-case hardening.",
|
|
41
|
+
"must": [
|
|
42
|
+
"Use existing lifecycle/export state as the source of truth.",
|
|
43
|
+
"Define dashboard_schema_version 1.",
|
|
44
|
+
"Return a compact report, not the full ai export payload.",
|
|
45
|
+
"Calculate global_progress from all slices.",
|
|
46
|
+
"Calculate visible_progress from filters such as --spec and --include-completed.",
|
|
47
|
+
"Summarize evidence and runs without raw log or evidence content.",
|
|
48
|
+
"Expose next_ready when graph state allows it.",
|
|
49
|
+
"Preserve existing ai export behavior unless a backwards-compatible helper extraction is needed."
|
|
50
|
+
],
|
|
51
|
+
"not_included": [
|
|
52
|
+
"Top-level CLI routing.",
|
|
53
|
+
"Human formatting.",
|
|
54
|
+
"Generated docs or package scripts.",
|
|
55
|
+
"Interactive behavior."
|
|
56
|
+
],
|
|
57
|
+
"acceptance": [
|
|
58
|
+
"Dashboard report includes dashboard_schema_version, summary, global_progress, visible_progress, next_ready, specs, slices, agents, approvals, active_slice, blockers, warnings, and next_steps.",
|
|
59
|
+
"Completed slices are counted in global_progress even when hidden from visible slices.",
|
|
60
|
+
"Visible progress changes with --include-completed and --spec filters.",
|
|
61
|
+
"Evidence/log content is not included in the compact report.",
|
|
62
|
+
"Report construction does not shell out to the CLI."
|
|
63
|
+
],
|
|
64
|
+
"tests": [
|
|
65
|
+
"node --test tests/lib/dashboard.test.js",
|
|
66
|
+
"node --test tests/lib/ai-export-state.test.js tests/commands/ai-export.test.js",
|
|
67
|
+
"git diff --check"
|
|
68
|
+
],
|
|
69
|
+
"validation_hints": [
|
|
70
|
+
"Prefer pure functions for report construction.",
|
|
71
|
+
"Keep the report easy to snapshot and stable for future consumers."
|
|
72
|
+
],
|
|
73
|
+
"estimated_hours": 5,
|
|
74
|
+
"status": "completed",
|
|
75
|
+
"blocked_reason": null,
|
|
76
|
+
"actual_hours": 5,
|
|
77
|
+
"completed_at": "2026-05-28"
|
|
78
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# CLOSURE_BRIEF - slice-02 Dashboard command and rendering
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Added the top-level `dashboard` command, CLI router integration, help/example coverage, human output, JSON output, and UX flag guardrail coverage. The command is read-only, uses no prompts/spinners, and keeps JSON stdout parseable.
|
|
6
|
+
|
|
7
|
+
## Validation
|
|
8
|
+
|
|
9
|
+
- [x] `node --test tests/commands/dashboard.test.js`
|
|
10
|
+
- [x] `node --test tests/commands/cli-contract.test.js tests/commands/ux-flags.test.js`
|
|
11
|
+
- [x] `git diff --check`
|
|
12
|
+
|
|
13
|
+
## Pending
|
|
14
|
+
|
|
15
|
+
- None for this slice.
|
|
16
|
+
|
|
17
|
+
## Remaining Risks
|
|
18
|
+
|
|
19
|
+
- None critical.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# EXECUTION_BRIEF - slice-02 Dashboard command and rendering
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
The report contract exists from slice-01. This slice makes it available through the CLI.
|
|
6
|
+
|
|
7
|
+
## Objective
|
|
8
|
+
|
|
9
|
+
Add `npx create-quiver dashboard` with human and JSON output.
|
|
10
|
+
|
|
11
|
+
## Scope
|
|
12
|
+
|
|
13
|
+
- `src/create-quiver/commands/dashboard.js`
|
|
14
|
+
- `src/create-quiver/index.js`
|
|
15
|
+
- focused command tests
|
|
16
|
+
|
|
17
|
+
## Acceptance Criteria
|
|
18
|
+
|
|
19
|
+
- `dashboard` is a supported top-level command.
|
|
20
|
+
- `dashboard --json` emits parseable compact JSON.
|
|
21
|
+
- Human output shows project, progress, next ready slice, blockers, approvals, agents, active slice, and next steps where available.
|
|
22
|
+
- `--spec`, `--include-completed`, and `--no-color` are passed to the report/formatting layer.
|
|
23
|
+
- `--interactive`, `--review`, and `--with-planner` are rejected.
|
|
24
|
+
- Help output documents the command.
|
|
25
|
+
|
|
26
|
+
## Technical Plan Summary
|
|
27
|
+
|
|
28
|
+
Add a command wrapper that calls the dashboard report helpers and formats either compact JSON or human output. Integrate the command into the central parser/router/help.
|
|
29
|
+
|
|
30
|
+
## Suggested Steps
|
|
31
|
+
|
|
32
|
+
1. Add `commands/dashboard.js`.
|
|
33
|
+
2. Add `dashboard` to supported modes.
|
|
34
|
+
3. Add usage/help/example entries.
|
|
35
|
+
4. Wire options into `runDashboard`.
|
|
36
|
+
5. Add command tests for human output, JSON, filters, no-color, and unsupported UX flags.
|
|
37
|
+
|
|
38
|
+
## Restrictions
|
|
39
|
+
|
|
40
|
+
- Do not perform writes.
|
|
41
|
+
- Do not start slices.
|
|
42
|
+
- Do not prompt.
|
|
43
|
+
- Do not use Ink.
|
|
44
|
+
|
|
45
|
+
## Risks
|
|
46
|
+
|
|
47
|
+
- Central CLI router changes can regress help or unsupported-command behavior.
|
|
48
|
+
|
|
49
|
+
## Completion Checklist
|
|
50
|
+
|
|
51
|
+
- [ ] Command implemented.
|
|
52
|
+
- [ ] Help updated.
|
|
53
|
+
- [ ] Command tests pass.
|
package/specs/quiver-v34-cli-dashboard-status/slices/slice-02-dashboard-command-rendering/slice.json
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slice_id": "slice-02-dashboard-command-rendering",
|
|
3
|
+
"ticket": "QUIVER-34-02",
|
|
4
|
+
"type": "feature",
|
|
5
|
+
"title": "Dashboard command and rendering",
|
|
6
|
+
"objective": "Expose the dashboard report through a top-level CLI command with human and JSON output.",
|
|
7
|
+
"description": "Adds `npx create-quiver dashboard`, compact JSON output, human rendering, CLI help, examples, and UX flag guardrail coverage.",
|
|
8
|
+
"git": {
|
|
9
|
+
"branch_type": "feature",
|
|
10
|
+
"base_branch": "main",
|
|
11
|
+
"branch_slug": "v34-dashboard-command-rendering",
|
|
12
|
+
"branch_name": "feature/QUIVER-34-02-dashboard-command-rendering"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"src/create-quiver/commands/dashboard.js",
|
|
16
|
+
"src/create-quiver/index.js",
|
|
17
|
+
"src/create-quiver/lib/dashboard.js",
|
|
18
|
+
"tests/commands/dashboard.test.js",
|
|
19
|
+
"tests/commands/cli-contract.test.js",
|
|
20
|
+
"tests/commands/ux-flags.test.js"
|
|
21
|
+
],
|
|
22
|
+
"expected_read_paths": [
|
|
23
|
+
"src/create-quiver/index.js",
|
|
24
|
+
"src/create-quiver/lib/cli/ux.js",
|
|
25
|
+
"src/create-quiver/lib/cli/theme.js",
|
|
26
|
+
"src/create-quiver/lib/cli/ux-flags.js",
|
|
27
|
+
"src/create-quiver/lib/dashboard.js",
|
|
28
|
+
"tests/commands/cli-contract.test.js",
|
|
29
|
+
"tests/commands/ux-flags.test.js",
|
|
30
|
+
"specs/quiver-v34-cli-dashboard-status/SPEC.md"
|
|
31
|
+
],
|
|
32
|
+
"allowed_write_paths": [
|
|
33
|
+
"src/create-quiver/commands/dashboard.js",
|
|
34
|
+
"src/create-quiver/index.js",
|
|
35
|
+
"src/create-quiver/lib/dashboard.js",
|
|
36
|
+
"tests/commands/dashboard.test.js",
|
|
37
|
+
"tests/commands/cli-contract.test.js",
|
|
38
|
+
"tests/commands/ux-flags.test.js",
|
|
39
|
+
"specs/quiver-v34-cli-dashboard-status/**"
|
|
40
|
+
],
|
|
41
|
+
"depends_on": [
|
|
42
|
+
"slice-01-dashboard-report-contract"
|
|
43
|
+
],
|
|
44
|
+
"parallel_safe": "no",
|
|
45
|
+
"parallel_safe_reason": "The public command consumes the report contract and touches the central CLI router.",
|
|
46
|
+
"must": [
|
|
47
|
+
"Add top-level `dashboard` routing.",
|
|
48
|
+
"Support `--json`, `--spec <slug>`, `--include-completed`, and `--no-color`.",
|
|
49
|
+
"Emit parseable JSON with no human prose in JSON mode.",
|
|
50
|
+
"Render human output with clear sections and next safe commands.",
|
|
51
|
+
"Respect no-color and CI/no-TTY output constraints.",
|
|
52
|
+
"Reject unsupported UX flags through existing guardrails.",
|
|
53
|
+
"Document the command in help and examples."
|
|
54
|
+
],
|
|
55
|
+
"not_included": [
|
|
56
|
+
"Interactive navigation.",
|
|
57
|
+
"Ink or fullscreen TUI.",
|
|
58
|
+
"Starting slices from the dashboard.",
|
|
59
|
+
"Docs/templates updates outside help text."
|
|
60
|
+
],
|
|
61
|
+
"acceptance": [
|
|
62
|
+
"`node bin/create-quiver.js dashboard` prints a human dashboard.",
|
|
63
|
+
"`node bin/create-quiver.js dashboard --json` emits parseable compact JSON.",
|
|
64
|
+
"The command is included in `--help` and grouped command descriptions.",
|
|
65
|
+
"Unsupported UX flags fail early.",
|
|
66
|
+
"No prompt or spinner is used."
|
|
67
|
+
],
|
|
68
|
+
"tests": [
|
|
69
|
+
"node --test tests/commands/dashboard.test.js",
|
|
70
|
+
"node --test tests/commands/cli-contract.test.js tests/commands/ux-flags.test.js",
|
|
71
|
+
"git diff --check"
|
|
72
|
+
],
|
|
73
|
+
"validation_hints": [
|
|
74
|
+
"Keep command implementation thin over the dashboard report contract.",
|
|
75
|
+
"JSON stdout must be clean."
|
|
76
|
+
],
|
|
77
|
+
"estimated_hours": 5,
|
|
78
|
+
"status": "completed",
|
|
79
|
+
"blocked_reason": null,
|
|
80
|
+
"actual_hours": 4,
|
|
81
|
+
"completed_at": "2026-05-28"
|
|
82
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# CLOSURE_BRIEF - slice-03 Dashboard edge cases and guardrails
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Hardened dashboard behavior for explicit missing specs, zero-slice specs, graph cycles, JSON failure output, evidence summary leakage, and no-crash graph fallback. Fixed `project-state-resolver` so `allowGraphErrors` also tolerates cycle errors raised during topological sorting.
|
|
6
|
+
|
|
7
|
+
## Validation
|
|
8
|
+
|
|
9
|
+
- [x] `node --test tests/lib/dashboard.test.js tests/commands/dashboard.test.js`
|
|
10
|
+
- [x] Full `node --test` passed.
|
|
11
|
+
- [x] `git diff --check`
|
|
12
|
+
|
|
13
|
+
## Pending
|
|
14
|
+
|
|
15
|
+
- None for this slice.
|
|
16
|
+
|
|
17
|
+
## Remaining Risks
|
|
18
|
+
|
|
19
|
+
- None critical.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# EXECUTION_BRIEF - slice-03 Dashboard edge cases and guardrails
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
The dashboard command exists after slice-02. This slice prevents partial-fix behavior in states that real projects hit frequently: old layouts, missing specs, invalid graphs, and sensitive evidence.
|
|
6
|
+
|
|
7
|
+
## Objective
|
|
8
|
+
|
|
9
|
+
Make dashboard output trustworthy and resilient across edge cases.
|
|
10
|
+
|
|
11
|
+
## Scope
|
|
12
|
+
|
|
13
|
+
- dashboard report helpers
|
|
14
|
+
- dashboard command formatting/error handling
|
|
15
|
+
- focused fixture tests
|
|
16
|
+
|
|
17
|
+
## Acceptance Criteria
|
|
18
|
+
|
|
19
|
+
- Missing explicit `--spec` fails actionably.
|
|
20
|
+
- Invalid graph state does not crash the whole dashboard.
|
|
21
|
+
- No specs/no slices still produce useful next steps.
|
|
22
|
+
- Legacy/incomplete layouts show migration guidance.
|
|
23
|
+
- Evidence/log contents are not printed.
|
|
24
|
+
- JSON and human modes stay separate and clean.
|
|
25
|
+
- No-color/CI/no-TTY behavior is readable and prompt-free.
|
|
26
|
+
|
|
27
|
+
## Technical Plan Summary
|
|
28
|
+
|
|
29
|
+
Add guardrails and tests around the report/command layers without changing workflow semantics or slice graph internals.
|
|
30
|
+
|
|
31
|
+
## Suggested Steps
|
|
32
|
+
|
|
33
|
+
1. Add missing-spec validation.
|
|
34
|
+
2. Add graph-error fallback tests.
|
|
35
|
+
3. Add no-spec/no-slice fixture tests.
|
|
36
|
+
4. Add legacy/incomplete layout fixture tests.
|
|
37
|
+
5. Add evidence/log redaction tests.
|
|
38
|
+
6. Add no-color/CI/no-TTY tests.
|
|
39
|
+
|
|
40
|
+
## Restrictions
|
|
41
|
+
|
|
42
|
+
- Do not alter persisted project state.
|
|
43
|
+
- Do not relax existing graph validation semantics outside dashboard fallback behavior.
|
|
44
|
+
- Do not print raw evidence values.
|
|
45
|
+
|
|
46
|
+
## Risks
|
|
47
|
+
|
|
48
|
+
- Over-hardening the dashboard can diverge from `ai export`; keep source-of-truth alignment explicit.
|
|
49
|
+
|
|
50
|
+
## Completion Checklist
|
|
51
|
+
|
|
52
|
+
- [ ] Edge-case tests pass.
|
|
53
|
+
- [ ] JSON remains parseable.
|
|
54
|
+
- [ ] Sensitive summaries remain bounded.
|