Roots and receipts
Domain-separated roots bind encoded state to an explicit purpose. The digest domain is knolo:<domain>:v1 with SHA-256 over canonical CBOR, unless a later contract names a different preimage. A stored root field is not part of its own preimage. Composition uses the same rule for compositionRoot, excerptRoot, attestationRoot, and signatureRoot.
| Root | Binds |
|---|---|
stateRoot | The V5 image identity |
| Commit roots | Parent, objects, events, view, schema, policy, runtime, sequence |
| Query plan and result roots | A bounded EQL execution against that image |
knowledgeRoot | KAR's digest of the image. Not stateRoot |
KARRoot | The KAR evaluation |
compositionRoot | A composition record body |
traceRoot, answerRoot, evidenceRoot | A Cortex trace |
Receipts preserve an inspectable chain from artifact state to the operation: migration receipts, query receipts, KAR certificates, composition attestations, Cortex traces, and Evidence Gate certificates.
A matching root means the operation is bound to those bytes. It does not promote the operation into a truth verdict. Hub attested: true is a listing flag and is not an attestation root.