The v0.1.0 schema documents the AOC grammar for both canonical YAML and lossless JSON mirrors.
Public schema identifier:
https://schemas.openagentcontracts.org/aoc/v0.1.0/contract.schema.json
The implementation currently uses a private internal dogfood slug while the schema file lives in the monorepo. That internal value is not a public schema identifier, is not a durable public URL, and does not replace the placeholder above.
Raw input requires exactly seven root keys:
contract_versionappcontextsactionshuman_askreceiptsprovenanceThe normalised shape has eight root keys because anti_claims is
optional-with-default.
Deeply required roots:
contract_version: non-empty semver string.app: object with non-empty id and purpose.provenance: object with non-empty author and generated_at.Action objects require:
idlabeleffect_classgateThe v0 schema accepts inputs as a free-form object. A stricter input schema
is a future-version concern, not a v0.1.0 requirement.
effect_class must be one of:
read_onlyreversible_internalexternalirreversiblegate must be one of:
nonepreviewreview_requiredauthorization_requiredforbiddenUnknown enum values are schema errors.
Stable in v0:
actions[].id;actions[].label;actions[].effect_class;actions[].gate;human_ask;receipts;anti_claims;provenance.Experimental in v0:
actions[].inputs shape;actions[].cooldown;actions[].two_key;actions[].binding_status;user_values;hard_boundaries;export_targets.Deprecated in v0:
The v0 validator rejects a closed list of root keys so that deferred concepts do not quietly become part of the standard.
Readiness-score keys:
readiness_scoreagent_readyagent_readinessreadiness_gradeCryptographic-attestation keys:
signaturesignaturesattestationattestationssigned_bysigning_keyPublic-schema-id keys inside a contract document:
$idschema_idpublic_schema_idpublished_idThe schema file may have schema metadata. A contract document must not use these fields to claim a public schema identifier.