Two layers, one trust chain
The engine stores your context in two layers. Verbatim logs sit at the bottom. Every push lands here first, byte for byte, and is indexed for retrieval within seconds. Logs are immutable: nothing downstream can edit them, ever. That immutability is what makes everything above checkable. The context graph sits on top. A background worker merges new content into readable pages made of addressable blocks, typically within minutes of a push. The work per push scales with the new content, not with the size of your corpus. There is no global recompute. The rule connecting the layers: the graph must cite the logs. A claim in the graph that cannot quote the log underneath it does not get committed.The fact ledger
Between the two layers sits the fact ledger. Every fact in your graph is a ledger row carrying two things:- Recency. When the fact became valid, whether it has been superseded, and by what. Page bodies show current truth; superseded facts are invalidated, never silently deleted.
- Lineage. Verbatim quotes from the log as evidence, a label for whether the claim was stated by a source or inferred, and a dependency chain. Superseding a premise flags every conclusion built on it.
Deterministic gates
Every proposed change passes six families of checks, all enforced in code, before it touches your graph:- The assembled file diff must equal exactly the declared edits. Undeclared change is physically impossible.
- New stated facts must quote the log verbatim. Unmatched claims quarantine for review instead of committing.
- Fact renderings are frozen outside ledger events.
- The changelog on every page is composed by the server, not the model. The model cannot edit its own trail.
- Every fact edit maps to exactly one ledger event.
- Validators catch contradictions, orphaned content, and malformed structure. A page shrinking suspiciously in one run parks for review instead of committing.
The write-ahead log
Every change follows the same write path: it is staged in full in a write-ahead log, checked by the gates, applied in ordered durable steps, and committed as a diff in your graph’s version-controlled vault. The payoff is recovery. A crash mid-apply replays deterministically from the staged record, without calling the model again. Queries always serve the last committed state, never a half-applied one. And because every change is a commit, you can diff any two points in your memory’s history and read exactly what changed, when, and on what evidence.The boundary, stated plainly
The mechanical edit trail is guaranteed by code: every byte change is accounted for and the model cannot forge it. Semantic judgment (did the model link a fact to the right entity?) is audited and bounded, not guaranteed. Perfect recording of edits, not perfect memory. When judgment calls need a human, they land in the review queue.Where to go next
Context lake
One lake, many context graphs: how your memory is organized.
The context lake
What happens when you tell the engine it’s wrong.