pumuki 6.3.39 → 6.3.41
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/README.md +21 -12
- package/VERSION +1 -1
- package/core/gate/evaluateRules.test.ts +40 -0
- package/core/gate/evaluateRules.ts +7 -1
- package/core/rules/Consequence.ts +1 -0
- package/docs/CONFIGURATION.md +50 -0
- package/docs/INSTALLATION.md +38 -11
- package/docs/MCP_SERVERS.md +1 -1
- package/docs/README.md +1 -0
- package/docs/RELEASE_NOTES.md +58 -0
- package/docs/USAGE.md +191 -9
- package/docs/registro-maestro-de-seguimiento.md +2 -2
- package/docs/seguimiento-activo-pumuki-saas-supermercados.md +1629 -1
- package/docs/validation/README.md +2 -1
- package/docs/validation/ast-intelligence-roadmap.md +96 -0
- package/integrations/config/skillsCustomRules.ts +14 -0
- package/integrations/config/skillsDetectorRegistry.ts +11 -1
- package/integrations/config/skillsLock.ts +30 -0
- package/integrations/config/skillsMarkdownRules.ts +14 -3
- package/integrations/config/skillsRuleSet.ts +25 -3
- package/integrations/evidence/readEvidence.test.ts +3 -2
- package/integrations/evidence/readEvidence.ts +14 -4
- package/integrations/evidence/repoState.ts +10 -2
- package/integrations/evidence/schema.test.ts +3 -2
- package/integrations/evidence/schema.ts +3 -0
- package/integrations/evidence/writeEvidence.test.ts +3 -2
- package/integrations/gate/evaluateAiGate.ts +511 -2
- package/integrations/git/GitService.ts +5 -1
- package/integrations/git/astIntelligenceDualValidation.ts +275 -0
- package/integrations/git/gitAtomicity.ts +42 -9
- package/integrations/git/resolveGitRefs.ts +37 -0
- package/integrations/git/runPlatformGate.ts +228 -1
- package/integrations/git/runPlatformGateEvaluation.ts +4 -0
- package/integrations/git/stageRunners.ts +116 -2
- package/integrations/lifecycle/cli.ts +759 -22
- package/integrations/lifecycle/doctor.ts +62 -0
- package/integrations/lifecycle/index.ts +1 -0
- package/integrations/lifecycle/packageInfo.ts +25 -3
- package/integrations/lifecycle/policyReconcile.ts +304 -0
- package/integrations/lifecycle/preWriteAutomation.ts +42 -2
- package/integrations/lifecycle/watch.ts +365 -0
- package/integrations/mcp/aiGateCheck.ts +59 -2
- package/integrations/mcp/autoExecuteAiStart.ts +25 -1
- package/integrations/mcp/preFlightCheck.ts +13 -0
- package/integrations/sdd/evidenceScaffold.ts +223 -0
- package/integrations/sdd/index.ts +2 -0
- package/integrations/sdd/stateSync.ts +400 -0
- package/integrations/sdd/syncDocs.ts +97 -2
- package/package.json +4 -1
- package/scripts/backlog-action-reasons-lib.ts +38 -0
- package/scripts/backlog-id-issue-map-lib.ts +69 -0
- package/scripts/backlog-json-contract-lib.ts +3 -0
- package/scripts/framework-menu-consumer-preflight-lib.ts +6 -0
- package/scripts/framework-menu-system-notifications-lib.ts +66 -6
- package/scripts/package-install-smoke-command-resolution-lib.ts +64 -0
- package/scripts/package-install-smoke-consumer-npm-lib.ts +43 -0
- package/scripts/package-install-smoke-consumer-repo-setup-lib.ts +2 -0
- package/scripts/package-install-smoke-execution-steps-lib.ts +27 -9
- package/scripts/package-install-smoke-lifecycle-lib.ts +15 -4
- package/scripts/package-install-smoke-workspace-factory-lib.ts +4 -1
- package/scripts/reconcile-consumer-backlog-issues-lib.ts +651 -0
- package/scripts/reconcile-consumer-backlog-issues.ts +348 -0
- package/scripts/watch-consumer-backlog-lib.ts +465 -0
- package/scripts/watch-consumer-backlog.ts +326 -0
|
@@ -126,4 +126,1632 @@
|
|
|
126
126
|
- `npx --yes tsx@4.21.0 --test integrations/lifecycle/__tests__/hookManager.test.ts integrations/lifecycle/__tests__/status.test.ts integrations/lifecycle/__tests__/doctor.test.ts integrations/lifecycle/__tests__/cli.test.ts` -> `50 pass / 0 fail`.
|
|
127
127
|
- `npm run -s test:stage-gates` -> `1020 pass / 0 fail / 4 skip`.
|
|
128
128
|
- `npm run -s typecheck` -> `PASS`.
|
|
129
|
-
-
|
|
129
|
+
- ✅ PUMUKI-020: Preparar publicación del siguiente corte cuando PUMUKI-019 quede cerrada sin regresiones.
|
|
130
|
+
- Evidencia (2026-03-04):
|
|
131
|
+
- `npm publish --access public` => `+ pumuki@6.3.39`.
|
|
132
|
+
- Verificación remota: `npm view pumuki version` => `6.3.39`.
|
|
133
|
+
|
|
134
|
+
## Fase 4.2 Siguiente bloque SAAS (ordenado y sin saltos)
|
|
135
|
+
|
|
136
|
+
- ✅ PUMUKI-021: Consolidar backlog SAAS activo contra issues upstream reales y ejecutar el siguiente bug/mejora prioritaria sin cambiar de frente.
|
|
137
|
+
- Alcance inmediato:
|
|
138
|
+
- Contrastar estado de `#614+` para separar `OPEN` real vs `ya resuelto`.
|
|
139
|
+
- Elegir una única siguiente implementación técnica y ejecutar `RED -> GREEN -> REFACTOR`.
|
|
140
|
+
- Resultado:
|
|
141
|
+
- Fix ejecutado sobre `#622`: bloqueo determinista cuando hay cambios de código y `active_rule_ids=[]`.
|
|
142
|
+
- Nuevo finding de gate: `governance.rules.active-rule-coverage.empty` (`ACTIVE_RULE_IDS_EMPTY_FOR_CODE_CHANGES_HIGH`).
|
|
143
|
+
- Evidencia (2026-03-04):
|
|
144
|
+
- `npx --yes tsx@4.21.0 --test integrations/git/__tests__/runPlatformGate.test.ts` -> `30 pass / 0 fail`.
|
|
145
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
146
|
+
- `npx --yes tsx@4.21.0 --test integrations/git/__tests__/runPlatformGate.test.ts integrations/git/__tests__/stageRunners.test.ts` -> `51 pass / 0 fail`.
|
|
147
|
+
|
|
148
|
+
- ✅ PUMUKI-022: Ejecutar siguiente bug/mejora SAAS prioritaria de enforcement iOS tests (`#623`) sin abrir frentes paralelos.
|
|
149
|
+
- Fix:
|
|
150
|
+
- Nuevo guard determinista de calidad de tests iOS en gate: `governance.skills.ios-test-quality.incomplete`.
|
|
151
|
+
- Nuevo código de bloqueo: `IOS_TEST_QUALITY_PATTERN_MISSING_HIGH`.
|
|
152
|
+
- Criterio hard en `PRE_COMMIT/PRE_PUSH/CI`: para fuentes `XCTest` en `apps/ios/**/Tests/**.swift`, exigir `makeSUT()` y `trackForMemoryLeaks()`.
|
|
153
|
+
- Ajuste de consistencia: findings de guards de cobertura se incluyen siempre en `effectiveFindings` cuando aplican, evitando bloqueos “opacos”.
|
|
154
|
+
- Evidencia (2026-03-05):
|
|
155
|
+
- `npx --yes tsx@4.21.0 --test integrations/git/__tests__/runPlatformGate.test.ts` -> `32 pass / 0 fail`.
|
|
156
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
157
|
+
- `npx --yes tsx@4.21.0 --test integrations/git/__tests__/stageRunners.test.ts` -> `21 pass / 0 fail`.
|
|
158
|
+
- `npm run -s test:stage-gates` -> `1024 pass / 0 fail / 4 skip`.
|
|
159
|
+
|
|
160
|
+
- ✅ PUMUKI-023: Ejecutar siguiente bug/mejora SAAS prioritaria (`#614`) para cerrar issue P0 abierta con evidencia reproducible y decidir cierre o ampliación de implementación.
|
|
161
|
+
- Fix:
|
|
162
|
+
- `integrations/gate/evaluateAiGate.ts` añade enforcement transversal en `PRE_WRITE` por plataforma detectada:
|
|
163
|
+
- `EVIDENCE_PLATFORM_SKILLS_SCOPE_INCOMPLETE` (prefijos `skills.<scope>.` en `active/evaluated_rule_ids`).
|
|
164
|
+
- `EVIDENCE_PLATFORM_SKILLS_BUNDLES_MISSING` (bundles requeridos por plataforma detectada en `rulesets`).
|
|
165
|
+
- `integrations/mcp/preFlightCheck.ts` añade hints accionables para ambos códigos.
|
|
166
|
+
- `integrations/mcp/autoExecuteAiStart.ts` añade `next_action` determinista para ambos códigos.
|
|
167
|
+
- Evidencia (2026-03-05):
|
|
168
|
+
- `npx --yes tsx@4.21.0 --test integrations/gate/__tests__/evaluateAiGate.test.ts integrations/mcp/__tests__/preFlightCheck.test.ts integrations/mcp/__tests__/autoExecuteAiStart.test.ts` -> `20 pass / 0 fail`.
|
|
169
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
170
|
+
|
|
171
|
+
- ✅ PUMUKI-024: Ejecutar siguiente bug/mejora SAAS prioritaria (`#615`) y cerrar trazabilidad con RED->GREEN->REFACTOR + evidencia reproducible.
|
|
172
|
+
- Fix:
|
|
173
|
+
- `core/rules/Consequence.ts` amplía contrato con `source` opcional.
|
|
174
|
+
- `core/gate/evaluateRules.ts` fusiona `source` del fact + `source` del rule consequence para trazabilidad determinista.
|
|
175
|
+
- `integrations/config/skillsRuleSet.ts` emite metadata `skills-ir:*` por regla compilada (origen de skill, path, modo de evaluación y nodos AST mapeados).
|
|
176
|
+
- `integrations/config/__tests__/skillsRuleSet.test.ts` verifica que la regla runtime incluya traza `skills-ir` con nodos AST.
|
|
177
|
+
- `core/gate/evaluateRules.test.ts` verifica que el finding preserve traza combinada (`fact|skills-ir`).
|
|
178
|
+
- Evidencia (2026-03-05):
|
|
179
|
+
- `npx --yes tsx@4.21.0 --test core/gate/evaluateRules.test.ts integrations/config/__tests__/skillsRuleSet.test.ts integrations/git/__tests__/runPlatformGateEvaluation.test.ts integrations/git/__tests__/runPlatformGate.test.ts` -> `56 pass / 0 fail`.
|
|
180
|
+
- `npm run -s test:stage-gates` -> `1027 pass / 0 fail / 4 skip`.
|
|
181
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
182
|
+
|
|
183
|
+
- ✅ PUMUKI-025: Ejecutar siguiente bug/mejora SAAS prioritaria (`#616`) para cerrar definición técnica del roadmap AST por nodos con entregable ejecutable y trazable.
|
|
184
|
+
- Fix:
|
|
185
|
+
- PoC runtime de validación dual legacy+AST: `integrations/git/astIntelligenceDualValidation.ts` (`off/shadow/strict`).
|
|
186
|
+
- Integración en gate principal: `integrations/git/runPlatformGate.ts`.
|
|
187
|
+
- Re-export para compatibilidad interna: `integrations/git/runPlatformGateEvaluation.ts`.
|
|
188
|
+
- RFC legible + roadmap 30/60/90 + rollout/rollback: `docs/validation/ast-intelligence-roadmap.md`.
|
|
189
|
+
- Documentación operativa de configuración/uso: `docs/CONFIGURATION.md`, `docs/USAGE.md`, `docs/validation/README.md`, `docs/README.md`.
|
|
190
|
+
- Evidencia (2026-03-05):
|
|
191
|
+
- `npx --yes tsx@4.21.0 --test integrations/git/__tests__/astIntelligenceDualValidation.test.ts integrations/git/__tests__/runPlatformGateAstIntelligenceDualMode.test.ts integrations/git/__tests__/runPlatformGateEvaluation.test.ts scripts/__tests__/architecture-file-size-guardrails.test.ts` -> `12 pass / 0 fail`.
|
|
192
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
193
|
+
- `npm run -s test:stage-gates` -> `1033 pass / 0 fail / 4 skip`.
|
|
194
|
+
|
|
195
|
+
- ✅ PUMUKI-026: Ejecutar siguiente mejora SAAS prioritaria (`#617`) para aprendizaje/sync SDD desde evidencia operativa con flujo seguro `dry-run -> apply`.
|
|
196
|
+
- Fix:
|
|
197
|
+
- Alias CLI `pumuki sdd sync` (equivalente a `sync-docs`).
|
|
198
|
+
- Nuevo flag `--from-evidence=<path>` en `sync-docs`, `sync`, `learn` y `auto-sync`.
|
|
199
|
+
- `sync-docs/learn/auto-sync` leen evidencia desde ruta alternativa y la exponen en contexto (`fromEvidencePath`).
|
|
200
|
+
- Learning artifact añade `scoring` determinista (`heuristic-v1`) para dry-run/apply.
|
|
201
|
+
- Evidencia (2026-03-05):
|
|
202
|
+
- `npx --yes tsx@4.21.0 --test integrations/sdd/__tests__/syncDocs.test.ts integrations/lifecycle/__tests__/cli.test.ts` -> `44 pass / 0 fail`.
|
|
203
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
204
|
+
|
|
205
|
+
- ✅ PUMUKI-027: Ejecutar siguiente mejora SAAS prioritaria (`#618`) para `pumuki watch` proactivo con notificaciones/alertas sin spam y controles de silencio.
|
|
206
|
+
- Fix:
|
|
207
|
+
- Nuevo comando `pumuki watch` en CLI lifecycle.
|
|
208
|
+
- Configuración operativa: `--stage`, `--scope`, `--severity`, `--interval-ms`, `--notify-cooldown-ms`, `--no-notify`, `--once|--iterations`.
|
|
209
|
+
- Motor local de watch en `integrations/lifecycle/watch.ts` con ciclo `change -> evaluate -> notify`.
|
|
210
|
+
- Anti-spam determinista por firma+cooldown y umbral de severidad configurable para alertas.
|
|
211
|
+
- Integración con notificación de bloqueo (`gate.blocked`) y resumen (`audit.summary`) sin alterar política de bloqueo del gate.
|
|
212
|
+
- Documentación de uso y límites en `docs/USAGE.md`.
|
|
213
|
+
- Evidencia (2026-03-05):
|
|
214
|
+
- `npx --yes tsx@4.21.0 --test integrations/lifecycle/__tests__/watch.test.ts integrations/lifecycle/__tests__/cli.test.ts` -> `34 pass / 0 fail`.
|
|
215
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
216
|
+
|
|
217
|
+
- ✅ PUMUKI-028: Ejecutar siguiente bug SAAS prioritaria (`#619`) para robustecer resolución de binarios `pumuki` vía `npx` en hooks/CLI.
|
|
218
|
+
- Fix:
|
|
219
|
+
- Nuevo resolvedor determinista para smoke/install: `scripts/package-install-smoke-command-resolution-lib.ts`.
|
|
220
|
+
- Prioridad de ejecución robusta en repos consumidor:
|
|
221
|
+
- `./node_modules/.bin/<bin>` (local)
|
|
222
|
+
- `node ./node_modules/pumuki/bin/<bin>.js` (fallback local)
|
|
223
|
+
- `npx --yes --package pumuki@latest <bin>` (fallback final)
|
|
224
|
+
- Integración del resolvedor en lifecycle smoke:
|
|
225
|
+
- `scripts/package-install-smoke-lifecycle-lib.ts`
|
|
226
|
+
- `scripts/package-install-smoke-execution-steps-lib.ts`
|
|
227
|
+
- Diagnóstico hardening en `doctor --deep`:
|
|
228
|
+
- `integrations/lifecycle/doctor.ts` ahora marca `adapter-wiring` en `fail/warning` cuando detecta comandos frágiles sin `--package` ni fallback local.
|
|
229
|
+
- Test de regresión: `integrations/lifecycle/__tests__/doctor.test.ts`.
|
|
230
|
+
- Documentación de uso/remediación actualizada:
|
|
231
|
+
- comandos directos de hooks con `--package pumuki@latest` en `README.md`, `docs/INSTALLATION.md`, `docs/USAGE.md`, `docs/MCP_SERVERS.md`.
|
|
232
|
+
- troubleshooting explícito para `doctor --deep` y reparación con `pumuki adapter install --agent=codex`.
|
|
233
|
+
- Evidencia (2026-03-05):
|
|
234
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/package-install-smoke-command-resolution-lib.test.ts integrations/lifecycle/__tests__/doctor.test.ts integrations/lifecycle/__tests__/hookBlock.test.ts integrations/lifecycle/__tests__/hookManager.test.ts` -> `30 pass / 0 fail`.
|
|
235
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
236
|
+
|
|
237
|
+
- ✅ PUMUKI-029: Ejecutar siguiente bug SAAS prioritaria (`#620`) para robustecer ejecución en repos con `:` en path y cerrar trazabilidad sin regresiones.
|
|
238
|
+
- Fix:
|
|
239
|
+
- El smoke de instalación usa `consumerRepo` con `:` en Unix/macOS para cubrir path problemático de forma explícita:
|
|
240
|
+
- `scripts/package-install-smoke-workspace-factory-lib.ts`.
|
|
241
|
+
- Test de regresión: `scripts/__tests__/package-install-smoke-workspace-factory-lib.test.ts`.
|
|
242
|
+
- `doctor --deep` endurece `adapter-wiring` para detectar comandos con mutación inline de `PATH` (`PATH="...:$PATH"`), aunque incluyan `--package`:
|
|
243
|
+
- `integrations/lifecycle/doctor.ts`.
|
|
244
|
+
- Test de regresión: `integrations/lifecycle/__tests__/doctor.test.ts`.
|
|
245
|
+
- Documentación operativa para rutas con `:` y remediación en:
|
|
246
|
+
- `docs/INSTALLATION.md`
|
|
247
|
+
- `docs/USAGE.md`
|
|
248
|
+
- Evidencia (2026-03-05):
|
|
249
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/package-install-smoke-workspace-factory-lib.test.ts scripts/__tests__/package-install-smoke-command-resolution-lib.test.ts integrations/lifecycle/__tests__/doctor.test.ts` -> `15 pass / 0 fail`.
|
|
250
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
251
|
+
|
|
252
|
+
- ✅ PUMUKI-030: Ejecutar siguiente bug SAAS prioritaria (`#621`) para robustecer bootstrap en repos sin `HEAD` inicial y cerrar trazabilidad con RED->GREEN->REFACTOR.
|
|
253
|
+
- Fix:
|
|
254
|
+
- `integrations/git/gitAtomicity.ts`: fallback seguro cuando refs no son resolubles (`HEAD` ausente) para `diff/log` sin romper stage.
|
|
255
|
+
- `integrations/git/GitService.ts`: ejecución de `git` con `stdio` capturado (`pipe`) para evitar ruido fatal en bootstrap controlado.
|
|
256
|
+
- `integrations/git/__tests__/gitAtomicity.test.ts`: cobertura RED->GREEN para repos sin commit inicial y aserción explícita de no ruido `ambiguous argument`.
|
|
257
|
+
- `integrations/git/__tests__/stageRunners.test.ts`: validación de `runCiStage` en repo virgen con git-atomicity activa.
|
|
258
|
+
- Evidencia (2026-03-05):
|
|
259
|
+
- `npx --yes tsx@4.21.0 --test integrations/git/__tests__/gitAtomicity.test.ts integrations/git/__tests__/stageRunners.test.ts integrations/git/__tests__/GitService.test.ts` -> `34 pass / 0 fail`.
|
|
260
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
261
|
+
|
|
262
|
+
- ✅ PUMUKI-031: Ejecutar siguiente bug SAAS prioritaria (`#622`) para evitar `PASS` con `active_rule_ids` vacío cuando hay cambios de código y cerrar trazabilidad con RED->GREEN->REFACTOR.
|
|
263
|
+
- Fix:
|
|
264
|
+
- `integrations/gate/evaluateAiGate.ts`: guard adicional en `PRE_WRITE` para bloquear evidencia con `active_rule_ids=[]` cuando hay plataformas de código detectadas (`ios/android/backend/frontend`).
|
|
265
|
+
- Código de bloqueo añadido: `EVIDENCE_ACTIVE_RULE_IDS_EMPTY_FOR_CODE_CHANGES`.
|
|
266
|
+
- Se mantiene compatibilidad en escenarios sin superficie de código detectada (no falso bloqueo).
|
|
267
|
+
- Evidencia (2026-03-05):
|
|
268
|
+
- `npx --yes tsx@4.21.0 --test integrations/gate/__tests__/evaluateAiGate.test.ts` -> `17 pass / 0 fail`.
|
|
269
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
270
|
+
|
|
271
|
+
- ✅ PUMUKI-032: Ejecutar siguiente bug SAAS prioritaria (`#623`) para enforcement AST de calidad de tests iOS (`makeSUT` + `trackForMemoryLeaks`) y cerrar trazabilidad con RED->GREEN->REFACTOR.
|
|
272
|
+
- Fix:
|
|
273
|
+
- `integrations/gate/evaluateAiGate.ts`: en PRE_WRITE se exige regla crítica iOS `skills.ios.critical-test-quality` cuando iOS está detectado.
|
|
274
|
+
- Nuevo código de bloqueo explícito: `EVIDENCE_PLATFORM_CRITICAL_SKILLS_RULES_MISSING`.
|
|
275
|
+
- Se mantiene comportamiento no bloqueante en plataformas no-iOS (sin falsos bloqueos).
|
|
276
|
+
- Evidencia (2026-03-05):
|
|
277
|
+
- `npx --yes tsx@4.21.0 --test integrations/gate/__tests__/evaluateAiGate.test.ts integrations/git/__tests__/runPlatformGate.test.ts` -> `51 pass / 0 fail`.
|
|
278
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
279
|
+
|
|
280
|
+
- ✅ PUMUKI-033: Ejecutar siguiente bug SAAS prioritaria (`#614`) para enforcement AST transversal multi-plataforma y cerrar trazabilidad con RED->GREEN->REFACTOR.
|
|
281
|
+
- Fix:
|
|
282
|
+
- `integrations/gate/evaluateAiGate.ts`: guard transversal en PRE_WRITE para plataformas detectadas con reglas críticas mínimas por ámbito (`android/backend/frontend`) además de la cobertura iOS ya cerrada.
|
|
283
|
+
- Nuevo código de bloqueo explícito: `EVIDENCE_CROSS_PLATFORM_CRITICAL_ENFORCEMENT_INCOMPLETE`.
|
|
284
|
+
- El gate ahora bloquea determinísticamente cuando hay cobertura de prefijo pero falta enforcement crítico transversal por plataforma.
|
|
285
|
+
- Evidencia (2026-03-05):
|
|
286
|
+
- `npx --yes tsx@4.21.0 --test integrations/gate/__tests__/evaluateAiGate.test.ts integrations/git/__tests__/runPlatformGate.test.ts` -> `53 pass / 0 fail`.
|
|
287
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
288
|
+
|
|
289
|
+
- ✅ PUMUKI-034: Ejecutar siguiente bug SAAS prioritaria (`#615`) para compilación dinámica skills `.codex` -> reglas AST por nodos y cerrar trazabilidad con RED->GREEN->REFACTOR.
|
|
290
|
+
- Fix:
|
|
291
|
+
- `integrations/config/skillsLock.ts`: nuevo IR mínimo en lock por regla (`astNodeIds`) con validación, normalización y hash determinista.
|
|
292
|
+
- `integrations/config/skillsMarkdownRules.ts`: compilador markdown detecta nodos AST explícitos (`heuristics.*.ast`) y convierte reglas no canónicas a `AUTO` cuando tienen nodos.
|
|
293
|
+
- `integrations/config/skillsDetectorRegistry.ts`: resolver dinámico por regla compilada (`astNodeIds`) con fallback al registry estático por `ruleId`.
|
|
294
|
+
- `integrations/config/skillsRuleSet.ts`: evaluador runtime consume IR dinámico por nodos para construir condiciones heurísticas y trazabilidad `skills-ir`.
|
|
295
|
+
- `integrations/config/skillsCustomRules.ts`: persiste/carga `ast_node_ids` en `.pumuki/custom-rules.json` para mantener paridad end-to-end.
|
|
296
|
+
- Evidencia (2026-03-05):
|
|
297
|
+
- `npx --yes tsx@4.21.0 --test integrations/config/__tests__/skillsMarkdownRules.test.ts integrations/config/__tests__/skillsRuleSet.test.ts integrations/config/skillsLock.test.ts integrations/config/__tests__/skillsCustomRules.test.ts` -> `29 pass / 0 fail`.
|
|
298
|
+
- `npx --yes tsx@4.21.0 --test core/gate/evaluateRules.test.ts integrations/config/__tests__/skillsMarkdownRules.test.ts integrations/config/__tests__/skillsRuleSet.test.ts integrations/git/__tests__/runPlatformGateEvaluation.test.ts integrations/git/__tests__/runPlatformGate.test.ts` -> `61 pass / 0 fail`.
|
|
299
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
300
|
+
|
|
301
|
+
- ✅ PUMUKI-035: Ejecutar siguiente mejora SAAS prioritaria (`#616`) para motor AST Intelligence por nodos multilenguaje desde `.codex` (siguiente bloque tras cerrar #615).
|
|
302
|
+
- Fix:
|
|
303
|
+
- `integrations/git/__tests__/astIntelligenceDualValidation.test.ts`: nueva cobertura multilenguaje real en dual-mode (`typescript + kotlin`) con `divergences=0`.
|
|
304
|
+
- `docs/validation/ast-intelligence-roadmap.md`: RFC actualizado para reflejar Kotlin dentro del alcance PoC implementado.
|
|
305
|
+
- Evidencia (2026-03-05):
|
|
306
|
+
- `npx --yes tsx@4.21.0 --test integrations/git/__tests__/astIntelligenceDualValidation.test.ts integrations/git/__tests__/runPlatformGateAstIntelligenceDualMode.test.ts integrations/git/__tests__/runPlatformGateEvaluation.test.ts` -> `12 pass / 0 fail`.
|
|
307
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
308
|
+
|
|
309
|
+
- ✅ PUMUKI-036: Ejecutar siguiente mejora SAAS prioritaria (`#617`) para `sdd learn/sync` desde evidencia operativa y cierre trazable de issue upstream.
|
|
310
|
+
- Fix:
|
|
311
|
+
- `integrations/sdd/syncDocs.ts`: hardening de seguridad para `--from-evidence` con resolución repo-bound; bloquea rutas fuera del repo root (path traversal).
|
|
312
|
+
- `integrations/sdd/__tests__/syncDocs.test.ts`: nuevo test de bloqueo cuando `--from-evidence` intenta escapar con `../`.
|
|
313
|
+
- `integrations/lifecycle/__tests__/cli.test.ts`: cobertura CLI para retorno `code=1` cuando `sdd sync --from-evidence` apunta fuera del repo root.
|
|
314
|
+
- `docs/CONFIGURATION.md`: límite de seguridad documentado para `--from-evidence`.
|
|
315
|
+
- Evidencia (2026-03-05):
|
|
316
|
+
- `npx --yes tsx@4.21.0 --test integrations/sdd/__tests__/syncDocs.test.ts integrations/lifecycle/__tests__/cli.test.ts` -> `47 pass / 0 fail`.
|
|
317
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
318
|
+
|
|
319
|
+
- ✅ PUMUKI-037: Ejecutar siguiente mejora SAAS prioritaria (`#618`) para `pumuki watch` proactivo (notificaciones + anti-spam) y cierre trazable de issue upstream.
|
|
320
|
+
- Evidencia (2026-03-05):
|
|
321
|
+
- `npx --yes tsx@4.21.0 --test integrations/lifecycle/__tests__/watch.test.ts` -> `3 pass / 0 fail`.
|
|
322
|
+
- `npx --yes tsx@4.21.0 --test integrations/lifecycle/__tests__/cli.test.ts` -> `32 pass / 0 fail`.
|
|
323
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
324
|
+
- Issue upstream cerrada: `#618`.
|
|
325
|
+
|
|
326
|
+
- ✅ PUMUKI-038: Ejecutar siguiente bug SAAS prioritaria (`#619`) para cerrar trazabilidad upstream de resolución robusta de binarios `pumuki` vía `npx` en hooks/CLI.
|
|
327
|
+
- Evidencia (2026-03-05):
|
|
328
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/package-install-smoke-command-resolution-lib.test.ts integrations/lifecycle/__tests__/doctor.test.ts integrations/lifecycle/__tests__/hookBlock.test.ts integrations/lifecycle/__tests__/hookManager.test.ts` -> `31 pass / 0 fail`.
|
|
329
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
330
|
+
- Issue upstream cerrada: `#619`.
|
|
331
|
+
|
|
332
|
+
- ✅ PUMUKI-039: Ejecutar siguiente bug SAAS prioritaria (`#620`) para cerrar trazabilidad upstream de robustez en repos con `:` en path.
|
|
333
|
+
- Evidencia (2026-03-05):
|
|
334
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/package-install-smoke-workspace-factory-lib.test.ts scripts/__tests__/package-install-smoke-command-resolution-lib.test.ts integrations/lifecycle/__tests__/doctor.test.ts` -> `15 pass / 0 fail`.
|
|
335
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
336
|
+
- Issue upstream cerrada: `#620`.
|
|
337
|
+
|
|
338
|
+
- ✅ PUMUKI-040: Revisar el backlog SAAS actualizado y abrir/ejecutar la siguiente incidencia nueva no cubierta (sin saltar a RuralGo hasta cerrar SAAS).
|
|
339
|
+
- Evidencia (2026-03-05):
|
|
340
|
+
- Verificación upstream consolidada: `#614 #615 #616 #617 #618 #619 #620 #621 #622 #623` en estado `CLOSED`.
|
|
341
|
+
- Nueva incidencia abierta desde backlog SAAS (`PUMUKI-009`): `#624` (`install --with-mcp y healthcheck de wiring MCP`).
|
|
342
|
+
|
|
343
|
+
- ✅ PUMUKI-041: Implementar `#624` (`install --with-mcp` + healthcheck MCP) con RED -> GREEN -> REFACTOR y cierre trazable.
|
|
344
|
+
- Fix:
|
|
345
|
+
- `integrations/lifecycle/cli.ts`: soporte `install --with-mcp` con `--agent=<name>` opcional.
|
|
346
|
+
- `integrations/lifecycle/cli.ts`: tras instalar con MCP, wiring adapter + healthcheck MCP visible (check `adapter-wiring` de `doctor --deep`).
|
|
347
|
+
- `integrations/lifecycle/__tests__/cli.test.ts`: cobertura de parseo y flujo install con wiring MCP.
|
|
348
|
+
- `docs/INSTALLATION.md`, `docs/USAGE.md`: documentación de comando y healthcheck.
|
|
349
|
+
- Evidencia (2026-03-05):
|
|
350
|
+
- `npx --yes tsx@4.21.0 --test integrations/lifecycle/__tests__/cli.test.ts` -> `32 pass / 0 fail`.
|
|
351
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
352
|
+
- Issue upstream cerrada: `#624`.
|
|
353
|
+
|
|
354
|
+
- ✅ PUMUKI-042: Implementar `#625` (pipeline AGENTS -> policy/rules con contrato ejecutable en PRE_WRITE y stages) con cierre trazable.
|
|
355
|
+
- Fix:
|
|
356
|
+
- `integrations/gate/evaluateAiGate.ts`: añade contrato machine-readable `skills_contract` en salida de gate y bloqueo explícito en `PRE_COMMIT/PRE_PUSH/CI` con `EVIDENCE_SKILLS_CONTRACT_INCOMPLETE` cuando falla la cobertura.
|
|
357
|
+
- `integrations/mcp/preFlightCheck.ts`, `integrations/mcp/aiGateCheck.ts`, `integrations/mcp/autoExecuteAiStart.ts`: propagan `skills_contract` y remediación accionable del nuevo código de bloqueo.
|
|
358
|
+
- `integrations/lifecycle/cli.ts`, `scripts/framework-menu-consumer-preflight-lib.ts`: hints/pre-flight alineados con el contrato nuevo.
|
|
359
|
+
- `docs/CONFIGURATION.md`, `docs/USAGE.md`: contrato documentado para consumo operativo.
|
|
360
|
+
- Evidencia (2026-03-05):
|
|
361
|
+
- `npx --yes tsx@4.21.0 --test integrations/mcp/__tests__/aiGateCheck.test.ts integrations/mcp/__tests__/preFlightCheck.test.ts integrations/mcp/__tests__/autoExecuteAiStart.test.ts integrations/gate/__tests__/evaluateAiGate.test.ts` -> `29 pass / 0 fail`.
|
|
362
|
+
- `npx --yes tsx@4.21.0 --test integrations/lifecycle/__tests__/cli.test.ts` -> `32 pass / 0 fail`.
|
|
363
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
364
|
+
|
|
365
|
+
- ✅ PUMUKI-043: Ejecutar siguiente bug/mejora SAAS prioritaria de higiene temprana en `PRE_WRITE` (`PUMUKI-011`, issue `#626`) con guardas de worktree atómico y remediación determinista.
|
|
366
|
+
- Fix:
|
|
367
|
+
- `integrations/gate/evaluateAiGate.ts`: añade guard nativo de higiene en `PRE_WRITE` con umbrales configurables (`warn/block`) y códigos deterministas:
|
|
368
|
+
- `EVIDENCE_PREWRITE_WORKTREE_WARN`
|
|
369
|
+
- `EVIDENCE_PREWRITE_WORKTREE_OVER_LIMIT`
|
|
370
|
+
- Configuración por entorno:
|
|
371
|
+
- `PUMUKI_PREWRITE_WORKTREE_HYGIENE_ENABLED`
|
|
372
|
+
- `PUMUKI_PREWRITE_WORKTREE_WARN_THRESHOLD`
|
|
373
|
+
- `PUMUKI_PREWRITE_WORKTREE_BLOCK_THRESHOLD`
|
|
374
|
+
- `integrations/mcp/preFlightCheck.ts`, `integrations/mcp/autoExecuteAiStart.ts`, `scripts/framework-menu-consumer-preflight-lib.ts`, `integrations/lifecycle/cli.ts`: hints y remediación accionable alineados con los nuevos códigos.
|
|
375
|
+
- `docs/CONFIGURATION.md`, `docs/USAGE.md`: contrato y uso documentados.
|
|
376
|
+
- Evidencia (2026-03-05):
|
|
377
|
+
- `npx --yes tsx@4.21.0 --test integrations/gate/__tests__/evaluateAiGate.test.ts integrations/mcp/__tests__/preFlightCheck.test.ts integrations/mcp/__tests__/autoExecuteAiStart.test.ts` -> `32 pass / 0 fail`.
|
|
378
|
+
- `npx --yes tsx@4.21.0 --test integrations/lifecycle/__tests__/cli.test.ts` -> `32 pass / 0 fail`.
|
|
379
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
380
|
+
|
|
381
|
+
- ✅ PUMUKI-044: Ejecutar siguiente mejora SAAS prioritaria (`PUMUKI-M001`, issue `#627`) para bootstrap enterprise unificado en un solo flujo.
|
|
382
|
+
- Fix:
|
|
383
|
+
- `integrations/lifecycle/cli.ts`: nuevo comando `pumuki bootstrap [--enterprise] [--agent=<name>] [--json]` que orquesta `install + adapter wiring + doctor --deep`.
|
|
384
|
+
- Salida JSON/texto con resumen determinista de `install`, `mcp` y `doctor`, y retorno `exit 1` cuando `doctor` detecta bloqueos.
|
|
385
|
+
- `integrations/lifecycle/__tests__/cli.test.ts`: cobertura de parseo, flags inválidos y flujo integrado de bootstrap enterprise.
|
|
386
|
+
- Documentación actualizada: `README.md`, `docs/INSTALLATION.md`, `docs/USAGE.md`.
|
|
387
|
+
- Evidencia (2026-03-05):
|
|
388
|
+
- `npx --yes tsx@4.21.0 --test integrations/lifecycle/__tests__/cli.test.ts` -> `33 pass / 0 fail`.
|
|
389
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
390
|
+
- Issue upstream cerrada: `#627`.
|
|
391
|
+
|
|
392
|
+
- ✅ PUMUKI-045: Ejecutar siguiente mejora SAAS prioritaria (`PUMUKI-M003`, issue `#628`) para generador oficial de evidencia por `scenario_id` con validación de tests reales.
|
|
393
|
+
- Fix:
|
|
394
|
+
- Nuevo comando: `pumuki sdd evidence --scenario-id=<id> --test-command=<command> --test-status=passed|failed [--test-output=<path>] [--from-evidence=<path>] [--dry-run] [--json]`.
|
|
395
|
+
- `integrations/sdd/evidenceScaffold.ts`: scaffolding determinista de `.pumuki/artifacts/pumuki-evidence-v1.json` con validación hard de `scenario_id`, metadatos reales de test y baseline de `.ai_evidence.json` válido.
|
|
396
|
+
- `integrations/lifecycle/cli.ts`: parseo/validación/ejecución del nuevo subcomando SDD `evidence`.
|
|
397
|
+
- Cobertura nueva:
|
|
398
|
+
- `integrations/sdd/__tests__/evidenceScaffold.test.ts`
|
|
399
|
+
- `integrations/lifecycle/__tests__/cli.test.ts`
|
|
400
|
+
- Documentación operativa: `docs/USAGE.md`.
|
|
401
|
+
- Evidencia (2026-03-05):
|
|
402
|
+
- `npx --yes tsx@4.21.0 --test integrations/sdd/__tests__/evidenceScaffold.test.ts integrations/lifecycle/__tests__/cli.test.ts` -> `38 pass / 0 fail`.
|
|
403
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
404
|
+
- Issue upstream cerrada: `#628`.
|
|
405
|
+
|
|
406
|
+
- ✅ PUMUKI-046: Ejecutar siguiente mejora SAAS prioritaria (`PUMUKI-M004`, issue `#629`) para plugin oficial de sync de estado `scenario_id <-> evidencias` con modo `dry-run/apply`.
|
|
407
|
+
- Fix:
|
|
408
|
+
- Nuevo subcomando SDD: `pumuki sdd state-sync [--scenario-id=<id>] [--status=todo|in_progress|blocked|done] [--from-evidence=<path>] [--board-path=<path>] [--force] [--dry-run] [--json]`.
|
|
409
|
+
- `integrations/sdd/stateSync.ts`: motor determinista de sincronización estado-escenario con:
|
|
410
|
+
- lectura/validación de evidencia fuente (`.pumuki/artifacts/pumuki-evidence-v1.json`),
|
|
411
|
+
- proyección de estado (`passed -> done`, `failed -> blocked` por defecto),
|
|
412
|
+
- artifact board canónico (`.pumuki/artifacts/scenario-state-sync-v1.json`),
|
|
413
|
+
- detección de conflicto y remediación explícita con `--force`.
|
|
414
|
+
- `integrations/lifecycle/cli.ts`: parseo/ejecución del subcomando y `exit code 1` en conflictos (`STATE_SYNC_CONFLICT`).
|
|
415
|
+
- Cobertura nueva:
|
|
416
|
+
- `integrations/sdd/__tests__/stateSync.test.ts`
|
|
417
|
+
- `integrations/lifecycle/__tests__/cli.test.ts` (parse + ejecución dry-run state-sync).
|
|
418
|
+
- Documentación operativa: `docs/USAGE.md`.
|
|
419
|
+
- Evidencia (2026-03-05):
|
|
420
|
+
- `npx --yes tsx@4.21.0 --test integrations/sdd/__tests__/stateSync.test.ts integrations/lifecycle/__tests__/cli.test.ts` -> `38 pass / 0 fail`.
|
|
421
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
422
|
+
- Issue upstream cerrada: `#629`.
|
|
423
|
+
|
|
424
|
+
- ✅ PUMUKI-047: Ejecutar siguiente mejora SAAS prioritaria (`PUMUKI-M005`, issue `#630`) para `policy reconcile` y coherencia AGENTS/skills/policy-as-code.
|
|
425
|
+
- Fix:
|
|
426
|
+
- Nuevo comando lifecycle: `pumuki policy reconcile [--json]`.
|
|
427
|
+
- `integrations/lifecycle/policyReconcile.ts`: reconciliación determinista de contrato `AGENTS.md` + `skills.lock.json` + snapshot de `policy-as-code` por stages (`PRE_COMMIT/PRE_PUSH/CI`).
|
|
428
|
+
- Detección explícita de drift con severidad/acción:
|
|
429
|
+
- `AGENTS_FILE_MISSING`
|
|
430
|
+
- `SKILLS_LOCK_MISSING` / `SKILLS_LOCK_INVALID`
|
|
431
|
+
- `AGENTS_REQUIRED_SKILL_MISSING_IN_LOCK`
|
|
432
|
+
- `POLICY_STAGE_INVALID`
|
|
433
|
+
- `POLICY_STAGE_NON_STRICT`
|
|
434
|
+
- `POLICY_HASH_DIVERGENCE`
|
|
435
|
+
- `integrations/lifecycle/cli.ts`: parse + ejecución runtime del subcomando `policy reconcile` con salida JSON/texto y `exit code 1` cuando hay bloqueos.
|
|
436
|
+
- Cobertura nueva/actualizada:
|
|
437
|
+
- `integrations/lifecycle/__tests__/policyReconcile.test.ts`
|
|
438
|
+
- `integrations/lifecycle/__tests__/cli.test.ts` (parse + rechazo de flags inválidos + ejecución runtime).
|
|
439
|
+
- Ayuda CLI actualizada con `pumuki policy reconcile [--json]`.
|
|
440
|
+
- Evidencia (2026-03-05):
|
|
441
|
+
- `npx --yes tsx@4.21.0 --test integrations/lifecycle/__tests__/policyReconcile.test.ts integrations/lifecycle/__tests__/cli.test.ts` -> `40 pass / 0 fail`.
|
|
442
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
443
|
+
- Cierre issue upstream: `#630`.
|
|
444
|
+
|
|
445
|
+
- ✅ PUMUKI-048: Sincronizar estado real del backlog SAAS (leyenda + bloqueos, issue `#631`) contra estado upstream ya implementado para eliminar falsos `⛔`/`⏳` y recuperar trazabilidad operativa.
|
|
446
|
+
- Fix:
|
|
447
|
+
- Reconciliación canónica `SAAS backlog -> upstream` con contraste explícito de referencias (`#614..#623`, `#624..#630`) usando `gh issue list --state all --json`.
|
|
448
|
+
- Resultado de sincronización: todas las referencias upstream del backlog SAAS están en `CLOSED`; los estados `⛔/⏳/🚧` del MD consumidor quedaron identificados como snapshot desfasado.
|
|
449
|
+
- Matriz de corrección aplicada en seguimiento canónico (este plan):
|
|
450
|
+
- Bloque histórico marcado en SAAS como `⛔` (`PUMUKI-014`, `PUMUKI-015`, `PUMUKI-003`, `PUMUKI-005`, `PUMUKI-007`, `PUMUKI-012`, `PUMUKI-013`, `PUMUKI-M007`, `PUMUKI-M006`, `PUMUKI-M002`) => `✅` por cierre upstream.
|
|
451
|
+
- Bloque histórico marcado en SAAS como `⏳/🚧` (`PUMUKI-002`, `PUMUKI-004`, `PUMUKI-009`, `PUMUKI-010`, `PUMUKI-011`, `PUMUKI-006`, `PUMUKI-M001`, `PUMUKI-M003`, `PUMUKI-M004`, `PUMUKI-M005`) => `✅` por implementación en tasks `PUMUKI-017..047`.
|
|
452
|
+
- No se toca código funcional del producto en esta task; cierre puramente de trazabilidad/visibilidad.
|
|
453
|
+
- Evidencia (2026-03-05):
|
|
454
|
+
- `gh issue list --state all --limit 120 --json number,state,title,url` -> referencias SAAS en estado `CLOSED`.
|
|
455
|
+
- `sed -n '1,240p' /Users/juancarlosmerlosalbarracin/Developer/Projects/SAAS:APP_SUPERMERCADOS/docs/pumuki/PUMUKI_BUGS_MEJORAS.md` -> snapshot consumidor aún desfasado frente a upstream.
|
|
456
|
+
- `git status --short --branch` -> worktree limpio tras sincronización documental.
|
|
457
|
+
- Cierre issue upstream: `#631`.
|
|
458
|
+
|
|
459
|
+
- ✅ PUMUKI-049: Ejecutar siguiente bug/mejora SAAS prioritaria (issue `#632`) para normalizar fixtures MCP de `package_version/lifecycle_version` a resolución dinámica y evitar drift de versiones obsoletas en tests/salidas.
|
|
460
|
+
- Fix:
|
|
461
|
+
- `integrations/mcp/__tests__/enterpriseServer.test.ts`:
|
|
462
|
+
- eliminación de hardcodes de versión (`6.3.16`) en fixtures MCP críticos;
|
|
463
|
+
- uso de `getCurrentPumukiVersion({ repoRoot })` para `package_version/lifecycle_version`;
|
|
464
|
+
- adaptación al contrato actual de evidencia (`evidence_chain`) con helper local basado en `computeEvidencePayloadHash`, evitando falsos bloqueos `EVIDENCE_CHAIN_INVALID`.
|
|
465
|
+
- Alcance limitado a tests MCP (sin cambios funcionales en runtime productivo).
|
|
466
|
+
- Evidencia (2026-03-05):
|
|
467
|
+
- `npx --yes tsx@4.21.0 --test integrations/mcp/__tests__/enterpriseServer.test.ts` -> `14 pass / 0 fail`.
|
|
468
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
469
|
+
- Cierre issue upstream: `#632`.
|
|
470
|
+
|
|
471
|
+
- ✅ PUMUKI-050: Ejecutar siguiente bug/mejora SAAS prioritaria (issue `#633`) para normalizar fixtures lifecycle de `package_version/lifecycle_version` a resolución dinámica y evitar drift equivalente en `cli.test.ts`.
|
|
472
|
+
- Fix:
|
|
473
|
+
- `integrations/lifecycle/__tests__/cli.test.ts`:
|
|
474
|
+
- eliminación de hardcodes `6.3.26` en fixtures lifecycle de PRE_WRITE;
|
|
475
|
+
- resolución dinámica de versión con `getCurrentPumukiVersion({ repoRoot })` en:
|
|
476
|
+
- helper `writePreWriteEvidence(...)`,
|
|
477
|
+
- casos `prewrite-mcp-enforcement`,
|
|
478
|
+
- `prewrite-mcp-ready`,
|
|
479
|
+
- `prewrite-panel`.
|
|
480
|
+
- Sin cambios funcionales de producto; alcance limitado a robustez de tests/fixtures.
|
|
481
|
+
- Evidencia (2026-03-05):
|
|
482
|
+
- `rg -n "6\\.3\\.26|package_version: '6\\.|lifecycle_version: '6\\." integrations/lifecycle/__tests__/cli.test.ts` -> sin resultados.
|
|
483
|
+
- `npx --yes tsx@4.21.0 --test integrations/lifecycle/__tests__/cli.test.ts` -> `37 pass / 0 fail`.
|
|
484
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
485
|
+
- Cierre issue upstream: `#633`.
|
|
486
|
+
|
|
487
|
+
- ✅ PUMUKI-051: Ejecutar siguiente bug/mejora SAAS prioritaria (issue `#634`) para normalizar hardcodes residuales de versión en fixtures de `evidence/gate/telemetry/lifecycle/sdd` y cerrar el drift global.
|
|
488
|
+
- Fix:
|
|
489
|
+
- Normalización a versión dinámica con `getCurrentPumukiVersion()` en:
|
|
490
|
+
- `integrations/evidence/readEvidence.test.ts`
|
|
491
|
+
- `integrations/evidence/writeEvidence.test.ts`
|
|
492
|
+
- `integrations/evidence/schema.test.ts`
|
|
493
|
+
- `integrations/evidence/__tests__/buildEvidence.test.ts`
|
|
494
|
+
- `integrations/gate/__tests__/evaluateAiGate.test.ts`
|
|
495
|
+
- `integrations/telemetry/__tests__/gateTelemetry.test.ts`
|
|
496
|
+
- `integrations/lifecycle/__tests__/doctor.test.ts`
|
|
497
|
+
- `integrations/lifecycle/__tests__/preWriteAutomation.test.ts`
|
|
498
|
+
- `integrations/sdd/__tests__/evidenceScaffold.test.ts`
|
|
499
|
+
- Eliminados hardcodes de `package_version/lifecycle_version` para evitar drift cross-release.
|
|
500
|
+
- Evidencia (2026-03-05):
|
|
501
|
+
- `npx --yes tsx@4.21.0 --test integrations/evidence/readEvidence.test.ts integrations/evidence/writeEvidence.test.ts integrations/evidence/schema.test.ts integrations/evidence/__tests__/buildEvidence.test.ts integrations/gate/__tests__/evaluateAiGate.test.ts integrations/telemetry/__tests__/gateTelemetry.test.ts integrations/lifecycle/__tests__/doctor.test.ts integrations/lifecycle/__tests__/preWriteAutomation.test.ts integrations/sdd/__tests__/evidenceScaffold.test.ts` -> `97 pass / 0 fail`.
|
|
502
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
503
|
+
- Cierre issue upstream: `#634`.
|
|
504
|
+
|
|
505
|
+
- ✅ PUMUKI-052: Ejecutar siguiente bug/mejora SAAS prioritaria (issue `#635`) para normalizar hardcodes `producerVersion`/`producer_version` en tests de ingesta/operational-memory y eliminar drift residual de versión de productor.
|
|
506
|
+
- Fix:
|
|
507
|
+
- Normalización a versión dinámica (`getCurrentPumukiVersion()`) en:
|
|
508
|
+
- `integrations/lifecycle/__tests__/saasIngestionAuth.test.ts`
|
|
509
|
+
- `integrations/lifecycle/__tests__/saasIngestionAudit.test.ts`
|
|
510
|
+
- `integrations/lifecycle/__tests__/saasIngestionGovernance.test.ts`
|
|
511
|
+
- `integrations/lifecycle/__tests__/saasIngestionIdempotency.test.ts`
|
|
512
|
+
- `integrations/lifecycle/__tests__/saasIngestionTransport.test.ts`
|
|
513
|
+
- `integrations/lifecycle/__tests__/saasIngestionContract.test.ts`
|
|
514
|
+
- `integrations/lifecycle/__tests__/operationalMemorySnapshot.test.ts`
|
|
515
|
+
- `integrations/lifecycle/__tests__/operationalMemoryContract.test.ts`
|
|
516
|
+
- Eliminados hardcodes `6.3.17` en `producerVersion/producer_version` de fixtures contractuales.
|
|
517
|
+
- Evidencia (2026-03-05):
|
|
518
|
+
- `npx --yes tsx@4.21.0 --test integrations/lifecycle/__tests__/saasIngestionAuth.test.ts integrations/lifecycle/__tests__/saasIngestionAudit.test.ts integrations/lifecycle/__tests__/saasIngestionGovernance.test.ts integrations/lifecycle/__tests__/saasIngestionIdempotency.test.ts integrations/lifecycle/__tests__/saasIngestionTransport.test.ts integrations/lifecycle/__tests__/saasIngestionContract.test.ts integrations/lifecycle/__tests__/operationalMemorySnapshot.test.ts integrations/lifecycle/__tests__/operationalMemoryContract.test.ts` -> `37 pass / 0 fail`.
|
|
519
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
520
|
+
- Cierre issue upstream: `#635`.
|
|
521
|
+
|
|
522
|
+
- ✅ PUMUKI-053: Ejecutar siguiente mejora prioritaria (issue `#636`) para reconciliar automáticamente backlog consumidor vs estado real de issues upstream (`dry-run/apply`) y evitar estados falsos `⛔/⏳`.
|
|
523
|
+
- Fix:
|
|
524
|
+
- Nuevo módulo: `scripts/reconcile-consumer-backlog-issues-lib.ts`
|
|
525
|
+
- parseo de filas markdown con `issue_ref + emoji`,
|
|
526
|
+
- reconciliación por estado real de issue (`OPEN/CLOSED`),
|
|
527
|
+
- modo `dry-run/apply` con reporte de cambios.
|
|
528
|
+
- Nuevo comando: `scripts/reconcile-consumer-backlog-issues.ts`
|
|
529
|
+
- flags: `--file`, `--repo`, `--apply`, `--json`.
|
|
530
|
+
- Tests nuevos:
|
|
531
|
+
- `scripts/__tests__/reconcile-consumer-backlog-issues.test.ts`.
|
|
532
|
+
- Script npm añadido:
|
|
533
|
+
- `validation:backlog-reconcile`.
|
|
534
|
+
- Evidencia (2026-03-05):
|
|
535
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/reconcile-consumer-backlog-issues.test.ts` -> `4 pass / 0 fail`.
|
|
536
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
537
|
+
- Cierre issue upstream: `#636`.
|
|
538
|
+
|
|
539
|
+
- ✅ PUMUKI-054: Ejecutar siguiente mejora prioritaria de hardening enterprise (issue `#637`) para policy-as-code versionada/firmada con validación estricta y trazabilidad completa en gates.
|
|
540
|
+
- Fix:
|
|
541
|
+
- `integrations/lifecycle/policyReconcile.ts` añade modo estricto (`strict`) con bloqueo determinista de stages no firmados o sin contrato file-backed.
|
|
542
|
+
- `integrations/lifecycle/cli.ts` soporta `pumuki policy reconcile --strict` (incluyendo shorthand `pumuki policy --strict`) y reporta `strict_requested`.
|
|
543
|
+
- Cobertura de regresión en:
|
|
544
|
+
- `integrations/lifecycle/__tests__/policyReconcile.test.ts`
|
|
545
|
+
- `integrations/lifecycle/__tests__/cli.test.ts`
|
|
546
|
+
- Evidencia (2026-03-05):
|
|
547
|
+
- `npx --yes tsx@4.21.0 --test integrations/lifecycle/__tests__/policyReconcile.test.ts integrations/lifecycle/__tests__/cli.test.ts` -> `44 pass / 0 fail`.
|
|
548
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
549
|
+
- Cierre issue upstream: `#637`.
|
|
550
|
+
|
|
551
|
+
- ✅ PUMUKI-055: Ejecutar siguiente mejora operativa (issue `#638`) para aplicar reconciliación automática del backlog SAAS y normalizar leyenda/estado real sin drift.
|
|
552
|
+
- Fix:
|
|
553
|
+
- `scripts/reconcile-consumer-backlog-issues-lib.ts` ahora sincroniza también `## Estado de este backlog` con conteos reales desde tablas operativas.
|
|
554
|
+
- Salida JSON del reconciliador enriquecida con `summaryUpdated` + `summary` (closed/inProgress/pending/blocked + IDs en construcción/bloqueados).
|
|
555
|
+
- Cobertura de regresión ampliada en:
|
|
556
|
+
- `scripts/__tests__/reconcile-consumer-backlog-issues.test.ts`.
|
|
557
|
+
- Evidencia (2026-03-05):
|
|
558
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/reconcile-consumer-backlog-issues.test.ts` -> `7 pass / 0 fail`.
|
|
559
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
560
|
+
- Aplicación real sobre consumer SAAS:
|
|
561
|
+
- `npm run -s validation:backlog-reconcile -- --file=\"/Users/juancarlosmerlosalbarracin/Developer/Projects/SAAS:APP_SUPERMERCADOS/docs/pumuki/PUMUKI_BUGS_MEJORAS.md\" --repo=SwiftEnProfundidad/ast-intelligence-hooks --apply --json`
|
|
562
|
+
- Resultado: `summaryUpdated=true`, `closed=14`, `inProgress=1`, `pending=7`, `blocked=0`.
|
|
563
|
+
- Cierre issue upstream: `#638`.
|
|
564
|
+
|
|
565
|
+
- ✅ PUMUKI-056: Ejecutar siguiente mejora operativa (issue `#639`) para soportar mapeo `ID consumidor -> issue upstream` en el reconciliador y cerrar filas `Pendiente` sin referencia.
|
|
566
|
+
- Fix:
|
|
567
|
+
- `scripts/reconcile-consumer-backlog-issues-lib.ts` añade `idIssueMap` y `referenceChanges` para inyectar referencias `#<issue>` en filas sin issue y reconciliarlas en el mismo ciclo.
|
|
568
|
+
- `scripts/reconcile-consumer-backlog-issues.ts` incorpora `--id-issue-map=<json>` con validación de contrato (`PUMUKI-(M)?NNN -> issue number`).
|
|
569
|
+
- Cobertura de regresión extendida:
|
|
570
|
+
- `scripts/__tests__/reconcile-consumer-backlog-issues.test.ts` (mapping + reconciliación integrada).
|
|
571
|
+
- Evidencia (2026-03-05):
|
|
572
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/reconcile-consumer-backlog-issues.test.ts` -> `9 pass / 0 fail`.
|
|
573
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
574
|
+
- Aplicación real sobre consumer SAAS con mapping:
|
|
575
|
+
- `npm run -s validation:backlog-reconcile -- --file=\"/Users/juancarlosmerlosalbarracin/Developer/Projects/SAAS:APP_SUPERMERCADOS/docs/pumuki/PUMUKI_BUGS_MEJORAS.md\" --repo=SwiftEnProfundidad/ast-intelligence-hooks --id-issue-map=/tmp/pumuki_saas_id_issue_map.json --apply --json`
|
|
576
|
+
- Resultado: `referenceChanges=6`, `summary.closed=20`, `summary.inProgress=1`, `summary.pending=1`, `summary.blocked=0`.
|
|
577
|
+
- Cierre issue upstream: `#639`.
|
|
578
|
+
|
|
579
|
+
- ✅ PUMUKI-057: Ejecutar siguiente task de trazabilidad residual (issue `#640`) para cerrar `PUMUKI-004` con referencia upstream canónica y dejar backlog SAAS sin pendientes fantasma.
|
|
580
|
+
- Fix:
|
|
581
|
+
- Validación explícita de cobertura `core.hooksPath` en lifecycle (`hookManager/status/doctor`) sin regresiones.
|
|
582
|
+
- Referencia upstream canónica para residual `PUMUKI-004` con issue `#640`.
|
|
583
|
+
- Reconciliación aplicada sobre consumer SAAS con mapping extendido (`PUMUKI-004 -> #640` y `PUMUKI-002 -> #641`) hasta `summary.closed=22`.
|
|
584
|
+
- Evidencia (2026-03-05):
|
|
585
|
+
- `npx --yes tsx@4.21.0 --test integrations/lifecycle/__tests__/hookManager.test.ts integrations/lifecycle/__tests__/status.test.ts integrations/lifecycle/__tests__/doctor.test.ts` -> `23 pass / 0 fail`.
|
|
586
|
+
- `npx --yes tsx@4.21.0 --test integrations/git/__tests__/gitAtomicity.test.ts integrations/git/__tests__/stageRunners.test.ts` -> `30 pass / 0 fail`.
|
|
587
|
+
- `npm run -s validation:backlog-reconcile -- --file=\"/Users/juancarlosmerlosalbarracin/Developer/Projects/SAAS:APP_SUPERMERCADOS/docs/pumuki/PUMUKI_BUGS_MEJORAS.md\" --repo=SwiftEnProfundidad/ast-intelligence-hooks --id-issue-map=/tmp/pumuki_saas_id_issue_map.json --apply --json` -> `closed=22, inProgress=0, pending=0, blocked=0`.
|
|
588
|
+
- Cierres upstream: `#640`, `#641`.
|
|
589
|
+
|
|
590
|
+
- ✅ PUMUKI-058: Ejecutar siguiente mejora de claridad operativa (issue `#642`) para sincronizar automáticamente la narrativa de “Próximo paso operativo” cuando el backlog quede 100% cerrado.
|
|
591
|
+
- Fix:
|
|
592
|
+
- `scripts/reconcile-consumer-backlog-issues-lib.ts` añade sincronización del bloque narrativo de próximo paso en estado cerrado (`nextStepUpdated`).
|
|
593
|
+
- `scripts/reconcile-consumer-backlog-issues.ts` expone `next_step_updated=yes|no` en salida humana.
|
|
594
|
+
- Cobertura de regresión ampliada en:
|
|
595
|
+
- `scripts/__tests__/reconcile-consumer-backlog-issues.test.ts` (escenario de cierre total con narrativa legacy obsoleta).
|
|
596
|
+
- Evidencia (2026-03-05):
|
|
597
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/reconcile-consumer-backlog-issues.test.ts` -> `10 pass / 0 fail`.
|
|
598
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
599
|
+
- Aplicación real sobre consumer SAAS:
|
|
600
|
+
- `npm run -s validation:backlog-reconcile -- --file=\"/Users/juancarlosmerlosalbarracin/Developer/Projects/SAAS:APP_SUPERMERCADOS/docs/pumuki/PUMUKI_BUGS_MEJORAS.md\" --repo=SwiftEnProfundidad/ast-intelligence-hooks --id-issue-map=/tmp/pumuki_saas_id_issue_map.json --apply --json`
|
|
601
|
+
- Resultado: `nextStepUpdated=true`, `closed=22`, `inProgress=0`, `pending=0`, `blocked=0`.
|
|
602
|
+
- Cierre issue upstream: `#642`.
|
|
603
|
+
|
|
604
|
+
- ✅ PUMUKI-059: Mantener ciclo de vigilancia activa para nuevos hallazgos SAAS (sin tocar código consumidor), abriendo issue upstream y ejecutando fix en Pumuki core al primer bug/mejora nueva.
|
|
605
|
+
- Fix:
|
|
606
|
+
- Nuevo watcher operativo de backlog consumidor:
|
|
607
|
+
- `scripts/watch-consumer-backlog-lib.ts`
|
|
608
|
+
- `scripts/watch-consumer-backlog.ts`
|
|
609
|
+
- `npm run validation:backlog-watch`
|
|
610
|
+
- Clasificación automática:
|
|
611
|
+
- `needs_issue` (incidencia sin issue upstream),
|
|
612
|
+
- `drift_closed_issue` (estado no cerrado con issue cerrada),
|
|
613
|
+
- `active_issue` (trabajo realmente abierto).
|
|
614
|
+
- Salida JSON/humana + exit code determinista para CI (`--no-fail` opcional).
|
|
615
|
+
- Evidencia (2026-03-05):
|
|
616
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/watch-consumer-backlog.test.ts scripts/__tests__/reconcile-consumer-backlog-issues.test.ts` -> `13 pass / 0 fail`.
|
|
617
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
618
|
+
- Ejecución real sobre SAAS:
|
|
619
|
+
- `npm run -s validation:backlog-watch -- --file=\"/Users/juancarlosmerlosalbarracin/Developer/Projects/SAAS:APP_SUPERMERCADOS/docs/pumuki/PUMUKI_BUGS_MEJORAS.md\" --repo=SwiftEnProfundidad/ast-intelligence-hooks --json`
|
|
620
|
+
- Resultado: `nonClosedEntries=0`, `hasActionRequired=false`.
|
|
621
|
+
- Cierre issue upstream: `#643`.
|
|
622
|
+
|
|
623
|
+
- ✅ PUMUKI-060: Iniciar vigilancia activa del feedback canónico de RuralGo usando `backlog-watch` (sin tocar código del consumer) y abrir ciclo inmediato ante nuevos hallazgos.
|
|
624
|
+
- Fix:
|
|
625
|
+
- `watch-consumer-backlog` ampliado para formato RuralGo:
|
|
626
|
+
- soporte de estados textuales (`REPORTED/OPEN/FIXED/CLOSED/BLOCKED/PENDING/IN_PROGRESS`),
|
|
627
|
+
- soporte de IDs canónicos (`PUMUKI-INC-*`, `FP-*`, `AST-GAP-*`),
|
|
628
|
+
- dedupe por ID para evitar ruido resumen+detalle,
|
|
629
|
+
- parse robusto de `issue_ref` priorizando columnas derechas.
|
|
630
|
+
- Evidencia (2026-03-05):
|
|
631
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/watch-consumer-backlog.test.ts` -> `7 pass / 0 fail`.
|
|
632
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
633
|
+
- Watcher real RuralGo (`--no-fail`):
|
|
634
|
+
- `npm run -s validation:backlog-watch -- --file=\"/Users/juancarlosmerlosalbarracin/Developer/Projects/R_GO/docs/technical/08-validation/refactor/pumuki-integration-feedback.md\" --repo=SwiftEnProfundidad/ast-intelligence-hooks --json --no-fail`
|
|
635
|
+
- Resultado consolidado: `entriesScanned=106`, `nonClosedEntries=9`, `needsIssue=8`, `driftClosedIssue=1`, `hasActionRequired=true`.
|
|
636
|
+
- Cierres upstream: `#644`, `#645`.
|
|
637
|
+
|
|
638
|
+
- ✅ PUMUKI-061: Ejecutar primer fix crítico del paquete RuralGo detectado por watcher (`PUMUKI-INC-059 / FP-030`) en `pre-push` bootstrap/upstream.
|
|
639
|
+
- Fix:
|
|
640
|
+
- `integrations/git/stageRunners.ts`:
|
|
641
|
+
- `PRE_PUSH` sin upstream deja de bloquear en ejecución manual de `pumuki-pre-push` cuando existe base bootstrap resoluble (`develop/main`).
|
|
642
|
+
- Mantiene `fail-safe` si no existe base bootstrap válida (`HEAD`).
|
|
643
|
+
- `integrations/git/__tests__/stageRunners.test.ts`:
|
|
644
|
+
- nueva cobertura RED/GREEN para fallback bootstrap sin stdin,
|
|
645
|
+
- no-regresión para bloqueo accionable cuando base bootstrap no es resoluble.
|
|
646
|
+
- Evidencia (2026-03-05):
|
|
647
|
+
- `npx --yes tsx@4.21.0 --test integrations/git/__tests__/stageRunners.test.ts` -> `23 pass / 0 fail`.
|
|
648
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
649
|
+
- Cierre issue upstream: `#646`.
|
|
650
|
+
|
|
651
|
+
- ✅ PUMUKI-062: Ejecutar siguiente regresión prioritaria del watcher RuralGo (`PUMUKI-INC-048`) sobre no-determinismo `PRE_WRITE` (primer intento bloquea, rerun pasa).
|
|
652
|
+
- Fix:
|
|
653
|
+
- `integrations/lifecycle/preWriteAutomation.ts`:
|
|
654
|
+
- `EVIDENCE_GATE_BLOCKED` entra en el set de violaciones auto-curables de `PRE_WRITE`.
|
|
655
|
+
- El flujo de auto-refresh ya no requiere rerun manual de hooks cuando la evidencia quedó bloqueada y es recuperable.
|
|
656
|
+
- `integrations/lifecycle/__tests__/preWriteAutomation.test.ts`:
|
|
657
|
+
- nuevo test de regresión para `EVIDENCE_GATE_BLOCKED` con refresh determinista en primer intento.
|
|
658
|
+
- Evidencia (2026-03-05):
|
|
659
|
+
- `npx --yes tsx@4.21.0 --test integrations/lifecycle/__tests__/preWriteAutomation.test.ts` -> `3 pass / 0 fail`.
|
|
660
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
661
|
+
- Cierre issue upstream: `#647`.
|
|
662
|
+
|
|
663
|
+
- ✅ PUMUKI-063: Ejecutar siguiente bug prioritaria del watcher RuralGo (`PUMUKI-INC-060 / FP-030`) sobre falso positivo de coverage en `PRE_PUSH` por upstream desalineado.
|
|
664
|
+
- Fix:
|
|
665
|
+
- `integrations/git/stageRunners.ts`:
|
|
666
|
+
- detección explícita de upstream desalineado para ramas topic (`feature/bugfix/refactor/chore/docs`) cuando el tracking apunta a `main/develop` y el delta `ahead` supera umbral operativo.
|
|
667
|
+
- bloqueo determinista con código `PRE_PUSH_UPSTREAM_MISALIGNED` y remediación accionable (alinear upstream al branch real).
|
|
668
|
+
- `integrations/git/resolveGitRefs.ts`:
|
|
669
|
+
- nuevos resolvers para branch actual, tracking upstream simbólico y `ahead/behind`.
|
|
670
|
+
- `integrations/git/__tests__/stageRunners.test.ts`:
|
|
671
|
+
- nuevo test RED/GREEN para confirmar bloqueo específico por misalignment y evitar falso `skills scope` blocking posterior.
|
|
672
|
+
- Evidencia (2026-03-05):
|
|
673
|
+
- `npx --yes tsx@4.21.0 --test integrations/git/__tests__/stageRunners.test.ts` -> `24 pass / 0 fail`.
|
|
674
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
675
|
+
- Cierre issue upstream: `#648`.
|
|
676
|
+
|
|
677
|
+
- ✅ PUMUKI-064: Ejecutar siguiente bug prioritaria del watcher RuralGo (`PUMUKI-INC-061`) sobre incoherencia de metadata de versión en payload de lifecycle (`runtime` vs `consumer-installed`).
|
|
678
|
+
- Fix:
|
|
679
|
+
- `integrations/lifecycle/packageInfo.ts`:
|
|
680
|
+
- nuevo contrato `resolvePumukiVersionMetadata()` con `source`, `runtimeVersion` y `consumerInstalledVersion`.
|
|
681
|
+
- `integrations/evidence/repoState.ts`:
|
|
682
|
+
- separación explícita en payload lifecycle:
|
|
683
|
+
- `package_version` (consumer instalada),
|
|
684
|
+
- `lifecycle_version` (runtime ejecutando),
|
|
685
|
+
- `package_version_source`,
|
|
686
|
+
- `package_version_runtime`,
|
|
687
|
+
- `package_version_installed`.
|
|
688
|
+
- `integrations/lifecycle/__tests__/packageInfo.test.ts`:
|
|
689
|
+
- cobertura RED/GREEN para metadata explícita de fuentes de versión.
|
|
690
|
+
- Evidencia (2026-03-05):
|
|
691
|
+
- `npx --yes tsx@4.21.0 --test integrations/lifecycle/__tests__/packageInfo.test.ts` -> `7 pass / 0 fail`.
|
|
692
|
+
- `npx --yes tsx@4.21.0 --test integrations/evidence/__tests__/buildEvidence.test.ts` -> `29 pass / 0 fail`.
|
|
693
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
694
|
+
- Cierre issue upstream: `#649`.
|
|
695
|
+
|
|
696
|
+
- ✅ PUMUKI-065: Ejecutar siguiente bug prioritaria del watcher RuralGo (`PUMUKI-INC-062`) sobre incoherencia `ai_gate_check` vs hooks (`pre-commit/pre-push`).
|
|
697
|
+
- Fix:
|
|
698
|
+
- `integrations/mcp/aiGateCheck.ts`:
|
|
699
|
+
- nuevo `consistency_hint` en salida MCP para declarar comparabilidad con hooks.
|
|
700
|
+
- cuando stage hook (`PRE_COMMIT/PRE_PUSH/CI`) bloquea por evidencia refrescable, marca `reason_code=HOOK_RUNNER_CAN_REFRESH_EVIDENCE` con mensaje de precedencia explícita.
|
|
701
|
+
- `integrations/mcp/__tests__/aiGateCheck.test.ts`:
|
|
702
|
+
- nuevo test RED/GREEN para validar hint explícito en `PRE_PUSH` bloqueado por evidencia.
|
|
703
|
+
- Evidencia (2026-03-05):
|
|
704
|
+
- `npx --yes tsx@4.21.0 --test integrations/mcp/__tests__/aiGateCheck.test.ts integrations/mcp/__tests__/preFlightCheck.test.ts` -> `5 pass / 0 fail`.
|
|
705
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
706
|
+
- Cierre issue upstream: `#650`.
|
|
707
|
+
|
|
708
|
+
- ✅ PUMUKI-066: Ejecutar siguiente bug prioritaria del watcher RuralGo (`PUMUKI-INC-057`) sobre fallo local `--no-install` con `MODULE_NOT_FOUND` en runtime empaquetado.
|
|
709
|
+
- Fix:
|
|
710
|
+
- `scripts/package-install-smoke-consumer-npm-lib.ts`:
|
|
711
|
+
- nueva verificación obligatoria `verifyInstalledPumukiBinaryVersion()` con `npx --no-install pumuki --version`.
|
|
712
|
+
- bloqueo explícito ante patrones fatales (`Cannot find module`, `ERR_MODULE_NOT_FOUND`, etc.).
|
|
713
|
+
- `scripts/package-install-smoke-consumer-repo-setup-lib.ts`:
|
|
714
|
+
- el setup smoke incorpora check de binario local antes de continuar gates.
|
|
715
|
+
- `scripts/__tests__/package-install-smoke-consumer-npm-lib.test.ts`:
|
|
716
|
+
- tests RED/GREEN para path healthy y para regresión `MODULE_NOT_FOUND`.
|
|
717
|
+
- Evidencia (2026-03-05):
|
|
718
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/package-install-smoke-consumer-npm-lib.test.ts scripts/__tests__/package-install-smoke-repo-setup-lib.test.ts scripts/__tests__/package-smoke-workflow-contract.test.ts` -> `7 pass / 0 fail`.
|
|
719
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
720
|
+
- Cierre issue upstream: `#651`.
|
|
721
|
+
|
|
722
|
+
- ✅ PUMUKI-067: Ejecutar mejora DX para watcher (`backlog-watch`) con mapeo opcional `ID -> issue` y eliminar `needsIssue` fantasma en backlogs consumidores.
|
|
723
|
+
- Fix:
|
|
724
|
+
- `scripts/watch-consumer-backlog.ts`:
|
|
725
|
+
- nuevo flag `--id-issue-map=<json-path>` con carga de mapeo robusta.
|
|
726
|
+
- `scripts/watch-consumer-backlog-lib.ts`:
|
|
727
|
+
- clasificación soporta `idIssueMap` para resolver `needsIssue` cuando hay issue canónica fuera del MD consumidor.
|
|
728
|
+
- `scripts/__tests__/watch-consumer-backlog.test.ts`:
|
|
729
|
+
- nuevo test RED/GREEN de mapeo `ID -> issue` evitando falsos `needsIssue`.
|
|
730
|
+
- Evidencia (2026-03-05):
|
|
731
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/watch-consumer-backlog.test.ts scripts/__tests__/reconcile-consumer-backlog-issues.test.ts` -> `18 pass / 0 fail`.
|
|
732
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
733
|
+
- Cierre issue upstream: `#652`.
|
|
734
|
+
|
|
735
|
+
- ✅ PUMUKI-068: Ejecutar mejora DX siguiente para watcher con resolución de mapeo desde fuente canónica sin JSON manual ad hoc.
|
|
736
|
+
- Fix:
|
|
737
|
+
- `scripts/watch-consumer-backlog.ts`:
|
|
738
|
+
- nuevo flag `--id-issue-map-from=<md-path>` para extraer mapeo automáticamente desde markdown canónico.
|
|
739
|
+
- merge determinista de mapas (`--id-issue-map-from` + `--id-issue-map`), priorizando override explícito del JSON.
|
|
740
|
+
- `scripts/watch-consumer-backlog-lib.ts`:
|
|
741
|
+
- nuevo helper `collectBacklogIdIssueMap(markdown)` para extraer `ID -> #issue`.
|
|
742
|
+
- `scripts/__tests__/watch-consumer-backlog.test.ts`:
|
|
743
|
+
- cobertura RED/GREEN para extracción canónica de mapeo desde markdown.
|
|
744
|
+
- Evidencia (2026-03-05):
|
|
745
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/watch-consumer-backlog.test.ts scripts/__tests__/reconcile-consumer-backlog-issues.test.ts` -> `19 pass / 0 fail`.
|
|
746
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
747
|
+
- Cierre issue upstream: `#653`.
|
|
748
|
+
|
|
749
|
+
- ✅ PUMUKI-069: Ejecutar mejora DX siguiente para watcher con enriquecimiento opcional de mapeo `ID->issue` por búsqueda GitHub cuando el ID no está en markdown local.
|
|
750
|
+
- Fix:
|
|
751
|
+
- `scripts/watch-consumer-backlog-lib.ts`:
|
|
752
|
+
- nuevo resolver opcional `resolveIssueNumberById` en `runBacklogWatch`.
|
|
753
|
+
- implementación GH nativa `resolveIssueNumberByIdWithGh` con búsqueda por token de ID (`title/body`) y selección determinista del issue candidato.
|
|
754
|
+
- precedencia de resolución: `issue en fila` -> `idIssueMap` -> `lookup GH`.
|
|
755
|
+
- `scripts/watch-consumer-backlog.ts`:
|
|
756
|
+
- nuevo flag `--resolve-missing-via-gh` para habilitar enriquecimiento opcional por búsqueda upstream.
|
|
757
|
+
- `scripts/__tests__/watch-consumer-backlog.test.ts`:
|
|
758
|
+
- tests RED/GREEN para validar enriquecimiento por resolver de ID y que no re-consulta IDs ya resueltos por mapping local.
|
|
759
|
+
- Evidencia (2026-03-05):
|
|
760
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/watch-consumer-backlog.test.ts scripts/__tests__/reconcile-consumer-backlog-issues.test.ts` -> `21 pass / 0 fail`.
|
|
761
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
762
|
+
- Cierre issue upstream: `#654`.
|
|
763
|
+
|
|
764
|
+
- ✅ PUMUKI-070: Ejecutar mejora DX siguiente para watcher con trazabilidad explícita de origen de resolución (`mapa` vs `lookup GH`).
|
|
765
|
+
- Fix:
|
|
766
|
+
- `scripts/watch-consumer-backlog-lib.ts`:
|
|
767
|
+
- nuevo bloque `resolution` en `BacklogWatchResult` con listas deterministas:
|
|
768
|
+
- `resolvedByMap`
|
|
769
|
+
- `resolvedByGhLookup`
|
|
770
|
+
- `unresolvedIds`
|
|
771
|
+
- trazabilidad por origen integrada en el flujo de resolución (`fila -> mapa -> lookup GH`).
|
|
772
|
+
- `scripts/watch-consumer-backlog.ts`:
|
|
773
|
+
- salida humana ampliada con contadores/listados de resolución por origen.
|
|
774
|
+
- `scripts/__tests__/watch-consumer-backlog.test.ts`:
|
|
775
|
+
- cobertura RED/GREEN para verificar `resolvedByMap`, `resolvedByGhLookup` y `unresolvedIds`.
|
|
776
|
+
- Evidencia (2026-03-05):
|
|
777
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/watch-consumer-backlog.test.ts scripts/__tests__/reconcile-consumer-backlog-issues.test.ts` -> `22 pass / 0 fail`.
|
|
778
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
779
|
+
- Cierre issue upstream: `#655`.
|
|
780
|
+
|
|
781
|
+
- ✅ PUMUKI-071: Ejecutar mejora DX siguiente para reconciliador de backlog con resolución opcional `ID->issue` sin mapa manual.
|
|
782
|
+
- Fix:
|
|
783
|
+
- `scripts/reconcile-consumer-backlog-issues-lib.ts`:
|
|
784
|
+
- nuevo `resolveIssueNumberById` opcional en `runBacklogIssuesReconcile`.
|
|
785
|
+
- resolución de referencias pendientes por orden determinista:
|
|
786
|
+
- `idIssueMap` explícito
|
|
787
|
+
- lookup opcional por ID (si sigue pendiente).
|
|
788
|
+
- soporte de IDs extendidos (`PUMUKI-INC-*`, `FP-*`, `AST-GAP-*`) para reconciliación.
|
|
789
|
+
- `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
790
|
+
- nuevo flag `--resolve-missing-via-gh` que reutiliza resolver GH del watcher.
|
|
791
|
+
- validación de `--id-issue-map` ampliada a IDs extendidos.
|
|
792
|
+
- `scripts/__tests__/reconcile-consumer-backlog-issues.test.ts`:
|
|
793
|
+
- tests RED/GREEN para:
|
|
794
|
+
- resolver referencia pendiente vía resolver por ID,
|
|
795
|
+
- prioridad de `idIssueMap` sobre lookup para evitar consultas redundantes.
|
|
796
|
+
- Evidencia (2026-03-05):
|
|
797
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/reconcile-consumer-backlog-issues.test.ts scripts/__tests__/watch-consumer-backlog.test.ts` -> `24 pass / 0 fail`.
|
|
798
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
799
|
+
- Cierre issue upstream: `#656`.
|
|
800
|
+
|
|
801
|
+
- ✅ PUMUKI-072: Ejecutar mejora DX siguiente para reconciliador con paridad `--id-issue-map-from=<md>` (fuente canónica markdown).
|
|
802
|
+
- Fix:
|
|
803
|
+
- `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
804
|
+
- nuevo flag `--id-issue-map-from=<md-path>`.
|
|
805
|
+
- extracción de mapping canónico desde markdown usando `collectBacklogIdIssueMap`.
|
|
806
|
+
- merge determinista de mapas:
|
|
807
|
+
- base: `--id-issue-map-from`
|
|
808
|
+
- override explícito: `--id-issue-map`.
|
|
809
|
+
- `scripts/reconcile-consumer-backlog-issues-lib.ts`:
|
|
810
|
+
- helper `mergeBacklogIdIssueMaps(base, override)` para mantener precedencia estable.
|
|
811
|
+
- `scripts/__tests__/reconcile-consumer-backlog-issues.test.ts`:
|
|
812
|
+
- test RED/GREEN de merge con override explícito.
|
|
813
|
+
- Evidencia (2026-03-05):
|
|
814
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/reconcile-consumer-backlog-issues.test.ts scripts/__tests__/watch-consumer-backlog.test.ts` -> `25 pass / 0 fail`.
|
|
815
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
816
|
+
- Cierre issue upstream: `#657`.
|
|
817
|
+
|
|
818
|
+
- ✅ PUMUKI-073: Ejecutar mejora DX siguiente para reconciliador con trazabilidad explícita de source de mapping en salida.
|
|
819
|
+
- Fix:
|
|
820
|
+
- `scripts/reconcile-consumer-backlog-issues-lib.ts`:
|
|
821
|
+
- nuevo `mappingSource` en resultado (`none|json|markdown|merged`).
|
|
822
|
+
- nuevo bloque `referenceResolution` con:
|
|
823
|
+
- `resolvedByProvidedMap`
|
|
824
|
+
- `resolvedByLookup`
|
|
825
|
+
- `unresolvedReferenceIds`
|
|
826
|
+
- `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
827
|
+
- salida humana/JSON ahora expone `mapping_source` y contadores por origen.
|
|
828
|
+
- clasificación de source en runtime según inputs efectivos (`json`, `markdown`, `merged`, `none`).
|
|
829
|
+
- `scripts/__tests__/reconcile-consumer-backlog-issues.test.ts`:
|
|
830
|
+
- cobertura RED/GREEN para metadata de resolución y pendientes no resueltos.
|
|
831
|
+
- Evidencia (2026-03-05):
|
|
832
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/reconcile-consumer-backlog-issues.test.ts scripts/__tests__/watch-consumer-backlog.test.ts` -> `26 pass / 0 fail`.
|
|
833
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
834
|
+
- Cierre issue upstream: `#658`.
|
|
835
|
+
|
|
836
|
+
- ✅ PUMUKI-074: Ejecutar mejora DX siguiente para consolidar parsing/merge de mapping en módulo compartido.
|
|
837
|
+
- Fix:
|
|
838
|
+
- Nuevo módulo compartido: `scripts/backlog-id-issue-map-lib.ts`.
|
|
839
|
+
- validación de IDs permitidos y números de issue.
|
|
840
|
+
- parseo de JSON map.
|
|
841
|
+
- merge determinista de mapas (`base + override`).
|
|
842
|
+
- conversión `record -> ReadonlyMap`.
|
|
843
|
+
- `scripts/watch-consumer-backlog.ts` y `scripts/reconcile-consumer-backlog-issues.ts` migrados para usar helpers comunes.
|
|
844
|
+
- Eliminada duplicación de parser/merge local entre CLIs de backlog.
|
|
845
|
+
- Nueva cobertura dedicada:
|
|
846
|
+
- `scripts/__tests__/backlog-id-issue-map-lib.test.ts`.
|
|
847
|
+
- Evidencia (2026-03-05):
|
|
848
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-id-issue-map-lib.test.ts scripts/__tests__/reconcile-consumer-backlog-issues.test.ts scripts/__tests__/watch-consumer-backlog.test.ts` -> `29 pass / 0 fail`.
|
|
849
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
850
|
+
- Cierre issue upstream: `#659`.
|
|
851
|
+
|
|
852
|
+
- ✅ PUMUKI-075: Ejecutar mejora DX siguiente para alinear documentación/ayuda operativa de `watch` + `reconcile`.
|
|
853
|
+
- Fix:
|
|
854
|
+
- `docs/USAGE.md`:
|
|
855
|
+
- nueva guía operativa de backlog tooling (`watch` + `reconcile`) con precedencia de mapping clara:
|
|
856
|
+
- inline `#issue`
|
|
857
|
+
- `--id-issue-map-from`
|
|
858
|
+
- `--id-issue-map`
|
|
859
|
+
- `--resolve-missing-via-gh`
|
|
860
|
+
- ejemplos listos para uso real: watch JSON, reconcile dry-run y reconcile apply.
|
|
861
|
+
- Smoke de ayuda CLI ejecutado para validar alineación de opciones entre scripts.
|
|
862
|
+
- Evidencia (2026-03-05):
|
|
863
|
+
- `npx --yes tsx@4.21.0 scripts/watch-consumer-backlog.ts --help`
|
|
864
|
+
- `npx --yes tsx@4.21.0 scripts/reconcile-consumer-backlog-issues.ts --help`
|
|
865
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
866
|
+
- Cierre issue upstream: `#660`.
|
|
867
|
+
|
|
868
|
+
- ✅ PUMUKI-076: Ejecutar bug DX siguiente para normalizar `--help` a exit code `0` en scripts de backlog tooling.
|
|
869
|
+
- Fix:
|
|
870
|
+
- `scripts/watch-consumer-backlog.ts` y `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
871
|
+
- `--help/-h` ahora devuelve `exit code 0`.
|
|
872
|
+
- errores reales mantienen `exit code 1`.
|
|
873
|
+
- Nueva cobertura de proceso real:
|
|
874
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts` valida help vs unknown-arg en ambos scripts.
|
|
875
|
+
- Evidencia (2026-03-05):
|
|
876
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts scripts/__tests__/backlog-id-issue-map-lib.test.ts scripts/__tests__/reconcile-consumer-backlog-issues.test.ts scripts/__tests__/watch-consumer-backlog.test.ts` -> `33 pass / 0 fail`.
|
|
877
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
878
|
+
- Cierre issue upstream: `#661`.
|
|
879
|
+
|
|
880
|
+
- ✅ PUMUKI-077: Ejecutar mejora DX siguiente para versionar contrato JSON en backlog tooling (`schema_version` + `tool`).
|
|
881
|
+
- Fix:
|
|
882
|
+
- `scripts/watch-consumer-backlog.ts` y `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
883
|
+
- JSON ahora incluye metadatos de contrato:
|
|
884
|
+
- `tool`
|
|
885
|
+
- `schema_version`
|
|
886
|
+
- estructura previa se mantiene (sin breaking de campos existentes).
|
|
887
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
888
|
+
- nuevos tests de contrato JSON para ambos scripts.
|
|
889
|
+
- Evidencia (2026-03-05):
|
|
890
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts scripts/__tests__/backlog-id-issue-map-lib.test.ts scripts/__tests__/reconcile-consumer-backlog-issues.test.ts scripts/__tests__/watch-consumer-backlog.test.ts` -> `35 pass / 0 fail`.
|
|
891
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
892
|
+
- Cierre issue upstream: `#662`.
|
|
893
|
+
|
|
894
|
+
- ✅ PUMUKI-078: Ejecutar mejora DX siguiente para añadir `generated_at` al contrato JSON de backlog tooling.
|
|
895
|
+
- Fix:
|
|
896
|
+
- `scripts/watch-consumer-backlog.ts` y `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
897
|
+
- JSON ahora incluye `generated_at` (UTC ISO-8601) junto a `tool` y `schema_version`.
|
|
898
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
899
|
+
- validación de presencia/formato básico de `generated_at`.
|
|
900
|
+
- Evidencia (2026-03-05):
|
|
901
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts scripts/__tests__/backlog-id-issue-map-lib.test.ts scripts/__tests__/reconcile-consumer-backlog-issues.test.ts scripts/__tests__/watch-consumer-backlog.test.ts` -> `35 pass / 0 fail`.
|
|
902
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
903
|
+
- Cierre issue upstream: `#663`.
|
|
904
|
+
|
|
905
|
+
- ✅ PUMUKI-079: Ejecutar mejora DX siguiente para añadir `run_id` al contrato JSON de backlog tooling.
|
|
906
|
+
- Fix:
|
|
907
|
+
- `scripts/watch-consumer-backlog.ts` y `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
908
|
+
- JSON ahora incluye `run_id` (UUID v4) por ejecución.
|
|
909
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
910
|
+
- validación de formato UUID en `run_id` para ambos scripts.
|
|
911
|
+
- Evidencia (2026-03-05):
|
|
912
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts scripts/__tests__/backlog-id-issue-map-lib.test.ts scripts/__tests__/reconcile-consumer-backlog-issues.test.ts scripts/__tests__/watch-consumer-backlog.test.ts` -> `35 pass / 0 fail`.
|
|
913
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
914
|
+
- Cierre issue upstream: `#664`.
|
|
915
|
+
|
|
916
|
+
- ✅ PUMUKI-080: Ejecutar mejora DX siguiente para añadir `invocation` metadata al contrato JSON de backlog tooling.
|
|
917
|
+
- Fix:
|
|
918
|
+
- `scripts/watch-consumer-backlog.ts` y `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
919
|
+
- JSON ahora incluye `invocation` con contexto no sensible de ejecución (`repo`, flags clave, `mode`).
|
|
920
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
921
|
+
- validación de `invocation` en contrato JSON de ambos scripts.
|
|
922
|
+
- Evidencia (2026-03-05):
|
|
923
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts scripts/__tests__/backlog-id-issue-map-lib.test.ts scripts/__tests__/reconcile-consumer-backlog-issues.test.ts scripts/__tests__/watch-consumer-backlog.test.ts` -> `35 pass / 0 fail`.
|
|
924
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
925
|
+
- Cierre issue upstream: `#665`.
|
|
926
|
+
|
|
927
|
+
- ✅ PUMUKI-081: Ejecutar mejora DX siguiente para añadir bloque `compat` al contrato JSON de backlog tooling.
|
|
928
|
+
- Fix:
|
|
929
|
+
- `scripts/watch-consumer-backlog.ts` y `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
930
|
+
- JSON ahora incluye:
|
|
931
|
+
- `compat.min_reader_version`
|
|
932
|
+
- `compat.breaking_changes` (vacío en el estado actual).
|
|
933
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
934
|
+
- validación de bloque `compat` para ambos scripts.
|
|
935
|
+
- Evidencia (2026-03-05):
|
|
936
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts scripts/__tests__/backlog-id-issue-map-lib.test.ts scripts/__tests__/reconcile-consumer-backlog-issues.test.ts scripts/__tests__/watch-consumer-backlog.test.ts` -> `35 pass / 0 fail`.
|
|
937
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
938
|
+
- Cierre issue upstream: `#666`.
|
|
939
|
+
|
|
940
|
+
- ✅ PUMUKI-082: Ejecutar mejora DX siguiente para añadir `compat.is_backward_compatible` al contrato JSON.
|
|
941
|
+
- Fix:
|
|
942
|
+
- `scripts/watch-consumer-backlog.ts` y `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
943
|
+
- JSON ahora incluye `compat.is_backward_compatible`.
|
|
944
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
945
|
+
- validación de `compat.is_backward_compatible` en ambos scripts.
|
|
946
|
+
- Evidencia (2026-03-05):
|
|
947
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts scripts/__tests__/backlog-id-issue-map-lib.test.ts scripts/__tests__/reconcile-consumer-backlog-issues.test.ts scripts/__tests__/watch-consumer-backlog.test.ts` -> `35 pass / 0 fail`.
|
|
948
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
949
|
+
- Cierre issue upstream: `#667`.
|
|
950
|
+
|
|
951
|
+
- ✅ PUMUKI-083: Ejecutar mejora DX siguiente para añadir `compat.contract_id` al contrato JSON.
|
|
952
|
+
- Fix:
|
|
953
|
+
- `scripts/watch-consumer-backlog.ts` y `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
954
|
+
- JSON ahora incluye `compat.contract_id = backlog-tooling-json-v1`.
|
|
955
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
956
|
+
- validación explícita de `compat.contract_id` en ambos scripts.
|
|
957
|
+
- Evidencia (2026-03-05):
|
|
958
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts scripts/__tests__/backlog-id-issue-map-lib.test.ts scripts/__tests__/reconcile-consumer-backlog-issues.test.ts scripts/__tests__/watch-consumer-backlog.test.ts` -> `35 pass / 0 fail`.
|
|
959
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
960
|
+
- Cierre issue upstream: `#668`.
|
|
961
|
+
|
|
962
|
+
- ✅ PUMUKI-084: Ejecutar mejora DX siguiente para centralizar constantes de contrato JSON en módulo compartido.
|
|
963
|
+
- Fix:
|
|
964
|
+
- Nuevo módulo compartido: `scripts/backlog-json-contract-lib.ts`.
|
|
965
|
+
- `watch` y `reconcile` ahora consumen constantes compartidas para:
|
|
966
|
+
- `schema_version`
|
|
967
|
+
- `compat.contract_id`
|
|
968
|
+
- `compat.min_reader_version`
|
|
969
|
+
- Se elimina duplicación de literales de contrato entre scripts.
|
|
970
|
+
- Evidencia (2026-03-05):
|
|
971
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts scripts/__tests__/backlog-id-issue-map-lib.test.ts scripts/__tests__/reconcile-consumer-backlog-issues.test.ts scripts/__tests__/watch-consumer-backlog.test.ts` -> `35 pass / 0 fail`.
|
|
972
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
973
|
+
- Cierre issue upstream: `#669`.
|
|
974
|
+
|
|
975
|
+
- ✅ PUMUKI-085: Ejecutar mejora DX siguiente para añadir test unitario dedicado de constantes de contrato JSON.
|
|
976
|
+
- Fix:
|
|
977
|
+
- Nuevo test dedicado: `scripts/__tests__/backlog-json-contract-lib.test.ts`.
|
|
978
|
+
- Cobertura explícita de valores canónicos:
|
|
979
|
+
- `BACKLOG_JSON_SCHEMA_VERSION`
|
|
980
|
+
- `BACKLOG_JSON_COMPAT_MIN_READER_VERSION`
|
|
981
|
+
- `BACKLOG_JSON_COMPAT_CONTRACT_ID`
|
|
982
|
+
- Evidencia (2026-03-05):
|
|
983
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-json-contract-lib.test.ts scripts/__tests__/backlog-cli-help-exit-code.test.ts scripts/__tests__/backlog-id-issue-map-lib.test.ts scripts/__tests__/reconcile-consumer-backlog-issues.test.ts scripts/__tests__/watch-consumer-backlog.test.ts` -> `36 pass / 0 fail`.
|
|
984
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
985
|
+
- Cierre issue upstream: `#670`.
|
|
986
|
+
|
|
987
|
+
- ✅ PUMUKI-086: Ejecutar mejora DX siguiente para añadir script npm focal `test:backlog-tooling`.
|
|
988
|
+
- Fix:
|
|
989
|
+
- `package.json`:
|
|
990
|
+
- nuevo script `test:backlog-tooling` con suite focal de backlog contract/watch/reconcile.
|
|
991
|
+
- `docs/USAGE.md`:
|
|
992
|
+
- añadido comando rápido recomendado `npm run -s test:backlog-tooling` en sección backlog tooling.
|
|
993
|
+
- Evidencia (2026-03-05):
|
|
994
|
+
- `npm run -s test:backlog-tooling` -> `36 pass / 0 fail`.
|
|
995
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
996
|
+
- Cierre issue upstream: `#671`.
|
|
997
|
+
|
|
998
|
+
- ✅ PUMUKI-087: Ejecutar mejora DX siguiente para exponer `test:backlog-tooling` en README principal.
|
|
999
|
+
- Fix:
|
|
1000
|
+
- `README.md`:
|
|
1001
|
+
- añadido `npm run -s test:backlog-tooling` en checklist mínimo de validación previa a PR.
|
|
1002
|
+
- Evidencia (2026-03-05):
|
|
1003
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1004
|
+
- Cierre issue upstream: `#672`.
|
|
1005
|
+
|
|
1006
|
+
- ✅ PUMUKI-088: Ejecutar mejora DX siguiente para enlazar sección específica de backlog tooling desde README.
|
|
1007
|
+
- Fix:
|
|
1008
|
+
- `README.md`:
|
|
1009
|
+
- añadido enlace directo a sección de backlog tooling en `docs/USAGE.md`.
|
|
1010
|
+
- Evidencia (2026-03-05):
|
|
1011
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1012
|
+
- Cierre issue upstream: `#673`.
|
|
1013
|
+
|
|
1014
|
+
- ✅ PUMUKI-089: Ejecutar mejora DX siguiente para estabilizar anchor de referencia a backlog tooling en docs.
|
|
1015
|
+
- Fix:
|
|
1016
|
+
- `docs/USAGE.md`:
|
|
1017
|
+
- añadido anchor estable `<a id="backlog-tooling"></a>`.
|
|
1018
|
+
- `README.md`:
|
|
1019
|
+
- enlace actualizado a `docs/USAGE.md#backlog-tooling`.
|
|
1020
|
+
- Evidencia (2026-03-05):
|
|
1021
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1022
|
+
- Cierre issue upstream: `#674`.
|
|
1023
|
+
|
|
1024
|
+
- ✅ PUMUKI-090: Ejecutar mejora DX siguiente para añadir tabla rápida de comandos backlog tooling en `docs/USAGE.md`.
|
|
1025
|
+
- Fix:
|
|
1026
|
+
- `docs/USAGE.md`:
|
|
1027
|
+
- añadida tabla rápida `Command -> Objective` en la sección de backlog tooling.
|
|
1028
|
+
- se mantiene la sección de ejemplos largos sin duplicación innecesaria.
|
|
1029
|
+
- Evidencia (2026-03-05):
|
|
1030
|
+
- `npm run -s test:backlog-tooling` -> `36 pass / 0 fail`.
|
|
1031
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1032
|
+
- Cierre issue upstream: `#675`.
|
|
1033
|
+
|
|
1034
|
+
- ✅ PUMUKI-091: Ejecutar mejora DX siguiente para sincronizar emoji de encabezados por estado real en reconciliación de backlog consumidor.
|
|
1035
|
+
- Fix:
|
|
1036
|
+
- `scripts/reconcile-consumer-backlog-issues-lib.ts`:
|
|
1037
|
+
- nueva sincronización de encabezados `### ✅/🚧/⏳/⛔ <ID>` según estado efectivo por ID.
|
|
1038
|
+
- trazabilidad añadida en resultado (`headingUpdated`, `headingChanges`) y persistencia en `--apply`.
|
|
1039
|
+
- `scripts/__tests__/reconcile-consumer-backlog-issues.test.ts`:
|
|
1040
|
+
- nuevos tests de alineación de headings y no-regresión para markdown sin headings.
|
|
1041
|
+
- Evidencia (2026-03-05):
|
|
1042
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/reconcile-consumer-backlog-issues.test.ts` -> `15 pass / 0 fail`.
|
|
1043
|
+
- `npm run -s test:backlog-tooling` -> `38 pass / 0 fail`.
|
|
1044
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1045
|
+
- Cierre issue upstream: `#676`.
|
|
1046
|
+
|
|
1047
|
+
- ✅ PUMUKI-092: Ejecutar mejora DX siguiente para trazabilidad e2e del heading sync en salida CLI/docs de reconciliación.
|
|
1048
|
+
- Fix:
|
|
1049
|
+
- `scripts/__tests__/reconcile-consumer-backlog-issues.test.ts`:
|
|
1050
|
+
- nuevo caso e2e donde el único delta es `heading sync` y `--apply` persiste cambios.
|
|
1051
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1052
|
+
- nuevo test JSON para `headingUpdated` + `headingChanges`.
|
|
1053
|
+
- `docs/USAGE.md`:
|
|
1054
|
+
- documentado contrato JSON de heading sync en backlog tooling.
|
|
1055
|
+
- Evidencia (2026-03-05):
|
|
1056
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/reconcile-consumer-backlog-issues.test.ts scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `23 pass / 0 fail`.
|
|
1057
|
+
- `npm run -s test:backlog-tooling` -> `40 pass / 0 fail`.
|
|
1058
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1059
|
+
- Cierre issue upstream: `#677`.
|
|
1060
|
+
|
|
1061
|
+
- ✅ PUMUKI-093: Ejecutar mejora DX siguiente para resumen humano de heading sync en salida no-JSON del reconciliador.
|
|
1062
|
+
- Fix:
|
|
1063
|
+
- `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
1064
|
+
- salida humana ahora incluye `heading_changes=<n>`.
|
|
1065
|
+
- nuevo bloque `heading_changes` con líneas/IDs afectados.
|
|
1066
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1067
|
+
- nuevo test de salida humana para validar resumen y detalle de heading drift.
|
|
1068
|
+
- `docs/USAGE.md`:
|
|
1069
|
+
- documentado el resumen de heading changes en modo no-JSON.
|
|
1070
|
+
- Evidencia (2026-03-05):
|
|
1071
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `8 pass / 0 fail`.
|
|
1072
|
+
- `npm run -s test:backlog-tooling` -> `41 pass / 0 fail`.
|
|
1073
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1074
|
+
- Cierre issue upstream: `#678`.
|
|
1075
|
+
|
|
1076
|
+
- ✅ PUMUKI-094: Ejecutar mejora DX siguiente para detectar drift de headings en `watch-consumer-backlog` sin mutar archivos.
|
|
1077
|
+
- Fix:
|
|
1078
|
+
- `scripts/watch-consumer-backlog-lib.ts`:
|
|
1079
|
+
- nuevo detector `headingDrift` por ID para divergencia entre heading y estado efectivo en tabla.
|
|
1080
|
+
- `hasActionRequired` ahora considera `headingDrift`.
|
|
1081
|
+
- `scripts/watch-consumer-backlog.ts`:
|
|
1082
|
+
- salida humana con `heading_drift=<n>` y listado `heading_drift_entries`.
|
|
1083
|
+
- `scripts/__tests__/watch-consumer-backlog.test.ts`:
|
|
1084
|
+
- cobertura de detector y de `action_required` por heading drift.
|
|
1085
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1086
|
+
- cobertura CLI humana+JSON para heading drift.
|
|
1087
|
+
- `docs/USAGE.md`:
|
|
1088
|
+
- documentado `heading_drift` en watch.
|
|
1089
|
+
- Evidencia (2026-03-05):
|
|
1090
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/watch-consumer-backlog.test.ts scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `23 pass / 0 fail`.
|
|
1091
|
+
- `npm run -s test:backlog-tooling` -> `44 pass / 0 fail`.
|
|
1092
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1093
|
+
- Cierre issue upstream: `#679`.
|
|
1094
|
+
|
|
1095
|
+
- ✅ PUMUKI-095: Ejecutar mejora DX siguiente para exponer `heading_drift_count` estable en JSON de watch.
|
|
1096
|
+
- Fix:
|
|
1097
|
+
- `scripts/watch-consumer-backlog.ts`:
|
|
1098
|
+
- payload JSON añade `heading_drift_count` sin romper contrato existente.
|
|
1099
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1100
|
+
- validación del nuevo campo en salida JSON.
|
|
1101
|
+
- `docs/USAGE.md`:
|
|
1102
|
+
- documentado `heading_drift_count` para parsers simples.
|
|
1103
|
+
- Evidencia (2026-03-05):
|
|
1104
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `9 pass / 0 fail`.
|
|
1105
|
+
- `npm run -s test:backlog-tooling` -> `44 pass / 0 fail`.
|
|
1106
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1107
|
+
- Cierre issue upstream: `#680`.
|
|
1108
|
+
|
|
1109
|
+
- ✅ PUMUKI-096: Ejecutar mejora DX siguiente para exponer `heading_changes_count` estable en JSON de reconcile.
|
|
1110
|
+
- Fix:
|
|
1111
|
+
- `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
1112
|
+
- payload JSON añade `heading_changes_count` sin romper contrato existente.
|
|
1113
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1114
|
+
- validación del nuevo campo en salida JSON de reconcile.
|
|
1115
|
+
- `docs/USAGE.md`:
|
|
1116
|
+
- documentado `heading_changes_count` para consumidores livianos.
|
|
1117
|
+
- Evidencia (2026-03-05):
|
|
1118
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `9 pass / 0 fail`.
|
|
1119
|
+
- `npm run -s test:backlog-tooling` -> `44 pass / 0 fail`.
|
|
1120
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1121
|
+
- Cierre issue upstream: `#681`.
|
|
1122
|
+
|
|
1123
|
+
- ✅ PUMUKI-097: Ejecutar mejora DX siguiente para añadir `classification_counts` en JSON de backlog tooling.
|
|
1124
|
+
- Fix:
|
|
1125
|
+
- `scripts/watch-consumer-backlog.ts`:
|
|
1126
|
+
- payload JSON añade `classification_counts` (`needs_issue`, `drift_closed_issue`, `active_issue`, `heading_drift`).
|
|
1127
|
+
- `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
1128
|
+
- payload JSON añade `classification_counts` (cambios + resumen de estado).
|
|
1129
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1130
|
+
- validación de `classification_counts` en watch y reconcile.
|
|
1131
|
+
- hardening: caso reconcile schema evita dependencia de issue real remoto.
|
|
1132
|
+
- `docs/USAGE.md`:
|
|
1133
|
+
- documentado `classification_counts` para ambos comandos.
|
|
1134
|
+
- Evidencia (2026-03-05):
|
|
1135
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `9 pass / 0 fail`.
|
|
1136
|
+
- `npm run -s test:backlog-tooling` -> `44 pass / 0 fail`.
|
|
1137
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1138
|
+
- Cierre issue upstream: `#682`.
|
|
1139
|
+
|
|
1140
|
+
- ✅ PUMUKI-098: Ejecutar mejora DX siguiente para exponer `action_required_reasons` en JSON de backlog tooling.
|
|
1141
|
+
- Fix:
|
|
1142
|
+
- `scripts/watch-consumer-backlog.ts`:
|
|
1143
|
+
- JSON añade `action_required_reasons` con causas activas (`needs_issue`, `drift_closed_issue`, `heading_drift`).
|
|
1144
|
+
- `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
1145
|
+
- JSON añade `action_required_reasons` para deltas pendientes (`reference_changes`, `issue_changes`, `heading_changes`, etc.).
|
|
1146
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1147
|
+
- validación de reasons en watch/reconcile.
|
|
1148
|
+
- `docs/USAGE.md`:
|
|
1149
|
+
- documentado `action_required_reasons` en ambos comandos.
|
|
1150
|
+
- Evidencia (2026-03-05):
|
|
1151
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `9 pass / 0 fail`.
|
|
1152
|
+
- `npm run -s test:backlog-tooling` -> `44 pass / 0 fail`.
|
|
1153
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1154
|
+
- Cierre issue upstream: `#683`.
|
|
1155
|
+
|
|
1156
|
+
- ✅ PUMUKI-099: Ejecutar mejora DX siguiente para exponer reasons compactos en salida humana de backlog tooling.
|
|
1157
|
+
- Fix:
|
|
1158
|
+
- `scripts/watch-consumer-backlog.ts`:
|
|
1159
|
+
- salida humana incluye `action_required_reasons=<...|none>`.
|
|
1160
|
+
- `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
1161
|
+
- salida humana incluye `action_required_reasons=<...|none>`.
|
|
1162
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1163
|
+
- cobertura para reasons esperadas en salidas humanas de watch/reconcile.
|
|
1164
|
+
- `docs/USAGE.md`:
|
|
1165
|
+
- documentado `action_required_reasons` en modo humano.
|
|
1166
|
+
- Evidencia (2026-03-05):
|
|
1167
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `9 pass / 0 fail`.
|
|
1168
|
+
- `npm run -s test:backlog-tooling` -> `44 pass / 0 fail`.
|
|
1169
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1170
|
+
- Cierre issue upstream: `#684`.
|
|
1171
|
+
|
|
1172
|
+
- ✅ PUMUKI-100: Ejecutar mejora QA siguiente para cubrir `action_required_reasons=none` en salida humana.
|
|
1173
|
+
- Fix:
|
|
1174
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1175
|
+
- nuevos tests para caso limpio `action_required_reasons=none` en watch y reconcile.
|
|
1176
|
+
- Evidencia (2026-03-05):
|
|
1177
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `11 pass / 0 fail`.
|
|
1178
|
+
- `npm run -s test:backlog-tooling` -> `46 pass / 0 fail`.
|
|
1179
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1180
|
+
- Cierre issue upstream: `#685`.
|
|
1181
|
+
|
|
1182
|
+
- ✅ PUMUKI-101: Ejecutar refactor DX siguiente para unificar builders de `action_required_reasons`.
|
|
1183
|
+
- Fix:
|
|
1184
|
+
- `scripts/backlog-action-reasons-lib.ts`:
|
|
1185
|
+
- nuevo módulo compartido para construir reasons de watch/reconcile y formateo humano.
|
|
1186
|
+
- `scripts/watch-consumer-backlog.ts` y `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
1187
|
+
- reutilizan builders compartidos (JSON + human output), eliminando duplicación.
|
|
1188
|
+
- `scripts/__tests__/backlog-action-reasons-lib.test.ts`:
|
|
1189
|
+
- cobertura unitaria del orden/contrato de reasons.
|
|
1190
|
+
- `package.json`:
|
|
1191
|
+
- `test:backlog-tooling` incluye test de módulo compartido.
|
|
1192
|
+
- Evidencia (2026-03-05):
|
|
1193
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-action-reasons-lib.test.ts scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `14 pass / 0 fail`.
|
|
1194
|
+
- `npm run -s test:backlog-tooling` -> `49 pass / 0 fail`.
|
|
1195
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1196
|
+
- Cierre issue upstream: `#686`.
|
|
1197
|
+
|
|
1198
|
+
- ✅ PUMUKI-102: Ejecutar mejora docs siguiente para reflejar módulo compartido de reasons en backlog tooling.
|
|
1199
|
+
- Fix:
|
|
1200
|
+
- `docs/USAGE.md`:
|
|
1201
|
+
- añadida nota breve de arquitectura: módulo compartido `scripts/backlog-action-reasons-lib.ts`.
|
|
1202
|
+
- Evidencia (2026-03-05):
|
|
1203
|
+
- `npm run -s test:backlog-tooling` -> `49 pass / 0 fail`.
|
|
1204
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1205
|
+
- Cierre issue upstream: `#687`.
|
|
1206
|
+
|
|
1207
|
+
- ✅ PUMUKI-103: Ejecutar mejora docs siguiente para enlazar desde README al bloque backlog tooling (shared reasons).
|
|
1208
|
+
- Fix:
|
|
1209
|
+
- `docs/USAGE.md`:
|
|
1210
|
+
- anchor estable añadido para bloque de shared reasons (`#backlog-reasons`).
|
|
1211
|
+
- `README.md`:
|
|
1212
|
+
- enlace directo al bloque `docs/USAGE.md#backlog-reasons`.
|
|
1213
|
+
- Evidencia (2026-03-05):
|
|
1214
|
+
- `npm run -s test:backlog-tooling` -> `49 pass / 0 fail`.
|
|
1215
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1216
|
+
- Cierre issue upstream: `#688`.
|
|
1217
|
+
|
|
1218
|
+
- ✅ PUMUKI-104: Ejecutar mejora docs siguiente para snippet de navegación rápida a backlog tooling desde terminal.
|
|
1219
|
+
- Fix:
|
|
1220
|
+
- `docs/USAGE.md`:
|
|
1221
|
+
- snippet corto copy-ready con `rg` para localizar rápido `backlog-tooling` y `backlog-reasons`.
|
|
1222
|
+
- Evidencia (2026-03-05):
|
|
1223
|
+
- `npm run -s test:backlog-tooling` -> `49 pass / 0 fail`.
|
|
1224
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1225
|
+
- Cierre issue upstream: `#689`.
|
|
1226
|
+
|
|
1227
|
+
- ✅ PUMUKI-105: Ejecutar mejora docs siguiente para visibilidad de quick nav en README.
|
|
1228
|
+
- Fix:
|
|
1229
|
+
- `README.md`:
|
|
1230
|
+
- línea del índice clarificada para indicar que la sección de backlog tooling incluye quick-nav de terminal.
|
|
1231
|
+
- Evidencia (2026-03-05):
|
|
1232
|
+
- `npm run -s test:backlog-tooling` -> `49 pass / 0 fail`.
|
|
1233
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1234
|
+
- Cierre issue upstream: `#690`.
|
|
1235
|
+
|
|
1236
|
+
- ✅ PUMUKI-106: Ejecutar mejora DX siguiente para hint `--no-fail` en salida humana de backlog watch.
|
|
1237
|
+
- Fix:
|
|
1238
|
+
- `scripts/watch-consumer-backlog.ts`:
|
|
1239
|
+
- salida humana añade hint `--no-fail` cuando `action_required=yes`.
|
|
1240
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1241
|
+
- cobertura del hint en caso con findings y ausencia del hint en caso limpio.
|
|
1242
|
+
- `docs/USAGE.md`:
|
|
1243
|
+
- documentado hint operativo en modo humano.
|
|
1244
|
+
- Evidencia (2026-03-05):
|
|
1245
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `11 pass / 0 fail`.
|
|
1246
|
+
- `npm run -s test:backlog-tooling` -> `49 pass / 0 fail`.
|
|
1247
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1248
|
+
- Cierre issue upstream: `#691`.
|
|
1249
|
+
|
|
1250
|
+
- ✅ PUMUKI-107: Ejecutar mejora DX siguiente para hint `dry-run -> apply` en salida humana de reconcile.
|
|
1251
|
+
- Fix:
|
|
1252
|
+
- `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
1253
|
+
- salida humana añade hint operativo cuando hay `action_required_reasons`.
|
|
1254
|
+
- hint propuesto: ejecutar `--json` (dry-run) y luego `--apply`.
|
|
1255
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1256
|
+
- cobertura del hint en caso con deltas (`heading_changes`).
|
|
1257
|
+
- verificación de ausencia del hint cuando no hay deltas.
|
|
1258
|
+
- `docs/USAGE.md`:
|
|
1259
|
+
- documentado el hint de flujo seguro en modo humano.
|
|
1260
|
+
- Evidencia (2026-03-05):
|
|
1261
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `11 pass / 0 fail`.
|
|
1262
|
+
- `npm run -s test:backlog-tooling` -> `49 pass / 0 fail`.
|
|
1263
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1264
|
+
- Cierre issue upstream: `#692`.
|
|
1265
|
+
|
|
1266
|
+
- ✅ PUMUKI-108: Ejecutar mejora DX siguiente para `next_command` en JSON de reconcile cuando hay deltas.
|
|
1267
|
+
- Fix:
|
|
1268
|
+
- `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
1269
|
+
- salida JSON añade `next_command` solo cuando hay `action_required_reasons`.
|
|
1270
|
+
- `next_command` encapsula flujo seguro `--json` (dry-run) seguido de `--apply`.
|
|
1271
|
+
- quoting seguro de `--file` para rutas con caracteres especiales.
|
|
1272
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1273
|
+
- cobertura de presencia de `next_command` en caso con deltas.
|
|
1274
|
+
- verificación de ausencia de `next_command` en caso limpio.
|
|
1275
|
+
- `docs/USAGE.md`:
|
|
1276
|
+
- documentado `next_command` en contrato JSON de reconcile.
|
|
1277
|
+
- Evidencia (2026-03-05):
|
|
1278
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `11 pass / 0 fail`.
|
|
1279
|
+
- `npm run -s test:backlog-tooling` -> `49 pass / 0 fail`.
|
|
1280
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1281
|
+
- Cierre issue upstream: `#693`.
|
|
1282
|
+
|
|
1283
|
+
- ✅ PUMUKI-109: Ejecutar mejora DX siguiente para `next_command` en JSON de watch cuando hay findings.
|
|
1284
|
+
- Fix:
|
|
1285
|
+
- `scripts/watch-consumer-backlog.ts`:
|
|
1286
|
+
- salida JSON añade `next_command` solo cuando `hasActionRequired=true`.
|
|
1287
|
+
- `next_command` apunta al flujo seguro de reconciliación (`--json` -> `--apply`).
|
|
1288
|
+
- quoting seguro de `--file` para rutas con caracteres especiales.
|
|
1289
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1290
|
+
- cobertura de presencia de `next_command` en watch con findings.
|
|
1291
|
+
- verificación de ausencia de `next_command` en watch limpio.
|
|
1292
|
+
- `docs/USAGE.md`:
|
|
1293
|
+
- documentado `next_command` en contrato JSON de watch.
|
|
1294
|
+
- Evidencia (2026-03-05):
|
|
1295
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `11 pass / 0 fail`.
|
|
1296
|
+
- `npm run -s test:backlog-tooling` -> `49 pass / 0 fail`.
|
|
1297
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1298
|
+
- Cierre issue upstream: `#694`.
|
|
1299
|
+
|
|
1300
|
+
- ✅ PUMUKI-110: Ejecutar mejora DX siguiente para `next_command_reason` en JSON de watch/reconcile.
|
|
1301
|
+
- Fix:
|
|
1302
|
+
- `scripts/watch-consumer-backlog.ts`:
|
|
1303
|
+
- salida JSON añade `next_command_reason` cuando existe `next_command`.
|
|
1304
|
+
- valor estable derivado de `action_required_reasons[0]`.
|
|
1305
|
+
- `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
1306
|
+
- salida JSON añade `next_command_reason` con la misma regla.
|
|
1307
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1308
|
+
- cobertura de presencia/ausencia en watch/reconcile JSON.
|
|
1309
|
+
- validación de valores esperados (`needs_issue`, `heading_changes`).
|
|
1310
|
+
- `docs/USAGE.md`:
|
|
1311
|
+
- documentado `next_command_reason` para watch y reconcile.
|
|
1312
|
+
- Evidencia (2026-03-05):
|
|
1313
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `11 pass / 0 fail`.
|
|
1314
|
+
- `npm run -s test:backlog-tooling` -> `49 pass / 0 fail`.
|
|
1315
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1316
|
+
- Cierre issue upstream: `#695`.
|
|
1317
|
+
|
|
1318
|
+
- ✅ PUMUKI-111: Ejecutar mejora DX siguiente para `next_commands` estructurado en JSON de watch/reconcile.
|
|
1319
|
+
- Fix:
|
|
1320
|
+
- `scripts/watch-consumer-backlog.ts`:
|
|
1321
|
+
- salida JSON añade `next_commands[]` cuando hay acción requerida.
|
|
1322
|
+
- orden estable: `dry_run` y luego `apply`.
|
|
1323
|
+
- se mantiene `next_command` para compatibilidad.
|
|
1324
|
+
- `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
1325
|
+
- mismo contrato `next_commands[]` y compatibilidad con `next_command`.
|
|
1326
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1327
|
+
- cobertura de presencia/ausencia de `next_commands`.
|
|
1328
|
+
- validación de orden/shape (`label`, `mode`, `command`).
|
|
1329
|
+
- `docs/USAGE.md`:
|
|
1330
|
+
- documentado `next_commands[]` para watch y reconcile.
|
|
1331
|
+
- Evidencia (2026-03-05):
|
|
1332
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `11 pass / 0 fail`.
|
|
1333
|
+
- `npm run -s test:backlog-tooling` -> `49 pass / 0 fail`.
|
|
1334
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1335
|
+
- Cierre issue upstream: `#696`.
|
|
1336
|
+
|
|
1337
|
+
- ✅ PUMUKI-112: Ejecutar mejora DX siguiente para `next_commands[].safety` en JSON de watch/reconcile.
|
|
1338
|
+
- Fix:
|
|
1339
|
+
- `scripts/watch-consumer-backlog.ts`:
|
|
1340
|
+
- `next_commands[]` incluye `safety` por paso (`read_only` para dry-run, `mutating` para apply).
|
|
1341
|
+
- `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
1342
|
+
- mismo contrato `safety` por paso.
|
|
1343
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1344
|
+
- cobertura de `safety` en watch/reconcile.
|
|
1345
|
+
- `docs/USAGE.md`:
|
|
1346
|
+
- documentado `next_commands[].safety`.
|
|
1347
|
+
- Evidencia (2026-03-05):
|
|
1348
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `11 pass / 0 fail`.
|
|
1349
|
+
- `npm run -s test:backlog-tooling` -> `49 pass / 0 fail`.
|
|
1350
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1351
|
+
- Cierre issue upstream: `#697`.
|
|
1352
|
+
|
|
1353
|
+
- ✅ PUMUKI-113: Ejecutar mejora DX siguiente para `next_commands[].description` en JSON de watch/reconcile.
|
|
1354
|
+
- Fix:
|
|
1355
|
+
- `scripts/watch-consumer-backlog.ts`:
|
|
1356
|
+
- `next_commands[]` añade `description` breve por paso.
|
|
1357
|
+
- `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
1358
|
+
- mismo contrato con `description`.
|
|
1359
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1360
|
+
- cobertura de `description` en watch/reconcile.
|
|
1361
|
+
- `docs/USAGE.md`:
|
|
1362
|
+
- documentado `next_commands[].description`.
|
|
1363
|
+
- Evidencia (2026-03-05):
|
|
1364
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `11 pass / 0 fail`.
|
|
1365
|
+
- `npm run -s test:backlog-tooling` -> `49 pass / 0 fail`.
|
|
1366
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1367
|
+
- Cierre issue upstream: `#698`.
|
|
1368
|
+
|
|
1369
|
+
- ✅ PUMUKI-114: Ejecutar mejora DX siguiente para `next_commands[].id` en JSON de watch/reconcile.
|
|
1370
|
+
- Fix:
|
|
1371
|
+
- `scripts/watch-consumer-backlog.ts`:
|
|
1372
|
+
- `next_commands[]` añade `id` estable por paso (`1` dry-run, `2` apply).
|
|
1373
|
+
- `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
1374
|
+
- mismo contrato con `id` estable.
|
|
1375
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1376
|
+
- cobertura de `id` en watch/reconcile.
|
|
1377
|
+
- `docs/USAGE.md`:
|
|
1378
|
+
- documentado `next_commands[].id`.
|
|
1379
|
+
- Evidencia (2026-03-05):
|
|
1380
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `11 pass / 0 fail`.
|
|
1381
|
+
- `npm run -s test:backlog-tooling` -> `49 pass / 0 fail`.
|
|
1382
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1383
|
+
- Cierre issue upstream: `#699`.
|
|
1384
|
+
|
|
1385
|
+
- ✅ PUMUKI-115: Ejecutar mejora DX siguiente para `next_commands[].depends_on` en JSON de watch/reconcile.
|
|
1386
|
+
- Fix:
|
|
1387
|
+
- `scripts/watch-consumer-backlog.ts`:
|
|
1388
|
+
- `next_commands[]` añade `depends_on` (`null` en `dry_run`, `dry_run` en `apply`).
|
|
1389
|
+
- `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
1390
|
+
- mismo contrato con `depends_on`.
|
|
1391
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1392
|
+
- cobertura de secuenciación por dependencia.
|
|
1393
|
+
- `docs/USAGE.md`:
|
|
1394
|
+
- documentado `next_commands[].depends_on`.
|
|
1395
|
+
- Evidencia (2026-03-05):
|
|
1396
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `11 pass / 0 fail`.
|
|
1397
|
+
- `npm run -s test:backlog-tooling` -> `49 pass / 0 fail`.
|
|
1398
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1399
|
+
- Cierre issue upstream: `#700`.
|
|
1400
|
+
|
|
1401
|
+
- ✅ PUMUKI-116: Ejecutar mejora DX siguiente para `next_commands[].idempotent` en JSON de watch/reconcile.
|
|
1402
|
+
- Fix:
|
|
1403
|
+
- `scripts/watch-consumer-backlog.ts`:
|
|
1404
|
+
- `next_commands[]` añade `idempotent=true` en pasos `dry_run` y `apply`.
|
|
1405
|
+
- `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
1406
|
+
- mismo contrato con `idempotent`.
|
|
1407
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1408
|
+
- cobertura explícita de `idempotent` por paso.
|
|
1409
|
+
- `docs/USAGE.md`:
|
|
1410
|
+
- documentado `next_commands[].idempotent`.
|
|
1411
|
+
- Evidencia (2026-03-05):
|
|
1412
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `11 pass / 0 fail`.
|
|
1413
|
+
- `npm run -s test:backlog-tooling` -> `49 pass / 0 fail`.
|
|
1414
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1415
|
+
- Cierre issue upstream: `#701`.
|
|
1416
|
+
|
|
1417
|
+
- ✅ PUMUKI-117: Ejecutar mejora DX siguiente para `next_commands[].estimated_duration_ms` en JSON de watch/reconcile.
|
|
1418
|
+
- Fix:
|
|
1419
|
+
- `scripts/watch-consumer-backlog.ts`:
|
|
1420
|
+
- `next_commands[]` añade `estimated_duration_ms` por paso (dry-run/apply).
|
|
1421
|
+
- `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
1422
|
+
- mismo contrato con `estimated_duration_ms`.
|
|
1423
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1424
|
+
- cobertura de duración estimada por paso.
|
|
1425
|
+
- `docs/USAGE.md`:
|
|
1426
|
+
- documentado `next_commands[].estimated_duration_ms`.
|
|
1427
|
+
- Evidencia (2026-03-05):
|
|
1428
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `11 pass / 0 fail`.
|
|
1429
|
+
- `npm run -s test:backlog-tooling` -> `49 pass / 0 fail`.
|
|
1430
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1431
|
+
- Cierre issue upstream: `#702`.
|
|
1432
|
+
|
|
1433
|
+
- ✅ PUMUKI-118: Ejecutar mejora DX siguiente para `next_commands[].requires_confirmation` en JSON de watch/reconcile.
|
|
1434
|
+
- Fix:
|
|
1435
|
+
- `scripts/watch-consumer-backlog.ts`:
|
|
1436
|
+
- `next_commands[]` añade `requires_confirmation` (`false` dry-run, `true` apply).
|
|
1437
|
+
- `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
1438
|
+
- mismo contrato con `requires_confirmation`.
|
|
1439
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1440
|
+
- cobertura de confirmación requerida por paso.
|
|
1441
|
+
- `docs/USAGE.md`:
|
|
1442
|
+
- documentado `next_commands[].requires_confirmation`.
|
|
1443
|
+
- Evidencia (2026-03-05):
|
|
1444
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `11 pass / 0 fail`.
|
|
1445
|
+
- `npm run -s test:backlog-tooling` -> `49 pass / 0 fail`.
|
|
1446
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1447
|
+
- Cierre issue upstream: `#703`.
|
|
1448
|
+
|
|
1449
|
+
- ✅ PUMUKI-119: Ejecutar mejora DX siguiente para `next_commands[].execution_group_id` en JSON de watch/reconcile.
|
|
1450
|
+
- Fix:
|
|
1451
|
+
- `scripts/watch-consumer-backlog.ts`:
|
|
1452
|
+
- `next_commands[]` añade `execution_group_id` común por ejecución JSON.
|
|
1453
|
+
- `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
1454
|
+
- mismo contrato con `execution_group_id`.
|
|
1455
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1456
|
+
- cobertura de correlación por `run_id`.
|
|
1457
|
+
- `docs/USAGE.md`:
|
|
1458
|
+
- documentado `next_commands[].execution_group_id`.
|
|
1459
|
+
- Evidencia (2026-03-05):
|
|
1460
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `11 pass / 0 fail`.
|
|
1461
|
+
- `npm run -s test:backlog-tooling` -> `49 pass / 0 fail`.
|
|
1462
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1463
|
+
- Cierre issue upstream: `#704`.
|
|
1464
|
+
|
|
1465
|
+
- ✅ PUMUKI-120: Ejecutar mejora DX siguiente para `next_commands[].origin_tool` en JSON de watch/reconcile.
|
|
1466
|
+
- Fix:
|
|
1467
|
+
- `scripts/watch-consumer-backlog.ts`:
|
|
1468
|
+
- `next_commands[]` añade `origin_tool=backlog-watch`.
|
|
1469
|
+
- `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
1470
|
+
- `next_commands[]` añade `origin_tool=backlog-reconcile`.
|
|
1471
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1472
|
+
- cobertura de `origin_tool` en watch/reconcile.
|
|
1473
|
+
- `docs/USAGE.md`:
|
|
1474
|
+
- documentado `next_commands[].origin_tool`.
|
|
1475
|
+
- Evidencia (2026-03-05):
|
|
1476
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `11 pass / 0 fail`.
|
|
1477
|
+
- `npm run -s test:backlog-tooling` -> `49 pass / 0 fail`.
|
|
1478
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1479
|
+
- Cierre issue upstream: `#705`.
|
|
1480
|
+
|
|
1481
|
+
- ✅ PUMUKI-121: Ejecutar mejora DX siguiente para `next_commands[].origin_schema_version` en JSON de watch/reconcile.
|
|
1482
|
+
- Fix:
|
|
1483
|
+
- `scripts/watch-consumer-backlog.ts`:
|
|
1484
|
+
- `next_commands[]` añade `origin_schema_version` alineado con `schema_version`.
|
|
1485
|
+
- `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
1486
|
+
- mismo contrato con `origin_schema_version`.
|
|
1487
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1488
|
+
- cobertura de alineación `next_commands[].origin_schema_version == payload.schema_version`.
|
|
1489
|
+
- `docs/USAGE.md`:
|
|
1490
|
+
- documentado `next_commands[].origin_schema_version`.
|
|
1491
|
+
- Evidencia (2026-03-05):
|
|
1492
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `11 pass / 0 fail`.
|
|
1493
|
+
- `npm run -s test:backlog-tooling` -> `49 pass / 0 fail`.
|
|
1494
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1495
|
+
- Cierre issue upstream: `#706`.
|
|
1496
|
+
|
|
1497
|
+
- ✅ PUMUKI-122: Ejecutar mejora DX siguiente para `next_commands[].recommendation_type` en JSON de watch/reconcile.
|
|
1498
|
+
- Fix:
|
|
1499
|
+
- `scripts/watch-consumer-backlog.ts`:
|
|
1500
|
+
- `next_commands[]` añade `recommendation_type=reconcile_loop`.
|
|
1501
|
+
- `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
1502
|
+
- mismo contrato con `recommendation_type`.
|
|
1503
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1504
|
+
- cobertura de clasificación estable por paso.
|
|
1505
|
+
- `docs/USAGE.md`:
|
|
1506
|
+
- documentado `next_commands[].recommendation_type`.
|
|
1507
|
+
- Evidencia (2026-03-05):
|
|
1508
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `11 pass / 0 fail`.
|
|
1509
|
+
- `npm run -s test:backlog-tooling` -> `49 pass / 0 fail`.
|
|
1510
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1511
|
+
- Cierre issue upstream: `#707`.
|
|
1512
|
+
|
|
1513
|
+
- ✅ PUMUKI-123: Ejecutar mejora DX siguiente para `next_commands[].origin_contract_id` en JSON de watch/reconcile.
|
|
1514
|
+
- Fix:
|
|
1515
|
+
- `scripts/watch-consumer-backlog.ts`:
|
|
1516
|
+
- `next_commands[]` añade `origin_contract_id` alineado con `compat.contract_id`.
|
|
1517
|
+
- `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
1518
|
+
- mismo contrato con `origin_contract_id`.
|
|
1519
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1520
|
+
- cobertura de alineación con contrato de compatibilidad.
|
|
1521
|
+
- `docs/USAGE.md`:
|
|
1522
|
+
- documentado `next_commands[].origin_contract_id`.
|
|
1523
|
+
- Evidencia (2026-03-05):
|
|
1524
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `11 pass / 0 fail`.
|
|
1525
|
+
- `npm run -s test:backlog-tooling` -> `49 pass / 0 fail`.
|
|
1526
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1527
|
+
- Cierre issue upstream: `#708`.
|
|
1528
|
+
|
|
1529
|
+
- ✅ PUMUKI-124: Ejecutar mejora DX siguiente para `next_commands[].priority` en JSON de watch/reconcile.
|
|
1530
|
+
- Resultado implementado:
|
|
1531
|
+
- `scripts/watch-consumer-backlog.ts`:
|
|
1532
|
+
- `next_commands[].priority` estable por paso (`high` dry-run, `medium` apply).
|
|
1533
|
+
- `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
1534
|
+
- mismo contrato `priority` por paso (`high`/`medium`).
|
|
1535
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1536
|
+
- cobertura JSON ampliada para `priority` en watch/reconcile.
|
|
1537
|
+
- `docs/USAGE.md`:
|
|
1538
|
+
- documentado `next_commands[].priority` para ambos comandos.
|
|
1539
|
+
- Evidencia (2026-03-05):
|
|
1540
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `11 pass / 0 fail`.
|
|
1541
|
+
- `npm run -s test:backlog-tooling` -> `49 pass / 0 fail`.
|
|
1542
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1543
|
+
- Cierre issue upstream: `#709`.
|
|
1544
|
+
|
|
1545
|
+
- ✅ PUMUKI-125: Ejecutar mejora DX siguiente para `next_commands[].max_retries` en JSON de watch/reconcile.
|
|
1546
|
+
- Resultado implementado:
|
|
1547
|
+
- `scripts/watch-consumer-backlog.ts`:
|
|
1548
|
+
- `next_commands[].max_retries` por paso (`2` dry-run, `0` apply).
|
|
1549
|
+
- `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
1550
|
+
- mismo contrato `max_retries` por paso (`2`/`0`).
|
|
1551
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1552
|
+
- cobertura JSON ampliada para `max_retries` en watch/reconcile.
|
|
1553
|
+
- `docs/USAGE.md`:
|
|
1554
|
+
- documentado `next_commands[].max_retries` para ambos comandos.
|
|
1555
|
+
- Evidencia (2026-03-05):
|
|
1556
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `11 pass / 0 fail`.
|
|
1557
|
+
- `npm run -s test:backlog-tooling` -> `49 pass / 0 fail`.
|
|
1558
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1559
|
+
- Cierre issue upstream: `#710`.
|
|
1560
|
+
|
|
1561
|
+
- ✅ PUMUKI-126: Ejecutar mejora DX siguiente para `next_commands[].retry_strategy` en JSON de watch/reconcile.
|
|
1562
|
+
- Resultado implementado:
|
|
1563
|
+
- `scripts/watch-consumer-backlog.ts`:
|
|
1564
|
+
- `next_commands[].retry_strategy` por paso (`immediate` dry-run, `manual` apply).
|
|
1565
|
+
- `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
1566
|
+
- mismo contrato `retry_strategy` por paso (`immediate`/`manual`).
|
|
1567
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1568
|
+
- cobertura JSON ampliada para `retry_strategy` en watch/reconcile.
|
|
1569
|
+
- `docs/USAGE.md`:
|
|
1570
|
+
- documentado `next_commands[].retry_strategy` para ambos comandos.
|
|
1571
|
+
- Evidencia (2026-03-05):
|
|
1572
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `11 pass / 0 fail`.
|
|
1573
|
+
- `npm run -s test:backlog-tooling` -> `49 pass / 0 fail`.
|
|
1574
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1575
|
+
- Cierre issue upstream: `#711`.
|
|
1576
|
+
|
|
1577
|
+
- ✅ PUMUKI-127: Ejecutar mejora DX siguiente para `next_commands[].failure_hint` en JSON de watch/reconcile.
|
|
1578
|
+
- Resultado implementado:
|
|
1579
|
+
- `scripts/watch-consumer-backlog.ts`:
|
|
1580
|
+
- `next_commands[].failure_hint` compacto por paso (`dry_run`/`apply`).
|
|
1581
|
+
- `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
1582
|
+
- mismo contrato `failure_hint` por paso.
|
|
1583
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1584
|
+
- cobertura JSON ampliada para `failure_hint` en watch/reconcile.
|
|
1585
|
+
- `docs/USAGE.md`:
|
|
1586
|
+
- documentado `next_commands[].failure_hint` para ambos comandos.
|
|
1587
|
+
- Evidencia (2026-03-05):
|
|
1588
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `11 pass / 0 fail`.
|
|
1589
|
+
- `npm run -s test:backlog-tooling` -> `49 pass / 0 fail`.
|
|
1590
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1591
|
+
- Cierre issue upstream: `#712`.
|
|
1592
|
+
|
|
1593
|
+
- ✅ PUMUKI-128: Ejecutar mejora DX siguiente para `next_commands[].expected_outcome` en JSON de watch/reconcile.
|
|
1594
|
+
- Resultado implementado:
|
|
1595
|
+
- `scripts/watch-consumer-backlog.ts`:
|
|
1596
|
+
- `next_commands[].expected_outcome` por paso (`dry_run`/`apply`).
|
|
1597
|
+
- `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
1598
|
+
- mismo contrato `expected_outcome` por paso.
|
|
1599
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1600
|
+
- cobertura JSON ampliada para `expected_outcome` en watch/reconcile.
|
|
1601
|
+
- `docs/USAGE.md`:
|
|
1602
|
+
- documentado `next_commands[].expected_outcome` para ambos comandos.
|
|
1603
|
+
- Evidencia (2026-03-05):
|
|
1604
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `11 pass / 0 fail`.
|
|
1605
|
+
- `npm run -s test:backlog-tooling` -> `49 pass / 0 fail`.
|
|
1606
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1607
|
+
- Cierre issue upstream: `#713`.
|
|
1608
|
+
|
|
1609
|
+
- ✅ PUMUKI-129: Ejecutar mejora DX siguiente para `next_commands[].success_criteria` en JSON de watch/reconcile.
|
|
1610
|
+
- Resultado implementado:
|
|
1611
|
+
- `scripts/watch-consumer-backlog.ts`:
|
|
1612
|
+
- `next_commands[].success_criteria` por paso (`plan_generated_no_mutation`, `backlog_reconciled_persisted`).
|
|
1613
|
+
- `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
1614
|
+
- mismo contrato `success_criteria` por paso.
|
|
1615
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1616
|
+
- cobertura JSON ampliada para `success_criteria` en watch/reconcile.
|
|
1617
|
+
- `docs/USAGE.md`:
|
|
1618
|
+
- documentado `next_commands[].success_criteria` para ambos comandos.
|
|
1619
|
+
- Evidencia (2026-03-05):
|
|
1620
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `11 pass / 0 fail`.
|
|
1621
|
+
- `npm run -s test:backlog-tooling` -> `49 pass / 0 fail`.
|
|
1622
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1623
|
+
- Cierre issue upstream: `#714`.
|
|
1624
|
+
|
|
1625
|
+
- ✅ PUMUKI-130: Ejecutar mejora DX siguiente para `next_commands[].success_probe` en JSON de watch/reconcile.
|
|
1626
|
+
- Resultado implementado:
|
|
1627
|
+
- `scripts/watch-consumer-backlog.ts`:
|
|
1628
|
+
- `next_commands[].success_probe` por paso (`dry_run`/`apply`).
|
|
1629
|
+
- `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
1630
|
+
- mismo contrato `success_probe` por paso.
|
|
1631
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1632
|
+
- cobertura JSON ampliada para `success_probe` en watch/reconcile.
|
|
1633
|
+
- `docs/USAGE.md`:
|
|
1634
|
+
- documentado `next_commands[].success_probe` para ambos comandos.
|
|
1635
|
+
- Evidencia (2026-03-05):
|
|
1636
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `11 pass / 0 fail`.
|
|
1637
|
+
- `npm run -s test:backlog-tooling` -> `49 pass / 0 fail`.
|
|
1638
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1639
|
+
- Cierre issue upstream: `#715`.
|
|
1640
|
+
|
|
1641
|
+
- ✅ PUMUKI-131: Ejecutar mejora DX siguiente para `next_commands[].probe_timeout_ms` en JSON de watch/reconcile.
|
|
1642
|
+
- Resultado implementado:
|
|
1643
|
+
- `scripts/watch-consumer-backlog.ts`:
|
|
1644
|
+
- `next_commands[].probe_timeout_ms` por paso (`1500` dry-run, `4000` apply).
|
|
1645
|
+
- `scripts/reconcile-consumer-backlog-issues.ts`:
|
|
1646
|
+
- mismo contrato `probe_timeout_ms` por paso.
|
|
1647
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts`:
|
|
1648
|
+
- cobertura JSON ampliada para `probe_timeout_ms` en watch/reconcile.
|
|
1649
|
+
- `docs/USAGE.md`:
|
|
1650
|
+
- documentado `next_commands[].probe_timeout_ms` para ambos comandos.
|
|
1651
|
+
- Evidencia (2026-03-05):
|
|
1652
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `11 pass / 0 fail`.
|
|
1653
|
+
- `npm run -s test:backlog-tooling` -> `49 pass / 0 fail`.
|
|
1654
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1655
|
+
- Cierre issue upstream: `#716`.
|
|
1656
|
+
|
|
1657
|
+
- ✅ PUMUKI-132: Ejecutar mejora DX siguiente para `next_commands[].probe_kind` en JSON de watch/reconcile.
|
|
1658
|
+
- Resultado implementado:
|
|
1659
|
+
- `scripts/watch-consumer-backlog.ts` añade `next_commands[].probe_kind` (`json_contract` en `dry_run`, `state_recheck` en `apply`).
|
|
1660
|
+
- `scripts/reconcile-consumer-backlog-issues.ts` aplica el mismo contrato `probe_kind` para paridad de tooling.
|
|
1661
|
+
- `scripts/__tests__/backlog-cli-help-exit-code.test.ts` amplía tipado + asserts para `probe_kind` en ambos comandos.
|
|
1662
|
+
- `docs/USAGE.md` documenta `next_commands[].probe_kind` para `watch-consumer-backlog` y `reconcile-consumer-backlog-issues`.
|
|
1663
|
+
- Evidencia (2026-03-05):
|
|
1664
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` -> `11 pass / 0 fail`.
|
|
1665
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1666
|
+
- Issue upstream: `#717` (lista para cierre operativo).
|
|
1667
|
+
|
|
1668
|
+
- ✅ PUMUKI-133: Cerrar `PUMUKI-INC-062` (incoherencia `ai_gate_check` vs hooks `ALLOW`) con hint de precedencia robusto para códigos `EVIDENCE_*` legacy.
|
|
1669
|
+
- Resultado implementado:
|
|
1670
|
+
- `integrations/mcp/aiGateCheck.ts`:
|
|
1671
|
+
- `consistency_hint` pasa a detectar de forma genérica cualquier código `EVIDENCE_*` para stage hook (`PRE_COMMIT/PRE_PUSH/CI`), incluyendo casos legacy como `EVIDENCE_INTEGRITY_MISSING`.
|
|
1672
|
+
- soporte de dependencias inyectables para test de regresión determinista.
|
|
1673
|
+
- `integrations/mcp/__tests__/aiGateCheck.test.ts`:
|
|
1674
|
+
- nuevo test RED/GREEN para `EVIDENCE_INTEGRITY_MISSING` con `reason_code=HOOK_RUNNER_CAN_REFRESH_EVIDENCE`.
|
|
1675
|
+
- `integrations/mcp/preFlightCheck.ts` + `integrations/lifecycle/cli.ts`:
|
|
1676
|
+
- remediación humana explícita para `EVIDENCE_INTEGRITY_MISSING`.
|
|
1677
|
+
- Evidencia (2026-03-05):
|
|
1678
|
+
- `npx --yes tsx@4.21.0 --test integrations/mcp/__tests__/aiGateCheck.test.ts integrations/mcp/__tests__/preFlightCheck.test.ts` -> `6 pass / 0 fail`.
|
|
1679
|
+
- `npx --yes tsx@4.21.0 --test integrations/lifecycle/__tests__/cli.test.ts` -> `39 pass / 0 fail`.
|
|
1680
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1681
|
+
- Commit: `6f6aa69`.
|
|
1682
|
+
|
|
1683
|
+
- ✅ PUMUKI-134: Ejecutar siguiente bug prioritaria del watcher RuralGo (`PUMUKI-INC-060`) sobre falso positivo de coverage iOS por upstream desalineado.
|
|
1684
|
+
- Resultado implementado:
|
|
1685
|
+
- `integrations/git/stageRunners.ts`:
|
|
1686
|
+
- ajuste del guard `PRE_PUSH_UPSTREAM_MISALIGNED` para detectar desalineación con `ahead` moderado (umbral operativo reducido de `25` a `5`), bloqueando antes de evaluar scope contaminado.
|
|
1687
|
+
- `integrations/git/__tests__/stageRunners.test.ts`:
|
|
1688
|
+
- nuevo test RED/GREEN para asegurar bloqueo por upstream desalineado con `ahead=6` (`feature/*` trackeando `origin/develop`), evitando falso positivo de `platform-coverage`.
|
|
1689
|
+
- Evidencia (2026-03-05):
|
|
1690
|
+
- `npx --yes tsx@4.21.0 --test integrations/git/__tests__/stageRunners.test.ts` -> `26 pass / 0 fail`.
|
|
1691
|
+
- `npx --yes tsx@4.21.0 --test integrations/mcp/__tests__/aiGateCheck.test.ts integrations/mcp/__tests__/preFlightCheck.test.ts` -> `6 pass / 0 fail`.
|
|
1692
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1693
|
+
- Commit: `cd3d45f`.
|
|
1694
|
+
|
|
1695
|
+
- ✅ PUMUKI-135: Ejecutar siguiente bug prioritaria del watcher RuralGo (`PUMUKI-INC-057`) sobre `npx --no-install pumuki --version` con `MODULE_NOT_FOUND`.
|
|
1696
|
+
- Resultado implementado:
|
|
1697
|
+
- `scripts/package-install-smoke-consumer-npm-lib.ts`:
|
|
1698
|
+
- `verifyInstalledPumukiBinaryVersion()` ahora intenta primero `npx --no-install pumuki --version` y, si detecta fallo/fatal pattern, hace fallback determinista a comando local resuelto (`node_modules/.bin/pumuki` o entrypoint local) antes de fallar definitivamente.
|
|
1699
|
+
- `scripts/__tests__/package-install-smoke-consumer-npm-lib.test.ts`:
|
|
1700
|
+
- nuevo test RED/GREEN para validar que, ante `MODULE_NOT_FOUND` en `--no-install`, el smoke cae en fallback local y pasa.
|
|
1701
|
+
- cobertura ampliada para confirmar dos intentos registrados en command log cuando hay degradación.
|
|
1702
|
+
- Evidencia (2026-03-05):
|
|
1703
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/package-install-smoke-consumer-npm-lib.test.ts scripts/__tests__/package-install-smoke-repo-setup-lib.test.ts scripts/__tests__/package-smoke-workflow-contract.test.ts` -> `8 pass / 0 fail`.
|
|
1704
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1705
|
+
- Commit: `ebd13ac`.
|
|
1706
|
+
|
|
1707
|
+
- ✅ PUMUKI-136: Ejecutar siguiente bug prioritaria del watcher RuralGo (`FP-030`) sobre falso positivo `PRE_PUSH` por upstream desalineado (paridad con `PUMUKI-INC-060`).
|
|
1708
|
+
- Resultado implementado:
|
|
1709
|
+
- cierre canónico validado sobre el fix `PRE_PUSH_UPSTREAM_MISALIGNED` (`cd3d45f`),
|
|
1710
|
+
- normalización de estado en MD RuralGo sin contradicciones (`FP-030`, `PUMUKI-INC-056`, `PUMUKI-INC-057`, `PUMUKI-INC-058` => `✅ FIXED`),
|
|
1711
|
+
- backlog activo de RuralGo queda en cero incidencias abiertas para este corte.
|
|
1712
|
+
- Evidencia (2026-03-05):
|
|
1713
|
+
- actualización directa de `/Users/juancarlosmerlosalbarracin/Developer/Projects/R_GO/docs/technical/08-validation/refactor/pumuki-integration-feedback.md`.
|
|
1714
|
+
- verificación de consistencia: `rg -n \"🚧 REPORTED|⏳ REPORTED\" .../pumuki-integration-feedback.md` -> sin incidencias abiertas.
|
|
1715
|
+
|
|
1716
|
+
- ✅ PUMUKI-137: Preparar y ejecutar el siguiente corte de release (versionado + publicación npm + upgrade en consumidores RuralGo/SAAS/Flux_training).
|
|
1717
|
+
- Resultado implementado:
|
|
1718
|
+
- release publicada: `pumuki@6.3.40` (npm `latest`).
|
|
1719
|
+
- upgrade consumidores completado:
|
|
1720
|
+
- `R_GO`: `pumuki@6.3.40` + `pumuki install` + `status/doctor` en verde.
|
|
1721
|
+
- `SAAS:APP_SUPERMERCADOS`: `pumuki@6.3.40` + `pumuki install` + `status/doctor` en verde.
|
|
1722
|
+
- `Flux_training`: instalación inicial `pumuki@6.3.40` + `pumuki install` + `status/doctor` en verde.
|
|
1723
|
+
- Evidencia (2026-03-05):
|
|
1724
|
+
- `npm publish --access public` -> `+ pumuki@6.3.40`.
|
|
1725
|
+
- `npm view pumuki version` -> `6.3.40`.
|
|
1726
|
+
- validación local release:
|
|
1727
|
+
- `npm run -s test:backlog-tooling` -> `49 pass / 0 fail`.
|
|
1728
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1729
|
+
|
|
1730
|
+
- ✅ PUMUKI-138: Endurecer UX de notificaciones de bloqueo multi-repo (contexto de proyecto + modal fiable).
|
|
1731
|
+
- Resultado implementado:
|
|
1732
|
+
- `scripts/framework-menu-system-notifications-lib.ts`:
|
|
1733
|
+
- añade contexto de proyecto en notificaciones (`<repo> · <stage> · <causa>`),
|
|
1734
|
+
- activa modal de bloqueo por defecto en macOS cuando hay `gate.blocked` (sin depender obligatoriamente de `PUMUKI_MACOS_BLOCKED_DIALOG=1`),
|
|
1735
|
+
- soporta override explícito (`PUMUKI_MACOS_BLOCKED_DIALOG=0|1`) y preserva control anti-spam existente.
|
|
1736
|
+
- `scripts/__tests__/framework-menu-system-notifications.test.ts`:
|
|
1737
|
+
- nueva cobertura para subtítulo con proyecto,
|
|
1738
|
+
- nueva cobertura para apertura de modal por defecto.
|
|
1739
|
+
- Evidencia (2026-03-05):
|
|
1740
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/framework-menu-system-notifications.test.ts` -> `13 pass / 0 fail`.
|
|
1741
|
+
- `npm run -s typecheck` -> `PASS`.
|
|
1742
|
+
|
|
1743
|
+
- 🚧 PUMUKI-139: Monitorizar feedback post-release en consumidores reales (SAAS y RuralGo) y registrar únicamente hallazgos netos nuevos para siguiente corte.
|
|
1744
|
+
- Alcance:
|
|
1745
|
+
- vigilar nuevos bloqueos/regresiones tras `6.3.41`,
|
|
1746
|
+
- mantener MDs externos sincronizados por leyenda sin contradicciones,
|
|
1747
|
+
- preparar siguiente paquete de fixes/mejoras sin re-bugs.
|
|
1748
|
+
|
|
1749
|
+
- ✅ PUMUKI-140: Publicar patch release con mejoras UX de notificación de bloqueo multi-repo.
|
|
1750
|
+
- Resultado implementado:
|
|
1751
|
+
- release `pumuki@6.3.41` publicada con:
|
|
1752
|
+
- proyecto visible en subtítulo de bloqueo,
|
|
1753
|
+
- modal de bloqueo habilitada por defecto en macOS,
|
|
1754
|
+
- override explícito `PUMUKI_MACOS_BLOCKED_DIALOG=0|1`.
|
|
1755
|
+
- Evidencia (2026-03-05):
|
|
1756
|
+
- `npm publish --access public` -> `+ pumuki@6.3.41`.
|
|
1757
|
+
- `npm view pumuki version` -> `6.3.41`.
|