create-quiver 0.15.1 → 0.15.2
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 +2 -0
- package/README_FOR_AI.md +5 -3
- package/docs/CLI_UX_GUIDE.md +15 -1
- package/docs/COMMANDS.md.template +2 -1
- package/docs/WORKFLOW.md.template +2 -2
- package/docs/reference/commands.md +10 -4
- package/package.json +1 -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/src/create-quiver/commands/ai.js +112 -12
- package/src/create-quiver/commands/flow.js +74 -12
- package/src/create-quiver/commands/spec.js +8 -1
- package/src/create-quiver/index.js +10 -2
- 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/git.js +13 -4
- package/src/create-quiver/lib/paths.js +45 -3
package/.github/workflows/ci.yml
CHANGED
package/README.md
CHANGED
|
@@ -182,8 +182,10 @@ Usá la guía que corresponda al estado de tu proyecto:
|
|
|
182
182
|
| `npx --yes create-quiver@latest ai agent doctor` | Diagnostica perfiles de agentes existentes. |
|
|
183
183
|
| `npx --yes create-quiver@latest ai agent repair --dry-run` | Previsualiza reparaciones seguras para perfiles heredados o mal configurados. |
|
|
184
184
|
| `npx --yes create-quiver@latest ai plan --phase acceptance` | Genera un borrador de criterios de aceptación. |
|
|
185
|
+
| `npx --yes create-quiver@latest ai approve --phase acceptance` | En TTY lista drafts y recomienda la versión current/latest aprobable. |
|
|
185
186
|
| `npx --yes create-quiver@latest ai plan --phase technical-plan` | Genera un borrador de plan técnico. |
|
|
186
187
|
| `npx --yes create-quiver@latest ai review-plan` | Revisa el plan técnico antes de aprobarlo. |
|
|
188
|
+
| `npx --yes create-quiver@latest ai approve --phase technical-plan` | En TTY muestra drafts con datos de review; en CI usá `--version <n>`. |
|
|
187
189
|
| `npx --yes create-quiver@latest spec create` | Crea spec, slices, briefs, plan de ejecución y cuerpo del PR. |
|
|
188
190
|
| `npx --yes create-quiver@latest spec create --interactive` | Guía la selección de metodología, input aprobado y revisión antes de escribir la spec. |
|
|
189
191
|
| `npx --yes create-quiver@latest spec start specs/<spec>` | Crea o reutiliza el worktree de una spec. |
|
package/README_FOR_AI.md
CHANGED
|
@@ -35,9 +35,11 @@ Agent profiles live in `.quiver/agents/profiles.json`; they store role, provider
|
|
|
35
35
|
`npx create-quiver ai models list` shows models known by Quiver, not models guaranteed available in the user's provider account. Use `npx create-quiver ai agent doctor` to diagnose profile issues and `npx create-quiver ai agent repair --dry-run` to preview safe legacy-profile alias normalization before writing anything.
|
|
36
36
|
Provider/model selection must be honest: dry-runs can preview a selected model without provider auth, but live IA execution must pass the selected model through the provider adapter or fail with actionable guidance instead of silently ignoring it.
|
|
37
37
|
Planner-oriented live IA commands must show visible TTY progress with the selected profile/model name, completed preparation checks, and a provider-running spinner. `--dry-run`, `--print-prompt`, CI, JSON, and non-TTY output must remain clean and automation-safe.
|
|
38
|
+
This progress standard applies to `ai plan`, `ai revise`, `ai review-plan`, and `ai repair-plan`; do not add fake loaders to dry-runs or prompt-only output.
|
|
38
39
|
Executor and PR live commands follow the same standard: show truthful TTY progress for slice execution, validation, commits, GitHub preflight, and PR creation while preserving scope gates, provider errors, `gh` errors, and clean machine output.
|
|
39
|
-
Planner drafts are versioned under `.quiver/approvals/<phase>/drafts/`; review the technical-plan draft with `npx create-quiver ai review-plan --dry-run` before approving it
|
|
40
|
+
Planner drafts are versioned under `.quiver/approvals/<phase>/drafts/`; review the technical-plan draft with `npx create-quiver ai review-plan --dry-run` before approving it. In TTY, `npx create-quiver ai approve --phase <phase>` can list saved drafts and recommend the current/latest eligible version; in CI/no-TTY, pass `--version <n>` explicitly.
|
|
40
41
|
`ai review-plan` stores structured closure metadata under `.quiver/approvals/plan-review/meta.json`: `approval_recommendation` is `approve`, `approve-with-risk`, or `revise`; required fixes block technical-plan approval, while optional hardening does not.
|
|
42
|
+
Use `npx create-quiver ai approvals`, `npx create-quiver flow`, `npx create-quiver ai status`, and `npx create-quiver ai resume` to read the same approval-candidate guidance before choosing the next command. `spec create --interactive` must show the reviewed approved technical-plan input, approved version, and review summary before writing.
|
|
41
43
|
AI lifecycle runs are persisted under `.quiver/runs/<run-id>/`; use `npx create-quiver ai run create --input <requirements.md>` to start one explicitly, `npx create-quiver ai status` to inspect it, `npx create-quiver ai resume` to continue from the last valid phase without relying on chat memory, and `npx create-quiver ai export --format json|markdown` when another agent, PR, or dashboard needs the current specs/slices/runs state.
|
|
42
44
|
Use `npx create-quiver ai active-slice reconcile --dry-run` when `docs/ai/ACTIVE_SLICE.md`, `ACTIVE_SLICES.md`, worktrees, or `ai inspect` appear out of sync. The command is dry-run-first and reports preserve, close, replace, or blocked decisions without writing files.
|
|
43
45
|
When generating commands for another AI agent, prefer non-interactive package-pinned examples such as `npx --yes create-quiver@<version> ai prompt-slice --slice <slice.json> --dry-run`.
|
|
@@ -168,10 +170,10 @@ After initialization, the user should:
|
|
|
168
170
|
10. Open and merge the documentation PR that establishes the workflow files
|
|
169
171
|
11. Inspect reusable provider choices with `npx create-quiver ai models list`, diagnose existing profiles with `npx create-quiver ai agent doctor`, preview reusable provider choices with `npx create-quiver ai agent set <role> --provider <provider> --model <model-id> --dry-run`, then save planner/executor/doctor profiles without `--dry-run` after review
|
|
170
172
|
12. Use `npx create-quiver ai plan --phase acceptance --input requirements.md --dry-run`; use `--print-prompt` when you need the exact prompt without provider auth and `--review --interactive` when the human should edit or confirm before saving
|
|
171
|
-
13. If the human asks for changes, create a new draft with `npx create-quiver ai revise --phase acceptance --input feedback.md --dry-run`; after human approval,
|
|
173
|
+
13. If the human asks for changes, create a new draft with `npx create-quiver ai revise --phase acceptance --input feedback.md --dry-run`; after human approval, run `npx create-quiver ai approve --phase acceptance` in TTY or `--version <n>` in CI/no-TTY
|
|
172
174
|
14. Use `npx create-quiver ai plan --phase technical-plan --dry-run`
|
|
173
175
|
15. Review the technical plan with `npx create-quiver ai review-plan --dry-run`, inspect exact prompt with `--print-prompt` if needed, then run it without `--dry-run` when ready
|
|
174
|
-
16. After human approval, save the reviewed plan version with `npx create-quiver ai approve --phase technical-plan
|
|
176
|
+
16. After human approval, save the reviewed plan version with `npx create-quiver ai approve --phase technical-plan` in TTY or `--version <n>` in CI/no-TTY; if review recommends `revise`, run `ai revise --phase technical-plan --input feedback.md --dry-run` first
|
|
175
177
|
17. Use `npx create-quiver spec create --dry-run` to preview the real spec, slices, handoffs, execution plan, and PR body; use `--review --interactive` when the human should inspect the package before writing
|
|
176
178
|
18. Run `npx create-quiver spec start specs/<spec-slug> --dry-run` to inspect the planned worktree, then run without `--dry-run` to create or reuse it
|
|
177
179
|
19. Run `npx create-quiver plan` or `npm run quiver:plan`
|
package/docs/CLI_UX_GUIDE.md
CHANGED
|
@@ -54,6 +54,7 @@ Reglas:
|
|
|
54
54
|
| `ai execute-slice` | no | si | no | Interactive puede seleccionar un slice listo y un executor configurado. |
|
|
55
55
|
| `ai execute-plan` | no | si | no | Interactive queda reservado para estrategia/seleccion; JSON sigue limpio. |
|
|
56
56
|
| `ai agent set` | no | si | no | En TTY puede guiar proveedor/modelo; en CI/no-TTY requiere `--provider` y `--model`. |
|
|
57
|
+
| `ai approve` | no | no | no | Si falta `--version` y hay TTY, abre selector de drafts; en CI/no-TTY exige `--version <n>`. |
|
|
57
58
|
| `ai agent doctor` | no | no | no | Diagnostica perfiles sin escribir; `--json` usa el mismo modelo de hallazgos. |
|
|
58
59
|
| `ai agent repair` | no | no | no | Por ahora solo `--dry-run`; muestra before/after sin escribir. |
|
|
59
60
|
| `ai models list` | no | no | no | Lista el catalogo local conocido por Quiver; no valida acceso de cuenta. |
|
|
@@ -116,11 +117,22 @@ Reglas:
|
|
|
116
117
|
`spec create --interactive` debe:
|
|
117
118
|
|
|
118
119
|
- seleccionar la metodologia real soportada: `WDD + SDD`;
|
|
119
|
-
- mostrar el input aprobado que se usara para generar la spec;
|
|
120
|
+
- mostrar el input aprobado que se usara para generar la spec, la version aprobada y el resumen de review;
|
|
120
121
|
- permitir elegir confirmacion directa o `--review`;
|
|
121
122
|
- mostrar resumen antes de escribir;
|
|
122
123
|
- bloquearse en no-TTY/CI/JSON con mensaje accionable en lugar de abrir prompts.
|
|
123
124
|
|
|
125
|
+
## Aprobaciones planner
|
|
126
|
+
|
|
127
|
+
`ai approve` conserva el modo script con `--version <n>`, pero en una terminal humana puede guiar la eleccion cuando falta `--version`:
|
|
128
|
+
|
|
129
|
+
- `ai approve --phase acceptance` lista drafts versionados y recomienda el current/latest elegible.
|
|
130
|
+
- `ai approve --phase technical-plan` agrega estado de `plan-review`, recomendacion, fixes requeridos, hardening opcional y riesgos.
|
|
131
|
+
- CI/no-TTY nunca espera input; falla temprano con el comando explicito `--version <n>`.
|
|
132
|
+
- Las versiones historicas pueden mostrarse como contexto, pero solo el draft current/latest es aprobable.
|
|
133
|
+
- Los snippets o previews de candidatos deben estar truncados y redactados.
|
|
134
|
+
- `ai approvals`, `flow`, `ai status`, `ai resume` y `spec create --interactive` deben usar el mismo modelo de candidatos para no contradecir el proximo paso.
|
|
135
|
+
|
|
124
136
|
## Loaders y prompts
|
|
125
137
|
|
|
126
138
|
Usar loaders solo cuando aportan claridad:
|
|
@@ -143,6 +155,8 @@ Usar prompts interactivos cuando hay una decision humana real:
|
|
|
143
155
|
|
|
144
156
|
No usar prompts para informacion que ya se pueda expresar con flags.
|
|
145
157
|
|
|
158
|
+
Los comandos provider-backed `ai plan`, `ai revise`, `ai review-plan` y `ai repair-plan` deben seguir el mismo patron de progreso en TTY: checks de preparacion reales y spinner solo durante ejecucion del proveedor. `--dry-run`, `--print-prompt`, CI, no-TTY y JSON no deben mostrar loaders falsos.
|
|
159
|
+
|
|
146
160
|
## Salida de Doctor
|
|
147
161
|
|
|
148
162
|
`doctor` debe mostrar una jerarquia estable para humanos:
|
|
@@ -154,7 +154,8 @@ This document is the canonical command reference for the orchestration roadmap.
|
|
|
154
154
|
- `quiver:ai:agent -- repair --dry-run` previews safe normalizations such as `model: "GPT 5.5"` to `model: "gpt-5.5"` plus `displayName: "GPT 5.5"`; it does not write files.
|
|
155
155
|
- `quiver:ai:inspect`, `quiver:ai:specs`, `quiver:ai:slices`, and `quiver:ai:trace` are read-only inspection surfaces for humans and agents.
|
|
156
156
|
- `quiver:ai:export -- --format json` is the dashboard/agent-friendly state contract; `--format markdown` is the PR/docs-friendly version.
|
|
157
|
-
- Planner drafts are versioned under `.quiver/approvals/<phase>/drafts/`;
|
|
157
|
+
- Planner drafts are versioned under `.quiver/approvals/<phase>/drafts/`; in TTY, `quiver:ai:approve -- --phase <phase>` lists drafts and recommends the current/latest eligible version, while CI/no-TTY must pass `--version <n>`. Use `quiver:ai:review-plan -- --dry-run` before approving a technical-plan draft. Plan reviews store structured recommendations: `approve`, `approve-with-risk`, or `revise`.
|
|
158
|
+
- `quiver:ai:approvals`, `quiver:flow`, `quiver:ai:status`, `quiver:ai:resume`, and `quiver:spec:create -- --interactive` use the same approval-candidate data so next-step guidance stays consistent.
|
|
158
159
|
- `quiver:ai:prompt-slice -- --dry-run` prints a paste-ready manual executor prompt and does not call a provider.
|
|
159
160
|
- For commands pasted into another AI agent, prefer a non-interactive pinned form such as `npx --yes create-quiver@<version> ai prompt-slice --slice specs/<spec>/slices/<slice>/slice.json --dry-run`.
|
|
160
161
|
- `quiver:evidence -- run -- <command>` preserves the wrapped command exit code. Redaction is best effort; avoid commands that intentionally print secrets.
|
|
@@ -35,10 +35,10 @@ Use maps, metadata, diffs, and summaries first. Open full files only when the sm
|
|
|
35
35
|
1. Run `npx create-quiver flow` when the next safe command is unclear.
|
|
36
36
|
2. Triage the request.
|
|
37
37
|
3. Save reusable planner/executor provider choices with `ai agent set` when the team has preferred local AI CLIs.
|
|
38
|
-
4. Use `ai plan --phase acceptance` to draft criteria, then save the approved version with `ai approve --phase acceptance
|
|
38
|
+
4. Use `ai plan --phase acceptance` to draft criteria, then save the approved version with `ai approve --phase acceptance` in TTY or `--version <n>` in CI/no-TTY.
|
|
39
39
|
5. Use `ai plan --phase technical-plan` to draft the plan.
|
|
40
40
|
6. Use `ai review-plan` to review the technical-plan draft for production readiness without changing product code. Treat `approve` and `approve-with-risk` as approvable states; treat `revise` or required fixes as blockers.
|
|
41
|
-
7. Save the reviewed plan version with `ai approve --phase technical-plan
|
|
41
|
+
7. Save the reviewed plan version with `ai approve --phase technical-plan` in TTY or `--version <n>` in CI/no-TTY only after the review recommendation is approvable.
|
|
42
42
|
8. Use `spec create` to generate the spec, mandatory `slice-00`, implementation slices, handoffs, execution plan, and `pr.md`.
|
|
43
43
|
9. Open and merge the documentation PR or commit that establishes `slice-00` before running implementation slices.
|
|
44
44
|
10. Read the AI context pack, support matrix, and troubleshooting guide before the first slice if the environment is new or uncertain.
|
|
@@ -58,11 +58,16 @@ Más detalle: [Instalación y uso con npx](../getting-started/installation.md).
|
|
|
58
58
|
| `npx --yes create-quiver@latest ai status` | Muestra el estado de la ejecución actual. |
|
|
59
59
|
| `npx --yes create-quiver@latest ai plan --phase acceptance --input <file>` | Genera criterios de aceptación. |
|
|
60
60
|
| `npx --yes create-quiver@latest ai plan --phase acceptance --review --interactive --input <file>` | Permite revisar y confirmar el borrador del planner antes de guardarlo. |
|
|
61
|
-
| `npx --yes create-quiver@latest ai revise --phase acceptance --input <
|
|
62
|
-
| `npx --yes create-quiver@latest ai approve --phase acceptance
|
|
61
|
+
| `npx --yes create-quiver@latest ai revise --phase acceptance --input <feedback.md>` | Crea una nueva versión de criterios desde feedback; `--input` sin valor o archivos inexistentes fallan antes del proveedor. |
|
|
62
|
+
| `npx --yes create-quiver@latest ai approve --phase acceptance` | En TTY lista drafts y recomienda el current/latest; en CI/no-TTY exige `--version <n>`. |
|
|
63
|
+
| `npx --yes create-quiver@latest ai approve --phase acceptance --version <n>` | Aprueba criterios en modo explícito/script-safe. |
|
|
63
64
|
| `npx --yes create-quiver@latest ai plan --phase technical-plan` | Genera plan técnico. |
|
|
64
|
-
| `npx --yes create-quiver@latest ai
|
|
65
|
-
| `npx --yes create-quiver@latest ai
|
|
65
|
+
| `npx --yes create-quiver@latest ai revise --phase technical-plan --input <feedback.md>` | Crea una nueva versión del plan técnico desde feedback. |
|
|
66
|
+
| `npx --yes create-quiver@latest ai review-plan` | Revisa el plan técnico y guarda recomendación `approve`, `approve-with-risk` o `revise`. |
|
|
67
|
+
| `npx --yes create-quiver@latest ai repair-plan` | Repara un plan técnico aprobado legacy que no cumple el contrato `spec.slices[]`, creando un nuevo draft. |
|
|
68
|
+
| `npx --yes create-quiver@latest ai approve --phase technical-plan` | En TTY lista drafts con datos de review; `revise` bloquea aprobación y `approve-with-risk` muestra riesgos. |
|
|
69
|
+
| `npx --yes create-quiver@latest ai approve --phase technical-plan --version <n>` | Aprueba el plan técnico revisado en modo explícito/script-safe. |
|
|
70
|
+
| `npx --yes create-quiver@latest ai approvals` | Muestra approvals run-scoped/globales, candidatos actuales, versión recomendada y próximo comando. |
|
|
66
71
|
|
|
67
72
|
## Specs y slices
|
|
68
73
|
|
|
@@ -118,6 +123,7 @@ Más detalle: [Instalación y uso con npx](../getting-started/installation.md).
|
|
|
118
123
|
| `ai plan` | sí | sí | sí |
|
|
119
124
|
| `spec create` | sí | sí | sí |
|
|
120
125
|
| `ai pr` | no | sí | sí |
|
|
126
|
+
| `ai approve` | no | no | no |
|
|
121
127
|
| `flow`, `next`, `graph` | no | no | no |
|
|
122
128
|
| `ai inspect`, `ai export`, `ai specs list`, `ai slices list`, `ai trace report` | no | no | no |
|
|
123
129
|
|
package/package.json
CHANGED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Evidence Report - Quiver v33 Approval UX and Planner Progress
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
This report records implementation and validation evidence for all v33 slices.
|
|
6
|
+
|
|
7
|
+
## slice-00 - Approval UX foundation
|
|
8
|
+
|
|
9
|
+
### Completed
|
|
10
|
+
|
|
11
|
+
- Created v33 spec package with `SPEC.md`, `STATUS.md`, `EXECUTION_PLAN.md`, `EVIDENCE_REPORT.md`, and `pr.md`.
|
|
12
|
+
- Created 8 slice folders with `slice.json`, `EXECUTION_BRIEF.md`, and `CLOSURE_BRIEF.md`.
|
|
13
|
+
- Captured the approved acceptance criteria, production review fixes, revised technical plan, and execution order.
|
|
14
|
+
|
|
15
|
+
### Validation
|
|
16
|
+
|
|
17
|
+
- `find specs/quiver-v33-approval-ux-and-planner-progress -name 'slice.json' -print -exec node -e "JSON.parse(require('fs').readFileSync(process.argv[1], 'utf8')); console.log('ok', process.argv[1])" {} \;` passed for 8 slice files.
|
|
18
|
+
- `node bin/create-quiver.js spec validate specs/quiver-v33-approval-ux-and-planner-progress` passed and reported 8 slices.
|
|
19
|
+
- `git diff --check` passed.
|
|
20
|
+
|
|
21
|
+
### Risks Observed During Planning
|
|
22
|
+
|
|
23
|
+
- `docs/INDEX.md` is still missing in this repository; onboarding used `docs/INDEX.md.template` plus repo-specific Quiver docs as the documented fallback.
|
|
24
|
+
- The repo branch was already ahead of `origin/main` before this spec package was created.
|
|
25
|
+
|
|
26
|
+
## slice-01 to slice-03 - Approval candidates and approval selection
|
|
27
|
+
|
|
28
|
+
### Completed
|
|
29
|
+
|
|
30
|
+
- Slice ids covered: `slice-01-approval-candidates-model`, `slice-02-approve-interactive-selection`, `slice-03-technical-plan-review-decision-data`.
|
|
31
|
+
- Added redacted/truncated approval-candidate data for planner phases.
|
|
32
|
+
- Added technical-plan candidate enrichment with plan-review recommendation, blocking, fixes, hardening, risks, and next command.
|
|
33
|
+
- Added TTY selector flow for `ai approve --phase acceptance|technical-plan` when `--version` is omitted.
|
|
34
|
+
- Preserved explicit `--version <n>` behavior for no-TTY/CI/scripted usage.
|
|
35
|
+
|
|
36
|
+
### Validation
|
|
37
|
+
|
|
38
|
+
- `node --test tests/lib/approvals.test.js tests/commands/ai-review-plan.test.js` passed during slice execution.
|
|
39
|
+
- `node --test tests/commands/ai-plan.test.js tests/commands/ai-review-plan.test.js tests/lib/approvals.test.js` passed after interactive approval integration.
|
|
40
|
+
|
|
41
|
+
## slice-04 and slice-05 - Revise guardrails and provider progress
|
|
42
|
+
|
|
43
|
+
### Completed
|
|
44
|
+
|
|
45
|
+
- Slice ids covered: `slice-04-revise-input-guardrails`, `slice-05-provider-progress-alignment`.
|
|
46
|
+
- Hardened parser/command errors for `ai revise --phase acceptance --input` and `ai revise --phase technical-plan --input`.
|
|
47
|
+
- Added coverage for nonexistent feedback files and accidental trailing positional arguments.
|
|
48
|
+
- Added TTY progress checks and spinner coverage for `ai plan`, `ai review-plan`, and `ai repair-plan`; `ai revise` inherits the shared plan path.
|
|
49
|
+
- Confirmed dry-run and print-prompt remain loader-free.
|
|
50
|
+
|
|
51
|
+
### Validation
|
|
52
|
+
|
|
53
|
+
- `node --test tests/commands/ai-plan.test.js tests/commands/ai-review-plan.test.js tests/lib/approvals.test.js` passed with 51 tests.
|
|
54
|
+
- Focused progress regressions for `ai prepare-context`, executor, PR, selectors, and UX helpers passed.
|
|
55
|
+
|
|
56
|
+
## slice-06 - Workflow surface integration
|
|
57
|
+
|
|
58
|
+
### Completed
|
|
59
|
+
|
|
60
|
+
- Slice id covered: `slice-06-workflow-surface-integration`.
|
|
61
|
+
- Added `src/create-quiver/lib/ai/approval-candidates.js` as the shared formatter/command helper for decision surfaces.
|
|
62
|
+
- Updated `ai approvals`, `flow`, `ai status`, `ai resume`, and `spec create --interactive` to consume shared candidate data.
|
|
63
|
+
- Added drift-prevention tests for current recommended versions and plan-review `revise` blockers.
|
|
64
|
+
|
|
65
|
+
### Validation
|
|
66
|
+
|
|
67
|
+
- `node --test tests/commands/flow.test.js tests/commands/ai-run-state.test.js tests/commands/spec-create.test.js tests/commands/ai-review-plan.test.js tests/commands/ai-plan.test.js tests/lib/approvals.test.js` passed with 80 tests.
|
|
68
|
+
|
|
69
|
+
## slice-07 - Docs, tests, and release readiness
|
|
70
|
+
|
|
71
|
+
### Completed
|
|
72
|
+
|
|
73
|
+
- Slice id covered: `slice-07-docs-tests-release-readiness`.
|
|
74
|
+
- Updated `README.md`, `README_FOR_AI.md`, `docs/CLI_UX_GUIDE.md`, `docs/reference/commands.md`, `docs/COMMANDS.md.template`, and `docs/WORKFLOW.md.template`.
|
|
75
|
+
- Updated all slice `CLOSURE_BRIEF.md` files, slice status metadata, spec `STATUS.md`, and `pr.md`.
|
|
76
|
+
|
|
77
|
+
### Validation
|
|
78
|
+
|
|
79
|
+
- `git diff --check` passed.
|
|
80
|
+
- `node bin/create-quiver.js spec validate specs/quiver-v33-approval-ux-and-planner-progress` passed.
|
|
81
|
+
- `node --test tests/lib/git.test.js tests/lib/paths.test.js` passed: 12 tests.
|
|
82
|
+
- `node --test tests/lib/paths.test.js` passed: 10 tests.
|
|
83
|
+
- `node --test tests/**/*.test.js` passed: 496 tests, 496 pass.
|
|
84
|
+
- `npm run smoke:create-quiver` passed: `create-quiver smoke test passed`.
|
|
85
|
+
- `npm run smoke:doctor-fixtures` passed: 13 states.
|
|
86
|
+
- `npm run smoke:guided-workflow` passed.
|
|
87
|
+
- `npm run package:quiver` passed: `Package smoke passed: create-quiver-0.15.1.tgz`.
|
|
88
|
+
- `node scripts/ci/smoke-cross-platform.js` passed after adding `npm ci` to the GitHub Actions cross-platform smoke job.
|
|
89
|
+
|
|
90
|
+
### Remaining Risks
|
|
91
|
+
|
|
92
|
+
- No critical risks remain.
|
|
93
|
+
- This evidence does not claim npm publication.
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Execution Plan - Quiver v33 Approval UX and Planner Progress
|
|
2
|
+
|
|
3
|
+
## Execution Order
|
|
4
|
+
|
|
5
|
+
```mermaid
|
|
6
|
+
flowchart TD
|
|
7
|
+
S00[slice-00: Approval UX foundation]
|
|
8
|
+
S01[slice-01: Approval candidates model]
|
|
9
|
+
S02[slice-02: Interactive approval selection]
|
|
10
|
+
S03[slice-03: Technical-plan review decision data]
|
|
11
|
+
S04[slice-04: Revise input guardrails]
|
|
12
|
+
S05[slice-05: Provider progress alignment]
|
|
13
|
+
S06[slice-06: Workflow surface integration]
|
|
14
|
+
S07[slice-07: Docs, tests, and release readiness]
|
|
15
|
+
|
|
16
|
+
S00 --> S01
|
|
17
|
+
S01 --> S02
|
|
18
|
+
S01 --> S04
|
|
19
|
+
S01 --> S05
|
|
20
|
+
S02 --> S03
|
|
21
|
+
S01 --> S06
|
|
22
|
+
S02 --> S06
|
|
23
|
+
S03 --> S06
|
|
24
|
+
S02 --> S07
|
|
25
|
+
S03 --> S07
|
|
26
|
+
S04 --> S07
|
|
27
|
+
S05 --> S07
|
|
28
|
+
S06 --> S07
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Waves
|
|
32
|
+
|
|
33
|
+
### Wave 0 - Completed Foundation
|
|
34
|
+
|
|
35
|
+
1. `slice-00-approval-ux-foundation`
|
|
36
|
+
|
|
37
|
+
The foundation slice creates the approved spec package and does not change product code.
|
|
38
|
+
|
|
39
|
+
### Wave 1 - Core Model
|
|
40
|
+
|
|
41
|
+
1. `slice-01-approval-candidates-model`
|
|
42
|
+
|
|
43
|
+
Build the shared approval-candidate model before changing command UX.
|
|
44
|
+
|
|
45
|
+
### Wave 2 - Command UX and Guardrails
|
|
46
|
+
|
|
47
|
+
1. `slice-02-approve-interactive-selection`
|
|
48
|
+
2. `slice-04-revise-input-guardrails`
|
|
49
|
+
3. `slice-05-provider-progress-alignment`
|
|
50
|
+
|
|
51
|
+
These slices can proceed after slice-01. Coordinate conflicts in `src/create-quiver/commands/ai.js`.
|
|
52
|
+
|
|
53
|
+
### Wave 3 - Technical Review and Workflow Surfaces
|
|
54
|
+
|
|
55
|
+
1. `slice-03-technical-plan-review-decision-data`
|
|
56
|
+
2. `slice-06-workflow-surface-integration`
|
|
57
|
+
|
|
58
|
+
Run slice-03 before or alongside slice-06 only if the plan-review decision contract is stable enough to consume.
|
|
59
|
+
|
|
60
|
+
### Wave 4 - Close
|
|
61
|
+
|
|
62
|
+
1. `slice-07-docs-tests-release-readiness`
|
|
63
|
+
|
|
64
|
+
This slice is never parallel-safe because it closes docs, tests, smokes, and release evidence.
|
|
65
|
+
|
|
66
|
+
## Parallel Safety Notes
|
|
67
|
+
|
|
68
|
+
- Do not run any implementation slice before slice-01.
|
|
69
|
+
- Do not add `ai approve` prompts before the shared candidate model exists.
|
|
70
|
+
- Do not weaken `plan-review` blocking behavior while adding selectors.
|
|
71
|
+
- `slice-02`, `slice-04`, and `slice-05` may all touch `src/create-quiver/commands/ai.js`; if conflicts are likely, land them sequentially.
|
|
72
|
+
- Keep all JSON/no-TTY behavior clean at every slice, not only at the final slice.
|
|
73
|
+
|
|
74
|
+
## Recommended Commit Order
|
|
75
|
+
|
|
76
|
+
1. `docs: add v33 approval ux spec`
|
|
77
|
+
2. `feat: add approval candidate model`
|
|
78
|
+
3. `feat: add interactive approval selection`
|
|
79
|
+
4. `feat: expose technical plan review decision data`
|
|
80
|
+
5. `fix: harden ai revise input handling`
|
|
81
|
+
6. `feat: align planner progress flows`
|
|
82
|
+
7. `feat: share approval guidance across workflow surfaces`
|
|
83
|
+
8. `docs: close v33 approval ux readiness`
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# Quiver v33 - Approval UX and Planner Progress
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-05-28
|
|
4
|
+
**Status:** Completed
|
|
5
|
+
**Source:** User-approved acceptance criteria and production review for approval selectors, planner progress, and consistent decision guidance.
|
|
6
|
+
|
|
7
|
+
Slice numbering resets here. This spec intentionally starts at `slice-00`.
|
|
8
|
+
|
|
9
|
+
## Problem
|
|
10
|
+
|
|
11
|
+
Quiver already has visible progress and guided selectors in several AI workflow commands, but the experience is incomplete around planner approvals and technical-plan iteration.
|
|
12
|
+
|
|
13
|
+
Three gaps create partial-fix risk:
|
|
14
|
+
|
|
15
|
+
- planner/reviewer commands can still feel inconsistent with `ai prepare-context --with-planner`;
|
|
16
|
+
- `ai approve --phase acceptance|technical-plan` requires users to know the exact draft version instead of guiding them with the same kind of selector used by `ai agent set`;
|
|
17
|
+
- approval recommendations are spread across `ai approve`, `ai approvals`, `flow`, `ai status`, `ai resume`, `spec create --interactive`, and `plan-review` logic, which can produce conflicting or incomplete next-step guidance.
|
|
18
|
+
|
|
19
|
+
## Objective
|
|
20
|
+
|
|
21
|
+
Make planner approval and revision flows production-safe and consistent:
|
|
22
|
+
|
|
23
|
+
- show real human progress for provider-backed planner/reviewer commands;
|
|
24
|
+
- offer TTY selectors for approval versions when `--version` is omitted;
|
|
25
|
+
- keep CI/no-TTY/JSON/scripted usage clean and explicit;
|
|
26
|
+
- centralize approval candidates and recommendations so every workflow surface presents the same decision state;
|
|
27
|
+
- harden incomplete `ai revise --input` usage for both acceptance and technical-plan phases;
|
|
28
|
+
- keep `plan-review` blocking semantics strict and visible.
|
|
29
|
+
|
|
30
|
+
## Scope
|
|
31
|
+
|
|
32
|
+
### Included
|
|
33
|
+
|
|
34
|
+
- Shared approval-candidate model for acceptance, technical-plan, and plan-review decision context.
|
|
35
|
+
- `ai approve --phase acceptance` selector when `--version` is omitted in TTY.
|
|
36
|
+
- `ai approve --phase technical-plan` selector that includes plan-review recommendation, blocking status, required fixes, optional hardening, risks, and next command.
|
|
37
|
+
- No-TTY/CI guardrails for `ai approve` without `--version`.
|
|
38
|
+
- Missing/incomplete `--input` handling for `ai revise --phase acceptance` and `ai revise --phase technical-plan`.
|
|
39
|
+
- Progress/loaders alignment for provider-backed planner commands: `ai plan`, `ai revise`, `ai review-plan`, and `ai repair-plan`.
|
|
40
|
+
- Audit and regression coverage for existing long-running flows: `ai onboard`, `ai prepare-context --with-planner`, `ai execute-slice`, `ai execute-plan --execute`, and `ai pr --create`.
|
|
41
|
+
- Integration of the shared approval-candidate model into `ai approvals`, `flow`, `ai status`, `ai resume`, and `spec create --interactive`.
|
|
42
|
+
- Documentation and tests for human, TTY, no-TTY, CI, JSON, dry-run, print-prompt, no-color, and review-state cases.
|
|
43
|
+
|
|
44
|
+
### Excluded
|
|
45
|
+
|
|
46
|
+
- Product feature implementation beyond CLI workflow UX and approval state.
|
|
47
|
+
- Replacing the CLI parser.
|
|
48
|
+
- Adding a TUI framework.
|
|
49
|
+
- Making prompts mandatory.
|
|
50
|
+
- Relaxing `plan-review` approval gates.
|
|
51
|
+
- Storing provider credentials or secrets.
|
|
52
|
+
- Changing WDD + SDD semantics.
|
|
53
|
+
|
|
54
|
+
## Approved Acceptance Criteria
|
|
55
|
+
|
|
56
|
+
### Provider Progress
|
|
57
|
+
|
|
58
|
+
1. `ai plan --phase acceptance --input <file>` shows human progress and a spinner when executing the planner in a human TTY, following the pattern of `ai prepare-context --with-planner`.
|
|
59
|
+
2. `ai plan --phase technical-plan` shows the same progress pattern when executing the planner.
|
|
60
|
+
3. `ai revise --phase acceptance --input <file>` and `ai revise --phase technical-plan --input <file>` inherit the same progress behavior through the shared planner path.
|
|
61
|
+
4. `ai review-plan` shows progress for reading the technical plan, preparing context, preparing the prompt, executing the reviewer, and writing review metadata.
|
|
62
|
+
5. `ai repair-plan` is in scope and shows the same provider-progress standard.
|
|
63
|
+
6. Existing long-running flows are audited for consistency: `ai onboard`, `ai prepare-context --with-planner`, `ai execute-slice`, `ai execute-plan --execute`, and `ai pr --create`.
|
|
64
|
+
7. `--dry-run` and `--print-prompt` never execute providers or show fake loaders.
|
|
65
|
+
8. `--json`, CI/no-TTY, `NO_COLOR`, `TERM=dumb`, and `--no-color` remain clean and script-safe.
|
|
66
|
+
|
|
67
|
+
### Approval Selection
|
|
68
|
+
|
|
69
|
+
9. `ai approve --phase acceptance` without `--version` opens a TTY selector when prompts are available.
|
|
70
|
+
10. `ai approve --phase technical-plan` without `--version` opens a TTY selector when prompts are available and includes plan-review decision data.
|
|
71
|
+
11. In no-TTY/CI, `ai approve --phase <phase>` without `--version` fails early with an actionable command using `--version <n>`.
|
|
72
|
+
12. Explicit `--version <n>` preserves existing script-safe behavior.
|
|
73
|
+
13. Only the latest draft version is approvable. Older versions may be displayed as history but must not be silently approved.
|
|
74
|
+
14. The selector recommends the current/latest eligible draft and explains why.
|
|
75
|
+
15. Technical-plan approval distinguishes `plan-review` states: `missing`, `stale`, `unapproved`, `reviewed + approve`, `reviewed + approve-with-risk`, and `reviewed + revise`.
|
|
76
|
+
16. `reviewed + revise` blocks approval and points to `ai revise --phase technical-plan --input <feedback.md> --dry-run`.
|
|
77
|
+
17. `reviewed + approve-with-risk` allows explicit approval while showing risks and optional hardening.
|
|
78
|
+
18. Candidate summaries must be concise, truncated, and redacted through existing utilities before printing draft or review snippets.
|
|
79
|
+
|
|
80
|
+
### Revise Input Guardrails
|
|
81
|
+
|
|
82
|
+
19. `ai revise --phase acceptance --input` and `ai revise --phase technical-plan --input` handle a missing input value explicitly.
|
|
83
|
+
20. Missing input in no-TTY/CI fails with an actionable example.
|
|
84
|
+
21. Missing input in TTY may show a selector or focused guidance if useful artifacts are available.
|
|
85
|
+
22. Nonexistent input files fail before provider execution.
|
|
86
|
+
23. Accidental extra arguments, such as a trailing `s`, are detected or reported clearly instead of being ignored.
|
|
87
|
+
|
|
88
|
+
### Shared Decision Surfaces
|
|
89
|
+
|
|
90
|
+
24. A shared approval-candidate model feeds `ai approve`, `ai approvals`, `flow`, `ai status`, `ai resume`, and `spec create --interactive`.
|
|
91
|
+
25. These surfaces do not duplicate or contradict next-step recommendations.
|
|
92
|
+
26. `spec create --interactive` shows the reviewed and approved technical-plan source using the same decision data.
|
|
93
|
+
27. Approval candidates include phase, version, path, created_at, source_file, current/latest flag, review recommendation, blocking state, recommended action, and next command.
|
|
94
|
+
|
|
95
|
+
### Documentation and Tests
|
|
96
|
+
|
|
97
|
+
28. `docs/CLI_UX_GUIDE.md`, `docs/reference/commands.md`, and `README_FOR_AI.md` are updated when the visible contract changes.
|
|
98
|
+
29. Tests cover TTY selector paths, no-TTY/CI failures, explicit `--version`, latest-draft recommendation, stale/blocked plan-review states, `approve-with-risk`, missing `--input`, accidental extra args, dry-run, print-prompt, no-color, and JSON cleanliness.
|
|
99
|
+
30. Implementation does not log secrets or credentials.
|
|
100
|
+
31. Every slice in this spec has `slice.json`, `EXECUTION_BRIEF.md`, and `CLOSURE_BRIEF.md`.
|
|
101
|
+
|
|
102
|
+
## Approved Technical Plan
|
|
103
|
+
|
|
104
|
+
1. Inventory the real command surface and existing tests before implementation.
|
|
105
|
+
2. Create a shared approval-candidates module that reads existing approval and plan-review metadata without changing persisted formats unless required.
|
|
106
|
+
3. Integrate approval candidates into `ai approvals`, `flow`, `ai status`, `ai resume`, and `spec create --interactive`.
|
|
107
|
+
4. Add TTY approval selection in `ai approve` for acceptance and technical-plan when `--version` is omitted.
|
|
108
|
+
5. Preserve no-TTY/CI/script behavior by requiring explicit `--version <n>` outside prompts.
|
|
109
|
+
6. Harden missing/incomplete `--input` handling in `ai revise` for both planner phases.
|
|
110
|
+
7. Align provider progress in `ai plan`, `ai revise`, `ai review-plan`, and `ai repair-plan`.
|
|
111
|
+
8. Audit existing progress flows and add regression tests instead of rewriting working behavior unnecessarily.
|
|
112
|
+
9. Update public docs and AI guidance only after the command contract is implemented.
|
|
113
|
+
10. Add focused tests and final full-suite/smoke validation.
|
|
114
|
+
|
|
115
|
+
## Slice Roadmap
|
|
116
|
+
|
|
117
|
+
| Slice | Title | Status | Dependencies |
|
|
118
|
+
|---|---|---|---|
|
|
119
|
+
| slice-00 | Approval UX foundation | completed | none |
|
|
120
|
+
| slice-01 | Approval candidates model | completed | slice-00 |
|
|
121
|
+
| slice-02 | Interactive approval selection | completed | slice-01 |
|
|
122
|
+
| slice-03 | Technical-plan review decision data | completed | slice-01, slice-02 |
|
|
123
|
+
| slice-04 | Revise input guardrails | completed | slice-01 |
|
|
124
|
+
| slice-05 | Provider progress alignment | completed | slice-01 |
|
|
125
|
+
| slice-06 | Workflow surface integration | completed | slice-01, slice-02, slice-03 |
|
|
126
|
+
| slice-07 | Docs, tests, and release readiness | completed | slice-02, slice-03, slice-04, slice-05, slice-06 |
|
|
127
|
+
|
|
128
|
+
## Validation Strategy
|
|
129
|
+
|
|
130
|
+
- `node --test tests/lib/approvals.test.js tests/commands/ai-run-state.test.js tests/commands/ai-review-plan.test.js`
|
|
131
|
+
- `node --test tests/commands/ai-plan.test.js tests/commands/ai-prepare-context-planner.test.js`
|
|
132
|
+
- `node --test tests/commands/ai-agent.test.js tests/lib/cli-selectors.test.js tests/lib/cli-ux.test.js`
|
|
133
|
+
- `node --test tests/commands/flow.test.js tests/commands/spec-create.test.js`
|
|
134
|
+
- `node --test tests/**/*.test.js`
|
|
135
|
+
- `npm run smoke:create-quiver`
|
|
136
|
+
- `npm run smoke:doctor-fixtures`
|
|
137
|
+
- `npm run smoke:guided-workflow`
|
|
138
|
+
- `npm run package:quiver`
|
|
139
|
+
- `git diff --check`
|
|
140
|
+
- `node bin/create-quiver.js spec validate specs/quiver-v33-approval-ux-and-planner-progress`
|
|
141
|
+
|
|
142
|
+
## Risks
|
|
143
|
+
|
|
144
|
+
- Approval UX touches critical workflow gates; selector convenience must not weaken plan-review blocking behavior.
|
|
145
|
+
- Prompt behavior can break automation if it is not strictly TTY-gated.
|
|
146
|
+
- Multiple surfaces can drift if candidate data is not shared.
|
|
147
|
+
- Progress output can contaminate JSON or no-TTY output if not centralized.
|
|
148
|
+
- Draft snippets can leak sensitive content unless they are truncated and redacted.
|
|
149
|
+
|
|
150
|
+
## Resolved Decisions
|
|
151
|
+
|
|
152
|
+
- `ai repair-plan` is in scope.
|
|
153
|
+
- `ai revise --phase acceptance --input` is in scope, not only technical-plan.
|
|
154
|
+
- TTY selection for `ai approve` may happen when `--version` is omitted, but CI/no-TTY must require explicit flags.
|
|
155
|
+
- Only the latest draft is approvable.
|
|
156
|
+
- `plan-review` recommendation `revise` remains blocking.
|
|
157
|
+
- `approve-with-risk` remains approvable with visible risk context.
|
|
158
|
+
- Do not add `--review` to commands that do not need editor review.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Status - Quiver v33 Approval UX and Planner Progress
|
|
2
|
+
|
|
3
|
+
**Overall status:** Completed
|
|
4
|
+
**Created:** 2026-05-28
|
|
5
|
+
**Completed:** 2026-05-28
|
|
6
|
+
**Current slice:** none
|
|
7
|
+
|
|
8
|
+
## Summary
|
|
9
|
+
|
|
10
|
+
This spec improves planner approval UX, approval decision guidance, incomplete revise input handling, and provider progress consistency across the AI workflow. All planned slices are complete and validated.
|
|
11
|
+
|
|
12
|
+
## Slice Status
|
|
13
|
+
|
|
14
|
+
| Slice | Status | Notes |
|
|
15
|
+
|---|---|---|
|
|
16
|
+
| slice-00-approval-ux-foundation | Completed | Spec package, execution plan, PR body, evidence skeleton, and slice briefs created. |
|
|
17
|
+
| slice-01-approval-candidates-model | Completed | Added shared approval-candidate data for acceptance and technical-plan review context. |
|
|
18
|
+
| slice-02-approve-interactive-selection | Completed | Added TTY draft selection for `ai approve` when `--version` is omitted and no-TTY guardrails. |
|
|
19
|
+
| slice-03-technical-plan-review-decision-data | Completed | Technical-plan candidates expose review recommendation, blocking, fixes, hardening, risks, and next command. |
|
|
20
|
+
| slice-04-revise-input-guardrails | Completed | Missing `--input`, nonexistent files, and accidental extra args fail before provider execution. |
|
|
21
|
+
| slice-05-provider-progress-alignment | Completed | `ai plan`, `ai revise`, `ai review-plan`, and `ai repair-plan` use real TTY progress and spinner behavior. |
|
|
22
|
+
| slice-06-workflow-surface-integration | Completed | Shared candidates feed `ai approvals`, `flow`, `ai status`, `ai resume`, and `spec create --interactive`. |
|
|
23
|
+
| slice-07-docs-tests-release-readiness | Completed | Docs, templates, tests, smokes, package readiness, evidence, and PR body are updated. |
|
|
24
|
+
|
|
25
|
+
## Current Blockers
|
|
26
|
+
|
|
27
|
+
- None.
|
|
28
|
+
|
|
29
|
+
## Next Step
|
|
30
|
+
|
|
31
|
+
Open review/PR with the recorded validation evidence. Do not claim npm publication from this spec.
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
## Title
|
|
2
|
+
|
|
3
|
+
Quiver v33: Approval UX and planner progress
|
|
4
|
+
|
|
5
|
+
## Summary
|
|
6
|
+
|
|
7
|
+
- Adds shared approval-candidate guidance for planner phases.
|
|
8
|
+
- Adds guided approval selection for `ai approve` in TTY when `--version` is omitted.
|
|
9
|
+
- Preserves explicit `--version` behavior for CI/no-TTY/scripted use.
|
|
10
|
+
- Hardens incomplete `ai revise --input` usage.
|
|
11
|
+
- Aligns progress/loaders for provider-backed planner/reviewer commands.
|
|
12
|
+
- Synchronizes approval guidance across `ai approvals`, `flow`, `ai status`, `ai resume`, and `spec create --interactive`.
|
|
13
|
+
|
|
14
|
+
## Scope
|
|
15
|
+
|
|
16
|
+
- Approval candidate model and formatting.
|
|
17
|
+
- Interactive approval selector.
|
|
18
|
+
- Technical-plan plan-review state visibility and blocking.
|
|
19
|
+
- Revise input validation.
|
|
20
|
+
- Planner/reviewer/repair-plan progress UX.
|
|
21
|
+
- Workflow-surface integration.
|
|
22
|
+
- Docs, tests, smokes, and release readiness.
|
|
23
|
+
|
|
24
|
+
## Files
|
|
25
|
+
|
|
26
|
+
- `.github/workflows/ci.yml`
|
|
27
|
+
- `README.md`
|
|
28
|
+
- `README_FOR_AI.md`
|
|
29
|
+
- `docs/CLI_UX_GUIDE.md`
|
|
30
|
+
- `docs/reference/commands.md`
|
|
31
|
+
- `docs/COMMANDS.md.template`
|
|
32
|
+
- `docs/WORKFLOW.md.template`
|
|
33
|
+
- `src/create-quiver/commands/ai.js`
|
|
34
|
+
- `src/create-quiver/commands/flow.js`
|
|
35
|
+
- `src/create-quiver/commands/spec.js`
|
|
36
|
+
- `src/create-quiver/index.js`
|
|
37
|
+
- `src/create-quiver/lib/git.js`
|
|
38
|
+
- `src/create-quiver/lib/approvals.js`
|
|
39
|
+
- `src/create-quiver/lib/ai/approval-candidates.js`
|
|
40
|
+
- `src/create-quiver/lib/ai/plan-review.js`
|
|
41
|
+
- `src/create-quiver/lib/paths.js`
|
|
42
|
+
- `src/create-quiver/lib/ai/run-state.js`
|
|
43
|
+
- `tests/lib/git.test.js`
|
|
44
|
+
- `tests/lib/paths.test.js`
|
|
45
|
+
- `tests/**`
|
|
46
|
+
- `specs/quiver-v33-approval-ux-and-planner-progress/**`
|
|
47
|
+
|
|
48
|
+
## How to Test (DETAILED - REQUIRED)
|
|
49
|
+
|
|
50
|
+
### Required Environment
|
|
51
|
+
|
|
52
|
+
- Node.js and npm.
|
|
53
|
+
- No provider credentials are required for dry-run/print-prompt tests.
|
|
54
|
+
- TTY-like behavior should be tested through injected prompt helpers.
|
|
55
|
+
|
|
56
|
+
### Worktree Access
|
|
57
|
+
|
|
58
|
+
- One dedicated branch/worktree for `quiver-v33-approval-ux-and-planner-progress`.
|
|
59
|
+
- One commit per slice.
|
|
60
|
+
|
|
61
|
+
### Use Cases
|
|
62
|
+
|
|
63
|
+
- Run `ai approve --phase acceptance` in a prompt-capable test harness without `--version`.
|
|
64
|
+
- Run `ai approve --phase technical-plan` for plan-review states: missing, stale, unapproved, approve, approve-with-risk, revise.
|
|
65
|
+
- Run `ai approve --phase acceptance` in no-TTY/CI without `--version` and verify it fails actionably.
|
|
66
|
+
- Run `ai approve --phase acceptance --version 1` and verify existing scripted behavior remains.
|
|
67
|
+
- Run `ai revise --phase acceptance --input` and `ai revise --phase technical-plan --input` with missing, invalid, and accidental extra input.
|
|
68
|
+
- Run provider-backed planner commands in human mode and verify progress does not leak into JSON/dry-run/print-prompt.
|
|
69
|
+
|
|
70
|
+
### Technical Verification
|
|
71
|
+
|
|
72
|
+
- `node --test tests/lib/approvals.test.js tests/commands/ai-run-state.test.js tests/commands/ai-review-plan.test.js`
|
|
73
|
+
- `node --test tests/commands/ai-plan.test.js tests/commands/ai-prepare-context-planner.test.js`
|
|
74
|
+
- `node --test tests/commands/flow.test.js tests/commands/spec-create.test.js`
|
|
75
|
+
- `node --test tests/commands/ai-agent.test.js tests/lib/cli-selectors.test.js tests/lib/cli-ux.test.js`
|
|
76
|
+
- `node --test tests/lib/git.test.js tests/lib/paths.test.js`
|
|
77
|
+
- `node --test tests/**/*.test.js`
|
|
78
|
+
- `npm run smoke:create-quiver`
|
|
79
|
+
- `npm run smoke:doctor-fixtures`
|
|
80
|
+
- `npm run smoke:guided-workflow`
|
|
81
|
+
- `npm run package:quiver`
|
|
82
|
+
- `node scripts/ci/smoke-cross-platform.js`
|
|
83
|
+
- `git diff --check`
|
|
84
|
+
- `node bin/create-quiver.js spec validate specs/quiver-v33-approval-ux-and-planner-progress`
|
|
85
|
+
|
|
86
|
+
## Evidence
|
|
87
|
+
|
|
88
|
+
- `git diff --check` passed.
|
|
89
|
+
- `node bin/create-quiver.js spec validate specs/quiver-v33-approval-ux-and-planner-progress` passed.
|
|
90
|
+
- `node --test tests/lib/git.test.js tests/lib/paths.test.js` passed.
|
|
91
|
+
- `node --test tests/**/*.test.js` passed: 496/496.
|
|
92
|
+
- `npm run smoke:create-quiver` passed.
|
|
93
|
+
- `npm run smoke:doctor-fixtures` passed.
|
|
94
|
+
- `npm run smoke:guided-workflow` passed.
|
|
95
|
+
- `npm run package:quiver` passed.
|
|
96
|
+
- `node scripts/ci/smoke-cross-platform.js` passed after adding `npm ci` to the GitHub Actions smoke matrix.
|
|
97
|
+
- Detailed slice evidence is in `specs/quiver-v33-approval-ux-and-planner-progress/EVIDENCE_REPORT.md`.
|
|
98
|
+
|
|
99
|
+
## Rollback
|
|
100
|
+
|
|
101
|
+
Revert slice commits in reverse order. Preserve explicit `--version` approval behavior and existing non-interactive planner workflows during rollback.
|
|
102
|
+
|
|
103
|
+
## Risks / Notes
|
|
104
|
+
|
|
105
|
+
- Approval gates are critical workflow safety controls; selector UX must not approve stale or blocked drafts.
|
|
106
|
+
- Candidate summaries must remain redacted and truncated.
|
|
107
|
+
- Provider progress must not contaminate machine-readable output.
|
|
108
|
+
- GitHub Actions cross-platform smoke requires dependencies installed before invoking the source CLI.
|
|
109
|
+
- This PR does not publish npm.
|