Cells & the four substances

The kernel governs four substances. Each has its own discipline of use — a law about how it may move through time — and the whole kernel is the enforcement of those four laws plus the birth and retirement of the bundles that carry them.

The cell

A cell is the four substances gathered behind one identity: an operator, a lifecycle, a nonce, a per-asset balance column, a sorted-Merkle capability list, a program (a predicate over its own transitions), and a slot record. Nothing in the system is ownerless: every object is a cell or lives in one. An asset is an issuer cell's promise — AssetId is the issuer's CellId, and mint/burn are the issuer moving value from and to its own well under its own program.

Registers are the L1; the heap is where apps live

A cell's programmable state is two tiers. The registers are a small, fixed set of named fields — the cell's L1: lifecycle, nonce, the capability root, and a handful of program slots. They are cheap, always present, and committed directly. Above them sits the heap: a single register, heap_root, commits an openable sorted-Poseidon2 Merkle map over (collection, key) → value. An app that needs more than a few slots — an order book, a per-member tally, a content index — keeps its data in the heap, and the cell still carries only one root.

The expressiveness uplift is that a heap key is a first-class subject of the guard algebra. A program can demand heap_get(collection, key) = v or heap_contains(collection, key) as a precondition, exactly as it demands a register relation — so a cell's rules can range over unbounded state without growing the kernel. A heap write is the write verb: it runs under the same caveat-gated frame discipline as any slot write (authority, membership, lifecycle, per-slot caveats), recomputes the root, and touches nothing else. The register and the heap are one object — the cell, the executor, and the circuit all read Heap.root of the same sorted leaf list — so installing the heap added no verb. The kernel did not grow; the addressable state did. (Where the heap binds today: kernel-proven against the deployed circuit::heap_root scheme; the per-turn in-circuit heap_root register rides the rotation relayout — rung 7.)

The eight verbs

The kernel signature is eight verbs. This is not parsimony for its own sake: each verb is the structural rule of one substance's discipline, and minimality is a theorem — drop any verb and the behavior it provides has no other provider (VerbRegistry.each_verb_irreplaceable).

verbsubstance / polaritywhat it is the rule of
createbirth / introducemint a new four-substance cell (incl. factory instantiation).
writestate / neutralguarded heap/program/permission update under the frame (the state rule).
movevalue / neutralexchange of the linear substance — Σδ = 0 (incl. fees/burn as moves to wells).
grantauthority / introduceauthorized production / narrowing of authority along ONE edge (the authority rule).
revokeauthority / eliminateepoch-narrowing that stales held authority (the revocation half of authority).
shieldUnshieldevidence / introduceevidence monotonicity — shield (note-create) and unshield (note-spend/nullifier).
lifecycleretirement / eliminatethe seal/unseal/destroy/sovereign custody automaton (bundle retirement).
7 verb constructors (8 directions — shield and unshield count separately), generated from Dregg2/Substrate/VerbRegistry.lean. Minimality and completeness are theorems there: minimality · each_verb_irreplaceable · classify_total · effect_tag_count · cover_hits_both.

Every kernel verb passes two gates: admission (the epistemic half — does the supplied witness realize the demanded predicate?) and a footprint law (the ontic half — the update respects what its substances are: the linear, produced, monotone, and guarded laws above, unified as one frame-preserving-update shape in the resource algebra of Dregg2/Resource.lean).

The wire surface, classified

The wire vocabulary that turns actually carry is larger than eight — and every one of its 27 live effect tags is classified onto the kernel by a total, compiler-checked cover (VerbRegistry.classify, effect_tag_count): it either is a kernel verb, or it is turn structure (exercising a capability is a use, not a verb; a refusal is an outcome; the nonce is prologue; pipelining is composition), or it is a factory pattern — a cell program built from the surviving verbs (escrows, obligations, queues, bridges, stored capabilities). Adding a wire variant without classifying it is a compile error; that is what "the catalog cannot drift" means. Factories are rung 6.

Grounding

Live instance

Touch it: inspect a live cell — its balances, c-list, program, and lifecycle — in the explorer, and browse the full wire vocabulary with typed arguments in the ontology catalog.

← 1 · The turn · 3 · Guards →