Skip to content

versioning_compat

Versioning & Compatibility

STATUS: AUTHORITATIVE

Breaking change definition: - Any schema field removal/rename. - Any invariant relaxation/tightening. - Any change to fingerprint canonicalization or hashing.

Trace compatibility: - Supported trace_schema_version set is fixed in code. - Unknown versions are rejected unless an explicit upgrader is provided. - Older traces must be upgraded via documented migrators; otherwise rejected.

Artifact longevity: - Artifacts are intended to be archivable; replay must succeed with pinned corpus/index/provenance and matching schema versions. - Changing canonicalization_version or fingerprint_algo breaks compatibility; requires major release and migrator.

Undefined behavior: - Consuming traces/artifacts with mismatched versions without migration.

Compatibility Promise Table: | Aspect | Never changes without major bump | May change with migration | May change anytime | | ------------------------- | -------------------------------- | ------------------------- | ------------------ | | Trace schema version set | Yes | With explicit migrator | No | | Fingerprint algorithm | Yes | No | No | | Canonicalization version | Yes | With explicit migrator | No | | Optional fields (additive)| No | Yes | No | | Invariants | Yes | With major bump | No |

Scope Closure: - Does NOT restate trace schema; see trace_format.md. - Does NOT define verifier behavior; see verification_model.md. - Does NOT define lifecycle; see trace_lifecycle.md.

BREAKING_IF_CHANGED: true

You understand this document if and only if you can answer: - What constitutes a breaking change. - How older traces are treated when schema versions differ. - Which aspects can change with/without migration.***