> For the complete documentation index, see [llms.txt](https://strata.emagjby.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://strata.emagjby.com/docs/introduction/readme.md).

# What is Strata

Strata is a deterministic data format with canonical encoding.

It defines a **single, unambiguous binary representation** for structured data. If two systems encode the same logical value, they **must** produce identical bytes and identical hashes.

This is not a convenience feature. It is a correctness guarantee.

Strata is designed for systems where byte-level stability matters more than flexibility, and where differences in encoding are considered bugs, not acceptable variation.

***

### Deterministic by design

Most data formats allow multiple valid encodings for the same value. Strata does not.

In Strata:

* Every value has exactly **one valid binary form**
* There are no equivalent encodings
* There is no normalization step
* There is no permissive decoding

If two encoders produce different bytes for the same value, at least one of them is wrong.

Determinism is enforced, not suggested.

***

### Canonical encoding

Strata's canonical encoding rules define:

* how values are represented in binary
* how integers are encoded
* how strings are encoded
* how maps are ordered
* what constitutes valid and invalid data

Canonical rules are **frozen per version**. Once finalized, they do not change.

This guarantees that data encoded today will produce the same bytes and hashes in the future, across all compliant implementations.

***

### Binary core, textual authoring

Strata consists of two layers:

* **Strata Core Binary (`.scb`)**\
  The canonical binary format.\
  This is the source of truth for hashing, storage, and transport.
* **Strata Text (`.st`)**\
  A human-readable authoring format that compiles into canonical `.scb`.\
  `.st` is a convenience layer. `.scb` is the truth.

Only `.scb` participates in determinism guarantees.

***

### What Strata is not

Strata is intentionally limited.

It is **not**:

* a schema system
* a self-describing format
* a compression format
* a streaming protocol
* a cryptographic container
* a general-purpose serialization framework

It does not support:

* floating-point numbers
* optional fields
* default values
* backward-compatible schema evolution

These constraints are deliberate. Flexibility in representation introduces ambiguity. Strata chooses precision over convenience.

***

### When Strata makes sense

Strata is designed for systems where:

* data is content-addressed or hashed
* hashes must be stable across languages
* byte-level equality matters
* correctness depends on reproducibility
* data may outlive any single implementation

If your system requires "mostly the same" bytes, Strata is not the right tool. If it requires **exactly the same bytes**, Strata exists for that purpose.

***

### Summary

Strata is a deterministic data format with canonical encoding.

Same value -> same bytes -> same hash\
Always. Everywhere. Or it is a bug.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://strata.emagjby.com/docs/introduction/readme.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
