Skip to content

Conformance

Conformance is incremental — each level builds on the previous one. Claim only the level you fully satisfy.

Focus: cryptographic correctness.

RequirementDetail
Required methodsintegrity.digest.sha256 (or sha512 / blake3)
CanonicalizationJSON content must follow the JCS-subset rules in the spec
Digest format{ "alg": "<algorithm>", "value": "<lowercase-hex>" }
DeterminismSame input must always produce the same digest

Claim L1:

{
"conformance_level": "L1-integrity",
"implements": ["integrity.digest.sha256"]
}

Focus: provenance record construction.

Requires everything from L1, plus:

Required methodsPurpose
adapter.wrap.envelope_v0_1Wrap non-envelope payloads
adapter.provenance.attach_record_v0_1Attach a provenance record to an envelope
engine.prov.artifact.register_outputRegister output artifacts

Additional rules:

  • Envelope must be a valid mcp.envelope.v0.1.
  • No double-wrapping — existing envelopes pass through unchanged.
  • Only claim methods that were actually applied.

Focus: provenance chains and graphs.

Requires everything from L2, plus:

Required methodsPurpose
lineage.parent.linkLink to parent provenance records

Additional rules:

  • parents[] must contain valid run_id values.
  • Parent records should be retrievable.
  • The lineage graph must be a DAG (no cycles).

All method IDs belong to one of four defined namespaces:

NamespacePurpose
adapter.*Envelope wrapping, transport, execution wrappers
engine.*Evidence extraction, normalization, provenance construction
integrity.*Hashing, signatures, verification
lineage.*Parent linking and graph operations

Four additional namespaces are reserved for future use:

NamespaceIntended purpose
policy.*Access control, retention policies
attestation.*Third-party attestations, compliance claims
execution.*Runtime environment, resource usage
audit.*Audit trail operations

Implementations must not use reserved namespaces until they are formally specified.

These methods are not required for any conformance level but enhance an implementation:

MethodPurpose
engine.prov.artifact.register_inputTrack input artifacts
engine.extract.evidence.json_pointerJSON pointer evidence anchors
engine.extract.evidence.text_linesText line evidence anchors
integrity.signature.createSign provenance records
integrity.signature.verifyVerify signatures

Declare optional methods in your prov-capabilities.json:

{
"optional": [
"engine.prov.artifact.register_input",
"integrity.signature.create"
]
}
Terminal window
# Validate your manifest
python tools/python/prov_validator.py validate-manifest prov-capabilities.json
# Run applicable test vectors
python tools/python/prov_validator.py check-vector integrity.digest.sha256
python tools/python/prov_validator.py check-vector adapter.wrap.envelope_v0_1
# Run all built-in checks (schemas, vectors, catalog)
python tools/python/prov_validator.py self-test

See Specification for repository structure, versioning rules, and canonicalization details.