# Reglas, estados y validaciones de Objective Guard

## Reglas de decisión

### REG-01 — `error` no es `pass`

- [Inferencia] Un timeout, fallo de parser o error interno produce alcance desconocido.
- [Inferencia] El loop puede continuar, pero el error queda registrado.

### REG-02 — Sólo evidencia reproducible bloquea de forma determinista

- [Inferencia] El finding debe incluir regla, versión, ubicación y reproducción.
- [Inferencia] La severidad se aplica por política explícita.

### REG-03 — Una anomalía no es una incorrección

- [Inferencia] Un percentil o p-value conformal expresa extremidad respecto de una muestra.
- [Inferencia] La salida no puede expresarlo como probabilidad directa de código incorrecto.

### REG-04 — Delta-only

- [Inferencia] Un fingerprint activo no se re-emite.
- [Inferencia] Un hallazgo resuelto puede resumirse en una sola línea.
- [Inferencia] Perder estado puede causar repetición, nunca silencio permanente.

### REG-05 — Presupuesto de salida

- [Inferencia] Nivel 0 emite máximo cinco líneas, severidad descendente y overflow explícito.

### REG-06 — Obligación de evidencia por tarea

| Tipo | Obligación mínima |
| --- | --- |
| bugfix | Reproducción o test de regresión. |
| feature | Comportamiento nuevo y compatibilidad relevante. |
| refactor | Preservación observable. |
| improvement | Baseline y métrica. |
| migration | Integridad, compatibilidad y recuperación. |
| investigation | Evidencia y conclusión sin mutación productiva implícita. |

### REG-07 — Excepciones no borran hechos

- [Inferencia] Una aprobación cambia la decisión actual, no el historial.
- [Ambigüedad] Modelo de identidad aún no definido.

### REG-08 — Estadística inicialmente pasiva

- [Inferencia] Una feature estadística sin calibración sólo se registra.
- [Inferencia] Activación requiere generalización fuera de muestra y ensayo con placebo.

## Estados

### Estado de sesión

```text
discovery → active → verifying → completed
                 ↘ blocked
```

- `discovery`: objetivo ambiguo; inspección permitida, mutación sensible advertida.
- `active`: contrato suficiente para trabajar.
- `verifying`: cierre en curso; criterios y checks finales.
- `completed`: criterios requeridos satisfechos o exceptuados válidamente.
- `blocked`: existe violación o autoridad faltante.

[Ambigüedad] La transición exacta para reabrir sesiones todavía no está definida.

### Estado de criterio

- `proven`: evidencia reproducible satisface el criterio.
- `violated`: existe evidencia en contra.
- `unknown`: información insuficiente o check no ejecutado.
- `not_applicable`: justificación explícita aceptada.

### Estado de finding

```text
new → active → resolved
          ↘ excepted → expired → active
```

- [Inferencia] `new` se emite una vez.
- [Inferencia] `active` permanece en estado completo sin re-emisión automática.
- [Inferencia] `resolved` aparece como resumen delta.
- [Inferencia] `excepted` conserva el finding y agrega decisión.

### Estado de señal estadística

```text
experimental → calibrated → intervention-tested → active
       ↘ rejected       ↘ suspended
```

- `experimental`: observación pasiva.
- `calibrated`: generaliza fuera de muestra.
- `intervention-tested`: demuestra utilidad neta.
- `active`: puede intervenir según política.
- `rejected`: no supera baselines o falla calibración.
- `suspended`: drift de datos o degradación operacional.

## Validaciones

### Contrato de sesión

- Objetivo original presente.
- Tipo conocido o `discovery`.
- Cada criterio posee ID estable.
- Scope e invariantes indican procedencia.
- Conflictos de política son visibles.
- Hash del contrato cambia ante cualquier modificación.

### Resultado

- Status pertenece al enum permitido.
- Alcance declarado.
- Findings nuevos separados de conocidos.
- Checks ejecutados y omitidos listados.
- Duración y versión disponibles.
- Reproducción presente para bloqueos deterministas.

### Evento científico

- `run_id` y `step` estables.
- Timestamp y acción.
- Hash del diff.
- Hash de contrato cuando exista.
- Superficie sin fusionar hechos e inferencias.
- Resultado de checks.
- Eventos append-only.

### Guard documental

- [Hecho] `scripts/validate-docs.mjs` comprueba archivos requeridos.
- [Hecho] Comprueba campos contractuales de capacidades.
- [Hecho] Comprueba tabla de matriz y links relativos.
- [Ambigüedad] No verifica aún anchors Markdown ni exactitud científica externa.
