Skip to content

C3: State Surface Declared

Enforces P2: Each harness is stateful.

BlockContract.state_surface is required. A StateSurface declares:

  • persistencenone, run, session, project, or global
  • queryable_via — e.g. scorecard, ledger, or snapshot_export
  • retention — how long the state is kept

persistence: none is legal, but it must be declared rather than left implicit.

Enforced at: tests/contract/test_state_surface_declared.py.