Skip to content

P2: Each Harness Is Stateful

Each harness is stateful.

Every allow-listed harness declares where its state lives, how it is queried, and how long it is retained, through its StateSurface. persistence: none is a valid choice — but only when it is declared.

Why it matters

A stateless component cannot carry mitigation quality, scorecards, exemplars, or memory across runs. The state surface is what makes a harness improvable over time (P5) and auditable after the fact. State may be private (per-harness) or shared (a ledger or scorecard surface) — either is fine, as long as the contract says which.

How it is enforced

C3: State surface declared requires a StateSurface on every allow-listed contract, with persistence, queryable_via, and retention. The declared surface is rendered on each harness's generated page.

Primary gate: C3: State surface declared.