Common misconceptions

Strata is deliberately strict and opinionated. That tends to create misunderstandings. This page addresses the most common ones.


"Strata is just another serialization format"

No.

Strata is not primarily about serialization. It is about canonical representation.

Serialization is incidental. The real contract is:

  • one logical value

  • one binary representation

  • one hash

If you only need to move data around, Strata is probably unnecessary.


"Strata is too strict to be practical"

Strictness is the point.

Permissive formats work well until correctness depends on bytes. At that point, ambiguity becomes a liability.

Strata removes ambiguity up front so systems do not have to reason about it later.


"Strata should support schema evolution like Protobuf"

Schema evolution and canonical encoding conflict.

Allowing optional fields, defaults, or reordering introduces multiple valid encodings. That breaks determinism.

Strata intentionally keeps schemas out of the core. Schema layers can exist above it.


"Strata Text is the canonical format"

No.

Strata Core Binary (.scb) is canonical. Strata Text (.st) is an authoring format.

Multiple .st files may describe the same value. Only one .scb representation is valid.


"Decoders should accept non-canonical data and normalize it"

No.

Silent normalization hides bugs and weakens guarantees.

Strata decoders either:

  • accept canonical data

  • or fail explicitly

There is no in-between.


"Map key order shouldn’t matter"

Map key order absolutely matters at the byte level.

Strata enforces canonical ordering so that:

  • all encoders emit keys in the same order

  • hashes are stable

  • re-encoding is idempotent

Logical equality implies byte equality.


"Hashes are just a convenience feature"

Hashes are part of the contract.

Strata is designed so that:

  • hashing is deterministic

  • hashing input is unambiguous

  • hashing behavior is stable across languages

If hashes change unexpectedly, something is broken.


"Strata is slow because it uses BigInt"

BigInt is used for correctness, not for convenience.

Performance remains predictable because:

  • encoding rules are simple

  • there are no fallback paths

  • no normalization passes exist

In practice, performance is stable and debuggable.


"Strata will eventually add everything JSON has"

No.

Strata is intentionally small.

New features are added only if they:

  • preserve canonical guarantees

  • do not introduce ambiguity

  • can be enforced by Northstars

Convenience alone is not sufficient justification.


"Future versions will break existing data"

Only if you opt into them.

Strata does not silently evolve.

If bytes or hashes change:

  • the version changes

  • a new Northstar is introduced

  • the break is explicit and documented

Existing versions remain valid.


"Strata is trying to replace everything"

It is not.

Strata is a foundational layer. It does one thing well and leaves the rest to higher layers.

It fits best where correctness is non-negotiable.


Final note

Most misconceptions come from expecting Strata to behave like flexible formats.

It does not.

That is intentional.

Last updated

Was this helpful?