create-quiver 0.17.1 → 0.17.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/ACTIVE_SLICES.md +43 -0
- package/CHANGELOG.md +8 -0
- package/auditoria-ux-ui-performance-documentacion.md +705 -0
- package/copys-landing-page.md +244 -0
- package/docs/CLI_UX_GUIDE.md +13 -3
- package/docs/TROUBLESHOOTING.md +94 -0
- package/docs/reference/commands.md +68 -4
- package/docs/workflows/existing-project-ai-quiver-setup.md +552 -0
- package/docs/workflows/existing-project.md +36 -0
- package/package.json +1 -1
- package/specs/quiver-v43-cli-i18n-audit-release-readiness/command-language-mode-matrix.json +5 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/EVIDENCE_REPORT.md +151 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/EXECUTION_PLAN.md +50 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/SPEC.md +207 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/STATUS.md +32 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/pr.md +73 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-00-analysis-run-contract/CLOSURE_BRIEF.md +32 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-00-analysis-run-contract/EXECUTION_BRIEF.md +63 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-00-analysis-run-contract/slice.json +70 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-01-provider-fixture-harness/CLOSURE_BRIEF.md +38 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-01-provider-fixture-harness/EXECUTION_BRIEF.md +60 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-01-provider-fixture-harness/slice.json +74 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-02-safe-context-boundary/CLOSURE_BRIEF.md +33 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-02-safe-context-boundary/EXECUTION_BRIEF.md +68 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-02-safe-context-boundary/slice.json +85 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-03-schema-error-grouping/CLOSURE_BRIEF.md +34 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-03-schema-error-grouping/EXECUTION_BRIEF.md +65 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-03-schema-error-grouping/slice.json +80 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-04-safe-repair-layer/CLOSURE_BRIEF.md +34 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-04-safe-repair-layer/EXECUTION_BRIEF.md +63 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-04-safe-repair-layer/slice.json +80 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-05-controlled-retry-layer/CLOSURE_BRIEF.md +34 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-05-controlled-retry-layer/EXECUTION_BRIEF.md +65 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-05-controlled-retry-layer/slice.json +81 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-06-audit-review-transaction/CLOSURE_BRIEF.md +35 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-06-audit-review-transaction/EXECUTION_BRIEF.md +71 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-06-audit-review-transaction/slice.json +88 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-07-semantic-validation-docs/CLOSURE_BRIEF.md +32 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-07-semantic-validation-docs/EXECUTION_BRIEF.md +66 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-07-semantic-validation-docs/slice.json +86 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-08-structural-map-hardening/CLOSURE_BRIEF.md +34 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-08-structural-map-hardening/EXECUTION_BRIEF.md +67 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-08-structural-map-hardening/slice.json +81 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/EVIDENCE_REPORT.md +53 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/EXECUTION_PLAN.md +55 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/SPEC.md +184 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/STATUS.md +34 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-01-contract-regression-harness/CLOSURE_BRIEF.md +10 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-01-contract-regression-harness/EXECUTION_BRIEF.md +54 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-01-contract-regression-harness/slice.json +72 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-02-safe-discovery-sampling/CLOSURE_BRIEF.md +11 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-02-safe-discovery-sampling/EXECUTION_BRIEF.md +53 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-02-safe-discovery-sampling/slice.json +69 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-03-run-lifecycle-cli-io/CLOSURE_BRIEF.md +10 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-03-run-lifecycle-cli-io/EXECUTION_BRIEF.md +53 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-03-run-lifecycle-cli-io/slice.json +69 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-04-artifact-store-redaction/CLOSURE_BRIEF.md +10 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-04-artifact-store-redaction/EXECUTION_BRIEF.md +54 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-04-artifact-store-redaction/slice.json +73 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-05-path-aware-repair-engine/CLOSURE_BRIEF.md +10 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-05-path-aware-repair-engine/EXECUTION_BRIEF.md +57 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-05-path-aware-repair-engine/slice.json +72 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-06-retry-controller/CLOSURE_BRIEF.md +9 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-06-retry-controller/EXECUTION_BRIEF.md +52 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-06-retry-controller/slice.json +70 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-07-final-validation-review-write-gate/CLOSURE_BRIEF.md +10 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-07-final-validation-review-write-gate/EXECUTION_BRIEF.md +57 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-07-final-validation-review-write-gate/slice.json +75 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-08-doctor-agents-guidance/CLOSURE_BRIEF.md +9 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-08-doctor-agents-guidance/EXECUTION_BRIEF.md +51 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-08-doctor-agents-guidance/slice.json +66 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-09-release-smoke-rollback-docs/CLOSURE_BRIEF.md +10 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-09-release-smoke-rollback-docs/EXECUTION_BRIEF.md +54 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-09-release-smoke-rollback-docs/slice.json +69 -0
- package/specs/quiver-v55-analyze-project-doc-apply-ux/EVIDENCE_REPORT.md +209 -0
- package/specs/quiver-v55-analyze-project-doc-apply-ux/EXECUTION_PLAN.md +49 -0
- package/specs/quiver-v55-analyze-project-doc-apply-ux/SPEC.md +276 -0
- package/specs/quiver-v55-analyze-project-doc-apply-ux/STATUS.md +29 -0
- package/specs/quiver-v55-analyze-project-doc-apply-ux/slices/slice-01-cli-proposal-contract/CLOSURE_BRIEF.md +47 -0
- package/specs/quiver-v55-analyze-project-doc-apply-ux/slices/slice-01-cli-proposal-contract/EXECUTION_BRIEF.md +67 -0
- package/specs/quiver-v55-analyze-project-doc-apply-ux/slices/slice-01-cli-proposal-contract/pr.md +129 -0
- package/specs/quiver-v55-analyze-project-doc-apply-ux/slices/slice-01-cli-proposal-contract/slice.json +82 -0
- package/specs/quiver-v55-analyze-project-doc-apply-ux/slices/slice-02-save-proposal-flow/CLOSURE_BRIEF.md +39 -0
- package/specs/quiver-v55-analyze-project-doc-apply-ux/slices/slice-02-save-proposal-flow/EXECUTION_BRIEF.md +61 -0
- package/specs/quiver-v55-analyze-project-doc-apply-ux/slices/slice-02-save-proposal-flow/pr.md +116 -0
- package/specs/quiver-v55-analyze-project-doc-apply-ux/slices/slice-02-save-proposal-flow/slice.json +69 -0
- package/specs/quiver-v55-analyze-project-doc-apply-ux/slices/slice-03-noninteractive-apply-engine/CLOSURE_BRIEF.md +36 -0
- package/specs/quiver-v55-analyze-project-doc-apply-ux/slices/slice-03-noninteractive-apply-engine/EXECUTION_BRIEF.md +62 -0
- package/specs/quiver-v55-analyze-project-doc-apply-ux/slices/slice-03-noninteractive-apply-engine/pr.md +132 -0
- package/specs/quiver-v55-analyze-project-doc-apply-ux/slices/slice-03-noninteractive-apply-engine/slice.json +76 -0
- package/specs/quiver-v55-analyze-project-doc-apply-ux/slices/slice-04-interactive-apply-ux/CLOSURE_BRIEF.md +47 -0
- package/specs/quiver-v55-analyze-project-doc-apply-ux/slices/slice-04-interactive-apply-ux/EXECUTION_BRIEF.md +70 -0
- package/specs/quiver-v55-analyze-project-doc-apply-ux/slices/slice-04-interactive-apply-ux/pr.md +141 -0
- package/specs/quiver-v55-analyze-project-doc-apply-ux/slices/slice-04-interactive-apply-ux/slice.json +72 -0
- package/specs/quiver-v55-analyze-project-doc-apply-ux/slices/slice-05-apply-saved-proposal/CLOSURE_BRIEF.md +42 -0
- package/specs/quiver-v55-analyze-project-doc-apply-ux/slices/slice-05-apply-saved-proposal/EXECUTION_BRIEF.md +61 -0
- package/specs/quiver-v55-analyze-project-doc-apply-ux/slices/slice-05-apply-saved-proposal/pr.md +129 -0
- package/specs/quiver-v55-analyze-project-doc-apply-ux/slices/slice-05-apply-saved-proposal/slice.json +67 -0
- package/specs/quiver-v55-analyze-project-doc-apply-ux/slices/slice-06-i18n-docs-release-smoke/CLOSURE_BRIEF.md +38 -0
- package/specs/quiver-v55-analyze-project-doc-apply-ux/slices/slice-06-i18n-docs-release-smoke/EXECUTION_BRIEF.md +64 -0
- package/specs/quiver-v55-analyze-project-doc-apply-ux/slices/slice-06-i18n-docs-release-smoke/pr.md +123 -0
- package/specs/quiver-v55-analyze-project-doc-apply-ux/slices/slice-06-i18n-docs-release-smoke/slice.json +76 -0
- package/src/create-quiver/commands/ai.js +989 -136
- package/src/create-quiver/index.js +83 -1
- package/src/create-quiver/lib/ai/analyze-project-apply.js +269 -0
- package/src/create-quiver/lib/ai/analyze-project-discovery.js +213 -2
- package/src/create-quiver/lib/ai/analyze-project-docs.js +3 -1
- package/src/create-quiver/lib/ai/analyze-project-interactive.js +241 -0
- package/src/create-quiver/lib/ai/analyze-project-parser.js +1 -0
- package/src/create-quiver/lib/ai/analyze-project-prompts.js +130 -0
- package/src/create-quiver/lib/ai/analyze-project-proposal.js +582 -0
- package/src/create-quiver/lib/ai/analyze-project-repair.js +402 -0
- package/src/create-quiver/lib/ai/analyze-project-sampling.js +31 -4
- package/src/create-quiver/lib/ai/analyze-project-validation.js +178 -8
- package/src/create-quiver/lib/ai/artifacts.js +83 -2
- package/src/create-quiver/lib/cli/ux-flags.js +6 -0
- package/src/create-quiver/lib/doctor.js +107 -12
- package/src/create-quiver/lib/i18n/messages/en.js +33 -0
- package/src/create-quiver/lib/i18n/messages/es.js +34 -0
package/specs/quiver-v55-analyze-project-doc-apply-ux/slices/slice-01-cli-proposal-contract/pr.md
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
## Title
|
|
2
|
+
|
|
3
|
+
QUIVER-55-01 - Analyze Project CLI Proposal Contract
|
|
4
|
+
|
|
5
|
+
## Summary
|
|
6
|
+
|
|
7
|
+
Implements the first v55 slice for `ai analyze-project` doc-apply UX. This PR establishes the CLI contract, parser validation, help/docs surface, and proposal/write manifest schemas without implementing the later save/apply flows.
|
|
8
|
+
|
|
9
|
+
## PR Policy
|
|
10
|
+
|
|
11
|
+
- One slice: `slice-01-cli-proposal-contract`.
|
|
12
|
+
- Runtime behavior change is limited to parser/contract guards and manifest schema helpers.
|
|
13
|
+
- Later slices will implement saving proposals, applying docs, interactive UX, saved proposal apply, and release smoke.
|
|
14
|
+
|
|
15
|
+
## Scope
|
|
16
|
+
|
|
17
|
+
Included:
|
|
18
|
+
|
|
19
|
+
- Recognize `--apply-docs`, `--save-proposal`, `--diff`, and `--allow-dirty-docs`.
|
|
20
|
+
- Recognize `ai analyze-project apply --run <run-id>`.
|
|
21
|
+
- Reject invalid combinations before provider execution.
|
|
22
|
+
- Keep `--review` backward compatible.
|
|
23
|
+
- Add proposal and write manifest schema validation helpers.
|
|
24
|
+
- Add command help, command reference, and EN/ES help descriptions.
|
|
25
|
+
- Add the approved v55 spec/slice package and mark `slice-01` completed.
|
|
26
|
+
|
|
27
|
+
Excluded:
|
|
28
|
+
|
|
29
|
+
- No proposal persistence implementation.
|
|
30
|
+
- No docs apply implementation.
|
|
31
|
+
- No interactive selector.
|
|
32
|
+
- No saved proposal apply.
|
|
33
|
+
- No live provider smoke.
|
|
34
|
+
|
|
35
|
+
## Files
|
|
36
|
+
|
|
37
|
+
- `src/create-quiver/index.js`
|
|
38
|
+
- `src/create-quiver/commands/ai.js`
|
|
39
|
+
- `src/create-quiver/lib/ai/analyze-project-proposal.js`
|
|
40
|
+
- `src/create-quiver/lib/cli/ux-flags.js`
|
|
41
|
+
- `src/create-quiver/lib/i18n/messages/en.js`
|
|
42
|
+
- `src/create-quiver/lib/i18n/messages/es.js`
|
|
43
|
+
- `tests/commands/ai-analyze-project.test.js`
|
|
44
|
+
- `tests/commands/cli-contract.test.js`
|
|
45
|
+
- `tests/lib/ai-analyze-project-proposal.test.js`
|
|
46
|
+
- `docs/reference/commands.md`
|
|
47
|
+
- `specs/quiver-v55-analyze-project-doc-apply-ux/**`
|
|
48
|
+
|
|
49
|
+
## How to Test (DETAILED - REQUIRED)
|
|
50
|
+
|
|
51
|
+
### Required Environment
|
|
52
|
+
|
|
53
|
+
- Node.js supported by this repository.
|
|
54
|
+
- npm dependencies installed.
|
|
55
|
+
- No provider credentials are required for this slice.
|
|
56
|
+
|
|
57
|
+
### Worktree Access
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
git checkout feature/QUIVER-55-01-v55-cli-proposal-contract
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Run the Project
|
|
64
|
+
|
|
65
|
+
No dev server is required. This is a CLI contract slice.
|
|
66
|
+
|
|
67
|
+
### Use Cases
|
|
68
|
+
|
|
69
|
+
#### Case 1: Dry-run remains read-only
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
node bin/create-quiver.js ai analyze-project --deep --dry-run
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Expected: reports read-only analysis and does not create final docs.
|
|
76
|
+
|
|
77
|
+
#### Case 2: Invalid apply/review combination fails before provider
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
node bin/create-quiver.js ai analyze-project --deep --apply-docs --review
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Expected: fails with an actionable contract error before provider execution.
|
|
84
|
+
|
|
85
|
+
#### Case 3: Saved proposal apply contract is recognized
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
node bin/create-quiver.js ai analyze-project apply --run run-123
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Expected: command is parsed without requiring provider/model and reports that execution is reserved for a later v55 slice.
|
|
92
|
+
|
|
93
|
+
### Technical Verification
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
node --test tests/lib/ai-analyze-project-proposal.test.js
|
|
97
|
+
node --test tests/commands/ai-analyze-project.test.js
|
|
98
|
+
node --test tests/commands/cli-contract.test.js
|
|
99
|
+
node --test tests/commands/parser-contract.test.js
|
|
100
|
+
node --test tests/commands/ux-flags.test.js
|
|
101
|
+
node --test tests/commands/ai-analyze-project-review.test.js
|
|
102
|
+
node --test tests/commands/ai-analyze-project-provider.test.js
|
|
103
|
+
node --test tests/lib/ai-analyze-project-docs.test.js tests/lib/ai-analyze-project-validation.test.js
|
|
104
|
+
npm run docs:check
|
|
105
|
+
npm run schema:slice:check
|
|
106
|
+
node bin/create-quiver.js spec validate specs/quiver-v55-analyze-project-doc-apply-ux --strict
|
|
107
|
+
git diff --check
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Evidence
|
|
111
|
+
|
|
112
|
+
- All technical verification commands passed locally.
|
|
113
|
+
- `slice-01` closure brief records executed evidence.
|
|
114
|
+
- No live provider call was required.
|
|
115
|
+
|
|
116
|
+
## Rollback
|
|
117
|
+
|
|
118
|
+
Revert this PR:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
git revert <merge-commit-sha>
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Existing `ai analyze-project --deep`, `--dry-run`, provider mode, and `--review` behavior are isolated and covered by regression tests.
|
|
125
|
+
|
|
126
|
+
## Risks / Notes
|
|
127
|
+
|
|
128
|
+
- The new flags are recognized but intentionally blocked from executing save/apply behavior until later slices.
|
|
129
|
+
- This PR includes the v55 spec package because the spec does not exist on `main` yet.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slice_id": "slice-01-cli-proposal-contract",
|
|
3
|
+
"ticket": "QUIVER-55-01",
|
|
4
|
+
"type": "contract",
|
|
5
|
+
"title": "CLI Contract + Proposal Artifact Contract",
|
|
6
|
+
"objective": "Freeze the parser, flag, subcommand, and artifact schema contracts before implementing save/apply behavior.",
|
|
7
|
+
"description": "Adds the command contract for --apply-docs, --save-proposal, --diff, --yes, --allow-dirty-docs, and ai analyze-project apply --run, plus proposal/write manifest schema definitions and tests.",
|
|
8
|
+
"git": {
|
|
9
|
+
"branch_type": "feature",
|
|
10
|
+
"base_branch": "main",
|
|
11
|
+
"branch_slug": "v55-cli-proposal-contract",
|
|
12
|
+
"branch_name": "feature/QUIVER-55-01-v55-cli-proposal-contract"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"src/create-quiver/index.js",
|
|
16
|
+
"src/create-quiver/commands/ai.js",
|
|
17
|
+
"src/create-quiver/lib/ai/analyze-project-*.js",
|
|
18
|
+
"src/create-quiver/lib/cli/ux-flags.js",
|
|
19
|
+
"src/create-quiver/lib/i18n/messages/en.js",
|
|
20
|
+
"src/create-quiver/lib/i18n/messages/es.js",
|
|
21
|
+
"tests/commands/cli-contract.test.js",
|
|
22
|
+
"tests/commands/ai-analyze-project*.test.js",
|
|
23
|
+
"tests/lib/ai*.test.js",
|
|
24
|
+
"docs/reference/commands.md",
|
|
25
|
+
"specs/quiver-v43-cli-i18n-audit-release-readiness/command-language-mode-matrix.json",
|
|
26
|
+
"specs/quiver-v55-analyze-project-doc-apply-ux/**"
|
|
27
|
+
],
|
|
28
|
+
"expected_read_paths": [
|
|
29
|
+
"src/create-quiver/commands/ai.js",
|
|
30
|
+
"src/create-quiver/lib/ai/analyze-project-review.js",
|
|
31
|
+
"src/create-quiver/lib/ai/analyze-project-docs.js",
|
|
32
|
+
"docs/CLI_UX_GUIDE.md"
|
|
33
|
+
],
|
|
34
|
+
"allowed_write_paths": [
|
|
35
|
+
"src/create-quiver/index.js",
|
|
36
|
+
"src/create-quiver/commands/ai.js",
|
|
37
|
+
"src/create-quiver/lib/ai/analyze-project-proposal.js",
|
|
38
|
+
"src/create-quiver/lib/cli/ux-flags.js",
|
|
39
|
+
"src/create-quiver/lib/i18n/messages/en.js",
|
|
40
|
+
"src/create-quiver/lib/i18n/messages/es.js",
|
|
41
|
+
"tests/commands/cli-contract.test.js",
|
|
42
|
+
"tests/commands/ai-analyze-project.test.js",
|
|
43
|
+
"tests/commands/ai-analyze-project-review.test.js",
|
|
44
|
+
"tests/lib/ai-analyze-project-proposal.test.js",
|
|
45
|
+
"docs/reference/commands.md",
|
|
46
|
+
"specs/quiver-v43-cli-i18n-audit-release-readiness/command-language-mode-matrix.json",
|
|
47
|
+
"specs/quiver-v55-analyze-project-doc-apply-ux/**"
|
|
48
|
+
],
|
|
49
|
+
"depends_on": [],
|
|
50
|
+
"parallel_safe": "never",
|
|
51
|
+
"parallel_safe_reason": "This slice defines contracts required by every later slice.",
|
|
52
|
+
"must": [
|
|
53
|
+
"Define exact flag compatibility rules.",
|
|
54
|
+
"Define proposal and write manifest schemas.",
|
|
55
|
+
"Keep --review backward compatible.",
|
|
56
|
+
"Ensure apply --run does not require provider/model."
|
|
57
|
+
],
|
|
58
|
+
"not_included": [
|
|
59
|
+
"Saving proposal end-to-end.",
|
|
60
|
+
"Applying docs.",
|
|
61
|
+
"Interactive selector UX."
|
|
62
|
+
],
|
|
63
|
+
"acceptance": [
|
|
64
|
+
"Parser accepts approved flags and subaction.",
|
|
65
|
+
"Invalid combinations fail before provider execution.",
|
|
66
|
+
"Proposal manifest schema is testable.",
|
|
67
|
+
"Existing --review tests remain green."
|
|
68
|
+
],
|
|
69
|
+
"tests": [
|
|
70
|
+
"node --test tests/commands/ai-analyze-project.test.js",
|
|
71
|
+
"node --test tests/commands/ai-analyze-project-review.test.js",
|
|
72
|
+
"node --test tests/commands/i18n-audit-matrix.test.js",
|
|
73
|
+
"node bin/create-quiver.js spec validate specs/quiver-v55-analyze-project-doc-apply-ux --strict",
|
|
74
|
+
"git diff --check"
|
|
75
|
+
],
|
|
76
|
+
"estimated_hours": 4,
|
|
77
|
+
"actual_hours": 4,
|
|
78
|
+
"status": "completed",
|
|
79
|
+
"blocked_reason": null,
|
|
80
|
+
"started_at": "2026-06-12T00:00:00.000Z",
|
|
81
|
+
"completed_at": "2026-06-12T00:00:00.000Z"
|
|
82
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# CLOSURE_BRIEF - slice-02 save proposal flow
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Implemented `--save-proposal` for `ai analyze-project`.
|
|
6
|
+
|
|
7
|
+
The command now runs the existing provider analysis path, validates and repairs provider JSON through the current schema gates, builds a normalized documentation proposal, and persists proposal artifacts under `.quiver/runs/<run-id>/proposal/` without writing final docs or creating snapshots.
|
|
8
|
+
|
|
9
|
+
Saved artifacts include:
|
|
10
|
+
|
|
11
|
+
- `analyze-project-doc-proposal.json`
|
|
12
|
+
- `analyze-project-doc-proposal.md`
|
|
13
|
+
- `analyze-project-doc-proposal.diff`
|
|
14
|
+
- `manifest.json`
|
|
15
|
+
|
|
16
|
+
`--save-proposal --json` emits clean parseable JSON for automation.
|
|
17
|
+
|
|
18
|
+
## Required Evidence
|
|
19
|
+
|
|
20
|
+
- Save proposal command test passes.
|
|
21
|
+
- JSON output test passes.
|
|
22
|
+
- No-final-doc write test passes.
|
|
23
|
+
- Invalid provider JSON creates no usable proposal artifacts.
|
|
24
|
+
- Proposal Markdown summary stays compact and omits full doc contents.
|
|
25
|
+
|
|
26
|
+
## Validation
|
|
27
|
+
|
|
28
|
+
Executed:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
node --test tests/lib/ai-analyze-project-proposal.test.js
|
|
32
|
+
node --test tests/commands/ai-analyze-project-provider.test.js
|
|
33
|
+
node --test tests/commands/ai-analyze-project.test.js tests/commands/cli-contract.test.js tests/commands/ux-flags.test.js
|
|
34
|
+
node --test tests/commands/ai-analyze-project-review.test.js tests/lib/ai-analyze-project-validation.test.js tests/lib/ai-analyze-project-docs.test.js
|
|
35
|
+
node bin/create-quiver.js spec validate specs/quiver-v55-analyze-project-doc-apply-ux --strict
|
|
36
|
+
git diff --check
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Result: all passed.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# EXECUTION_BRIEF - slice-02 save proposal flow
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
Users need a way to keep the generated documentation proposal without applying final docs. This must work in automation and must not require an editor.
|
|
6
|
+
|
|
7
|
+
## Objective
|
|
8
|
+
|
|
9
|
+
Implement `--save-proposal` so Quiver persists a validated, normalized proposal and audit summary without writing final documentation.
|
|
10
|
+
|
|
11
|
+
## Scope
|
|
12
|
+
|
|
13
|
+
- Build proposal from `buildAnalyzeProjectDocProposal(parsed.analysis)`.
|
|
14
|
+
- Save:
|
|
15
|
+
- normalized proposal JSON;
|
|
16
|
+
- compact Markdown summary;
|
|
17
|
+
- full diff artifact;
|
|
18
|
+
- manifest with hashes and events.
|
|
19
|
+
- Support `--save-proposal --json`.
|
|
20
|
+
- Do not create snapshots or write final docs.
|
|
21
|
+
- Update run status with proposal artifact metadata.
|
|
22
|
+
|
|
23
|
+
## Acceptance Criteria
|
|
24
|
+
|
|
25
|
+
- `--save-proposal` runs provider, validates/repairs JSON, and saves proposal artifacts.
|
|
26
|
+
- Final docs are not modified.
|
|
27
|
+
- no-TTY mode works without prompting.
|
|
28
|
+
- `--json` emits clean machine-readable proposal result.
|
|
29
|
+
- Invalid final JSON does not create usable proposal artifacts.
|
|
30
|
+
- Proposal Markdown summary is compact and does not embed full doc contents by default.
|
|
31
|
+
|
|
32
|
+
## Expected Files To Modify
|
|
33
|
+
|
|
34
|
+
- `src/create-quiver/commands/ai.js`
|
|
35
|
+
- `src/create-quiver/lib/ai/analyze-project-proposal.js`
|
|
36
|
+
- `tests/commands/ai-analyze-project-provider.test.js`
|
|
37
|
+
- `tests/lib/ai-analyze-project-proposal.test.js`
|
|
38
|
+
- this slice closure/status/evidence files
|
|
39
|
+
|
|
40
|
+
## Validation Required
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
node --test tests/commands/ai-analyze-project-provider.test.js
|
|
44
|
+
node --test tests/lib/ai-analyze-project-proposal.test.js
|
|
45
|
+
node bin/create-quiver.js spec validate specs/quiver-v55-analyze-project-doc-apply-ux --strict
|
|
46
|
+
git diff --check
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Completion Checklist
|
|
50
|
+
|
|
51
|
+
- Save-only proposal flow implemented without final docs writes.
|
|
52
|
+
- Proposal JSON, Markdown, diff, and manifest artifacts covered by tests.
|
|
53
|
+
- `--json` output contract verified.
|
|
54
|
+
- Invalid JSON failure path verified.
|
|
55
|
+
- Slice closure brief updated with evidence.
|
|
56
|
+
|
|
57
|
+
## Constraints
|
|
58
|
+
|
|
59
|
+
- Do not write docs final.
|
|
60
|
+
- Do not create snapshots for save-only flows.
|
|
61
|
+
- Do not re-run provider when only formatting artifacts.
|
package/specs/quiver-v55-analyze-project-doc-apply-ux/slices/slice-02-save-proposal-flow/pr.md
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
## Title
|
|
2
|
+
|
|
3
|
+
QUIVER-55-02 - Save Analyze Project Proposal Artifacts
|
|
4
|
+
|
|
5
|
+
## Summary
|
|
6
|
+
|
|
7
|
+
Implements the second v55 slice for `ai analyze-project`: `--save-proposal` now persists a validated, normalized documentation proposal without writing final docs.
|
|
8
|
+
|
|
9
|
+
## PR Policy
|
|
10
|
+
|
|
11
|
+
- One slice: `slice-02-save-proposal-flow`.
|
|
12
|
+
- Runtime behavior change is limited to save-only proposal artifact persistence.
|
|
13
|
+
- This PR does not implement docs apply, interactive selector UX, or saved proposal apply.
|
|
14
|
+
|
|
15
|
+
## Scope
|
|
16
|
+
|
|
17
|
+
Included:
|
|
18
|
+
|
|
19
|
+
- Build a normalized doc proposal from validated provider analysis.
|
|
20
|
+
- Save proposal JSON, compact Markdown summary, full diff, and manifest under `.quiver/runs/<run-id>/proposal/`.
|
|
21
|
+
- Record proposal metadata in run status.
|
|
22
|
+
- Support `--save-proposal --json`.
|
|
23
|
+
- Keep final docs unchanged.
|
|
24
|
+
- Avoid snapshots in save-only mode.
|
|
25
|
+
- Add command and helper tests for success, JSON output, and invalid provider JSON.
|
|
26
|
+
|
|
27
|
+
Excluded:
|
|
28
|
+
|
|
29
|
+
- No `--apply-docs` implementation.
|
|
30
|
+
- No interactive selector.
|
|
31
|
+
- No `ai analyze-project apply --run` implementation.
|
|
32
|
+
- No live provider smoke in CI.
|
|
33
|
+
|
|
34
|
+
## Files
|
|
35
|
+
|
|
36
|
+
- `src/create-quiver/commands/ai.js`
|
|
37
|
+
- `src/create-quiver/lib/ai/analyze-project-proposal.js`
|
|
38
|
+
- `tests/commands/ai-analyze-project-provider.test.js`
|
|
39
|
+
- `tests/lib/ai-analyze-project-proposal.test.js`
|
|
40
|
+
- `specs/quiver-v55-analyze-project-doc-apply-ux/**`
|
|
41
|
+
|
|
42
|
+
## How to Test (DETAILED - REQUIRED)
|
|
43
|
+
|
|
44
|
+
### Required Environment
|
|
45
|
+
|
|
46
|
+
- Node.js supported by this repository.
|
|
47
|
+
- npm dependencies installed.
|
|
48
|
+
- No provider credentials are required for automated tests.
|
|
49
|
+
|
|
50
|
+
### Worktree Access
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
git checkout feature/QUIVER-55-02-v55-save-proposal-flow
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Run the Project
|
|
57
|
+
|
|
58
|
+
No dev server is required. This is a CLI save-artifact slice.
|
|
59
|
+
|
|
60
|
+
### Use Cases
|
|
61
|
+
|
|
62
|
+
#### Case 1: Save proposal artifacts
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
node --test tests/commands/ai-analyze-project-provider.test.js
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Expected: `--save-proposal` test writes proposal artifacts under `.quiver/runs/<run-id>/proposal/` and does not write `docs/CONTEXTO.md`.
|
|
69
|
+
|
|
70
|
+
#### Case 2: Save proposal JSON output
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
node --test tests/commands/ai-analyze-project-provider.test.js
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Expected: `--save-proposal --json` output parses as JSON and points to the saved proposal manifest.
|
|
77
|
+
|
|
78
|
+
#### Case 3: Invalid provider JSON remains safe
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
node --test tests/commands/ai-analyze-project-provider.test.js
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Expected: invalid final provider JSON rejects before proposal artifacts are created.
|
|
85
|
+
|
|
86
|
+
### Technical Verification
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
node --test tests/lib/ai-analyze-project-proposal.test.js
|
|
90
|
+
node --test tests/commands/ai-analyze-project-provider.test.js
|
|
91
|
+
node --test tests/commands/ai-analyze-project.test.js tests/commands/cli-contract.test.js tests/commands/ux-flags.test.js
|
|
92
|
+
node --test tests/commands/ai-analyze-project-review.test.js tests/lib/ai-analyze-project-validation.test.js tests/lib/ai-analyze-project-docs.test.js
|
|
93
|
+
node bin/create-quiver.js spec validate specs/quiver-v55-analyze-project-doc-apply-ux --strict
|
|
94
|
+
git diff --check
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Evidence
|
|
98
|
+
|
|
99
|
+
- All technical verification commands passed locally.
|
|
100
|
+
- `slice-02` closure brief records executed evidence.
|
|
101
|
+
- No live provider call was required.
|
|
102
|
+
|
|
103
|
+
## Rollback
|
|
104
|
+
|
|
105
|
+
Revert this PR:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
git revert <merge-commit-sha>
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
This restores `--save-proposal` to the previously recognized-but-unavailable contract while preserving the earlier slice-01 CLI contract.
|
|
112
|
+
|
|
113
|
+
## Risks / Notes
|
|
114
|
+
|
|
115
|
+
- Saved proposals are artifacts only; users still need a later slice to apply them with `apply --run`.
|
|
116
|
+
- The Markdown summary intentionally omits full proposed doc contents; the JSON and diff artifacts hold details.
|
package/specs/quiver-v55-analyze-project-doc-apply-ux/slices/slice-02-save-proposal-flow/slice.json
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slice_id": "slice-02-save-proposal-flow",
|
|
3
|
+
"ticket": "QUIVER-55-02",
|
|
4
|
+
"type": "feature",
|
|
5
|
+
"title": "Save Proposal Flow",
|
|
6
|
+
"objective": "Persist validated analyze-project doc proposals without writing final documentation.",
|
|
7
|
+
"description": "Implements --save-proposal with normalized JSON, compact Markdown summary, full diff artifact, manifest hashes, run-status metadata, and JSON automation output.",
|
|
8
|
+
"git": {
|
|
9
|
+
"branch_type": "feature",
|
|
10
|
+
"base_branch": "main",
|
|
11
|
+
"branch_slug": "v55-save-proposal-flow",
|
|
12
|
+
"branch_name": "feature/QUIVER-55-02-v55-save-proposal-flow"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"src/create-quiver/commands/ai.js",
|
|
16
|
+
"src/create-quiver/lib/ai/analyze-project-proposal.js",
|
|
17
|
+
"tests/commands/ai-analyze-project-provider.test.js",
|
|
18
|
+
"tests/lib/ai-analyze-project-proposal.test.js",
|
|
19
|
+
"specs/quiver-v55-analyze-project-doc-apply-ux/**"
|
|
20
|
+
],
|
|
21
|
+
"expected_read_paths": [
|
|
22
|
+
"src/create-quiver/lib/ai/analyze-project-docs.js",
|
|
23
|
+
"src/create-quiver/lib/ai/analyze-project-review.js",
|
|
24
|
+
"src/create-quiver/lib/ai/artifacts.js"
|
|
25
|
+
],
|
|
26
|
+
"allowed_write_paths": [
|
|
27
|
+
"src/create-quiver/commands/ai.js",
|
|
28
|
+
"src/create-quiver/lib/ai/analyze-project-proposal.js",
|
|
29
|
+
"tests/commands/ai-analyze-project-provider.test.js",
|
|
30
|
+
"tests/lib/ai-analyze-project-proposal.test.js",
|
|
31
|
+
"specs/quiver-v55-analyze-project-doc-apply-ux/**"
|
|
32
|
+
],
|
|
33
|
+
"depends_on": [
|
|
34
|
+
"slice-01-cli-proposal-contract"
|
|
35
|
+
],
|
|
36
|
+
"parallel_safe": "never",
|
|
37
|
+
"parallel_safe_reason": "This slice depends on the artifact contract and feeds the apply engine.",
|
|
38
|
+
"must": [
|
|
39
|
+
"Save normalized proposal JSON.",
|
|
40
|
+
"Save compact Markdown summary.",
|
|
41
|
+
"Save diff artifact.",
|
|
42
|
+
"Never write final docs."
|
|
43
|
+
],
|
|
44
|
+
"not_included": [
|
|
45
|
+
"Apply docs.",
|
|
46
|
+
"Interactive selector.",
|
|
47
|
+
"Apply saved run."
|
|
48
|
+
],
|
|
49
|
+
"acceptance": [
|
|
50
|
+
"--save-proposal writes proposal artifacts.",
|
|
51
|
+
"--save-proposal --json is parseable.",
|
|
52
|
+
"Final docs remain unchanged.",
|
|
53
|
+
"Invalid final JSON does not create usable proposal artifacts."
|
|
54
|
+
],
|
|
55
|
+
"tests": [
|
|
56
|
+
"node --test tests/commands/ai-analyze-project-provider.test.js",
|
|
57
|
+
"node --test tests/lib/ai-analyze-project-proposal.test.js",
|
|
58
|
+
"node --test tests/commands/ai-analyze-project.test.js tests/commands/cli-contract.test.js tests/commands/ux-flags.test.js",
|
|
59
|
+
"node --test tests/commands/ai-analyze-project-review.test.js tests/lib/ai-analyze-project-validation.test.js tests/lib/ai-analyze-project-docs.test.js",
|
|
60
|
+
"node bin/create-quiver.js spec validate specs/quiver-v55-analyze-project-doc-apply-ux --strict",
|
|
61
|
+
"git diff --check"
|
|
62
|
+
],
|
|
63
|
+
"estimated_hours": 5,
|
|
64
|
+
"actual_hours": 5,
|
|
65
|
+
"status": "completed",
|
|
66
|
+
"blocked_reason": null,
|
|
67
|
+
"started_at": "2026-06-12T00:00:00.000Z",
|
|
68
|
+
"completed_at": "2026-06-12T00:00:00.000Z"
|
|
69
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# CLOSURE_BRIEF - slice-03 non-interactive apply engine
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Implemented. `ai analyze-project --deep --apply-docs --yes` now runs the provider, builds a validated doc proposal, saves proposal artifacts, blocks unsafe dirty/stale writes, creates a snapshot, writes only approved docs, saves a separate write manifest, runs post-write validation, and supports parseable JSON output.
|
|
6
|
+
|
|
7
|
+
The interactive `--apply-docs` selector and `apply --run` remain out of scope for later slices.
|
|
8
|
+
|
|
9
|
+
## Evidence
|
|
10
|
+
|
|
11
|
+
- Apply success test passes with proposal artifacts, snapshot, write manifest, written docs, and post-write validation.
|
|
12
|
+
- Dirty target docs block `--yes` unless `--allow-dirty-docs` is provided.
|
|
13
|
+
- Stale target hash preflight is covered at the apply engine boundary.
|
|
14
|
+
- Invalid provider doc proposals write no final docs and create no proposal artifacts.
|
|
15
|
+
- `--apply-docs --yes --json` emits a parseable complete result.
|
|
16
|
+
- Existing `--review` tests still pass unchanged.
|
|
17
|
+
|
|
18
|
+
## Validation
|
|
19
|
+
|
|
20
|
+
Executed:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
node --test tests/lib/ai-analyze-project-apply.test.js
|
|
24
|
+
node --test tests/lib/ai-analyze-project-proposal.test.js
|
|
25
|
+
node --test tests/commands/ai-analyze-project-review.test.js
|
|
26
|
+
node --test tests/commands/ai-analyze-project.test.js tests/commands/cli-contract.test.js tests/commands/ux-flags.test.js
|
|
27
|
+
node --test tests/commands/ai-analyze-project-provider.test.js
|
|
28
|
+
node --test tests/lib/ai/analyze-project-repair.test.js
|
|
29
|
+
npm run docs:check
|
|
30
|
+
npm run schema:slice:check
|
|
31
|
+
node bin/create-quiver.js spec validate specs/quiver-v55-analyze-project-doc-apply-ux --strict
|
|
32
|
+
git diff --check
|
|
33
|
+
npm test
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Result: all passed. Full `npm test` passed with 730 tests.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# EXECUTION_BRIEF - slice-03 non-interactive apply engine
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
Automation needs a safe direct apply path. This must not depend on selector UI and must reuse existing write plan, snapshot, and post-write validation behavior.
|
|
6
|
+
|
|
7
|
+
## Objective
|
|
8
|
+
|
|
9
|
+
Implement the non-interactive apply engine for `--apply-docs --yes`.
|
|
10
|
+
|
|
11
|
+
## Scope
|
|
12
|
+
|
|
13
|
+
- Save proposal artifacts before applying.
|
|
14
|
+
- Build write plan from normalized proposal.
|
|
15
|
+
- Detect dirty/stale target docs.
|
|
16
|
+
- Block dirty docs in `--yes` unless `--allow-dirty-docs` is passed.
|
|
17
|
+
- Create snapshot before writes.
|
|
18
|
+
- Write docs through existing safe write path.
|
|
19
|
+
- Save write manifest.
|
|
20
|
+
- Run post-write validation.
|
|
21
|
+
- Support `--apply-docs --yes --json`.
|
|
22
|
+
|
|
23
|
+
## Acceptance Criteria
|
|
24
|
+
|
|
25
|
+
- `--apply-docs --yes` writes only allowed docs when proposal is valid.
|
|
26
|
+
- `--apply-docs --yes` blocks on invalid proposal.
|
|
27
|
+
- `--apply-docs --yes` blocks on dirty docs unless explicitly allowed.
|
|
28
|
+
- Snapshot and write manifest are created before/after writes as appropriate.
|
|
29
|
+
- JSON output includes run id, proposal artifacts, write plan, snapshot, written docs, validation, and artifacts.
|
|
30
|
+
- Existing `--review` behavior remains unchanged.
|
|
31
|
+
|
|
32
|
+
## Expected Files To Modify
|
|
33
|
+
|
|
34
|
+
- `src/create-quiver/commands/ai.js`
|
|
35
|
+
- `src/create-quiver/lib/ai/analyze-project-apply.js`
|
|
36
|
+
- `src/create-quiver/lib/ai/analyze-project-proposal.js`
|
|
37
|
+
- `tests/commands/ai-analyze-project-review.test.js`
|
|
38
|
+
- `tests/lib/ai-analyze-project-validation.test.js`
|
|
39
|
+
- this slice closure/status/evidence files
|
|
40
|
+
|
|
41
|
+
## Validation Required
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
node --test tests/commands/ai-analyze-project-review.test.js
|
|
45
|
+
node --test tests/lib/ai-analyze-project-validation.test.js
|
|
46
|
+
node bin/create-quiver.js spec validate specs/quiver-v55-analyze-project-doc-apply-ux --strict
|
|
47
|
+
git diff --check
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Completion Checklist
|
|
51
|
+
|
|
52
|
+
- Non-interactive apply engine uses validated proposals only.
|
|
53
|
+
- Dirty/stale docs guardrails covered by tests.
|
|
54
|
+
- Snapshot and write manifest behavior verified.
|
|
55
|
+
- JSON output includes apply artifacts and validation status.
|
|
56
|
+
- Slice closure brief updated with evidence.
|
|
57
|
+
|
|
58
|
+
## Constraints
|
|
59
|
+
|
|
60
|
+
- Do not implement selector UI in this slice.
|
|
61
|
+
- Do not allow product code writes.
|
|
62
|
+
- Do not let `--yes` approve anything beyond validated doc updates.
|