# E-019 — El descubrimiento incremental sobrescribía el inventario global

- Fecha: 2026-08-03
- Estado: falso negativo de observabilidad confirmado, corregido y cubierto por regresión.

## Jerarquía de objetivos

- Objetivo principal: detectar desvíos deterministas con una señal temprana y trazable.
- Objetivo de fase: mantener un inventario global sanitizado de proyectos bajo observación.
- Objetivo de ronda: preservar proyectos registrados al descubrir uno nuevo.

## Trayectoria observada

`schema-forge` tenía una ronda y actividad de hook registradas. Al volver a ejecutar `oguard inventory discover` para `sonar-alt`, el comando escribió un nuevo `projects.json` con sólo la raíz encontrada en esa invocación. Más tarde, al registrar explícitamente schema-forge, la entrada de sonar-alt desapareció. Los eventos JSONL no se borraron, pero el reporte sólo considera hashes de proyectos registrados, por lo que la actividad del proyecto omitido quedaba invisible.

## Corrección y evidencia

`discoverProjects` ahora une las raíces nuevas con las previamente registradas, preservando además sus aliases de hash. La operación es aditiva: olvidar o depurar un proyecto requerirá un comando explícito futuro, no una búsqueda en un root más estrecho. La regresión ejecuta dos descubrimientos separados y exige que `inventory status` conserve ambos proyectos.

## Impacto sobre la tesis

Un inventario que confunde “no escaneado en esta llamada” con “no existe” sesga la muestra y puede exagerar o esconder actividad por repositorio. La corrección preserva cobertura de exposición; no convierte los eventos `pass` existentes en evidencia de eficacia causal ni de sensibilidad de detectores.

## Seguimiento

El reporte global debe conservar y mostrar el conteo por proyecto en una mejora posterior, para que una caída de actividad sea interpretable sin inspeccionar el archivo de registro.
