# E-021 — Dos formas equivalentes de npm hicieron incompleto un cierre válido

- Fecha: 2026-08-03
- Estado: limitación de planificación confirmada; mitigada en el contrato de schema-forge.

## Jerarquía de objetivos

- Objetivo principal: detectar desvíos deterministas con una señal temprana y trazable.
- Objetivo de proyecto: ETP-4708 en schema-forge.
- Objetivo de ronda: hacer verificable la preservación de tests reparados.

## Trayectoria observada

Para endurecer el contrato se declaró el check final `npm test`, con timeout de cinco minutos, como evidencia de preservación del refactor. La suite pasó en 38.6 segundos y el criterio `AC-PRIMARY` quedó probado.

Sin embargo, el planner detectó además el script de package como `npm run test`. Como deduplica por igualdad literal de `argv`, no reconoció ambos comandos como equivalentes, agregó `package-test` como `discovered-not-configured` y lo dejó `skipped`. El `round-end --mode final` devolvió `UNKNOWN` con clasificación `verification-incomplete`, aun con la suite real aprobada.

## Corrección y límites

El contrato de schema-forge se normalizó al comando canónico `npm run test`; el cierre posterior quedó completo. La mitigación actual depende de que el autor del contrato use la forma que el planner descubre.

No es evidencia de que la suite sea semánticamente suficiente ni de que PR #992 esté verde en CI remoto. También revela una limitación de Objective Guard: el modelo de checks trata comandos textualmente equivalentes como identidades distintas.

## Impacto sobre la tesis

La señal fue conservadora: no produjo un falso `PASS`. Eso es preferible a aprobar cobertura incompleta. Pero añade fricción evitable y puede erosionar confianza si obliga a aprender convenciones sintácticas del planner en vez de razonar sobre el check ejecutado.

## Seguimiento

Agregar normalización semántica acotada para aliases seguros de package scripts (`npm test` y `npm run test`) o emitir una recomendación de canonicalización antes del cierre. Cubrirlo con regresión y no convertir comandos arbitrarios en equivalentes.
