Wave 2 · The opening · record #21domain.factcell.opened
#21 · the Cell is open
Nothing was told to hear cell.opened, so nothing changes. It is a mark for readers.
Came fromthe machineThe machine wrote it while the engine took #20: CellSpace admitted the Cell. step 119
when the engine took #21
123The engine takes #21ENGINE.CURSOR · propagate
a wave is settlingengine: working on #21membrane: waiting at #20
The log - #0a listener
- #1a doer
- #2listener: the charter
- #3doer: the author
- #4listener: charter seen
- #5listener: blueprint seen
- #6doer: the planner
- #7listener: assess · charter
- #8listener: assess · result
- #9doer: the evaluator
- #10the charter wanted
- #11the blueprint
- #12readiness
- #13readiness
- #14a request: a charter
- #15the charter proposed
- #16the charter defined
- #17readiness
- #18readiness
- #19a request: a Cell
- #20the seed
- #21the Cell is open
- #22inner listener
- #23inner doer
- #24the Cell's context
- end of the log
The engine What before after pointer — the next record to take #21 #22 The engine moves on to #21, the Cell's opening. Nothing was told to hear
cell.opened, so nothing changes: it is a mark for readers.Where it happens
takeNextTuple()Vol. 02 §4.1The engine's step: take the record under its pointer and move the pointer on — or stop, if the pointer has reached the end.
- Specification
- Vol. 02 §4.1
- Code
takeNextTuple()incore/registers/take-next-tuple.ts, line 15: at the end of the log, the engine stops- Journal
- #21 ·
ENGINE.CURSOR · propagate· offset: 21 · by engine - Picture
- pointer — the next record to take: #21 → #22
core/registers/take-next-tuple.ts· build 043cc8b// ENGINE.CURSOR advance (Vol. 02 §4.1) — the machine's instruction pointer:// returns the tuple at the cursor and moves it forward exactly once, or null// at quiescence. Advancing IS the context switch: the ambient wave context// moves to the propagated tuple in the same movement, so every transition// journalled during its propagation is attributed to it — the cube's spine.// The cursor never rewinds.import type { WaveTuple } from "../wave/gate";import type { RegisterFile } from "./register-file";import { recordTransition } from "./record-transition";import { setDriver, setWaveContext } from "./set-wave-context";export function takeNextTuple(file: RegisterFile): WaveTuple | null {const engine = file.registers.engine;if (engine.cursor >= engine.base + engine.window.length) return null;↑ at the end of the log, the engine stopsconst tuple = engine.window[engine.cursor - engine.base];engine.cursor += 1;↑ the engine's pointer moves on by onesetWaveContext(file, { offset: tuple.offset, phase: "propagate" });setDriver(file, "engine");recordTransition(file, "engine", "ENGINE.CURSOR", "propagate", { offset: tuple.offset });↑ the change is written into the journalreturn tuple;}
AGPL-3.0-onlyThe Lab's demonstration environment, as this fragment ran it (build 043cc8b). The code may change, and may differ from the code of a working machine.
Nest VM core, incubated in the CoAgnes garden · build 043cc8b (2026-09-21) · this file last changed in 6730f58 (2026-09-13)
when the membrane passed #21
131The membrane passes #21MEMBRANE.CURSOR · sweep
a wave is settlingengine: at the endmembrane: passing #21
The log - #0a listener
- #1a doer
- #2listener: the charter
- #3doer: the author
- #4listener: charter seen
- #5listener: blueprint seen
- #6doer: the planner
- #7listener: assess · charter
- #8listener: assess · result
- #9doer: the evaluator
- #10the charter wanted
- #11the blueprint
- #12readiness
- #13readiness
- #14a request: a charter
- #15the charter proposed
- #16the charter defined
- #17readiness
- #18readiness
- #19a request: a Cell
- #20the seed
- #21the Cell is open
- #22inner listener
- #23inner doer
- #24the Cell's context
- end of the log
The membrane What before after pointer — the next record to pass #21 #22 #21 asks nothing of the world, so the membrane's pointer simply moves on.
Where it happens
sweepNextTuple()Vol. 02 §4.6 · Vol. 07 §3The membrane's step: pass over the record under its pointer and move the pointer on — exactly once per record.
- Specification
- Vol. 02 §4.6 · Vol. 07 §3
- Code
sweepNextTuple()incore/registers/sweep-next-tuple.ts, line 16: the membrane's pointer moves on by one- Journal
- #21 ·
MEMBRANE.CURSOR · sweep· offset: 21 · by membrane - Picture
- pointer — the next record to pass: #21 → #22
core/registers/sweep-next-tuple.ts· build 043cc8b// MEMBRANE.CURSOR advance (Vol. 02 §4.6, Vol. 07 §3): the membrane's own// reading of the one log — the second reception of one publication, never a// second truth. The cursor advances exactly once per offset per machine:// the exactly-once discharge guarantee lives in this movement.import type { WaveTuple } from "../wave/gate";import type { RegisterFile } from "./register-file";import { recordTransition } from "./record-transition";import { setDriver, setWaveContext } from "./set-wave-context";export function sweepNextTuple(file: RegisterFile): WaveTuple | null {const engine = file.registers.engine;const membrane = file.registers.membrane;if (membrane.cursor >= engine.base + engine.window.length) return null;const tuple = engine.window[membrane.cursor - engine.base];membrane.cursor += 1;↑ the membrane's pointer moves on by onesetWaveContext(file, { offset: tuple.offset, phase: "sweep" });setDriver(file, "membrane");recordTransition(file, "membrane", "MEMBRANE.CURSOR", "sweep", { offset: tuple.offset });↑ the change is written into the journalreturn tuple;}
AGPL-3.0-onlyThe Lab's demonstration environment, as this fragment ran it (build 043cc8b). The code may change, and may differ from the code of a working machine.
Nest VM core, incubated in the CoAgnes garden · build 043cc8b (2026-09-21) · this file last changed in 6730f58 (2026-09-13)
Choose a step in the stack — or press →.
A fact: the Cell is open
CellSpace's public mark that a Cell was admitted: its name, its seed, the intention that asked for it, its charter, its mode, the names of its records, its budgets and capabilities, and a digest of the package.
#21domain.factcell.opened the machine
| envelope | |
|---|---|
offset | 21Its place in the log — the only address a record has. The engine gives it when the record is added, the next free number, and it never changes. |
kind | domain.factWhich of the four kinds of record the machine knows. The kind decides what the payload holds. |
key | fragment-one-cellThis session's lane. |
| payload | |
factType | cell.openedThe fact type — cell.opened, written by CellSpace alone. |
| payload.data | |
cellRef | cell@20The Cell's name: cell@ and its seed's offset. |
seedOffset | 20Where its seed stands in the log. |
plannerUid | admit.note.gate--l1.seeking.planner#1The intention that asked for it. |
charterRef | charter@15Its charter. |
charterDigest | sha256:d697d7f3224e3a44a0888949eb98ee5ecf54aa09b2fc4aba2addca763458ec1bThe charter's digest: the Cell is bound to exactly this charter. |
mode | trialTrial: its result stays private until it is assessed and reviewed. |
isolation | subscribedSubscribed: it hears the facts it accepts, and nothing else of root. |
recordIds | ×2The listener and doer written for it. |
budgets | max_records · max_emissions · max_inference_callsWhat it may spend: records, effects, calls to a model. |
capabilities | ×1What it may use. |
packageDigest | sha256:d9d93c212bf924f74bb3055b04351bd75e70d677b048b3e0a16257c915365c05A digest of the package it was admitted from. |
end · #21
In the specificationVol. 03 §1Vol. 03 §5Vol. 12 §5.2
Names it shares with other records
The record as the machine keeps it
{
"offset": 21,
"kind": "domain.fact",
"key": "fragment-one-cell",
"payload": {
"factType": "cell.opened",
"data": {
"cellRef": "cell@20",
"seedOffset": 20,
"plannerUid": "admit.note.gate--l1.seeking.planner#1",
"charterRef": "charter@15",
"charterDigest": "sha256:d697d7f3224e3a44a0888949eb98ee5ecf54aa09b2fc4aba2addca763458ec1b",
"mode": "trial",
"isolation": "subscribed",
"recordIds": [
"cell@20::l1.seeking.gate",
"cell@20::l1.seeking.release"
],
"budgets": {
"max_records": 2,
"max_emissions": 120,
"max_inference_calls": 12
},
"capabilities": [
"inference"
],
"packageDigest": "sha256:d9d93c212bf924f74bb3055b04351bd75e70d677b048b3e0a16257c915365c05"
}
}
}