Backward compatibility philosophy
Strata treats backward compatibility as a design choice, not an assumption.
This page explains what Strata does, what it does not do, and why.
The core stance
Strata does not guarantee backward compatibility across MINOR versions.
This is intentional.
Backward compatibility that is implicit, undocumented, or accidental is a liability in deterministic systems.
Why backward compatibility is not automatic
In Strata, guarantees are stronger than convenience:
Bytes are contracts
Hashes are identities
Semantics are invariants
If compatibility is assumed without being enforced, correctness degrades silently.
Strata refuses silent compatibility.
Compatibility vs determinism
Many formats optimize for:
evolution
flexibility
gradual migration
Strata optimizes for:
exactness
verifiability
long-term reproducibility
These goals conflict.
When they do, Strata chooses determinism.
What backward compatibility WOULD require
Backward compatibility in Strata must be:
explicit
documented
testable
enforced by vectors and Northstars
If compatibility cannot be proven mechanically, it is not considered compatible.
Allowed forms of compatibility
Backward compatibility MAY exist when:
New versions introduce additive layers
Existing canonical bytes remain valid
Hashes of existing values remain unchanged
Old values retain identical semantics
In such cases, compatibility is earned, not assumed.
Forbidden forms of compatibility
The following are explicitly rejected:
Silent reinterpretation of bytes
Auto-upgrading data on decode
“Best effort” decoding
Version sniffing that alters semantics
Accepting malformed data for convenience
If old data behaves differently, compatibility is broken.
Compatibility boundaries
Compatibility in Strata is defined at these boundaries:
Canonical
.scbbytesHash output
Decode acceptance and failure modes
Cross-language equivalence
Anything outside these boundaries is not compatibility-critical.
Version lines are trust zones
Each MINOR version defines a trust zone:
v0.3.x is one trust zone
v0.4.x is another
Within a trust zone:
behavior is frozen
guarantees are stable
Across trust zones:
behavior may change
guarantees may evolve
Trust does not automatically cross version lines.
Why this is safer
This philosophy ensures:
no accidental breakage
no ambiguous migrations
no reliance on undocumented behavior
no long-term entropy in meaning
Systems depending on Strata can reason about data without guesswork.
Practical implication
If you need:
long-lived hashes
content addressing
cryptographic verification
distributed consensus
You must pin a Strata version explicitly.
This is not a weakness. It is how correctness is preserved.
Summary
Strata does not promise backward compatibility by default.
When compatibility exists:
it is explicit
it is tested
it is enforced
Silence is not compatibility. Assumption is not compatibility.
Only proofs count.
Last updated
Was this helpful?