create-quiver 0.17.2 → 0.17.4
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/CHANGELOG.md +4 -0
- package/docs/CLI_UX_GUIDE.md +13 -3
- package/docs/TROUBLESHOOTING.md +42 -3
- package/docs/reference/commands.md +33 -12
- package/docs/workflows/existing-project.md +18 -3
- package/package.json +1 -1
- package/specs/quiver-v43-cli-i18n-audit-release-readiness/command-language-mode-matrix.json +4 -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 +648 -65
- package/src/create-quiver/index.js +80 -1
- package/src/create-quiver/lib/ai/analyze-project-apply.js +269 -0
- package/src/create-quiver/lib/ai/analyze-project-docs.js +16 -1
- package/src/create-quiver/lib/ai/analyze-project-interactive.js +241 -0
- package/src/create-quiver/lib/ai/analyze-project-proposal.js +582 -0
- package/src/create-quiver/lib/ai/analyze-project-validation.js +10 -8
- package/src/create-quiver/lib/cli/ux-flags.js +6 -0
- package/src/create-quiver/lib/i18n/messages/en.js +28 -0
- package/src/create-quiver/lib/i18n/messages/es.js +29 -0
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,8 @@ All notable changes to this project will be documented in this file.
|
|
|
6
6
|
|
|
7
7
|
### Added
|
|
8
8
|
|
|
9
|
+
- v55 analyze-project doc apply UX under `specs/quiver-v55-analyze-project-doc-apply-ux/`.
|
|
10
|
+
- `ai analyze-project --apply-docs`, `--save-proposal`, `--diff`, `--allow-dirty-docs`, and `ai analyze-project apply --run <run-id>` for a safer reviewed docs-apply workflow.
|
|
9
11
|
- v53 reliable deep project analysis and v54 deep analysis hardening specs under `specs/quiver-v53-reliable-deep-project-analysis/` and `specs/quiver-v54-deep-project-analysis-hardening/`.
|
|
10
12
|
- v46 deep project analysis under `specs/quiver-v46-deep-project-analysis/`.
|
|
11
13
|
- `ai analyze-project` for bounded, evidence-backed repository analysis with read-only `--dry-run`, JSON automation output, provider-backed `--review`, safe doc writes, snapshots, and post-write validation.
|
|
@@ -26,6 +28,8 @@ All notable changes to this project will be documented in this file.
|
|
|
26
28
|
|
|
27
29
|
### Changed
|
|
28
30
|
|
|
31
|
+
- Existing-project docs now recommend the simple `--apply-docs` flow instead of forcing users into the advanced `--review` editor path.
|
|
32
|
+
- English and Spanish CLI help now explain analyze-project docs apply options while preserving commands, flags, paths, providers, and model ids exactly.
|
|
29
33
|
- `ai analyze-project --deep` now builds safer provider context by summarizing lockfiles as metadata, excluding generated/runtime directories, and prioritizing product source over Quiver-generated docs.
|
|
30
34
|
- Existing-project AI onboarding now recommends `ai analyze-project --deep --dry-run` before context preparation so agents can see the intended read set, omissions, budgets, and privacy exclusions before any provider-backed docs update.
|
|
31
35
|
- npm package hygiene now excludes local `.quiver/` run state from published tarballs.
|
package/docs/CLI_UX_GUIDE.md
CHANGED
|
@@ -94,7 +94,7 @@ Reglas:
|
|
|
94
94
|
|---|---:|---:|---:|---|
|
|
95
95
|
| `init` | no | si | no | Interactive guia modo de proyecto, metodologia `wdd-sdd`, perfil inicial y proximo paso de perfiles de agentes. |
|
|
96
96
|
| `migrate` | no | no | no | En TTY confirma antes de escribir; en CI/no-TTY requiere `--yes`. `--dry-run` no pide confirmacion ni escribe. |
|
|
97
|
-
| `ai analyze-project` | no | no | si | `--dry-run` es read-only y no ejecuta proveedor;
|
|
97
|
+
| `ai analyze-project` | no | no | si | `--dry-run` es read-only y no ejecuta proveedor; el comando normal con provider aplica docs validados; `--review` queda como modo avanzado de edicion JSON. |
|
|
98
98
|
| `ai prepare-context` | si | si | si | Modo deterministico por defecto; planner opcional con contrato docs-only. |
|
|
99
99
|
| `ai plan` | si | si | si | El planner ya es implicito; `--with-planner` se acepta por consistencia. |
|
|
100
100
|
| `spec create` | si | si | si | Consume un plan tecnico aprobado del planner; no vuelve a ejecutar proveedor. Review previsualiza el paquete antes de escribir. |
|
|
@@ -124,10 +124,20 @@ Analisis profundo de un proyecto existente:
|
|
|
124
124
|
```bash
|
|
125
125
|
npx create-quiver ai analyze-project --deep --dry-run
|
|
126
126
|
npx create-quiver ai analyze-project --deep --dry-run --json
|
|
127
|
-
npx create-quiver ai analyze-project --deep --
|
|
127
|
+
npx create-quiver ai analyze-project --deep --provider codex --model gpt-5.5
|
|
128
|
+
npx create-quiver ai analyze-project --deep --save-proposal --provider codex --model gpt-5.5
|
|
129
|
+
npx create-quiver ai analyze-project apply --run <run-id>
|
|
128
130
|
```
|
|
129
131
|
|
|
130
|
-
`ai analyze-project` debe mantener estas garantias: en `--dry-run` no escribe ni ejecuta proveedor; con proveedor no lee `.env`, dependencias, caches, binarios ni outputs generados; toda conclusion importante cita evidencia o queda como `unknown`; las escrituras se limitan a docs aprobados, usan bloques gestionados por Quiver
|
|
132
|
+
`ai analyze-project` debe mantener estas garantias: en `--dry-run` no escribe ni ejecuta proveedor; el modo provider normal genera auditoria, propuesta, snapshot y aplica docs finales validados; con proveedor no lee `.env`, dependencias, caches, binarios ni outputs generados; toda conclusion importante cita evidencia o queda como `unknown`; las escrituras se limitan a docs aprobados, usan bloques gestionados por Quiver y crean snapshot previo.
|
|
133
|
+
|
|
134
|
+
Opciones de aplicacion:
|
|
135
|
+
|
|
136
|
+
- `--apply-docs` en TTY muestra opciones explicadas: aplicar, ver diff, guardar propuesta, editar propuesta o cancelar.
|
|
137
|
+
- `--apply-docs --yes` aplica en automatizacion despues de validar propuesta, hashes, snapshot y post-write.
|
|
138
|
+
- `--save-proposal` guarda `.quiver/runs/<run-id>/proposal/*` sin escribir docs finales.
|
|
139
|
+
- `ai analyze-project apply --run <run-id>` aplica una propuesta guardada sin ejecutar proveedor ni requerir `--provider` o `--model`.
|
|
140
|
+
- `--review` se mantiene como modo avanzado: abre la propuesta JSON en editor y revalida el JSON editado antes de escribir.
|
|
131
141
|
|
|
132
142
|
Modo deterministico:
|
|
133
143
|
|
package/docs/TROUBLESHOOTING.md
CHANGED
|
@@ -114,10 +114,49 @@ npx --yes create-quiver@latest ai analyze-project --deep --max-files 40 --max-by
|
|
|
114
114
|
|
|
115
115
|
Si `package-lock.json` aparece como problema, no deberías incluirlo completo. En versiones actuales debe aparecer resumido en `detected.lockfiles` y omitido como `sampling:lockfile-metadata`.
|
|
116
116
|
|
|
117
|
-
Cuando el análisis sea válido
|
|
117
|
+
Cuando el análisis sea válido, el comando normal ya escribe documentación final validada:
|
|
118
118
|
|
|
119
119
|
```bash
|
|
120
|
-
npx --yes create-quiver@latest ai analyze-project --deep --
|
|
120
|
+
npx --yes create-quiver@latest ai analyze-project --deep --provider codex --model gpt-5.5
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Quiver revalida la propuesta, crea artifacts auditados, snapshot, write manifest y escribe solo docs permitidos. `--apply-docs` queda disponible para scripts o flujos interactivos que necesiten el selector anterior.
|
|
124
|
+
|
|
125
|
+
Para guardar primero y aplicar después sin volver a ejecutar el proveedor:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
npx --yes create-quiver@latest ai analyze-project --deep --save-proposal --provider codex --model gpt-5.5
|
|
129
|
+
npx --yes create-quiver@latest ai analyze-project apply --run <run-id>
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
`--review` sigue disponible como modo avanzado si querés editar la propuesta JSON manualmente antes de escribir.
|
|
133
|
+
|
|
134
|
+
## `ai analyze-project` no completa `docs/CONTEXTO.md` ni crea `docs/ARCHITECTURE.md`
|
|
135
|
+
|
|
136
|
+
### Síntoma
|
|
137
|
+
|
|
138
|
+
Después de ejecutar:
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
npx --yes create-quiver@latest ai analyze-project --deep --provider codex --model gpt-5.5
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
los docs finales siguen con placeholders o falta `docs/ARCHITECTURE.md`.
|
|
145
|
+
|
|
146
|
+
### Explicación
|
|
147
|
+
|
|
148
|
+
En versiones actuales, ese comando debe escribir documentación final validada. Si los docs siguen con placeholders, el flujo se bloqueó antes de escribir o la propuesta IA no incluyó contenido útil para esos paths.
|
|
149
|
+
|
|
150
|
+
### Qué hacer
|
|
151
|
+
|
|
152
|
+
Revisá el error mostrado y los artifacts del run. Los caminos seguros son:
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
npx --yes create-quiver@latest ai analyze-project --deep --provider codex --model gpt-5.5
|
|
156
|
+
npx --yes create-quiver@latest ai analyze-project --deep --save-proposal --provider codex --model gpt-5.5
|
|
157
|
+
npx --yes create-quiver@latest ai analyze-project apply --run <run-id>
|
|
121
158
|
```
|
|
122
159
|
|
|
123
|
-
|
|
160
|
+
- el comando normal aplica docs después de validar JSON, proposal, snapshot y post-write;
|
|
161
|
+
- `--save-proposal` guarda `.quiver/runs/<run-id>/proposal/*` sin tocar docs finales.
|
|
162
|
+
- `apply --run <run-id>` aplica una propuesta guardada sin ejecutar proveedor ni pedir `--provider` o `--model`.
|
|
@@ -49,7 +49,7 @@ El contenido curado fuera de los marcadores se mantiene manual y no debe ser ree
|
|
|
49
49
|
| AI lifecycle | `ai active-slice status\|reconcile` | Inspect or dry-run reconcile local active-slice state from every supported source. |
|
|
50
50
|
| AI lifecycle | `ai status` | Show current AI lifecycle phase, approved versions, blockers, and next command. |
|
|
51
51
|
| AI lifecycle | `ai resume` | Resume guidance from the last valid lifecycle phase without chat memory. |
|
|
52
|
-
| AI lifecycle | `ai analyze-project` |
|
|
52
|
+
| AI lifecycle | `ai analyze-project` | Analyze a bounded project sample and apply validated documentation updates. |
|
|
53
53
|
| AI lifecycle | `ai onboard` | Run or print the planner onboarding prompt with a token-aware context pack. |
|
|
54
54
|
| AI lifecycle | `ai prepare-context` | Preview or write docs-only AI context updates with assumptions and risks. |
|
|
55
55
|
| AI lifecycle | `ai agent set\|list\|show\|doctor\|repair` | Manage, diagnose, and dry-run repair planner, executor, reviewer, and doctor provider profiles without secrets. |
|
|
@@ -199,11 +199,12 @@ En `--dry-run`, Quiver no escribe archivos, no ejecuta proveedor y muestra qué
|
|
|
199
199
|
Para generar docs desde IA:
|
|
200
200
|
|
|
201
201
|
```bash
|
|
202
|
-
npx --yes create-quiver@latest ai analyze-project --deep --
|
|
203
|
-
npx --yes create-quiver@latest ai analyze-project --deep --
|
|
202
|
+
npx --yes create-quiver@latest ai analyze-project --deep --provider codex --model gpt-5.5
|
|
203
|
+
npx --yes create-quiver@latest ai analyze-project --deep --save-proposal --provider codex --model gpt-5.5
|
|
204
|
+
npx --yes create-quiver@latest ai analyze-project apply --run <run-id>
|
|
204
205
|
```
|
|
205
206
|
|
|
206
|
-
El modo con proveedor exige JSON validado por schema, evidencia por conclusión, niveles `confirmed`, `inferred`, `unknown` o `conflict`,
|
|
207
|
+
El modo con proveedor exige JSON validado por schema, evidencia por conclusión, niveles `confirmed`, `inferred`, `unknown` o `conflict`, artifacts auditados en `.quiver/runs`, diff, snapshot previo cuando se escribe y validación post-write. `--strict` convierte conflictos importantes de docs en error. El resultado puede quedar como `unknown` o `needs_confirmation` cuando el código no prueba una conclusión.
|
|
207
208
|
|
|
208
209
|
Garantías del flujo con proveedor:
|
|
209
210
|
|
|
@@ -215,7 +216,12 @@ Garantías del flujo con proveedor:
|
|
|
215
216
|
- Si el proveedor devuelve JSON con drift seguro como `notes`, `claim` usado como `name` faltante, o `confidence` en paths no permitidos, Quiver lo repara, registra el repair y revalida.
|
|
216
217
|
- Si el JSON sigue inválido pero el error es retryable, Quiver hace 1 retry por defecto, con cap duro de 2 retries.
|
|
217
218
|
- Si el JSON final es inválido, Quiver falla sin escribir docs finales y deja manifests de validación/retry/repair en `.quiver/runs`.
|
|
218
|
-
-
|
|
219
|
+
- El modo provider normal aplica docs finales por defecto después de validar la propuesta, crear proposal artifacts, snapshot, write manifest y validación post-write.
|
|
220
|
+
- `--apply-docs` en TTY muestra opciones explicadas para aplicar, ver diff, guardar propuesta, editar propuesta o cancelar.
|
|
221
|
+
- `--apply-docs --yes` aplica en automatización después de validar propuesta, paths permitidos, hashes, snapshot y post-write.
|
|
222
|
+
- `--save-proposal` guarda `.quiver/runs/<run-id>/proposal/*` sin escribir docs finales.
|
|
223
|
+
- `ai analyze-project apply --run <run-id>` aplica una propuesta guardada sin ejecutar proveedor ni requerir `--provider` o `--model`.
|
|
224
|
+
- `--review` queda como modo avanzado para editar manualmente una propuesta JSON antes de escribir.
|
|
219
225
|
- Las escrituras aprobadas crean snapshot con hashes y se escriben con rename atómico.
|
|
220
226
|
|
|
221
227
|
Benchmark recomendado:
|
|
@@ -226,23 +232,30 @@ Benchmark recomendado:
|
|
|
226
232
|
Smoke de release recomendado:
|
|
227
233
|
|
|
228
234
|
```bash
|
|
229
|
-
|
|
235
|
+
mkdir -p /tmp/quiver-smoke
|
|
236
|
+
rsync -a --delete --exclude .git --exclude node_modules --exclude .next --exclude .quiver "/Users/fabrijk/Documents/Work/Proyectos Personales/nika/nika-erp/nika-erp/" /tmp/quiver-smoke/nika-erp/
|
|
237
|
+
cd /tmp/quiver-smoke/nika-erp
|
|
230
238
|
npx --yes create-quiver@latest ai analyze-project --deep --dry-run --json
|
|
231
239
|
npx --yes create-quiver@latest ai analyze-project --deep --provider codex --model gpt-5.5
|
|
232
|
-
npx --yes create-quiver@latest ai analyze-project --deep --
|
|
240
|
+
npx --yes create-quiver@latest ai analyze-project --deep --save-proposal --provider codex --model gpt-5.5
|
|
241
|
+
npx --yes create-quiver@latest ai analyze-project apply --run <run-id>
|
|
233
242
|
```
|
|
234
243
|
|
|
244
|
+
También podés usar una rama descartable en el repo real. No ejecutes el smoke de aplicación sobre el checkout principal de `nika-erp`.
|
|
245
|
+
|
|
235
246
|
Evidencia esperada:
|
|
236
247
|
|
|
237
248
|
- `--dry-run --json` parsea como JSON, `provider_execution` queda `skipped`, `writes` queda vacío y no crea docs finales.
|
|
238
249
|
- `package-lock.json` aparece en `detected.lockfiles` y en omitidos con `sampling:lockfile-metadata`, no en contenido enviado al provider.
|
|
239
|
-
- El modo provider escribe artifacts auditados en `.quiver/runs`, redactados y con tamaño controlado,
|
|
250
|
+
- El modo provider escribe artifacts auditados en `.quiver/runs`, redactados y con tamaño controlado, y aplica docs finales validados por defecto.
|
|
240
251
|
- Si el provider devuelve drift no reparable, el comando falla con path/tipo/causa probable y próximo comando seguro, sin escribir docs finales.
|
|
241
|
-
- `--
|
|
252
|
+
- `--save-proposal` debe crear `.quiver/runs/<run-id>/proposal/*` sin modificar docs finales.
|
|
253
|
+
- `--apply-docs` debe mostrar selector explicado en TTY o requerir `--yes` en automatización.
|
|
254
|
+
- `apply --run <run-id>` debe aplicar la propuesta guardada sin volver a ejecutar proveedor.
|
|
242
255
|
|
|
243
256
|
Rollback de release:
|
|
244
257
|
|
|
245
|
-
- Si el smoke live escribe docs
|
|
258
|
+
- Si el smoke live no escribe docs validados en el comando normal, filtra secretos, omite artifacts críticos o falla con ruido masivo de schema, no publiques `latest`.
|
|
246
259
|
- Publicá una corrección como canary o revertí la versión npm afectada según el proceso de release vigente.
|
|
247
260
|
- Para usuarios impactados, indicar `npx create-quiver ai analyze-project --deep --dry-run --json` como siguiente comando seguro y pedir `.quiver/runs/run-.../validation/analyze-project-validation.json` redactado como evidencia.
|
|
248
261
|
|
|
@@ -250,8 +263,12 @@ Rollback de release:
|
|
|
250
263
|
|---|---|
|
|
251
264
|
| `npx --yes create-quiver@latest ai analyze-project --deep --dry-run` | Previsualiza descubrimiento y muestreo del repo sin escribir ni ejecutar proveedor. |
|
|
252
265
|
| `npx --yes create-quiver@latest ai analyze-project --deep --dry-run --json` | Emite el plan de análisis como JSON parseable para automatización. |
|
|
253
|
-
| `npx --yes create-quiver@latest ai analyze-project --deep --review` |
|
|
254
|
-
| `npx --yes create-quiver@latest ai analyze-project --deep --provider codex --model gpt-5.5` | Ejecuta proveedor y
|
|
266
|
+
| `npx --yes create-quiver@latest ai analyze-project --deep --review` | Modo avanzado: ejecuta proveedor, valida análisis JSON con evidencia y abre edición manual antes de escribir docs permitidos. |
|
|
267
|
+
| `npx --yes create-quiver@latest ai analyze-project --deep --provider codex --model gpt-5.5` | Ejecuta proveedor, valida JSON y aplica docs finales con proposal artifacts, snapshot, write manifest y validación post-write. |
|
|
268
|
+
| `npx --yes create-quiver@latest ai analyze-project --deep --save-proposal --provider codex --model gpt-5.5` | Guarda una propuesta validada en `.quiver/runs/<run-id>/proposal` sin escribir docs finales. |
|
|
269
|
+
| `npx --yes create-quiver@latest ai analyze-project --deep --apply-docs --provider codex --model gpt-5.5` | En TTY debe mostrar opciones explicadas para aplicar, ver diff, guardar, editar o cancelar. |
|
|
270
|
+
| `npx --yes create-quiver@latest ai analyze-project --deep --apply-docs --yes --provider codex --model gpt-5.5` | Aplica docs validados en modo automatizado, con snapshots y validación post-write. |
|
|
271
|
+
| `npx --yes create-quiver@latest ai analyze-project apply --run <run-id>` | Aplica una propuesta guardada sin ejecutar proveedor ni requerir `--provider` o `--model`. |
|
|
255
272
|
| `npx --yes create-quiver@latest ai analyze-project --scope apps/web --max-files 80 --max-bytes 300000 --include-tests --dry-run` | Acota el análisis por workspace/ruta y presupuesto de muestra. |
|
|
256
273
|
| `npx --yes create-quiver@latest ai prepare-context --dry-run` | Previsualiza actualizaciones documentales de contexto para IA. |
|
|
257
274
|
| `npx --yes create-quiver@latest ai prepare-context` | Escribe actualizaciones documentales de contexto para IA. |
|
|
@@ -331,6 +348,10 @@ Base branch policy: `--base <branch>` always wins. Without `--base`, slice readi
|
|
|
331
348
|
| `--include-source` | En `ai analyze-project`, incluye código fuente sin requerir `--deep`. |
|
|
332
349
|
| `--include-tests` | En `ai analyze-project`, incluye tests en la muestra. |
|
|
333
350
|
| `--include-db` | En `ai analyze-project`, incluye schemas, migraciones y archivos DB. |
|
|
351
|
+
| `--apply-docs` | En `ai analyze-project`, habilita el flujo seguro para aplicar propuestas documentales validadas. |
|
|
352
|
+
| `--save-proposal` | En `ai analyze-project`, guarda la propuesta validada como artifacts sin escribir docs finales. |
|
|
353
|
+
| `--diff` | En `ai analyze-project`, muestra o guarda el diff documental propuesto cuando el flujo lo soporta. |
|
|
354
|
+
| `--allow-dirty-docs` | En `ai analyze-project`, permite continuar con docs destino modificados solo donde el flujo seguro lo soporte. |
|
|
334
355
|
| `--scope <path\|name>` | En `ai analyze-project`, restringe el análisis a una ruta o workspace. |
|
|
335
356
|
| `--strict` | En validaciones soportadas, convierte conflictos importantes en errores. |
|
|
336
357
|
| `--with-planner` | Activa comportamiento asistido por planner solo en comandos que lo soportan. |
|
|
@@ -86,19 +86,34 @@ Si querés que Quiver infiera producto, arquitectura, funcionalidades y riesgos
|
|
|
86
86
|
```bash
|
|
87
87
|
npx --yes create-quiver@latest ai analyze-project --deep --dry-run
|
|
88
88
|
npx --yes create-quiver@latest ai analyze-project --deep --provider codex --model gpt-5.5
|
|
89
|
-
npx --yes create-quiver@latest ai analyze-project --deep --review --provider codex --model gpt-5.5
|
|
90
89
|
```
|
|
91
90
|
|
|
92
91
|
Qué hace:
|
|
93
92
|
|
|
94
93
|
- `--dry-run` muestra qué leería y qué excluiría, sin proveedor ni escrituras;
|
|
95
|
-
- el modo con proveedor guarda auditoría en `.quiver/runs
|
|
94
|
+
- el modo con proveedor guarda auditoría en `.quiver/runs`, valida JSON con evidencia y aplica docs finales validados por defecto;
|
|
95
|
+
- antes de escribir crea propuesta, snapshot, write manifest y validación post-write;
|
|
96
96
|
- resume lockfiles como metadata para no consumir el presupuesto principal con `package-lock.json`, `pnpm-lock.yaml` o equivalentes;
|
|
97
97
|
- prioriza entrypoints, componentes, contexts/state, lib/data layer, auth, DB/integraciones y documentación humana del producto por encima de docs generados por Quiver;
|
|
98
98
|
- muestra loader en TTY y progreso lineal en no-TTY;
|
|
99
99
|
- si hay drift seguro de schema, como `notes` extra, `claim` usado como `name` faltante o `confidence` donde no está permitido, lo repara de forma auditada;
|
|
100
100
|
- si el error es retryable, hace un retry acotado con feedback compacto;
|
|
101
|
-
-
|
|
101
|
+
- si la propuesta final no es válida, falla sin escribir docs finales.
|
|
102
|
+
|
|
103
|
+
Si preferís separar generación y aplicación:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
npx --yes create-quiver@latest ai analyze-project --deep --save-proposal --provider codex --model gpt-5.5
|
|
107
|
+
npx --yes create-quiver@latest ai analyze-project apply --run <run-id>
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Si necesitás conservar compatibilidad con scripts que ya usaban el flujo explícito:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
npx --yes create-quiver@latest ai analyze-project --deep --apply-docs --yes --provider codex --model gpt-5.5
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
`--review` sigue disponible como modo avanzado: abre la propuesta JSON en editor y revalida el JSON editado antes de escribir docs permitidos.
|
|
102
117
|
|
|
103
118
|
No envía `.env`, `.git`, `.quiver`, dependencias, caches, binarios ni outputs generados. Si no puede probar una conclusión, debe quedar como `unknown` o `needs_confirmation`.
|
|
104
119
|
|
package/package.json
CHANGED
|
@@ -609,6 +609,10 @@
|
|
|
609
609
|
{ "command": "ai analyze-project --deep --dry-run --json", "profile": "ai-analyze-project", "critical": "pass" },
|
|
610
610
|
{ "command": "ai analyze-project --deep --review", "profile": "ai-analyze-project", "critical": "pass" },
|
|
611
611
|
{ "command": "ai analyze-project --deep --provider codex --model gpt-5.5", "profile": "ai-analyze-project", "critical": "pass" },
|
|
612
|
+
{ "command": "ai analyze-project --deep --save-proposal --provider codex --model gpt-5.5", "profile": "ai-analyze-project", "critical": "pass" },
|
|
613
|
+
{ "command": "ai analyze-project --deep --apply-docs --provider codex --model gpt-5.5", "profile": "ai-analyze-project", "critical": "pass" },
|
|
614
|
+
{ "command": "ai analyze-project --deep --apply-docs --yes --provider codex --model gpt-5.5", "profile": "ai-analyze-project", "critical": "pass" },
|
|
615
|
+
{ "command": "ai analyze-project apply --run <run-id>", "profile": "ai-analyze-project", "critical": "pass" },
|
|
612
616
|
{ "command": "ai analyze-project --scope apps/web --max-files 80 --max-bytes 300000 --include-tests --dry-run", "profile": "ai-analyze-project", "critical": "pass" },
|
|
613
617
|
{ "command": "ai prepare-context --dry-run", "profile": "ai-prepare-context", "critical": "pass" },
|
|
614
618
|
{ "command": "ai prepare-context", "profile": "ai-prepare-context", "critical": "pass" },
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
# Evidence Report - Quiver v55 Analyze Project Doc Apply UX
|
|
2
|
+
|
|
3
|
+
**Status:** In progress
|
|
4
|
+
**Last updated:** 2026-06-12
|
|
5
|
+
|
|
6
|
+
## Evidence Behind The Requirement
|
|
7
|
+
|
|
8
|
+
- Live `nika-erp` run with `create-quiver@0.17.2` completed successfully and generated valid doc update proposals.
|
|
9
|
+
- The normal provider command did not write final docs, by design.
|
|
10
|
+
- Existing `docs/CONTEXTO.md` in `nika-erp` still contained placeholders because no apply/review flow was completed.
|
|
11
|
+
- `--review` is safe but confusing because it opens a large JSON proposal in an editor.
|
|
12
|
+
- Users need a simpler flow: summary, explained options, optional diff, save, apply, edit, or cancel.
|
|
13
|
+
|
|
14
|
+
## Evidence To Capture During Implementation
|
|
15
|
+
|
|
16
|
+
- Parser/flag tests for `--apply-docs`, `--save-proposal`, `--diff`, `--yes`, `--allow-dirty-docs`, and `ai analyze-project apply --run`. Captured in `slice-01`.
|
|
17
|
+
- Proposal artifact schema tests. Captured in `slice-01`.
|
|
18
|
+
- Save proposal command tests in TTY/no-TTY and JSON modes.
|
|
19
|
+
- Non-interactive apply tests with snapshots, write manifests, and post-write validation.
|
|
20
|
+
- Dirty/stale doc preflight tests.
|
|
21
|
+
- Interactive selector tests for apply, diff, save, edit, and cancel.
|
|
22
|
+
- Saved proposal apply tests without provider execution.
|
|
23
|
+
- EN/ES i18n tests.
|
|
24
|
+
- Docs/checks and package smoke before release.
|
|
25
|
+
|
|
26
|
+
## Required Validation Before Closing Spec
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
node --test tests/commands/ai-analyze-project-review.test.js
|
|
30
|
+
node --test tests/commands/ai-analyze-project-provider.test.js
|
|
31
|
+
node --test tests/commands/ai-analyze-project.test.js
|
|
32
|
+
node --test tests/lib/ai-analyze-project-validation.test.js
|
|
33
|
+
node --test tests/lib/ai/analyze-project-repair.test.js
|
|
34
|
+
npm run docs:check
|
|
35
|
+
npm run schema:slice:check
|
|
36
|
+
node bin/create-quiver.js spec validate specs/quiver-v55-analyze-project-doc-apply-ux --strict
|
|
37
|
+
git diff --check
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Release Smoke Evidence
|
|
41
|
+
|
|
42
|
+
Use a temporary copy or disposable branch of `nika-erp`:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
npx --yes create-quiver@latest ai analyze-project --deep --provider codex --model gpt-5.5
|
|
46
|
+
npx --yes create-quiver@latest ai analyze-project --deep --save-proposal --provider codex --model gpt-5.5
|
|
47
|
+
npx --yes create-quiver@latest ai analyze-project --deep --apply-docs --provider codex --model gpt-5.5
|
|
48
|
+
npx --yes create-quiver@latest ai analyze-project --deep --apply-docs --yes --provider codex --model gpt-5.5
|
|
49
|
+
npx --yes create-quiver@latest ai analyze-project apply --run <run-id>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Live provider smoke is release evidence only and must not become a CI gate.
|
|
53
|
+
|
|
54
|
+
## Slice-01 Evidence
|
|
55
|
+
|
|
56
|
+
Executed:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
node --test tests/lib/ai-analyze-project-proposal.test.js
|
|
60
|
+
node --test tests/commands/ai-analyze-project.test.js
|
|
61
|
+
node --test tests/commands/cli-contract.test.js
|
|
62
|
+
node --test tests/commands/parser-contract.test.js
|
|
63
|
+
node --test tests/commands/ux-flags.test.js
|
|
64
|
+
node --test tests/commands/ai-analyze-project-review.test.js
|
|
65
|
+
node --test tests/commands/ai-analyze-project-provider.test.js
|
|
66
|
+
node --test tests/lib/ai-analyze-project-docs.test.js tests/lib/ai-analyze-project-validation.test.js
|
|
67
|
+
npm run docs:check
|
|
68
|
+
npm run schema:slice:check
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Result: all passed.
|
|
72
|
+
|
|
73
|
+
## Slice-02 Evidence - slice-02-save-proposal-flow
|
|
74
|
+
|
|
75
|
+
Executed:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
node --test tests/lib/ai-analyze-project-proposal.test.js
|
|
79
|
+
node --test tests/commands/ai-analyze-project-provider.test.js
|
|
80
|
+
node --test tests/commands/ai-analyze-project.test.js tests/commands/cli-contract.test.js tests/commands/ux-flags.test.js
|
|
81
|
+
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
|
|
82
|
+
node bin/create-quiver.js spec validate specs/quiver-v55-analyze-project-doc-apply-ux --strict
|
|
83
|
+
git diff --check
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Result: all passed.
|
|
87
|
+
|
|
88
|
+
Covered behavior:
|
|
89
|
+
|
|
90
|
+
- `--save-proposal` persists proposal JSON, compact Markdown summary, full diff, and manifest.
|
|
91
|
+
- `--save-proposal --json` emits clean parseable JSON.
|
|
92
|
+
- Final docs remain unchanged.
|
|
93
|
+
- Save-only flows do not create snapshots.
|
|
94
|
+
- Invalid final provider JSON does not create usable proposal artifacts.
|
|
95
|
+
|
|
96
|
+
## Slice-03 Evidence - slice-03-noninteractive-apply-engine
|
|
97
|
+
|
|
98
|
+
Executed:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
node --test tests/lib/ai-analyze-project-apply.test.js
|
|
102
|
+
node --test tests/lib/ai-analyze-project-proposal.test.js
|
|
103
|
+
node --test tests/commands/ai-analyze-project-review.test.js
|
|
104
|
+
node --test tests/commands/ai-analyze-project.test.js tests/commands/cli-contract.test.js tests/commands/ux-flags.test.js
|
|
105
|
+
node --test tests/commands/ai-analyze-project-provider.test.js
|
|
106
|
+
node --test tests/lib/ai/analyze-project-repair.test.js
|
|
107
|
+
npm run docs:check
|
|
108
|
+
npm run schema:slice:check
|
|
109
|
+
node bin/create-quiver.js spec validate specs/quiver-v55-analyze-project-doc-apply-ux --strict
|
|
110
|
+
git diff --check
|
|
111
|
+
npm test
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Result: all passed. Full `npm test` passed with 730 tests.
|
|
115
|
+
|
|
116
|
+
Covered behavior:
|
|
117
|
+
|
|
118
|
+
- `--apply-docs --yes` applies validated allowed docs.
|
|
119
|
+
- `--apply-docs --yes --json` returns run id, proposal artifacts, write plan, snapshot, written docs, post-write validation, and write manifest.
|
|
120
|
+
- Dirty target docs block `--yes` unless `--allow-dirty-docs` is provided.
|
|
121
|
+
- Stale target docs are blocked at the apply engine boundary.
|
|
122
|
+
- Invalid provider doc proposals do not write final docs.
|
|
123
|
+
- Existing `--review` behavior remains covered.
|
|
124
|
+
|
|
125
|
+
## Slice-04 Evidence - slice-04-interactive-apply-ux
|
|
126
|
+
|
|
127
|
+
Executed:
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
node --test tests/commands/ai-analyze-project-review.test.js
|
|
131
|
+
node --test tests/lib/cli-ux.test.js
|
|
132
|
+
node --test tests/commands/ai-analyze-project.test.js
|
|
133
|
+
node --test tests/commands/cli-contract.test.js
|
|
134
|
+
node --test tests/lib/i18n-catalog.test.js
|
|
135
|
+
node --test tests/commands/ux-flags.test.js
|
|
136
|
+
node --test tests/commands/ai-analyze-project-provider.test.js
|
|
137
|
+
node --test tests/lib/ai-analyze-project-validation.test.js tests/lib/ai/analyze-project-repair.test.js
|
|
138
|
+
npm run docs:check
|
|
139
|
+
npm run schema:slice:check
|
|
140
|
+
node bin/create-quiver.js spec validate specs/quiver-v55-analyze-project-doc-apply-ux --strict
|
|
141
|
+
git diff --check
|
|
142
|
+
npm test
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Result: all passed. Full `npm test` passed with 741 tests.
|
|
146
|
+
|
|
147
|
+
Covered behavior:
|
|
148
|
+
|
|
149
|
+
- TTY `--apply-docs` shows an explained selector after provider validation.
|
|
150
|
+
- Clean creates recommend `apply`; dirty/update targets recommend `view-diff`.
|
|
151
|
+
- no-TTY `--apply-docs` without `--yes` fails before provider execution.
|
|
152
|
+
- Cancel writes no final docs and records `apply-canceled`.
|
|
153
|
+
- Save proposal writes proposal artifacts only.
|
|
154
|
+
- View diff saves the full diff artifact, prints a bounded preview, and requires a second decision.
|
|
155
|
+
- Edit proposal reuses the existing review/editor confirmation flow.
|
|
156
|
+
- English and Spanish selector copy are covered.
|
|
157
|
+
|
|
158
|
+
## Slice-05 Evidence - slice-05-apply-saved-proposal
|
|
159
|
+
|
|
160
|
+
Executed:
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
node --test tests/commands/ai-analyze-project-review.test.js
|
|
164
|
+
node --test tests/lib/ai-analyze-project-proposal.test.js
|
|
165
|
+
node --test tests/commands/ai-analyze-project.test.js
|
|
166
|
+
npm run docs:check
|
|
167
|
+
npm run schema:slice:check
|
|
168
|
+
node bin/create-quiver.js spec validate specs/quiver-v55-analyze-project-doc-apply-ux --strict
|
|
169
|
+
git diff --check
|
|
170
|
+
npm test
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
Result: all passed. Full `npm test` passed with 747 tests.
|
|
174
|
+
|
|
175
|
+
Covered behavior:
|
|
176
|
+
|
|
177
|
+
- `ai analyze-project apply --run <run-id>` applies a saved proposal without executing provider/model resolution.
|
|
178
|
+
- Saved proposal manifests and proposal JSON are revalidated before write.
|
|
179
|
+
- Missing or unsafe saved artifacts fail before final docs writes.
|
|
180
|
+
- Dirty target docs block by default and can be applied only with `--allow-dirty-docs`.
|
|
181
|
+
- Stale target docs block before any final docs write.
|
|
182
|
+
- Manual proposal edits are accepted after revalidation and recorded in the write manifest.
|
|
183
|
+
- `--run latest --yes` and `--run latest --json` are rejected to keep automation deterministic.
|
|
184
|
+
|
|
185
|
+
## Slice-06 Evidence - slice-06-i18n-docs-release-smoke
|
|
186
|
+
|
|
187
|
+
Executed:
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
node --test tests/commands/cli-contract.test.js
|
|
191
|
+
node --test tests/lib/i18n-catalog.test.js
|
|
192
|
+
node --test tests/commands/ai-analyze-project-review.test.js
|
|
193
|
+
npm run docs:check
|
|
194
|
+
npm run schema:slice:check
|
|
195
|
+
node bin/create-quiver.js spec validate specs/quiver-v55-analyze-project-doc-apply-ux --strict
|
|
196
|
+
git diff --check
|
|
197
|
+
npm test
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
Result: all passed. Full `npm test` passed with 747 tests.
|
|
201
|
+
|
|
202
|
+
Covered behavior:
|
|
203
|
+
|
|
204
|
+
- English and Spanish help coverage includes the new analyze-project doc-apply flags.
|
|
205
|
+
- Commands, flags, providers, models, and paths remain untranslated in localized output.
|
|
206
|
+
- Command reference explains `--apply-docs`, `--save-proposal`, `--review`, `--yes`, `--diff`, and `apply --run`.
|
|
207
|
+
- Existing-project workflow documents the recommended `--apply-docs` path and save/apply separation.
|
|
208
|
+
- Troubleshooting explains why normal provider mode does not write final docs.
|
|
209
|
+
- Release smoke guidance uses a temporary copy or disposable branch of `nika-erp`, not the main checkout.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Execution Plan - Quiver v55 Analyze Project Doc Apply UX
|
|
2
|
+
|
|
3
|
+
## Sequential Order
|
|
4
|
+
|
|
5
|
+
1. `slice-01-cli-proposal-contract`
|
|
6
|
+
2. `slice-02-save-proposal-flow`
|
|
7
|
+
3. `slice-03-noninteractive-apply-engine`
|
|
8
|
+
4. `slice-04-interactive-apply-ux`
|
|
9
|
+
5. `slice-05-apply-saved-proposal`
|
|
10
|
+
6. `slice-06-i18n-docs-release-smoke`
|
|
11
|
+
|
|
12
|
+
## Parallelization Rules
|
|
13
|
+
|
|
14
|
+
- `slice-01` must land first because it freezes the CLI and artifact contracts.
|
|
15
|
+
- `slice-02` must wait for proposal artifact schema and paths.
|
|
16
|
+
- `slice-03` must wait for saved proposal support so every apply can persist proposal artifacts first.
|
|
17
|
+
- `slice-04` must wait for the non-interactive apply engine so the selector only orchestrates tested actions.
|
|
18
|
+
- `slice-05` can start after `slice-03`; it must not duplicate apply/write logic.
|
|
19
|
+
- `slice-06` closes documentation, i18n, command matrix, and release smoke after behavior is stable.
|
|
20
|
+
|
|
21
|
+
## Critical Boundaries
|
|
22
|
+
|
|
23
|
+
- CLI parse boundary: `slice-01`
|
|
24
|
+
- Proposal artifact boundary: `slice-01`, `slice-02`
|
|
25
|
+
- Write boundary: `slice-03`
|
|
26
|
+
- Human UX boundary: `slice-04`
|
|
27
|
+
- Saved-run trust boundary: `slice-05`
|
|
28
|
+
- Release readiness boundary: `slice-06`
|
|
29
|
+
|
|
30
|
+
## Rollback
|
|
31
|
+
|
|
32
|
+
- Revert `slice-04` to remove interactive UX while keeping non-interactive save/apply behavior.
|
|
33
|
+
- Revert `slice-05` if saved proposal application has stale-detection issues.
|
|
34
|
+
- Revert `slice-03` to remove docs applying while retaining proposal save artifacts.
|
|
35
|
+
- Preserve existing `--review` behavior throughout as fallback.
|
|
36
|
+
|
|
37
|
+
## Required Validation
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
node --test tests/commands/ai-analyze-project-review.test.js
|
|
41
|
+
node --test tests/commands/ai-analyze-project-provider.test.js
|
|
42
|
+
node --test tests/commands/ai-analyze-project.test.js
|
|
43
|
+
node --test tests/lib/ai-analyze-project-validation.test.js
|
|
44
|
+
node --test tests/lib/ai/analyze-project-repair.test.js
|
|
45
|
+
npm run docs:check
|
|
46
|
+
npm run schema:slice:check
|
|
47
|
+
node bin/create-quiver.js spec validate specs/quiver-v55-analyze-project-doc-apply-ux --strict
|
|
48
|
+
git diff --check
|
|
49
|
+
```
|