Versioning policy
Strata versioning exists to protect determinism, hashes, and trust.
Version numbers are not cosmetic. They define hard boundaries of correctness.
Version format
Strata uses semantic versioning with stricter rules than typical libraries:
vMAJOR.MINOR.PATCH
MAJOR Reserved for future use. Not currently incremented.
MINOR Introduces changes to canonical rules, semantics, or guarantees.
PATCH Fixes and additions that do not change bytes, hashes, or decode behavior.
Stability first, iteration second
Strata optimizes for correctness over velocity.
If a change alters:
encoded bytes
hashes
canonical ordering
decode acceptance
error semantics
it is not a patch.
Frozen contract (v0.3.x)
As of v0.3.x, the following are frozen and guaranteed:
Canonical encoding rules
Binary layouts and tags
Value model
Integer semantics
UTF-8 string rules
Map ordering
Hashing input and algorithm
Decode failure behavior
Cross-language determinism
All v0.3.x implementations must agree byte-for-byte.
Allowed changes within a patch version
PATCH releases may include:
Bug fixes that restore documented behavior
Performance improvements
Tooling improvements (CLI, helpers)
Documentation updates
Additional tests or vectors
New Northstar tests that enforce existing guarantees
PATCH releases must NOT change:
emitted bytes
hash output
decode acceptance or rejection rules
What requires a new MINOR version
A new MINOR version is required if anything canonical changes.
Examples:
Adding or modifying a value type
Changing integer, string, or map semantics
Altering canonical ordering rules
Modifying hashing input or algorithm
Tightening or relaxing decode rules
Changing error kinds or offsets
Any change that alters existing
.scbbytes
If hashes change, a minor bump is mandatory.
Northstar requirement
Any MINOR version change must include:
A new Northstar invariant
CI enforcement of that invariant
Explicit documentation of the new guarantee
No canonical change is valid without a Northstar.
Backward compatibility
Strata does not promise backward compatibility across MINOR versions.
If compatibility is provided, it must be:
explicit
documented
tested
Silent compatibility assumptions are forbidden.
Philosophy
If two systems disagree on bytes, the version boundary was crossed.
Strata versions communicate:
what is frozen
what is guaranteed
where trust boundaries lie
If a change feels small but alters hashes, it is not small.
Stability statement
Strata v0.3.x is stable and production-ready for its defined scope.
Future versions may expand Strata with new layers, but existing guarantees will never be weakened retroactively.
Last updated
Was this helpful?