# E-031 — The initial contract could block its own configuration

## Context

- Date: 2026-08-04.
- Main objective: reduce agent drift without turning governance into a task's main cost.
- Evidence: real end-to-end session of a multi-tenant feature (PR #272) on the Mac mini.

## Observed trajectory

The protocol required checks and obligations to demonstrate a feature, but the CLI could not declare them. Manually editing `oguard.contract.json` changed its hash; `next-round` rejected the mismatch, and `accept-baseline` required a close that, before checks were configured, was impossible or `unknown`. The guard protected the code, but made creating its own contract circular.

## Correction

`start` and `next-round` now accept checks (`--check id=argv,...`), a timeout, and obligations (`--obligation kind=criterion-id,...`) as first-class artifacts. The evidence is frozen together with the initial baseline. For historical contracts already edited, `accept-baseline` admits a single bootstrap without `round-end` if the committed delta since the baseline contains only Objective Guard configuration artifacts.

Checks that are discovered but not configured become a visible recommendation, not a terminal incomplete verification. `.oguard/**` is excluded from the surface, and the hook immediately allows a file outside the contract's physical root.

## Limit and follow-up

The bootstrap exception admits no code or product documents: it still requires a reason, an actor, and a clean tree. Measure accepted bootstraps and whether they contain more than one configuration artifact; expanding this exception without observations would revive the E-003 risk of accommodating the contract to work already done.
