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.
- package/CHANGELOG.md +2 -0
- package/docs/CLI_UX_GUIDE.md +11 -4
- package/docs/TROUBLESHOOTING.md +17 -9
- package/docs/reference/commands.md +21 -9
- package/docs/workflows/existing-project.md +5 -5
- package/package.json +1 -1
- package/specs/quiver-v56-analyze-project-usable-doc-merge/EVIDENCE_REPORT.md +11 -0
- package/specs/quiver-v56-analyze-project-usable-doc-merge/EXECUTION_PLAN.md +28 -0
- package/specs/quiver-v56-analyze-project-usable-doc-merge/SPEC.md +96 -0
- package/specs/quiver-v56-analyze-project-usable-doc-merge/STATUS.md +26 -0
- package/specs/quiver-v56-analyze-project-usable-doc-merge/pr.md +56 -0
- package/specs/quiver-v56-analyze-project-usable-doc-merge/slices/slice-01-document-classification-merge-engine/CLOSURE_BRIEF.md +61 -0
- package/specs/quiver-v56-analyze-project-usable-doc-merge/slices/slice-01-document-classification-merge-engine/EXECUTION_BRIEF.md +59 -0
- package/specs/quiver-v56-analyze-project-usable-doc-merge/slices/slice-01-document-classification-merge-engine/pr.md +61 -0
- package/specs/quiver-v56-analyze-project-usable-doc-merge/slices/slice-01-document-classification-merge-engine/slice.json +71 -0
- package/specs/quiver-v56-analyze-project-usable-doc-merge/slices/slice-02-apply-integration-validation-contract/CLOSURE_BRIEF.md +30 -0
- package/specs/quiver-v56-analyze-project-usable-doc-merge/slices/slice-02-apply-integration-validation-contract/EXECUTION_BRIEF.md +39 -0
- package/specs/quiver-v56-analyze-project-usable-doc-merge/slices/slice-02-apply-integration-validation-contract/pr.md +62 -0
- package/specs/quiver-v56-analyze-project-usable-doc-merge/slices/slice-02-apply-integration-validation-contract/slice.json +80 -0
- package/specs/quiver-v56-analyze-project-usable-doc-merge/slices/slice-03-cli-docs-real-fixture-smoke/CLOSURE_BRIEF.md +29 -0
- package/specs/quiver-v56-analyze-project-usable-doc-merge/slices/slice-03-cli-docs-real-fixture-smoke/EXECUTION_BRIEF.md +32 -0
- package/specs/quiver-v56-analyze-project-usable-doc-merge/slices/slice-03-cli-docs-real-fixture-smoke/pr.md +61 -0
- package/specs/quiver-v56-analyze-project-usable-doc-merge/slices/slice-03-cli-docs-real-fixture-smoke/slice.json +79 -0
- package/src/create-quiver/commands/ai.js +50 -2
- package/src/create-quiver/index.js +1 -1
- package/src/create-quiver/lib/ai/analyze-project-docs.js +300 -5
- package/src/create-quiver/lib/ai/analyze-project-proposal.js +11 -0
- package/src/create-quiver/lib/ai/analyze-project-validation.js +26 -0
- 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.
|
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,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
|
|
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
|
|
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
|
|
package/docs/TROUBLESHOOTING.md
CHANGED
|
@@ -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
|
|
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
121
|
```
|
|
122
122
|
|
|
123
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 --
|
|
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
|
-
-
|
|
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
|
|
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
|
|
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`
|
|
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,
|
|
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
|
|
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` |
|
|
268
|
-
| `npx --yes create-quiver@latest ai analyze-project --deep --provider codex --model gpt-5.5` | Ejecuta proveedor y
|
|
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
|
|
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
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
|
-
|
|
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
|
|
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
|
@@ -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.
|