# E-040 — AWC instalado usaba rutas de desarrollo y hooks globales divergentes

## Jerarquía de objetivos

`O-AWC-CONSISTENCY` exige coherencia entre repositorio y AWC instalado con las interfaces publicadas de los motores. La ronda `R-AWC-INSTALLED-REPAIR` contribuye a `KR-INSTALLED-FLOW` mediante tests de ciclo de vida del paquete empaquetado e instalación global verificada. Sigue la limitación de integración pendiente de [E-039](E-039-passive-sample-readiness.es.md).

## Trayectoria observada y evidencia

`@fyso/awc` 0.1.1 instalado invocaba una ruta fuente hermana de Awareness ausente del tarball y buscaba `src/cli.mjs` dentro del repositorio destino para cerrar Objective Guard. Su núcleo leía el board compartido legacy de Awareness. AWC estaba instalado bajo el prefijo de Node 22 mientras los motores actuales también existían bajo `/opt/homebrew`, dejando instalaciones duplicadas.

La inspección de hooks encontró ausencia del gate pre-edición de Objective Guard en Claude, un matcher `Edit|Write` sobre el gate de parches de Codex y dos wrappers globales de prompt separados del instalador vigente del repositorio. El checkout histórico con las fuentes de AWC tenía 182 commits por delante y uno por detrás; se preservó su historia no relacionada.

La reparación establece `packages/core` y `packages/cli` en el checkout activo, incluye el núcleo exacto e invoca motores instalados del PATH. Usa routing por worktree de Awareness y rechaza verificación final incompleta. El primer fixture real de ciclo de vida recibió correctamente una advertencia de no-op porque no había cambiado superficie de tarea; se corrigió el fixture para realizar su trabajo declarado sobre README, mientras un test separado conserva el requisito de rechazar cierre no-op.

La suite completa aprobó 170 tests sin omisiones antes de la instalación global. Los tests del tarball instalado cubren ciclo y sucesora, sucesora bloqueada con evidencia preservada, referencias discordantes, verificación fallida, fallo parcial de Awareness/reintento y boards independientes por worktree. Los tests de migración de prompts preservan integraciones ajenas y evitan prompts duplicados de Awareness.

## Comportamiento esperado y real del guard

Preflight exigió una sucesora explícita de la ronda cerrada de análisis. El criterio de regresión configurado usa checks de suite completa y documentación. Una advertencia `new-dep` identificó correctamente la dependencia del núcleo recién versionada; es una dependencia propia incluida intencionalmente, no un servicio externo inesperado. Se inspeccionó la advertencia con `oguard list`; el comando `oguard findings` de la instrucción inyectada no estaba disponible en el CLI publicado. No se usó una etiqueta de falso positivo ni un cambio de umbral para ocultarla.

Los tests empaquetados, en lugar de imports solo del repositorio, expusieron y verificaron el límite del paquete. El guard final verifica scope y evidencia de regresión declarada; no puede descubrir todas las instalaciones globales de shell ni certificar el comportamiento de todos los hooks de terceros.

## Clasificación y corrección

Es un defecto de empaquetado/integración con cobertura insuficiente de la superficie instalada. No es evidencia de desempeño estadístico del detector de desvíos. Se respaldaron copias globales y configuraciones de hooks propios antes de modificarlas. AWC 0.1.2 y Objective Guard 0.1.2 se instalaron desde tarballs locales en `/opt/homebrew`; se conservó Awareness Framework 0.5.0. Las copias duplicadas de Awareness eran idénticas en bytes antes de quitar las copias de Node 22. No se publicó una versión en el registry npm.

El instalador canónico migró registros legacy de prompts, instaló el gate de Claude, quitó el matcher incorrecto de Codex y conservó 39 entradas ajenas de hooks de Claude y 24 de Codex. Ambos comandos instalados de prompt emitieron JSON válido con guía de AWC y guard, sin repetir el prompt independiente de Awareness. Los wrappers obsoletos respaldados se eliminaron después de migrar.

## Impacto y seguimiento

`awc start` y `awc check` instalados aprobaron sobre esta ronda real con cero discrepancias. El trabajo contribuye directamente al objetivo padre de integración; no sustituye la adjudicación independiente de resultados pendiente en el análisis de datos. Mantener tests de instalación empaquetada cuando cambien límites de paquetes o invocación de motores. Aprobar el cierre certifica solo los checks declarados, no éxito general de tarea ni utilidad de señales estadísticas.
