Skip to main content
MemoryType is both the module a block lives in and the type of the block itself.
Each type answers three questions structurally, not by configuration:
Only semantic, procedural and episodic may ever be proposed by a model. Canonical is the source itself; provenance is the brain’s own record of what happened. ProcessingTask refuses to let a model propose either.

Canonical

Evidence that a source was incorporated and preserved: the bytes as observed, addressed by their hash, so every later claim can be traced back.
A normalized_view is a deterministic transform of the original — never a replacement for it. Which transform ran, and at which version, is recorded in provenance.

Semantic

A unit of consolidated general knowledge.
kind is one of concept, fact, formula, relation, constraint. A Relation is an explicit symbolic edge; its target must resolve in the snapshot, or the candidate is rejected.

Procedural

A way of performing a task.
steps must hold at least one Step. A step may name alternatives and the blocks it uses.

Episodic

A concrete experience, situated in time.
Episodic memory is append-only by protocol, not by policy. An episode is a record of what happened and cannot be rewritten, so drop raises and no policy can permit it. demote is the only removal path available.

Provenance

A single immutable entry in the provenance ledger. You do not construct these — the brain writes them, and every one of the six record types is discriminated on record_type: Reading the ledger back is what makes cascades and accessibility computable: