Skip to content

C1: Block Contract Mandatory

Enforces P1: Every component is a harness.

Every concrete AIBlock subclass on the production allowlist must carry an @block_contract declaration. The decorator attaches the contract to the class (__g6_block_contract__); the contract is the source for generated harness pages and for reliability routing.

Scope and migration

Allow-listed components (per policies/production_harnesses.yaml) must satisfy C1 once promoted. Non-allow-listed components may carry placeholder values and are flagged in the scorecard rather than failing CI — promotion requires filling the placeholders.

Enforced at: tests/contract/test_every_block_has_contract.py.