# E-025 — Un gate pre-edición instalado en `PostToolUse` habría llegado tarde

- Estado: falso negativo de integración prevenido antes de uso real; eficacia operativa aún no observada.

## Jerarquía de objetivos

- Objetivo principal: detectar y frenar desvíos de agente temprano con evidencia medible.
- Objetivo de producto: obligar el flujo explícito de tarea antes de una edición estructurada en Claude y Codex.
- Ronda: `R-EVIDENCE-CONTEXT`, que incorpora `task-flow`, contexto de trabajo y evidencia comparable.

## Trayectoria observada

Después de implementar el gate que responde `permissionDecision: deny` sin un `task-flow: ready`, la primera modificación de las configuraciones globales coincidió por patrón textual con el cierre de `PostToolUse`. El JSON era válido y el hook existía, pero se habría ejecutado después de la escritura: observaría la falta de preflight demasiado tarde para cumplir su objetivo.

## Comportamiento esperado y real

El comportamiento esperado era una denegación antes de `Edit|Write`. El comportamiento real de esa primera instalación habría sido una observación post-edición. La validación explícita de la topología de hooks —evento y matcher, no sólo JSON parseable— detectó la diferencia antes de abrir una sesión de agente que pudiera mutar.

## Corrección y evidencia

Se retiró el bloque de `PostToolUse` y se instaló bajo `PreToolUse` con matcher `Edit|Write` en los archivos globales de Claude y Codex. Ambas configuraciones vuelven a parsear como JSON y apuntan al mismo `src/pre-edit-gate.mjs`. La regresión `test/pre-edit-gate.test.mjs` prueba negar antes de un preflight y permitir tras `task-flow: ready` contra el hash de contrato vigente.

## Clasificación y límites

Es un falso negativo de integración **prevenido**, no un finding orgánico del agente ni evidencia de que el gate ya reduzca desvíos. La prueba cubre la semántica local del gate; falta comprobar que cada harness interpreta la salida de permiso como bloqueo durante una sesión nueva real.

## Impacto sobre la tesis

Un hook instalado en el evento incorrecto puede producir telemetría impecable pero cero intervención temprana. Por tanto, la evidencia de integración debe incluir ubicación en el ciclo de vida, capacidad de denegación y un ensayo real, no sólo la presencia del script o un archivo de configuración válido.

## Seguimiento verificable

En la próxima sesión nueva de Claude y de Codex, intentar una edición estructurada sin ejecutar `oguard task-flow --json`; registrar si ambos la bloquean. Luego ejecutar el preflight y verificar que una edición permitida genera la telemetría normal. Si cualquiera no bloquea, registrar un episodio separado por harness.
