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.