Value types
This page defines the value types supported by Strata and the guarantees associated with each.
The value model is intentionally minimal. Every type exists because it can be encoded unambiguously and canonically.
If a type introduces ambiguity, it does not belong in the core.
Overview
Strata supports a fixed set of value types:
null
bool
int
string
bytes
list
map
No additional core types exist.
There are:
no floats
no optional types
no implicit defaults
no undefined behavior
Null
Meaning Represents the explicit absence of a value.
Properties
Has exactly one representation
Carries no payload
Is not interchangeable with zero, false, or empty values
Canonical guarantees
One tag
No associated data
No alternative encodings
Bool
Meaning Represents a boolean truth value.
Allowed values
true
false
Canonical guarantees
Each value has a distinct tag
No numeric or textual coercion
No truthy / falsy semantics
Int
Meaning Represents a signed integer.
Range
Signed 64-bit
From −2⁶³ to 2⁶³ − 1
Properties
Exact integer semantics
No rounding
No overflow tolerance
No implicit widening or narrowing
Canonical guarantees
Exactly one binary representation per integer
No alternative encodings
No leading zeros
No multiple varint forms
String
Meaning Represents textual data.
Encoding
UTF-8
Stored as raw UTF-8 bytes
Properties
Strings are sequences of bytes interpreted as UTF-8
No Unicode normalization
No locale-dependent behavior
Canonical guarantees
Invalid UTF-8 is rejected
Byte sequence is preserved exactly
Identical text always produces identical bytes\
Bytes
Meaning Represents raw binary data.
Use cases
Hashes
Binary payloads
Cryptographic material
Packed external formats
Properties
Opaque sequence of bytes
No interpretation
No encoding assumptions
Canonical guarantees
Length is explicit
Bytes are preserved verbatim
No transformation or normalization
List
Meaning Represents an ordered sequence of values.
Properties
Order is significant
Elements may be of mixed types
Length is explicit
Canonical guarantees
Order is preserved exactly
Each element is encoded in sequence
No reordering or normalization
Map
Meaning Represents key–value associations.
Key restrictions
Keys must be strings
Keys must be unique
Properties
Values may be any Strata value
Ordering is not semantic
Canonical guarantees
Keys are sorted by UTF-8 byte order during encoding
Duplicate keys are rejected at encode time
Exactly one canonical ordering exists
Structural completeness
All Strata values are composed recursively from these types.
There are:
no extension hooks
no hidden metadata
no tagged unions
no implicit containers
Every structure can be reduced to combinations of these primitives.
Why the model is minimal
Each value type satisfies three conditions:
It can be represented without ambiguity
It can be encoded canonically
It behaves identically across languages
Types that violate any of these conditions are excluded from the core.
Non-goals
The value model does not attempt to represent:
floating-point arithmetic
time or dates
schemas
optionality
precision hints
domain-specific semantics
Such concerns belong in higher layers, not in the canonical core.
Stability guarantee
The value model is frozen per version.
Once a version is finalized:
no types are removed
existing types do not change semantics
canonical representations remain stable
Any modification to the value model requires:
a new version
a new Northstar invariant
explicit documentation
Summary
Small, fixed set of value types
No ambiguity
No coercion
No implicit behavior
Canonical by construction
The value model is the vocabulary of Strata. Everything else builds on top of it.
Last updated
Was this helpful?