# E-031 — El contrato inicial podía bloquear su propia configuración

## Contexto

- Fecha: 2026-08-04.
- Objetivo principal: reducir desvíos de agentes sin convertir la gobernanza en el principal costo de una tarea.
- Evidencia: sesión real end-to-end de un feature multi-tenant (PR #272) en la Mac mini.

## Trayectoria observada

El protocolo exigía checks y obligaciones para demostrar una feature, pero la CLI no podía declararlos. Editar `oguard.contract.json` manualmente cambiaba su hash; `next-round` rechazaba el mismatch y `accept-baseline` pedía un cierre que, antes de configurar checks, era imposible o `unknown`. El guard protegía el código, pero volvía circular la creación de su propio contrato.

## Corrección

`start` y `next-round` aceptan ahora checks (`--check id=argv,...`), timeout y obligaciones (`--obligation kind=criterion-id,...`) como artefactos de primera clase. La evidencia se congela junto con el baseline inicial. Para contratos históricos ya editados, `accept-baseline` admite un único bootstrap sin `round-end` si el delta committeado desde el baseline contiene sólo artefactos de configuración de Objective Guard.

Los checks descubiertos pero no configurados pasan a ser recomendación visible, no una verificación incompleta terminal. Se excluye `.oguard/**` de la superficie y el hook permite de inmediato un archivo fuera de la raíz física del contrato.

## Límite y seguimiento

La excepción de bootstrap no admite código ni documentos de producto: sigue requiriendo razón, actor y árbol limpio. Medir los bootstrap aceptados y si contienen más de un artefacto de configuración; ampliar esa excepción sin observaciones reviviría el riesgo E-003 de acomodar el contrato al trabajo hecho.
