What is NOT guaranteed

Strata is intentionally strict. That also means it is intentionally narrow.

This page defines what Strata does not promise, and why those omissions are deliberate.


Schema evolution

Strata does not guarantee:

  • Backward-compatible schema changes

  • Forward-compatible decoding

  • Optional fields

  • Default values

  • Field presence inference

There is no schema layer in core Strata.

If you need schema evolution, it must exist outside the format.


Field compatibility

Strata does not guarantee:

  • That a consumer understands new fields

  • That missing fields can be inferred

  • That renamed fields can be mapped automatically

Strata encodes values, not meaning.


Floating-point behavior

Strata does not guarantee:

  • IEEE 754 semantics

  • Rounding behavior

  • NaN propagation

  • Cross-language float equality

Floating-point numbers are excluded from core precisely because they are not deterministic across environments.


Numeric coercions

Strata does not guarantee:

  • Automatic int ↔ float coercion

  • Implicit narrowing or widening

  • Numeric compatibility across types

Integers are integers. Nothing else is assumed.


Performance characteristics

Strata does not guarantee:

  • Encoding speed

  • Decoding speed

  • Memory allocation patterns

  • Zero-copy behavior

  • Streaming decode performance

Correctness comes first. Performance is implementation-specific.


Memory layout

Strata does not guarantee:

  • In-memory representation

  • Object layout

  • Struct alignment

  • Allocation strategies

Only the wire format is defined.


Error message text

Strata does not guarantee:

  • Identical error strings

  • Identical stack traces

  • Identical exception types

It guarantees error classes, not wording.


Ordering beyond maps

Strata does not guarantee ordering for:

  • Map iteration after decoding

  • Object field order in host languages

  • JSON serialization output

Ordering is only guaranteed in the canonical byte encoding.


Transport semantics

Strata does not guarantee:

  • Delivery

  • Reliability

  • Ordering

  • Security

  • Authentication

Those belong to the transport layer.


Compression and encryption

Strata does not guarantee:

  • Compression

  • Encryption

  • Signatures

  • Authentication tags

These must be layered externally.


Cross-version compatibility

Strata does not guarantee:

  • Compatibility across major versions

  • Automatic migrations

  • Silent upgrades

Each finalized version is frozen. New versions may add layers, but old rules do not change.


Developer ergonomics

Strata does not guarantee:

  • Easy debugging

  • Human-readable binaries

  • Friendly diffs

  • Minimal boilerplate

Strata is optimized for correctness, not comfort.


Summary

Strata does not try to be everything.

It intentionally does not promise:

  • Schemas

  • Floats

  • Flexibility

  • Convenience

  • Evolution magic

What it promises instead is simpler:

If something works, it works everywhere. If something breaks, it breaks loudly.

Everything else is someone else’s job.

Last updated

Was this helpful?