FAQ
This section answers common questions about Strata’s design, guarantees, and intended use. If something feels strict, that is usually intentional.
What problem does Strata solve?
Strata solves byte-level determinism.
If two systems encode the same logical value, they must produce:
identical bytes
identical hashes
This matters for:
content addressing
cryptographic hashing
signatures
distributed consensus
reproducible builds
audit trails
If bytes differ, Strata considers that a bug.
How is Strata different from JSON, Protobuf, or MessagePack?
Those formats prioritize flexibility and evolution.
Strata prioritizes correctness and determinism.
Key differences:
One valid encoding per value
No field reordering ambiguity
No multiple integer encodings
No permissive decoding
Canonical bytes are the contract
Strata trades convenience for guarantees.
Is Strata human-readable?
No.
Strata Core Binary (.scb) is intentionally not human-readable.
Strata Text (.st) exists as a human authoring format, not a transport format. It always compiles into canonical binary.
Humans read and write .st. Machines exchange .scb.
Why doesn’t Strata support floats?
Floating-point formats introduce ambiguity:
platform differences
rounding behavior
multiple binary representations for similar values
Strata avoids this entirely at the core layer.
Future versions may introduce deterministic numeric extensions, but the v0.3.x core intentionally excludes floats.
Can I add schemas or validation on top of Strata?
Yes, but outside the core.
Strata intentionally does not define:
schemas
optional fields
defaults
validation rules
These can be layered on top without affecting canonical encoding.
The core format stays small and frozen.
Is Strata fast?
Strata is designed to be:
simple to encode
simple to decode
easy to verify
Performance is predictable and stable. There are no hidden normalization steps or heuristics.
Correctness is prioritized over micro-optimizations.
Can Strata be streamed?
Yes.
Strata itself is framing-agnostic. Northstar T3 proves that canonical bytes survive arbitrary framing.
Framing is a transport concern, not a format concern.
What happens if decoding fails?
Decoding fails explicitly.
Strata decoders:
reject malformed input
reject non-canonical encodings
report precise error offsets and kinds
never silently recover
If decoding succeeds, the value is canonical.
What are Northstars?
Northstars are invariants enforced by tests.
Each Northstar proves a specific guarantee, such as:
cross-language determinism
raw wire safety
framed streaming safety
If a Northstar fails, the change is rejected.
Northstars block regressions by design.
Is Strata stable?
Yes, within its defined scope.
As of v0.3.x, the following are frozen:
canonical encoding
hashing semantics
value model
decode behavior
Future versions may add layers, but existing guarantees will not be weakened.
Who is Strata for?
Strata is for systems that need:
correctness over convenience
reproducibility over flexibility
byte-level guarantees
If you need rapid schema evolution or human-readable transport, Strata is probably not the right tool.
That is an intentional tradeoff.
Where is the source of truth?
Golden vectors.
Rust must match them
JavaScript must match them
CI enforces them
If code disagrees with vectors, the code is wrong.
Always.
Still unsure?
A good rule of thumb:
If your system cares about exact bytes, Strata fits. If it doesn’t, use something else.
Strata is opinionated by design. That is its strength.
Last updated
Was this helpful?