create-quiver 0.17.3 → 0.17.5

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 (29) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/docs/CLI_UX_GUIDE.md +11 -4
  3. package/docs/TROUBLESHOOTING.md +17 -9
  4. package/docs/reference/commands.md +21 -9
  5. package/docs/workflows/existing-project.md +5 -5
  6. package/package.json +1 -1
  7. package/specs/quiver-v56-analyze-project-usable-doc-merge/EVIDENCE_REPORT.md +11 -0
  8. package/specs/quiver-v56-analyze-project-usable-doc-merge/EXECUTION_PLAN.md +28 -0
  9. package/specs/quiver-v56-analyze-project-usable-doc-merge/SPEC.md +96 -0
  10. package/specs/quiver-v56-analyze-project-usable-doc-merge/STATUS.md +26 -0
  11. package/specs/quiver-v56-analyze-project-usable-doc-merge/pr.md +56 -0
  12. package/specs/quiver-v56-analyze-project-usable-doc-merge/slices/slice-01-document-classification-merge-engine/CLOSURE_BRIEF.md +61 -0
  13. package/specs/quiver-v56-analyze-project-usable-doc-merge/slices/slice-01-document-classification-merge-engine/EXECUTION_BRIEF.md +59 -0
  14. package/specs/quiver-v56-analyze-project-usable-doc-merge/slices/slice-01-document-classification-merge-engine/pr.md +61 -0
  15. package/specs/quiver-v56-analyze-project-usable-doc-merge/slices/slice-01-document-classification-merge-engine/slice.json +71 -0
  16. package/specs/quiver-v56-analyze-project-usable-doc-merge/slices/slice-02-apply-integration-validation-contract/CLOSURE_BRIEF.md +30 -0
  17. package/specs/quiver-v56-analyze-project-usable-doc-merge/slices/slice-02-apply-integration-validation-contract/EXECUTION_BRIEF.md +39 -0
  18. package/specs/quiver-v56-analyze-project-usable-doc-merge/slices/slice-02-apply-integration-validation-contract/pr.md +62 -0
  19. package/specs/quiver-v56-analyze-project-usable-doc-merge/slices/slice-02-apply-integration-validation-contract/slice.json +80 -0
  20. package/specs/quiver-v56-analyze-project-usable-doc-merge/slices/slice-03-cli-docs-real-fixture-smoke/CLOSURE_BRIEF.md +29 -0
  21. package/specs/quiver-v56-analyze-project-usable-doc-merge/slices/slice-03-cli-docs-real-fixture-smoke/EXECUTION_BRIEF.md +32 -0
  22. package/specs/quiver-v56-analyze-project-usable-doc-merge/slices/slice-03-cli-docs-real-fixture-smoke/pr.md +61 -0
  23. package/specs/quiver-v56-analyze-project-usable-doc-merge/slices/slice-03-cli-docs-real-fixture-smoke/slice.json +79 -0
  24. package/src/create-quiver/commands/ai.js +50 -2
  25. package/src/create-quiver/index.js +1 -1
  26. package/src/create-quiver/lib/ai/analyze-project-docs.js +300 -5
  27. package/src/create-quiver/lib/ai/analyze-project-proposal.js +11 -0
  28. package/src/create-quiver/lib/ai/analyze-project-validation.js +26 -0
  29. package/src/create-quiver/lib/i18n/messages/es.js +1 -1
package/CHANGELOG.md CHANGED
@@ -28,6 +28,7 @@ All notable changes to this project will be documented in this file.
28
28
 
29
29
  ### Changed
30
30
 
31
+ - `ai analyze-project` human output now reports compact merge decisions so users can see scaffold replacement, human-content preservation, old `context-prep` cleanup, and warnings without opening manifests.
31
32
  - Existing-project docs now recommend the simple `--apply-docs` flow instead of forcing users into the advanced `--review` editor path.
32
33
  - English and Spanish CLI help now explain analyze-project docs apply options while preserving commands, flags, paths, providers, and model ids exactly.
33
34
  - `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.
@@ -48,6 +49,7 @@ All notable changes to this project will be documented in this file.
48
49
 
49
50
  ### Fixed
50
51
 
52
+ - `ai analyze-project` now replaces visible Quiver scaffold placeholders and old template `context-prep` blocks when a valid project proposal is available, with nika-erp style regression coverage for `NIKA_ERP`/`stockflow`/`StockFlow` naming conflicts.
51
53
  - `ai analyze-project --deep` now repairs common safe provider schema drift, retries with compact schema feedback, records redacted raw artifacts, and fails closed without final doc writes when JSON remains invalid.
52
54
  - `doctor --fix` now gives an actionable repair path for existing `AGENTS.md` files that are missing Quiver contract sections while preserving manual content.
53
55
  - `ai analyze-project` now shows human TTY progress while provider analysis runs and reports schema validation issues with actionable detail.
@@ -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; `--apply-docs` muestra selector en TTY; `--review` queda como modo avanzado de edicion JSON. |
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,12 +124,12 @@ 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 --provider codex --model gpt-5.5
127
128
  npx create-quiver ai analyze-project --deep --save-proposal --provider codex --model gpt-5.5
128
- npx create-quiver ai analyze-project --deep --apply-docs --provider codex --model gpt-5.5
129
129
  npx create-quiver ai analyze-project apply --run <run-id>
130
130
  ```
131
131
 
132
- `ai analyze-project` debe mantener estas garantias: en `--dry-run` no escribe ni ejecuta proveedor; el modo provider normal genera auditoria y propuesta pero no escribe docs finales; 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, muestran diff y crean snapshot previo.
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
133
 
134
134
  Opciones de aplicacion:
135
135
 
@@ -137,7 +137,14 @@ Opciones de aplicacion:
137
137
  - `--apply-docs --yes` aplica en automatizacion despues de validar propuesta, hashes, snapshot y post-write.
138
138
  - `--save-proposal` guarda `.quiver/runs/<run-id>/proposal/*` sin escribir docs finales.
139
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, revalida el JSON editado, muestra diff final y pide confirmacion.
140
+ - `--review` se mantiene como modo avanzado: abre la propuesta JSON en editor y revalida el JSON editado antes de escribir.
141
+
142
+ Feedback de merge:
143
+
144
+ - Cuando hay docs modificados, la salida humana muestra `Merge decisions`.
145
+ - Cada item informa estrategia, clasificacion, placeholders reemplazados, contenido humano preservado y bloques `context-prep` removidos cuando aplica.
146
+ - La salida debe ser compacta; el detalle auditable queda en `.quiver/runs/<run-id>/proposal/manifest.json` y `.quiver/runs/<run-id>/writes/analyze-project-doc-writes.json`.
147
+ - Conflictos de nombres o facts se muestran en `Post-write validation` como warnings o errores con `--strict`.
141
148
 
142
149
  Modo deterministico:
143
150
 
@@ -114,13 +114,13 @@ 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 y quieras escribir documentación:
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 --apply-docs --provider codex --model gpt-5.5
120
+ npx --yes create-quiver@latest ai analyze-project --deep --provider codex --model gpt-5.5
121
121
  ```
122
122
 
123
- `--apply-docs` muestra opciones explicadas en TTY: aplicar documentación, ver diff, guardar propuesta, editar propuesta o cancelar. Si elegís aplicar, Quiver revalida la propuesta, crea snapshot y escribe solo docs permitidos.
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
124
 
125
125
  Para guardar primero y aplicar después sin volver a ejecutar el proveedor:
126
126
 
@@ -145,20 +145,28 @@ los docs finales siguen con placeholders o falta `docs/ARCHITECTURE.md`.
145
145
 
146
146
  ### Explicación
147
147
 
148
- Ese comando ejecuta el análisis, valida la respuesta IA y guarda artifacts auditados en `.quiver/runs`, pero no escribe documentación final por defecto. Es intencional: evita cambios sorpresivos en repos reales.
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
+ Quiver clasifica cada doc antes de escribir:
151
+
152
+ - `scaffold`: reemplaza el contenido visible de template y conserva frontmatter válido.
153
+ - `partial_scaffold` o `mixed`: elimina placeholders críticos, conserva contenido humano real y consolida bloques gestionados.
154
+ - `human_content`: conserva el contenido humano y agrega/actualiza el bloque `quiver:analyze-project`.
155
+
156
+ Los bloques antiguos `quiver:context-prep` que todavía contienen placeholders se eliminan durante `analyze-project` para que no compitan con el contexto nuevo. Si hay conflicto de nombres, por ejemplo `NIKA_ERP`, `stockflow` y `StockFlow`, Quiver lo reporta como warning o error en `--strict` en vez de ocultarlo.
149
157
 
150
158
  ### Qué hacer
151
159
 
152
- Usá uno de estos caminos seguros:
160
+ Revisá el error mostrado y los artifacts del run. Los caminos seguros son:
153
161
 
154
162
  ```bash
155
- npx --yes create-quiver@latest ai analyze-project --deep --apply-docs --provider codex --model gpt-5.5
156
- npx --yes create-quiver@latest ai analyze-project --deep --apply-docs --yes --provider codex --model gpt-5.5
163
+ npx --yes create-quiver@latest ai analyze-project --deep --provider codex --model gpt-5.5
157
164
  npx --yes create-quiver@latest ai analyze-project --deep --save-proposal --provider codex --model gpt-5.5
158
165
  npx --yes create-quiver@latest ai analyze-project apply --run <run-id>
159
166
  ```
160
167
 
161
- - `--apply-docs` en TTY muestra opciones explicadas antes de escribir.
162
- - `--apply-docs --yes` aplica en automatización si la propuesta y los docs destino son seguros.
168
+ - el comando normal aplica docs después de validar JSON, proposal, snapshot y post-write;
163
169
  - `--save-proposal` guarda `.quiver/runs/<run-id>/proposal/*` sin tocar docs finales.
164
170
  - `apply --run <run-id>` aplica una propuesta guardada sin ejecutar proveedor ni pedir `--provider` o `--model`.
171
+
172
+ Si venís de una versión anterior y tus docs tienen placeholders arriba y un bloque `quiver:analyze-project` útil abajo, volvé a ejecutar el comando normal. La salida debe mostrar `Merge decisions`, el strategy aplicado, si reemplazó scaffold, si preservó contenido humano y si removió `context-prep`.
@@ -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` | Analyze a bounded project sample and generate audited documentation proposals. |
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,13 +199,23 @@ 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 --provider codex --model gpt-5.5
202
203
  npx --yes create-quiver@latest ai analyze-project --deep --save-proposal --provider codex --model gpt-5.5
203
- npx --yes create-quiver@latest ai analyze-project --deep --apply-docs --provider codex --model gpt-5.5
204
204
  npx --yes create-quiver@latest ai analyze-project apply --run <run-id>
205
205
  ```
206
206
 
207
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.
208
208
 
209
+ Al escribir docs, Quiver no pega la respuesta del proveedor sin más. Primero clasifica el contenido existente y aplica un merge determinístico:
210
+
211
+ - reemplaza scaffolds con placeholders críticos en español o inglés;
212
+ - preserva contenido humano real;
213
+ - reemplaza un bloque `quiver:analyze-project` previo en lugar de duplicarlo;
214
+ - remueve bloques `quiver:context-prep` viejos cuando todavía son template;
215
+ - reporta `Merge decisions` con estrategia, placeholders reemplazados, contenido humano preservado y warnings.
216
+
217
+ Los conflictos de nombres o facts, por ejemplo `NIKA_ERP`, `stockflow` y `StockFlow`, se reportan en la validación post-write. En modo normal aparecen como warnings; con `--strict` bloquean la ejecución.
218
+
209
219
  Garantías del flujo con proveedor:
210
220
 
211
221
  - `--dry-run` no escribe archivos ni ejecuta proveedor.
@@ -216,13 +226,14 @@ Garantías del flujo con proveedor:
216
226
  - 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.
217
227
  - Si el JSON sigue inválido pero el error es retryable, Quiver hace 1 retry por defecto, con cap duro de 2 retries.
218
228
  - Si el JSON final es inválido, Quiver falla sin escribir docs finales y deja manifests de validación/retry/repair en `.quiver/runs`.
219
- - El modo provider normal no escribe docs finales por defecto; usá `--apply-docs`, `--save-proposal` o `--review` para decidir qué hacer con la propuesta validada.
229
+ - 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
230
  - `--apply-docs` en TTY muestra opciones explicadas para aplicar, ver diff, guardar propuesta, editar propuesta o cancelar.
221
231
  - `--apply-docs --yes` aplica en automatización después de validar propuesta, paths permitidos, hashes, snapshot y post-write.
222
232
  - `--save-proposal` guarda `.quiver/runs/<run-id>/proposal/*` sin escribir docs finales.
223
233
  - `ai analyze-project apply --run <run-id>` aplica una propuesta guardada sin ejecutar proveedor ni requerir `--provider` o `--model`.
224
- - `--review` abre una propuesta JSON editable, revalida el JSON editado, muestra diff final y pide confirmación antes de escribir docs permitidos.
234
+ - `--review` queda como modo avanzado para editar manualmente una propuesta JSON antes de escribir.
225
235
  - Las escrituras aprobadas crean snapshot con hashes y se escriben con rename atómico.
236
+ - El write manifest guarda `merge_report` por archivo y el proposal manifest guarda `merge_plan` para auditoría.
226
237
 
227
238
  Benchmark recomendado:
228
239
 
@@ -238,7 +249,6 @@ cd /tmp/quiver-smoke/nika-erp
238
249
  npx --yes create-quiver@latest ai analyze-project --deep --dry-run --json
239
250
  npx --yes create-quiver@latest ai analyze-project --deep --provider codex --model gpt-5.5
240
251
  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 --deep --apply-docs --provider codex --model gpt-5.5
242
252
  npx --yes create-quiver@latest ai analyze-project apply --run <run-id>
243
253
  ```
244
254
 
@@ -248,15 +258,17 @@ Evidencia esperada:
248
258
 
249
259
  - `--dry-run --json` parsea como JSON, `provider_execution` queda `skipped`, `writes` queda vacío y no crea docs finales.
250
260
  - `package-lock.json` aparece en `detected.lockfiles` y en omitidos con `sampling:lockfile-metadata`, no en contenido enviado al provider.
251
- - El modo provider escribe artifacts auditados en `.quiver/runs`, redactados y con tamaño controlado, pero no escribe docs finales sin `--apply-docs`, `--review` o `apply --run`.
261
+ - El modo provider escribe artifacts auditados en `.quiver/runs`, redactados y con tamaño controlado, y aplica docs finales validados por defecto.
252
262
  - Si el provider devuelve drift no reparable, el comando falla con path/tipo/causa probable y próximo comando seguro, sin escribir docs finales.
253
263
  - `--save-proposal` debe crear `.quiver/runs/<run-id>/proposal/*` sin modificar docs finales.
254
264
  - `--apply-docs` debe mostrar selector explicado en TTY o requerir `--yes` en automatización.
255
265
  - `apply --run <run-id>` debe aplicar la propuesta guardada sin volver a ejecutar proveedor.
266
+ - La salida humana debe mostrar `Merge decisions` cuando haya docs modificados.
267
+ - En fixtures tipo `nika-erp`, `docs/CONTEXTO.md` no debe conservar placeholders visibles ni bloques `quiver:context-prep` de template después de aplicar.
256
268
 
257
269
  Rollback de release:
258
270
 
259
- - Si el smoke live escribe docs inesperadamente sin `--review`, filtra secretos, omite artifacts críticos o falla con ruido masivo de schema, no publiques `latest`.
271
+ - 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`.
260
272
  - Publicá una corrección como canary o revertí la versión npm afectada según el proceso de release vigente.
261
273
  - 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.
262
274
 
@@ -264,8 +276,8 @@ Rollback de release:
264
276
  |---|---|
265
277
  | `npx --yes create-quiver@latest ai analyze-project --deep --dry-run` | Previsualiza descubrimiento y muestreo del repo sin escribir ni ejecutar proveedor. |
266
278
  | `npx --yes create-quiver@latest ai analyze-project --deep --dry-run --json` | Emite el plan de análisis como JSON parseable para automatización. |
267
- | `npx --yes create-quiver@latest ai analyze-project --deep --review` | Ejecuta proveedor, valida análisis JSON con evidencia, abre revisión humana y escribe solo docs permitidos tras confirmación. |
268
- | `npx --yes create-quiver@latest ai analyze-project --deep --provider codex --model gpt-5.5` | Ejecuta proveedor y genera propuesta auditada en `.quiver/runs`; no escribe docs finales sin `--review`. |
279
+ | `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. |
280
+ | `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. |
269
281
  | `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. |
270
282
  | `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. |
271
283
  | `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. |
@@ -86,19 +86,19 @@ 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 --apply-docs --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`, valida JSON con evidencia y no escribe docs finales por defecto;
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
- - `--apply-docs` muestra un selector simple en TTY para aplicar, ver diff, guardar, editar o cancelar.
101
+ - si la propuesta final no es válida, falla sin escribir docs finales.
102
102
 
103
103
  Si preferís separar generación y aplicación:
104
104
 
@@ -107,13 +107,13 @@ npx --yes create-quiver@latest ai analyze-project --deep --save-proposal --provi
107
107
  npx --yes create-quiver@latest ai analyze-project apply --run <run-id>
108
108
  ```
109
109
 
110
- Para automatización sin selector:
110
+ Si necesitás conservar compatibilidad con scripts que ya usaban el flujo explícito:
111
111
 
112
112
  ```bash
113
113
  npx --yes create-quiver@latest ai analyze-project --deep --apply-docs --yes --provider codex --model gpt-5.5
114
114
  ```
115
115
 
116
- `--review` sigue disponible como modo avanzado: abre la propuesta JSON en editor, revalida el JSON editado y pide confirmación antes de escribir docs permitidos.
116
+ `--review` sigue disponible como modo avanzado: abre la propuesta JSON en editor y revalida el JSON editado antes de escribir docs permitidos.
117
117
 
118
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`.
119
119
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-quiver",
3
- "version": "0.17.3",
3
+ "version": "0.17.5",
4
4
  "private": false,
5
5
  "description": "Quiver CLI for scaffolding projects from the packaged template",
6
6
  "license": "MIT",
@@ -0,0 +1,11 @@
1
+ # Evidence Report - Quiver v56 Analyze Project Usable Doc Merge
2
+
3
+ Evidence is recorded per slice closure.
4
+
5
+ ## Slice Evidence
6
+
7
+ | Slice | Evidence |
8
+ |---|---|
9
+ | slice-01-document-classification-merge-engine | `node --test tests/lib/ai-analyze-project-docs.test.js`; `node --test tests/commands/ai-analyze-project-provider.test.js`; `node --test tests/commands/ai-analyze-project-review.test.js`; `node bin/create-quiver.js spec validate specs/quiver-v56-analyze-project-usable-doc-merge --strict`; `git diff --check` |
10
+ | slice-02-apply-integration-validation-contract | `node --test tests/commands/ai-analyze-project-provider.test.js tests/commands/ai-analyze-project-review.test.js`; `node --test tests/lib/ai-analyze-project-docs.test.js tests/lib/ai-analyze-project-validation.test.js`; `node --test tests/lib/ai-analyze-project-proposal.test.js`; `node bin/create-quiver.js spec validate specs/quiver-v56-analyze-project-usable-doc-merge --strict`; `git diff --check` |
11
+ | slice-03-cli-docs-real-fixture-smoke | `node --test tests/commands/ai-analyze-project-provider.test.js tests/commands/cli-contract.test.js`; `npm run docs:check`; `node bin/create-quiver.js spec validate specs/quiver-v56-analyze-project-usable-doc-merge --strict`; `git diff --check` |
@@ -0,0 +1,28 @@
1
+ # Execution Plan - Quiver v56 Analyze Project Usable Doc Merge
2
+
3
+ ## Order
4
+
5
+ 1. `slice-01-document-classification-merge-engine`
6
+ 2. `slice-02-apply-integration-validation-contract`
7
+ 3. `slice-03-cli-docs-real-fixture-smoke`
8
+
9
+ ## Parallelism
10
+
11
+ - Slice 01 is sequential and blocks everything else.
12
+ - Slice 02 is sequential after Slice 01.
13
+ - Slice 03 docs can draft after Slice 01, but final smoke and output validation depend on Slice 02.
14
+
15
+ ## PR Strategy
16
+
17
+ - PR 1: Slice 01.
18
+ - PR 2: Slice 02.
19
+ - PR 3: Slice 03.
20
+
21
+ ## Validation Gates
22
+
23
+ Each PR must run its focused tests plus:
24
+
25
+ ```bash
26
+ git diff --check
27
+ node bin/create-quiver.js spec validate specs/quiver-v56-analyze-project-usable-doc-merge --strict
28
+ ```
@@ -0,0 +1,96 @@
1
+ # Quiver v56 - Analyze Project Usable Doc Merge
2
+
3
+ **Date:** 2026-06-17
4
+ **Status:** Completed
5
+ **Source:** User-approved requirement, production review, stricter second-pass review, and execution plan for `ai analyze-project` usable documentation output.
6
+
7
+ ## Problem
8
+
9
+ `ai analyze-project --deep --provider codex --model gpt-5.5` now writes documentation by default, but real projects can still end with unusable docs. In `nika-erp`, Quiver wrote a valid `quiver:analyze-project` block, but preserved scaffold placeholders at the top of `docs/CONTEXTO.md`, plus an older `quiver:context-prep` block. The command reported success even though the first visible content still looked unmodified.
10
+
11
+ ## Objective
12
+
13
+ Make analyze-project doc writes produce usable human-facing context files by applying a deterministic documentation merge contract:
14
+
15
+ ```text
16
+ classify existing doc -> merge by classification -> preserve real human content -> replace scaffold placeholders -> consolidate managed blocks -> validate visible output
17
+ ```
18
+
19
+ ## Scope
20
+
21
+ ### Included
22
+
23
+ - Document classification contract for scaffold, partial scaffold, human content, managed-only, mixed, and unknown docs.
24
+ - Deterministic merge strategy for `docs/CONTEXTO.md`, `docs/AI_CONTEXT.md`, and `docs/ARCHITECTURE.md`.
25
+ - Critical placeholder detection in English and Spanish.
26
+ - Idempotent managed block replacement.
27
+ - Safe handling of old `quiver:context-prep` blocks.
28
+ - Integration with live apply, saved proposal apply, review, JSON, and strict validation.
29
+ - Human output, manifests, docs, troubleshooting, and nika-erp regression fixture/smoke.
30
+
31
+ ### Excluded
32
+
33
+ - Product-code changes in analyzed repositories.
34
+ - Writing outside the existing analyze-project documentation allowlist.
35
+ - Automatic spec generation from project analysis.
36
+ - Relaxing provider schema validation.
37
+ - Translating technical evidence or provider claims semantically.
38
+
39
+ ## Requirements
40
+
41
+ 1. Quiver must not preserve critical scaffold placeholders as primary visible content when a valid proposal can replace them.
42
+ 2. Quiver must not delete real human content without preserving it or reporting a warning.
43
+ 3. Existing frontmatter must be preserved when it is parseable.
44
+ 4. If frontmatter is ambiguous, Quiver must preserve it and warn.
45
+ 5. `quiver:analyze-project` must be replaced in place on repeated runs, never duplicated.
46
+ 6. `quiver:context-prep` scaffold content must not remain as confusing primary content after analyze-project applies.
47
+ 7. The merge must be idempotent for the same proposal and input.
48
+ 8. `apply --run` and live provider apply must use the same merge engine.
49
+ 9. `--save-proposal` must persist a merge plan or enough metadata to preview the eventual write result.
50
+ 10. `--review` must show the final post-merge diff, not only raw provider Markdown.
51
+ 11. `--json` must expose merge strategy and warnings without removing existing fields.
52
+ 12. `--strict` must fail when critical placeholders remain in primary visible content.
53
+ 13. Name conflicts such as `NIKA_ERP`, `stockflow`, and `StockFlow` must be reported, not silently hidden.
54
+
55
+ ## Classification Contract
56
+
57
+ | Classification | Condition | Action |
58
+ |---|---|---|
59
+ | `scaffold` | Quiver/template signals plus known placeholders, with no significant human text | Replace primary content while preserving frontmatter |
60
+ | `partial_scaffold` | Some sections are placeholder-only and other sections have human text | Replace placeholder sections and preserve completed sections |
61
+ | `human_content` | Significant non-placeholder text outside managed markers | Preserve human text and insert generated summary visibly |
62
+ | `managed_only` | File is empty or only contains Quiver managed blocks | Replace managed content |
63
+ | `mixed` | Human text plus Quiver blocks plus placeholders | Preserve human text, remove/replace scaffold portions, consolidate blocks |
64
+ | `unknown` | Not safely classifiable | Preserve content, insert generated block visibly, warn |
65
+
66
+ ## Slice Roadmap
67
+
68
+ | Slice | Title | Status | Dependencies | Parallel Guidance |
69
+ |---|---|---|---|---|
70
+ | slice-01-document-classification-merge-engine | Document Classification + Merge Engine | completed | none | sequential first |
71
+ | slice-02-apply-integration-validation-contract | Apply Integration + Validation Contract | completed | slice-01 | sequential after slice-01 |
72
+ | slice-03-cli-docs-real-fixture-smoke | CLI UX + Docs + Real Fixture Smoke | completed | slice-02 | final hardening; docs can draft after slice-01 |
73
+
74
+ ## Validation Strategy
75
+
76
+ ```bash
77
+ node --test tests/lib/ai-analyze-project-docs.test.js
78
+ node --test tests/commands/ai-analyze-project-provider.test.js tests/commands/ai-analyze-project-review.test.js
79
+ npm run docs:check
80
+ node bin/create-quiver.js spec validate specs/quiver-v56-analyze-project-usable-doc-merge --strict
81
+ git diff --check
82
+ ```
83
+
84
+ ## Production Guardrails
85
+
86
+ - Snapshot before writes remains mandatory.
87
+ - Writes remain atomic.
88
+ - Path allowlist remains unchanged.
89
+ - Provider output remains untrusted until schema validation passes.
90
+ - Merge decisions must be recorded in the write plan/report.
91
+ - Critical placeholder validation checks primary visible content, not only managed blocks.
92
+
93
+ ## Open Questions
94
+
95
+ - Whether `token_cost` should be recalculated immediately in v56 or deferred to a metadata cleanup.
96
+ - Whether old `context-prep` human notes should be moved into a named preserved section or only marked as superseded.
@@ -0,0 +1,26 @@
1
+ # Status - Quiver v56 Analyze Project Usable Doc Merge
2
+
3
+ **Status:** Completed
4
+ **Last updated:** 2026-06-17
5
+
6
+ ## Current State
7
+
8
+ The requirement, acceptance criteria, production review, second stricter review, and execution plan are approved. All slices are complete.
9
+
10
+ ## Slice Status
11
+
12
+ | Slice | Status | Notes |
13
+ |---|---|---|
14
+ | slice-01-document-classification-merge-engine | completed | Deterministic classification and merge engine implemented with unit and analyze-project flow tests. |
15
+ | slice-02-apply-integration-validation-contract | completed | Merge metadata is exposed in JSON/write reports, proposal/write manifests persist merge plan/report, review diff uses post-merge output, and strict validation fails visible scaffold placeholders. |
16
+ | slice-03-cli-docs-real-fixture-smoke | completed | Human output reports merge decisions, docs explain placeholder recovery, and deterministic nika-erp style fixture validates visible placeholder cleanup plus name-conflict warnings. |
17
+
18
+ ## Blockers
19
+
20
+ - None.
21
+
22
+ ## Next Command
23
+
24
+ ```bash
25
+ node --test tests/commands/ai-analyze-project-provider.test.js tests/commands/cli-contract.test.js
26
+ ```
@@ -0,0 +1,56 @@
1
+ ## Title
2
+
3
+ Quiver v56 analyze-project usable doc merge
4
+
5
+ ## Summary
6
+
7
+ Implements a deterministic document merge contract so `ai analyze-project` replaces scaffold placeholders, preserves real human content, consolidates managed blocks, and validates that final docs are usable.
8
+
9
+ ## PR Policy
10
+
11
+ Individual PRs by slice. Runtime behavior changes must not be grouped with unrelated docs-only work.
12
+
13
+ ## Scope
14
+
15
+ See the active slice `pr.md`.
16
+
17
+ ## Files
18
+
19
+ See the active slice `slice.json`.
20
+
21
+ ## How to Test (DETAILED - REQUIRED)
22
+
23
+ ### Required Environment
24
+
25
+ Node.js/npm and local checkout.
26
+
27
+ ### Worktree Access
28
+
29
+ Use the branch created for the active slice.
30
+
31
+ ### Run the Project
32
+
33
+ No dev server is required.
34
+
35
+ ### Use Cases
36
+
37
+ See active slice.
38
+
39
+ ### Technical Verification
40
+
41
+ ```bash
42
+ node bin/create-quiver.js spec validate specs/quiver-v56-analyze-project-usable-doc-merge --strict
43
+ git diff --check
44
+ ```
45
+
46
+ ## Evidence
47
+
48
+ See active slice closure.
49
+
50
+ ## Rollback
51
+
52
+ Revert the slice PR.
53
+
54
+ ## Risks / Notes
55
+
56
+ This spec changes doc merge behavior for `ai analyze-project`; preserve snapshots and allowlist protections.
@@ -0,0 +1,61 @@
1
+ # CLOSURE_BRIEF - slice-01 Document Classification + Merge Engine
2
+
3
+ ## Summary
4
+
5
+ Implemented the Slice 01 merge engine contract for analyze-project docs.
6
+
7
+ The engine now:
8
+
9
+ - classifies existing docs as scaffold, partial scaffold, human content, managed-only, mixed, or unknown;
10
+ - detects known critical Quiver scaffold placeholders in English and Spanish;
11
+ - preserves parseable frontmatter;
12
+ - replaces scaffold primary content with proposed analyze-project content;
13
+ - preserves significant human content in partial/mixed docs;
14
+ - replaces existing `quiver:analyze-project` blocks without duplication;
15
+ - removes scaffold-only `quiver:context-prep` content when analyze-project content is applied;
16
+ - exposes `merge_report` metadata on write plan items;
17
+ - remains idempotent for the same proposal.
18
+
19
+ ## Evidence
20
+
21
+ ```bash
22
+ node --test tests/lib/ai-analyze-project-docs.test.js
23
+ ```
24
+
25
+ Result: 10 tests passed, 0 failed.
26
+
27
+ ```bash
28
+ node --test tests/commands/ai-analyze-project-provider.test.js
29
+ ```
30
+
31
+ Result: 23 tests passed, 0 failed.
32
+
33
+ ```bash
34
+ node --test tests/commands/ai-analyze-project-review.test.js
35
+ ```
36
+
37
+ Result: 20 tests passed, 0 failed.
38
+
39
+ ## Validation
40
+
41
+ ```bash
42
+ node bin/create-quiver.js spec validate specs/quiver-v56-analyze-project-usable-doc-merge --strict
43
+ git diff --check
44
+ ```
45
+
46
+ Result: passed.
47
+
48
+ ## Acceptance Coverage
49
+
50
+ - Scaffold docs no longer keep critical placeholders as primary visible content: covered by `mergeAnalyzeProjectDoc replaces Spanish Quiver scaffold primary content`.
51
+ - Partial scaffold docs preserve completed human sections: covered by `mergeAnalyzeProjectDoc preserves completed human sections in partial scaffold`.
52
+ - Human docs preserve human text: covered by `mergeAnalyzeProjectDoc preserves human docs and replaces existing analyze-project block`.
53
+ - Existing analyze-project block is replaced in place: covered by unit test and provider/review command tests.
54
+ - Context-prep scaffold does not remain confusing primary content: covered by `mergeAnalyzeProjectDoc removes scaffold context-prep block when applying analyze-project content`.
55
+ - Same input/proposal is stable: covered by `mergeAnalyzeProjectDoc is idempotent for the same proposal`.
56
+ - Write plan items include classification/strategy metadata: covered by `write plan preserves human content and snapshot manifest records hashes`.
57
+
58
+ ## Risks / Follow-ups
59
+
60
+ - Slice 02 must wire this metadata into JSON/output and strict visible-placeholder validation.
61
+ - Slice 03 must add the nika-erp style fixture and user-facing docs/output polish.
@@ -0,0 +1,59 @@
1
+ # EXECUTION_BRIEF - slice-01 Document Classification + Merge Engine
2
+
3
+ ## Objective
4
+
5
+ Implement the deterministic merge engine for analyze-project docs.
6
+
7
+ ## Context
8
+
9
+ The current `mergeManagedBlock` preserves the whole document and appends/replaces only the `quiver:analyze-project` block. This leaves scaffold placeholders visible above generated content. Slice 01 must solve the core merge contract before any CLI/output integration.
10
+
11
+ ## Scope
12
+
13
+ - Add explicit critical placeholder detection for EN/ES Quiver scaffold text.
14
+ - Add classification for existing docs.
15
+ - Preserve parseable frontmatter.
16
+ - Replace scaffold primary content with proposed Markdown.
17
+ - Preserve human content.
18
+ - Replace existing `quiver:analyze-project` block idempotently.
19
+ - Remove or supersede scaffold-only `quiver:context-prep` blocks.
20
+ - Add merge metadata to write plan items.
21
+
22
+ ## Acceptance Criteria
23
+
24
+ - Scaffold docs no longer keep critical placeholders as primary visible content.
25
+ - Partial scaffold docs preserve human-completed sections.
26
+ - Human docs preserve human text.
27
+ - Existing analyze-project block is replaced in place.
28
+ - Context-prep scaffold does not remain as confusing primary content.
29
+ - Same input/proposal produces stable output across repeated merges.
30
+ - Unit tests cover the above.
31
+
32
+ ## Expected Files
33
+
34
+ - `src/create-quiver/lib/ai/analyze-project-docs.js`
35
+ - `tests/lib/ai-analyze-project-docs.test.js`
36
+ - `specs/quiver-v56-analyze-project-usable-doc-merge/**`
37
+
38
+ ## Validation
39
+
40
+ ```bash
41
+ node --test tests/lib/ai-analyze-project-docs.test.js
42
+ node bin/create-quiver.js spec validate specs/quiver-v56-analyze-project-usable-doc-merge --strict
43
+ git diff --check
44
+ ```
45
+
46
+ ## Completion Checklist
47
+
48
+ - Classification helpers implemented and exported for tests.
49
+ - Merge engine replaces scaffold primary content safely.
50
+ - Merge engine preserves human content.
51
+ - Idempotency tests pass.
52
+ - Slice closure brief records validation evidence.
53
+
54
+ ## Constraints
55
+
56
+ - Do not change provider schema.
57
+ - Do not widen the analyze-project doc path allowlist.
58
+ - Do not change CLI output in this slice except what write plan metadata naturally exposes to tests.
59
+ - Do not implement post-write strict placeholder validation here; that belongs to Slice 02.