create-quiver 0.15.0 → 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.
Files changed (96) hide show
  1. package/.github/workflows/ci.yml +3 -0
  2. package/CHANGELOG.md +6 -0
  3. package/README.md +33 -0
  4. package/README_FOR_AI.md +13 -6
  5. package/ROADMAP.md +5 -0
  6. package/docs/AI_CONTEXT.md.template +4 -0
  7. package/docs/AI_ONBOARDING_PROMPT.md.template +8 -0
  8. package/docs/CLI_UX_GUIDE.md +31 -2
  9. package/docs/COMMANDS.md.template +16 -5
  10. package/docs/TROUBLESHOOTING.md +70 -0
  11. package/docs/TROUBLESHOOTING.md.template +20 -0
  12. package/docs/WORKFLOW.md.template +2 -2
  13. package/docs/getting-started/installation.md +86 -0
  14. package/docs/reference/commands.md +39 -5
  15. package/package.json +1 -1
  16. package/specs/quiver-v31-ai-model-catalog-agent-selection/EVIDENCE_REPORT.md +185 -0
  17. package/specs/quiver-v31-ai-model-catalog-agent-selection/EXECUTION_PLAN.md +85 -0
  18. package/specs/quiver-v31-ai-model-catalog-agent-selection/SPEC.md +337 -0
  19. package/specs/quiver-v31-ai-model-catalog-agent-selection/STATUS.md +30 -0
  20. package/specs/quiver-v31-ai-model-catalog-agent-selection/pr.md +98 -0
  21. package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-00-spec-foundation/CLOSURE_BRIEF.md +30 -0
  22. package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-00-spec-foundation/EXECUTION_BRIEF.md +51 -0
  23. package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-00-spec-foundation/slice.json +62 -0
  24. package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-01-model-catalog-alias-normalization/CLOSURE_BRIEF.md +32 -0
  25. package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-01-model-catalog-alias-normalization/EXECUTION_BRIEF.md +53 -0
  26. package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-01-model-catalog-alias-normalization/slice.json +72 -0
  27. package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-02-interactive-agent-set-selectors/CLOSURE_BRIEF.md +36 -0
  28. package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-02-interactive-agent-set-selectors/EXECUTION_BRIEF.md +56 -0
  29. package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-02-interactive-agent-set-selectors/slice.json +78 -0
  30. package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-03-agent-doctor-repair/CLOSURE_BRIEF.md +36 -0
  31. package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-03-agent-doctor-repair/EXECUTION_BRIEF.md +57 -0
  32. package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-03-agent-doctor-repair/slice.json +77 -0
  33. package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-04-shared-preflight-provider-errors/CLOSURE_BRIEF.md +35 -0
  34. package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-04-shared-preflight-provider-errors/EXECUTION_BRIEF.md +55 -0
  35. package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-04-shared-preflight-provider-errors/slice.json +84 -0
  36. package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-05-ai-models-list/CLOSURE_BRIEF.md +32 -0
  37. package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-05-ai-models-list/EXECUTION_BRIEF.md +52 -0
  38. package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-05-ai-models-list/slice.json +72 -0
  39. package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-06-docs-templates-alignment/CLOSURE_BRIEF.md +33 -0
  40. package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-06-docs-templates-alignment/EXECUTION_BRIEF.md +58 -0
  41. package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-06-docs-templates-alignment/slice.json +84 -0
  42. package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-07-tests-smokes-release-readiness/CLOSURE_BRIEF.md +32 -0
  43. package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-07-tests-smokes-release-readiness/EXECUTION_BRIEF.md +59 -0
  44. package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-07-tests-smokes-release-readiness/slice.json +94 -0
  45. package/specs/quiver-v32-npx-installation-guidance/EVIDENCE_REPORT.md +26 -0
  46. package/specs/quiver-v32-npx-installation-guidance/SPEC.md +55 -0
  47. package/specs/quiver-v32-npx-installation-guidance/STATUS.md +23 -0
  48. package/specs/quiver-v32-npx-installation-guidance/pr.md +72 -0
  49. package/specs/quiver-v32-npx-installation-guidance/slices/slice-00-installation-docs/CLOSURE_BRIEF.md +31 -0
  50. package/specs/quiver-v32-npx-installation-guidance/slices/slice-00-installation-docs/EXECUTION_BRIEF.md +56 -0
  51. package/specs/quiver-v32-npx-installation-guidance/slices/slice-00-installation-docs/slice.json +75 -0
  52. package/specs/quiver-v33-approval-ux-and-planner-progress/EVIDENCE_REPORT.md +93 -0
  53. package/specs/quiver-v33-approval-ux-and-planner-progress/EXECUTION_PLAN.md +83 -0
  54. package/specs/quiver-v33-approval-ux-and-planner-progress/SPEC.md +158 -0
  55. package/specs/quiver-v33-approval-ux-and-planner-progress/STATUS.md +31 -0
  56. package/specs/quiver-v33-approval-ux-and-planner-progress/pr.md +109 -0
  57. package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-00-approval-ux-foundation/CLOSURE_BRIEF.md +30 -0
  58. package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-00-approval-ux-foundation/EXECUTION_BRIEF.md +56 -0
  59. package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-00-approval-ux-foundation/slice.json +65 -0
  60. package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-01-approval-candidates-model/CLOSURE_BRIEF.md +19 -0
  61. package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-01-approval-candidates-model/EXECUTION_BRIEF.md +51 -0
  62. package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-01-approval-candidates-model/slice.json +74 -0
  63. package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-02-approve-interactive-selection/CLOSURE_BRIEF.md +20 -0
  64. package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-02-approve-interactive-selection/EXECUTION_BRIEF.md +53 -0
  65. package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-02-approve-interactive-selection/slice.json +79 -0
  66. package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-03-technical-plan-review-decision-data/CLOSURE_BRIEF.md +19 -0
  67. package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-03-technical-plan-review-decision-data/EXECUTION_BRIEF.md +50 -0
  68. package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-03-technical-plan-review-decision-data/slice.json +75 -0
  69. package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-04-revise-input-guardrails/CLOSURE_BRIEF.md +19 -0
  70. package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-04-revise-input-guardrails/EXECUTION_BRIEF.md +51 -0
  71. package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-04-revise-input-guardrails/slice.json +73 -0
  72. package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-05-provider-progress-alignment/CLOSURE_BRIEF.md +20 -0
  73. package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-05-provider-progress-alignment/EXECUTION_BRIEF.md +51 -0
  74. package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-05-provider-progress-alignment/slice.json +91 -0
  75. package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-06-workflow-surface-integration/CLOSURE_BRIEF.md +20 -0
  76. package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-06-workflow-surface-integration/EXECUTION_BRIEF.md +53 -0
  77. package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-06-workflow-surface-integration/slice.json +87 -0
  78. package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-07-docs-tests-release-readiness/CLOSURE_BRIEF.md +21 -0
  79. package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-07-docs-tests-release-readiness/EXECUTION_BRIEF.md +55 -0
  80. package/specs/quiver-v33-approval-ux-and-planner-progress/slices/slice-07-docs-tests-release-readiness/slice.json +97 -0
  81. package/src/create-quiver/commands/ai.js +561 -46
  82. package/src/create-quiver/commands/flow.js +76 -14
  83. package/src/create-quiver/commands/spec.js +8 -1
  84. package/src/create-quiver/index.js +36 -12
  85. package/src/create-quiver/lib/agent-profiles.js +332 -4
  86. package/src/create-quiver/lib/ai/approval-candidates.js +86 -0
  87. package/src/create-quiver/lib/ai/execution-plan.js +7 -2
  88. package/src/create-quiver/lib/ai/executor.js +9 -2
  89. package/src/create-quiver/lib/ai/model-catalog.js +333 -0
  90. package/src/create-quiver/lib/ai/plan-review.js +77 -1
  91. package/src/create-quiver/lib/ai/providers.js +143 -4
  92. package/src/create-quiver/lib/ai/run-state.js +21 -4
  93. package/src/create-quiver/lib/approvals.js +103 -0
  94. package/src/create-quiver/lib/cli/selectors.js +53 -0
  95. package/src/create-quiver/lib/git.js +13 -4
  96. package/src/create-quiver/lib/paths.js +45 -3
@@ -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.
@@ -0,0 +1,30 @@
1
+ # CLOSURE_BRIEF - slice-00 Approval UX foundation
2
+
3
+ ## Summary
4
+
5
+ Created the v33 planning package for approval UX, planner progress, shared approval decision guidance, and revise input guardrails.
6
+
7
+ ## Validation Against Acceptance Criteria
8
+
9
+ - [x] Spec folder created.
10
+ - [x] Every slice has `slice.json`, `EXECUTION_BRIEF.md`, and `CLOSURE_BRIEF.md`.
11
+ - [x] Product code was not modified.
12
+ - [x] JSON validation captured.
13
+ - [x] Spec validation captured.
14
+ - [x] `git diff --check` captured.
15
+
16
+ ## Relevant Changes
17
+
18
+ - New folder: `specs/quiver-v33-approval-ux-and-planner-progress/`.
19
+
20
+ ## Pending
21
+
22
+ - None.
23
+
24
+ ## Remaining Risks
25
+
26
+ - The repository still lacks `docs/INDEX.md`; this spec used the documented Quiver sources available in the repo.
27
+
28
+ ## Future Recommendations
29
+
30
+ Keep future approval-gate changes covered by focused selector, no-TTY, review-state, and workflow-surface tests.
@@ -0,0 +1,56 @@
1
+ # EXECUTION_BRIEF - slice-00 Approval UX foundation
2
+
3
+ ## Context
4
+
5
+ The user approved a revised production-reviewed plan for approval UX, planner progress, revise input guardrails, and shared approval decision guidance.
6
+
7
+ ## Objective
8
+
9
+ Create the v33 planning package under `specs/quiver-v33-approval-ux-and-planner-progress/` without implementing product code.
10
+
11
+ ## Scope
12
+
13
+ - `specs/quiver-v33-approval-ux-and-planner-progress/SPEC.md`
14
+ - `specs/quiver-v33-approval-ux-and-planner-progress/STATUS.md`
15
+ - `specs/quiver-v33-approval-ux-and-planner-progress/EVIDENCE_REPORT.md`
16
+ - `specs/quiver-v33-approval-ux-and-planner-progress/EXECUTION_PLAN.md`
17
+ - `specs/quiver-v33-approval-ux-and-planner-progress/pr.md`
18
+ - all slice folders and handoff briefs
19
+
20
+ ## Acceptance Criteria
21
+
22
+ - Spec package exists.
23
+ - Every slice has `slice.json`, `EXECUTION_BRIEF.md`, and `CLOSURE_BRIEF.md`.
24
+ - `slice-00` records the approved acceptance criteria and revised technical plan.
25
+ - JSON files parse.
26
+ - Spec validation passes.
27
+ - No product code is modified.
28
+
29
+ ## Technical Plan Summary
30
+
31
+ Use recent Quiver specs as the local contract and keep slice-00 documentation-only.
32
+
33
+ ## Suggested Steps
34
+
35
+ 1. Create the spec folder.
36
+ 2. Create top-level spec artifacts.
37
+ 3. Create slice folders and JSON contracts.
38
+ 4. Create execution and closure briefs for every slice.
39
+ 5. Validate JSON and spec structure.
40
+
41
+ ## Restrictions
42
+
43
+ - Do not edit `src/`.
44
+ - Do not edit tests.
45
+ - Do not claim implementation is complete.
46
+
47
+ ## Risks
48
+
49
+ - Missing `docs/INDEX.md` remains a documentation debt outside this slice.
50
+
51
+ ## Completion Checklist
52
+
53
+ - [x] Spec artifacts created.
54
+ - [x] Slice contracts created.
55
+ - [x] Handoff briefs created.
56
+ - [x] Validation commands run.
@@ -0,0 +1,65 @@
1
+ {
2
+ "slice_id": "slice-00-approval-ux-foundation",
3
+ "ticket": "QUIVER-33-00",
4
+ "type": "docs",
5
+ "title": "Approval UX foundation",
6
+ "objective": "Create the v33 spec package for approval UX, planner progress, and shared decision guidance.",
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": "v33-approval-ux-foundation",
12
+ "branch_name": "feature/QUIVER-33-00-v33-approval-ux-foundation"
13
+ },
14
+ "files": [
15
+ "specs/quiver-v33-approval-ux-and-planner-progress/**"
16
+ ],
17
+ "expected_read_paths": [
18
+ "README_FOR_AI.md",
19
+ "docs/CLI_UX_GUIDE.md",
20
+ "docs/reference/commands.md",
21
+ "docs/workflows/full-ai-spec-to-pr.md",
22
+ "specs/quiver-v29-planner-prepare-context-cli-ux/**",
23
+ "specs/quiver-v30-interactive-cli-ux-agent-selection/**",
24
+ "specs/quiver-v31-ai-model-catalog-agent-selection/**"
25
+ ],
26
+ "allowed_write_paths": [
27
+ "specs/quiver-v33-approval-ux-and-planner-progress/**"
28
+ ],
29
+ "depends_on": [],
30
+ "parallel_safe": "no",
31
+ "parallel_safe_reason": "slice-00 is the foundation barrier for the spec.",
32
+ "must": [
33
+ "Create SPEC.md, STATUS.md, EVIDENCE_REPORT.md, EXECUTION_PLAN.md, and pr.md.",
34
+ "Create slice.json, EXECUTION_BRIEF.md, and CLOSURE_BRIEF.md for every slice.",
35
+ "Capture approved acceptance criteria and production review fixes.",
36
+ "Avoid product code changes."
37
+ ],
38
+ "not_included": [
39
+ "Implementing approval selectors.",
40
+ "Changing command behavior.",
41
+ "Updating public docs outside this spec package.",
42
+ "Publishing a package."
43
+ ],
44
+ "acceptance": [
45
+ "Spec folder exists under specs/quiver-v33-approval-ux-and-planner-progress.",
46
+ "Every slice has slice.json, EXECUTION_BRIEF.md, and CLOSURE_BRIEF.md.",
47
+ "Every slice.json parses successfully.",
48
+ "Spec validation passes.",
49
+ "No product code is modified."
50
+ ],
51
+ "tests": [
52
+ "git diff --check",
53
+ "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'))\" {} \\;",
54
+ "node bin/create-quiver.js spec validate specs/quiver-v33-approval-ux-and-planner-progress"
55
+ ],
56
+ "validation_hints": [
57
+ "Keep this slice documentation-only.",
58
+ "Do not claim implementation or package publication."
59
+ ],
60
+ "estimated_hours": 2,
61
+ "status": "completed",
62
+ "blocked_reason": null,
63
+ "actual_hours": 2,
64
+ "completed_at": "2026-05-28"
65
+ }
@@ -0,0 +1,19 @@
1
+ # CLOSURE_BRIEF - slice-01 Shared approval candidates model
2
+
3
+ ## Summary
4
+
5
+ Completed shared approval-candidate construction for acceptance and technical-plan phases. Candidates include current/latest flags, approvability, next command, redacted/truncated previews, and technical-plan review decision data.
6
+
7
+ ## Validation
8
+
9
+ - [x] Candidate model tests pass.
10
+ - [x] Existing approval and plan-review tests pass.
11
+ - [x] No provider execution added.
12
+
13
+ ## Pending
14
+
15
+ - None.
16
+
17
+ ## Remaining Risks
18
+
19
+ - None critical; downstream surfaces consume the model in slice-06.
@@ -0,0 +1,51 @@
1
+ # EXECUTION_BRIEF - slice-01 Shared approval candidates model
2
+
3
+ ## Context
4
+
5
+ Approval guidance is currently split across approval persistence, plan-review metadata, `ai approve`, `ai approvals`, `flow`, and run-state formatting.
6
+
7
+ ## Objective
8
+
9
+ Create a shared read-only candidate model that every later approval UX surface can consume.
10
+
11
+ ## Scope
12
+
13
+ - `src/create-quiver/lib/approvals.js`
14
+ - `src/create-quiver/lib/ai/plan-review.js`
15
+ - focused tests
16
+
17
+ ## Acceptance Criteria
18
+
19
+ - Candidate data includes phase, version, path, source, current/latest state, review recommendation, blocking state, risks, and next command.
20
+ - Only the latest draft is marked recommended/approvable.
21
+ - Technical-plan candidates include plan-review state.
22
+ - Candidate summaries are bounded and safe.
23
+ - Existing approval metadata remains backward compatible.
24
+
25
+ ## Technical Plan Summary
26
+
27
+ Add pure helper functions around existing metadata readers. Keep formatting and interactivity out of this slice except for minimal candidate summary helpers if needed.
28
+
29
+ ## Suggested Steps
30
+
31
+ 1. Model candidate shape.
32
+ 2. Build acceptance candidates from approval metadata.
33
+ 3. Build technical-plan candidates with plan-review context.
34
+ 4. Add unit tests for missing, draft, stale, approved, approve-with-risk, and revise states.
35
+ 5. Export only stable helpers needed by later slices.
36
+
37
+ ## Restrictions
38
+
39
+ - Do not add prompts.
40
+ - Do not change approval persistence format unless tests prove compatibility.
41
+ - Do not relax review blocking.
42
+
43
+ ## Risks
44
+
45
+ - A poorly scoped helper can become another duplicated formatter instead of a source of truth.
46
+
47
+ ## Completion Checklist
48
+
49
+ - [ ] Shared candidate helpers implemented.
50
+ - [ ] Candidate tests added.
51
+ - [ ] Existing approval tests still pass.
@@ -0,0 +1,74 @@
1
+ {
2
+ "slice_id": "slice-01-approval-candidates-model",
3
+ "ticket": "QUIVER-33-01",
4
+ "type": "feature",
5
+ "title": "Shared approval candidates model",
6
+ "objective": "Create a single approval-candidate model for acceptance, technical-plan, and plan-review decision data.",
7
+ "description": "Adds reusable read-only candidate construction so approval commands and workflow surfaces share the same current draft, version, review state, recommendation, and next-command guidance.",
8
+ "git": {
9
+ "branch_type": "feature",
10
+ "base_branch": "main",
11
+ "branch_slug": "v33-approval-candidates-model",
12
+ "branch_name": "feature/QUIVER-33-01-v33-approval-candidates-model"
13
+ },
14
+ "files": [
15
+ "src/create-quiver/lib/approvals.js",
16
+ "src/create-quiver/lib/ai/plan-review.js",
17
+ "tests/lib/approvals.test.js",
18
+ "tests/commands/ai-review-plan.test.js"
19
+ ],
20
+ "expected_read_paths": [
21
+ "src/create-quiver/lib/approvals.js",
22
+ "src/create-quiver/lib/ai/plan-review.js",
23
+ "src/create-quiver/commands/ai.js",
24
+ "tests/lib/approvals.test.js",
25
+ "tests/commands/ai-review-plan.test.js",
26
+ "SPEC.md"
27
+ ],
28
+ "allowed_write_paths": [
29
+ "src/create-quiver/lib/approvals.js",
30
+ "src/create-quiver/lib/ai/plan-review.js",
31
+ "tests/lib/approvals.test.js",
32
+ "tests/commands/ai-review-plan.test.js",
33
+ "specs/quiver-v33-approval-ux-and-planner-progress/**"
34
+ ],
35
+ "depends_on": [
36
+ "slice-00-approval-ux-foundation"
37
+ ],
38
+ "parallel_safe": "no",
39
+ "parallel_safe_reason": "This model is a dependency for later command and workflow surfaces.",
40
+ "must": [
41
+ "Expose candidate data without changing existing persisted approval metadata unless required.",
42
+ "Include phase, version, path, created_at, source_file, latest/current flags, status, recommendation, blocking state, recommended action, and next command.",
43
+ "Represent older drafts as history but mark them non-current and not recommended.",
44
+ "Expose technical-plan plan-review state using the existing plan-review semantics.",
45
+ "Use redacted/truncated summary helpers for any preview text.",
46
+ "Keep JSON/no-TTY consumers clean."
47
+ ],
48
+ "not_included": [
49
+ "Interactive prompts.",
50
+ "Changing approval execution behavior.",
51
+ "Changing plan-review blocking rules."
52
+ ],
53
+ "acceptance": [
54
+ "Acceptance candidates include the latest draft and draft history.",
55
+ "Technical-plan candidates include plan-review state and recommendation.",
56
+ "Older drafts are visible as history but not marked approvable.",
57
+ "A revise recommendation is represented as blocking.",
58
+ "Approve-with-risk is represented as approvable with risks.",
59
+ "Candidate summaries do not print unbounded draft contents."
60
+ ],
61
+ "tests": [
62
+ "node --test tests/lib/approvals.test.js tests/commands/ai-review-plan.test.js",
63
+ "git diff --check"
64
+ ],
65
+ "validation_hints": [
66
+ "Prefer pure functions that can be reused by commands without I/O side effects.",
67
+ "Do not call providers in this slice."
68
+ ],
69
+ "estimated_hours": 6,
70
+ "status": "completed",
71
+ "blocked_reason": null,
72
+ "actual_hours": 6,
73
+ "completed_at": "2026-05-28"
74
+ }
@@ -0,0 +1,20 @@
1
+ # CLOSURE_BRIEF - slice-02 Interactive approval selection
2
+
3
+ ## Summary
4
+
5
+ Completed TTY approval selection for acceptance and technical-plan when `--version` is omitted, while preserving explicit version approval for scripts and CI.
6
+
7
+ ## Validation
8
+
9
+ - [x] Acceptance selector test passes.
10
+ - [x] Technical-plan selector test passes.
11
+ - [x] No-TTY/CI failure test passes.
12
+ - [x] Explicit version regression test passes.
13
+
14
+ ## Pending
15
+
16
+ - None.
17
+
18
+ ## Remaining Risks
19
+
20
+ - None critical; slice-06 integrates shared guidance into the remaining surfaces.
@@ -0,0 +1,53 @@
1
+ # EXECUTION_BRIEF - slice-02 Interactive approval selection
2
+
3
+ ## Context
4
+
5
+ Users currently need to run `ai approvals`, inspect versions manually, then pass `--version <n>`. The requested UX should behave like `ai agent set`: guide users in TTY and stay explicit in automation.
6
+
7
+ ## Objective
8
+
9
+ Add TTY approval selection for `ai approve` when `--version` is omitted.
10
+
11
+ ## Scope
12
+
13
+ - `src/create-quiver/commands/ai.js`
14
+ - selector helpers if needed
15
+ - approval tests
16
+
17
+ ## Acceptance Criteria
18
+
19
+ - TTY acceptance approval without `--version` shows candidates.
20
+ - TTY technical-plan approval without `--version` shows review-aware candidates.
21
+ - No-TTY/CI requires `--version`.
22
+ - Explicit `--version` behavior remains stable.
23
+ - Cancellation writes no files.
24
+ - Blocked candidates cannot be approved.
25
+
26
+ ## Technical Plan Summary
27
+
28
+ Resolve candidates from slice-01, use `selectOption` for prompt-capable environments, and pass the selected version into the existing approval path.
29
+
30
+ ## Suggested Steps
31
+
32
+ 1. Add approval selection resolver.
33
+ 2. Wire resolver into `runApprove`.
34
+ 3. Add no-TTY guardrail message.
35
+ 4. Add tests for acceptance and technical-plan.
36
+ 5. Verify explicit version path remains unchanged.
37
+
38
+ ## Restrictions
39
+
40
+ - Do not add `--review` support.
41
+ - Do not weaken technical-plan validation.
42
+ - Do not prompt in CI/no-TTY/JSON.
43
+
44
+ ## Risks
45
+
46
+ - Prompt availability detection must match existing `ai agent set` behavior closely enough to avoid CI hangs.
47
+
48
+ ## Completion Checklist
49
+
50
+ - [ ] TTY selector implemented.
51
+ - [ ] No-TTY guardrail tested.
52
+ - [ ] Cancellation tested.
53
+ - [ ] Explicit `--version` tested.
@@ -0,0 +1,79 @@
1
+ {
2
+ "slice_id": "slice-02-approve-interactive-selection",
3
+ "ticket": "QUIVER-33-02",
4
+ "type": "feature",
5
+ "title": "Interactive approval selection",
6
+ "objective": "Let `ai approve --phase acceptance|technical-plan` guide TTY users when `--version` is omitted while preserving explicit non-interactive behavior.",
7
+ "description": "Adds a selector patterned after `ai agent set`, recommends the current latest draft, blocks unsafe approvals, and keeps CI/no-TTY requiring `--version <n>`.",
8
+ "git": {
9
+ "branch_type": "feature",
10
+ "base_branch": "main",
11
+ "branch_slug": "v33-approve-interactive-selection",
12
+ "branch_name": "feature/QUIVER-33-02-v33-approve-interactive-selection"
13
+ },
14
+ "files": [
15
+ "src/create-quiver/commands/ai.js",
16
+ "src/create-quiver/lib/cli/selectors.js",
17
+ "src/create-quiver/lib/approvals.js",
18
+ "tests/commands/ai-review-plan.test.js",
19
+ "tests/commands/ai-plan.test.js",
20
+ "tests/lib/cli-selectors.test.js"
21
+ ],
22
+ "expected_read_paths": [
23
+ "src/create-quiver/commands/ai.js",
24
+ "src/create-quiver/lib/approvals.js",
25
+ "src/create-quiver/lib/cli/selectors.js",
26
+ "tests/commands/ai-review-plan.test.js",
27
+ "tests/commands/ai-plan.test.js",
28
+ "SPEC.md"
29
+ ],
30
+ "allowed_write_paths": [
31
+ "src/create-quiver/commands/ai.js",
32
+ "src/create-quiver/lib/cli/selectors.js",
33
+ "src/create-quiver/lib/approvals.js",
34
+ "tests/commands/ai-review-plan.test.js",
35
+ "tests/commands/ai-plan.test.js",
36
+ "tests/lib/cli-selectors.test.js",
37
+ "specs/quiver-v33-approval-ux-and-planner-progress/**"
38
+ ],
39
+ "depends_on": [
40
+ "slice-01-approval-candidates-model"
41
+ ],
42
+ "parallel_safe": "no",
43
+ "parallel_safe_reason": "This slice changes approval command behavior and should land before downstream consumers rely on it.",
44
+ "must": [
45
+ "Open a selector only when `--version` is omitted and prompts are available.",
46
+ "Require explicit `--version <n>` in CI/no-TTY.",
47
+ "Keep explicit `--version <n>` behavior backward compatible.",
48
+ "Recommend the current/latest approvable draft.",
49
+ "Show concise useful decision information for each candidate.",
50
+ "Allow cancellation without writes.",
51
+ "Do not approve older or blocked drafts silently."
52
+ ],
53
+ "not_included": [
54
+ "Changing plan-review result derivation.",
55
+ "Changing spec generation.",
56
+ "Adding editor review to approve."
57
+ ],
58
+ "acceptance": [
59
+ "`ai approve --phase acceptance` in TTY without `--version` shows a selector.",
60
+ "`ai approve --phase technical-plan` in TTY without `--version` shows a selector with review context.",
61
+ "No-TTY/CI without `--version` fails actionably.",
62
+ "`--version 1` still approves through the existing path when valid.",
63
+ "Canceling the selector writes no approval.",
64
+ "Older draft versions cannot be approved through the selector."
65
+ ],
66
+ "tests": [
67
+ "node --test tests/commands/ai-plan.test.js tests/commands/ai-review-plan.test.js tests/lib/cli-selectors.test.js",
68
+ "git diff --check"
69
+ ],
70
+ "validation_hints": [
71
+ "Use injected selector helpers in tests; do not require a real terminal.",
72
+ "Test no-TTY and CI explicitly."
73
+ ],
74
+ "estimated_hours": 8,
75
+ "status": "completed",
76
+ "blocked_reason": null,
77
+ "actual_hours": 8,
78
+ "completed_at": "2026-05-28"
79
+ }
@@ -0,0 +1,19 @@
1
+ # CLOSURE_BRIEF - slice-03 Technical-plan review decision data
2
+
3
+ ## Summary
4
+
5
+ Completed technical-plan candidate enrichment so approval decisions reflect review status, approval recommendation, blocking state, required fixes, optional hardening, risks, and next command.
6
+
7
+ ## Validation
8
+
9
+ - [x] Plan-review state tests pass.
10
+ - [x] Revise blocking test passes.
11
+ - [x] Approve-with-risk test passes.
12
+
13
+ ## Pending
14
+
15
+ - None.
16
+
17
+ ## Remaining Risks
18
+
19
+ - None critical; workflow surfaces are integrated in slice-06.
@@ -0,0 +1,50 @@
1
+ # EXECUTION_BRIEF - slice-03 Technical-plan review decision data
2
+
3
+ ## Context
4
+
5
+ Technical-plan approval already has safety checks, but users need visible decision data before approving.
6
+
7
+ ## Objective
8
+
9
+ Surface plan-review state and recommendation consistently during technical-plan approval.
10
+
11
+ ## Scope
12
+
13
+ - `src/create-quiver/lib/ai/plan-review.js`
14
+ - approval candidate helpers
15
+ - `runApprove` selector output if needed
16
+ - focused plan-review tests
17
+
18
+ ## Acceptance Criteria
19
+
20
+ - Missing, stale, unapproved, approve, approve-with-risk, and revise states are distinguishable.
21
+ - Revise blocks approval.
22
+ - Approve-with-risk remains approvable and visible.
23
+ - Required fixes, optional hardening, risks, and next command are shown where relevant.
24
+ - Existing technical-plan approval validation remains intact.
25
+
26
+ ## Technical Plan Summary
27
+
28
+ Extend the shared candidate data with normalized review-decision fields and consume them in the approval selector.
29
+
30
+ ## Suggested Steps
31
+
32
+ 1. Normalize review decision state.
33
+ 2. Add candidate annotations for technical-plan.
34
+ 3. Update selector rendering or approval summaries.
35
+ 4. Add tests for all review states.
36
+
37
+ ## Restrictions
38
+
39
+ - Do not modify provider prompts.
40
+ - Do not change review-result schema unless needed for backward compatibility.
41
+
42
+ ## Risks
43
+
44
+ - Displaying unapproved vs reviewed states incorrectly can lead users to approve the wrong artifact.
45
+
46
+ ## Completion Checklist
47
+
48
+ - [ ] Review states normalized.
49
+ - [ ] Blocking behavior preserved.
50
+ - [ ] Tests cover all review states.