a wave is settlingengine working on #10membrane waiting at #2

Wave 2 · The charter · record #10domain.factadmit.note.gate--l1.seeking.charter.wanted

#10 · the charter wanted

The charter gate opens a lane, keeps it, and announces it as #12. On the way, CellSpace sets up its registers.

Came froma personThe person's act of opening a Cell sowed it at the door: the first presentation to the admission figure — the seat gives the charter its shape, the person its question. step 21

Read as

when it came in at the door

  1. 21Record #10 enters the logLOG · append

    a wave is settlingengine: next: #2membrane: waiting at #2

    The log
    1. #0a listener
    2. #1a doer
    3. #2listener: the charterenginemembrane
    4. #3doer: the author
    5. #4listener: charter seen
    6. #5listener: blueprint seen
    7. #6doer: the planner
    8. #7listener: assess · charter
    9. #8listener: assess · result
    10. #9doer: the evaluator
    11. #10the charter wantednew
    12. end of the log
    The log
    Whatbeforeafter
    records in the log1011
    #10—the charter wanted · admit.note.gate--l1.seeking.charter.wanted

    The door adds #10: the first presentation: the charter wanted — the seat's title and purpose, the person's question, two criteria.

    Where it happens appendEmissions()Vol. 02 §4.1 · Vol. 03 §1

    The only function that adds records to the log. Each new record gets the next free number, at the end.

    Specification
    Vol. 02 §4.1 · Vol. 03 §1
    Code
    appendEmissions() in core/registers/append-emissions.ts, line 14: the new record gets the next free number
    Journal
    LOG · append · offset: 10, kind: domain.fact · by engine
    Picture
    records in the log: 10 → 11
    core/registers/append-emissions.ts · build 043cc8b
    1. // The one LOG writer (Vol. 02 §4.1, Vol. 03 §1): emissions become tuples by
    2. // receiving the next dense absolute offset — `base + window.length` — and
    3. // nothing else ever grows the log. Each append is journalled under the
    4. // ambient context, so a batch born of a propagated tuple carries that
    5. // tuple's offset as its cause — the cube's provenance line (ADR-002).
    6. import type { WaveEmission, WaveTuple } from "../wave/gate";
    7. import type { RegisterFile } from "./register-file";
    8. import { recordTransition } from "./record-transition";
    9. export function appendEmissions(file: RegisterFile, emissions: readonly WaveEmission[]): void {
    10. const engine = file.registers.engine;
    11. for (const emission of emissions) {
    12. const tuple: WaveTuple = { ...emission, offset: engine.base + engine.window.length };↑ the new record gets the next free number
    13. engine.window.push(tuple);↑ it is added at the end of the log
    14. recordTransition(file, "engine", "LOG", "append", {↑ the change is written into the journal
    15. offset: tuple.offset,
    16. kind: tuple.kind
    17. });
    18. }
    19. }

    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 f36e70d (2026-08-18)

when the engine took #10

  1. 44The engine takes #10ENGINE.CURSOR · propagate

    a wave is settlingengine: working on #10membrane: waiting at #2

    The log
    1. #0a listener
    2. #1a doer
    3. #2listener: the chartermembrane
    4. #3doer: the author
    5. #4listener: charter seen
    6. #5listener: blueprint seen
    7. #6doer: the planner
    8. #7listener: assess · charter
    9. #8listener: assess · result
    10. #9doer: the evaluator
    11. #10the charter wantedengine · working
    12. #11the blueprint
    13. end of the log
    The engine
    Whatbeforeafter
    pointer — the next record to take#10#11

    The engine's pointer moves past #10 — the first thing presented to the admission figure.

    Where it happens takeNextTuple()Vol. 02 §4.1

    The 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() in core/registers/take-next-tuple.ts, line 15: at the end of the log, the engine stops
    Journal
    #10 · ENGINE.CURSOR · propagate · offset: 10 · by engine
    Picture
    pointer — the next record to take: #10 → #11
    core/registers/take-next-tuple.ts · build 043cc8b
    1. // ENGINE.CURSOR advance (Vol. 02 §4.1) — the machine's instruction pointer:
    2. // returns the tuple at the cursor and moves it forward exactly once, or null
    3. // at quiescence. Advancing IS the context switch: the ambient wave context
    4. // moves to the propagated tuple in the same movement, so every transition
    5. // journalled during its propagation is attributed to it — the cube's spine.
    6. // The cursor never rewinds.
    7. import type { WaveTuple } from "../wave/gate";
    8. import type { RegisterFile } from "./register-file";
    9. import { recordTransition } from "./record-transition";
    10. import { setDriver, setWaveContext } from "./set-wave-context";
    11. export function takeNextTuple(file: RegisterFile): WaveTuple | null {
    12. const engine = file.registers.engine;
    13. if (engine.cursor >= engine.base + engine.window.length) return null;↑ at the end of the log, the engine stops
    14. const tuple = engine.window[engine.cursor - engine.base];
    15. engine.cursor += 1;↑ the engine's pointer moves on by one
    16. setWaveContext(file, { offset: tuple.offset, phase: "propagate" });
    17. setDriver(file, "engine");
    18. recordTransition(file, "engine", "ENGINE.CURSOR", "propagate", { offset: tuple.offset });↑ the change is written into the journal
    19. return tuple;
    20. }

    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)

  2. 45The charter gate opens a lane for this sessionCLEWS · open-clew

    a wave is settlingengine: working on #10membrane: waiting at #2

    The log
    1. #0a listener
    2. #1a doer
    3. #2listener: the chartermembrane
    4. #3doer: the author
    5. #4listener: charter seen
    6. #5listener: blueprint seen
    7. #6doer: the planner
    8. #7listener: assess · charter
    9. #8listener: assess · result
    10. #9doer: the evaluator
    11. #10the charter wantedengine · working
    12. #11the blueprint
    13. end of the log
    The listener admit.note.gate--l1.seeking.charter.gate
    Whatbeforeafter
    lane · this session—open

    The fact carries this session's key, so the charter gate opens a lane for it, where this session's facts are kept apart from any other.

    Where it happens ensureClew()Vol. 02 §4.2 · Vol. 03 §5.1

    Opens a lane in a listener for a new key — the first time a fact with that key reaches it.

    Specification
    Vol. 02 §4.2 · Vol. 03 §5.1
    Code
    ensureClew() in core/registers/ensure-clew.ts, line 15: a new lane is opened for this key
    Journal
    #10 · CLEWS · open-clew · key: fragment-one-cell · by knot:admit.note.gate--l1.seeking.charter.gate
    Picture
    lane · this session: — → open
    core/registers/ensure-clew.ts · build 043cc8b
    1. // CLEWS lane creation (Vol. 02 §4.2): a clew is created lazily on the first
    2. // tuple of its key — parallel keys wind independent understanding (Vol. 05
    3. // §2, Vol. 03 §5.1). Creation is a transition (journalled); an existing lane
    4. // is a read and passes through silently.
    5. import type { ClewHandle, ClewRegisters } from "./topology-registers";
    6. import { recordTransition } from "./record-transition";
    7. export function ensureClew(clew: ClewHandle, init: () => ClewRegisters): ClewRegisters {
    8. const lanes = clew.region.clews.get(clew.knotId);
    9. if (!lanes) throw new Error(`Clew bank missing for knot '${clew.knotId}' — registration must precede facts (Vol. 02 §5.1).`);
    10. let registers = lanes.get(clew.key);
    11. if (!registers) {
    12. registers = init();
    13. lanes.set(clew.key, registers);↑ a new lane is opened for this key
    14. recordTransition(clew.file, `topology:${clew.region.regionId}/clew:${clew.knotId}`, "CLEWS", "open-clew", {↑ the change is written into the journal
    15. key: clew.key
    16. });
    17. }
    18. return registers;
    19. }

    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 f36e70d (2026-08-18)

  3. 46The charter gate keeps the charter wantedCOLLECTED · collect

    a wave is settlingengine: working on #10membrane: waiting at #2

    The log
    1. #0a listener
    2. #1a doer
    3. #2listener: the chartermembrane
    4. #3doer: the author
    5. #4listener: charter seen
    6. #5listener: blueprint seen
    7. #6doer: the planner
    8. #7listener: assess · charter
    9. #8listener: assess · result
    10. #9doer: the evaluator
    11. #10the charter wantedengine · working
    12. #11the blueprint
    13. end of the log
    The listener admit.note.gate--l1.seeking.charter.gate
    Whatbeforeafter
    lane · this session · slot wantedemptycharter = {"title":"Seeking","purpose":"What are we seeking to understand, and for whom does it matter?","question":"What is a Cell, and why does the machine open one instead of answering in place?","criteria":[{"id":"q1","question":"What is this material about, and what exactly are we seeking to understand in it?","weight":1,"minimum":0.6},{"id":"q2","question":"Whose problem does it address, and why does it exist?","weight":1,"minimum":0.6}]}

    The charter wanted goes into the gate's slot wanted: the seat's title and purpose, the person's question, two criteria at a threshold of 0.6. One fact is all the gate waits for.

    Where it happens collectDeterministicSlot()Vol. 02 §4.4 · Vol. 05 §3.3

    Fills a slot of a listener with a value it heard.

    Specification
    Vol. 02 §4.4 · Vol. 05 §3.3
    Code
    collectDeterministicSlot() in core/registers/collect-deterministic-slot.ts, line 20: the slot is filled
    Journal
    #10 · COLLECTED · collect · key: fragment-one-cell, slot: wanted, reduce: latest · by knot:admit.note.gate--l1.seeking.charter.gate
    Picture
    lane · this session · slot wanted: empty → charter = {"title":"Seeking","purpose":"What are we seeking to understand, and for whom does it matter?","question":"What is a Cell, and why does the machine open one instead of answering in place?","criteria":[{"id":"q1","question":"What is this material about, and what exactly are we seeking to understand in it?","weight":1,"minimum":0.6},{"id":"q2","question":"Whose problem does it address, and why does it exist?","weight":1,"minimum":0.6}]}
    core/registers/collect-deterministic-slot.ts · build 043cc8b
    1. // COLLECTED write (Vol. 02 §4.4, Vol. 05 §3.3): the deterministic knot's
    2. // slot fills — `append` accumulates an array, otherwise the newest value
    3. // stands. The condition never runs here; this op records the landing.
    4. import type { DeterministicClewRegisters, ClewHandle } from "./topology-registers";
    5. import { recordTransition } from "./record-transition";
    6. export function collectDeterministicSlot(
    7. clew: ClewHandle,
    8. registers: DeterministicClewRegisters,
    9. slot: string,
    10. reduce: string,
    11. value: unknown
    12. ): void {
    13. if (reduce === "append") {
    14. const existing = registers.collected.get(slot);
    15. if (Array.isArray(existing)) existing.push(value);
    16. else registers.collected.set(slot, [value]);
    17. } else {
    18. registers.collected.set(slot, value);↑ the slot is filled
    19. }
    20. recordTransition(clew.file, `topology:${clew.region.regionId}/clew:${clew.knotId}`, "COLLECTED", "collect", {↑ the change is written into the journal
    21. key: clew.key,
    22. slot,
    23. reduce
    24. });
    25. }

    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 f36e70d (2026-08-18)

  4. 47The slot is emptied againCOLLECTED · reset

    a wave is settlingengine: working on #10membrane: waiting at #2

    The log
    1. #0a listener
    2. #1a doer
    3. #2listener: the chartermembrane
    4. #3doer: the author
    5. #4listener: charter seen
    6. #5listener: blueprint seen
    7. #6doer: the planner
    8. #7listener: assess · charter
    9. #8listener: assess · result
    10. #9doer: the evaluator
    11. #10the charter wantedengine · working
    12. #11the blueprint
    13. end of the log
    The listener admit.note.gate--l1.seeking.charter.gate
    Whatbeforeafter
    lane · this session · slot wantedcharter = {"title":"Seeking","purpose":"What are we seeking to understand, and for whom does it matter?","question":"What is a Cell, and why does the machine open one instead of answering in place?","criteria":[{"id":"q1","question":"What is this material about, and what exactly are we seeking to understand in it?","weight":1,"minimum":0.6},{"id":"q2","question":"Whose problem does it address, and why does it exist?","weight":1,"minimum":0.6}]}empty

    Having enough, the gate will announce it — and first empties its slot, so that a later fact starts afresh. What it heard travels with the announcement.

    Where it happens resetDeterministicClew()Vol. 02 §4.4

    Empties a listener's slots once it has announced that it is ready.

    Specification
    Vol. 02 §4.4
    Code
    resetDeterministicClew() in core/registers/reset-deterministic-clew.ts, line 9: the slots are emptied
    Journal
    #10 · COLLECTED · reset · key: fragment-one-cell · by knot:admit.note.gate--l1.seeking.charter.gate
    Picture
    lane · this session · slot wanted: charter = {"title":"Seeking","purpose":"What are we seeking to understand, and for whom does it matter?","question":"What is a Cell, and why does the machine open one instead of answering in place?","criteria":[{"id":"q1","question":"What is this material about, and what exactly are we seeking to understand in it?","weight":1,"minimum":0.6},{"id":"q2","question":"Whose problem does it address, and why does it exist?","weight":1,"minimum":0.6}]} → empty
    core/registers/reset-deterministic-clew.ts · build 043cc8b
    1. // The deterministic reset rule (Vol. 02 §4.4): COLLECTED clears at readiness
    2. // unless the policy says `never` — the station holds the policy, this op
    3. // holds the movement.
    4. import type { DeterministicClewRegisters, ClewHandle } from "./topology-registers";
    5. import { recordTransition } from "./record-transition";
    6. export function resetDeterministicClew(clew: ClewHandle, registers: DeterministicClewRegisters): void {
    7. registers.collected = new Map();↑ the slots are emptied
    8. recordTransition(clew.file, `topology:${clew.region.regionId}/clew:${clew.knotId}`, "COLLECTED", "reset", {↑ the change is written into the journal
    9. key: clew.key
    10. });
    11. }

    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 f36e70d (2026-08-18)

  5. 48CellSpace sets up its registersREQUESTS,CHARTERS,CELLS · mount

    a wave is settlingengine: working on #10membrane: waiting at #2

    The log
    1. #0a listener
    2. #1a doer
    3. #2listener: the chartermembrane
    4. #3doer: the author
    5. #4listener: charter seen
    6. #5listener: blueprint seen
    7. #6doer: the planner
    8. #7listener: assess · charter
    9. #8listener: assess · result
    10. #9doer: the evaluator
    11. #10the charter wantedengine · working
    12. #11the blueprint
    13. end of the log
    CellSpace · appears
    Whatbeforeafter
    requests—empty
    charters—empty
    Cells—empty

    #10 is the session's first plain fact, so CellSpace, the part that runs Cells, creates its three registers — requests, charters, Cells. This time all three will fill.

    Where it happens cellsRegion()Vol. 12 §2

    Creates CellSpace's registers the first time CellSpace needs them.

    Specification
    Vol. 12 §2
    Code
    cellsRegion() in core/registers/cells-region.ts, line 11: three empty registers are created
    Journal
    #10 · REQUESTS,CHARTERS,CELLS · mount · by cellspace
    Picture
    requests: — → empty
    core/registers/cells-region.ts · build 043cc8b
    1. // The CellSpace stratum accessor (Vol. 12 §2): mounted lazily on the first
    2. // touch — an assembly without CellSpace never carries the extension
    3. // registers. Mounting is a transition; an existing stratum is a read.
    4. import type { CellSpaceRegisters } from "./cell-registers";
    5. import type { RegisterFile } from "./register-file";
    6. import { recordTransition } from "./record-transition";
    7. export function cellsRegion(file: RegisterFile): CellSpaceRegisters {
    8. if (!file.registers.cells) {
    9. file.registers.cells = { requests: new Map(), charters: new Map(), cells: new Map() };↑ three empty registers are created
    10. recordTransition(file, "cellspace", "REQUESTS,CHARTERS,CELLS", "mount");↑ the change is written into the journal
    11. }
    12. return file.registers.cells;
    13. }

    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 f36e70d (2026-08-18)

  6. 49The gate's readiness enters the log as #12LOG · append

    a wave is settlingengine: working on #10membrane: waiting at #2

    The log
    1. #0a listener
    2. #1a doer
    3. #2listener: the chartermembrane
    4. #3doer: the author
    5. #4listener: charter seen
    6. #5listener: blueprint seen
    7. #6doer: the planner
    8. #7listener: assess · charter
    9. #8listener: assess · result
    10. #9doer: the evaluator
    11. #10the charter wantedengine · working
    12. #11the blueprint
    13. #12readinessnew
    14. end of the log
    The log
    Whatbeforeafter
    records in the log1213
    #12—readiness · sys.knot.ready

    The charter gate's announcement is written at the end of the log as #12, with the charter wanted as what it understood.

    Where it happens appendEmissions()Vol. 02 §4.1 · Vol. 03 §1

    The only function that adds records to the log. Each new record gets the next free number, at the end.

    Specification
    Vol. 02 §4.1 · Vol. 03 §1
    Code
    appendEmissions() in core/registers/append-emissions.ts, line 14: the new record gets the next free number
    Journal
    #10 · LOG · append · offset: 12, kind: sys.knot.ready · by engine
    Picture
    records in the log: 12 → 13
    core/registers/append-emissions.ts · build 043cc8b
    1. // The one LOG writer (Vol. 02 §4.1, Vol. 03 §1): emissions become tuples by
    2. // receiving the next dense absolute offset — `base + window.length` — and
    3. // nothing else ever grows the log. Each append is journalled under the
    4. // ambient context, so a batch born of a propagated tuple carries that
    5. // tuple's offset as its cause — the cube's provenance line (ADR-002).
    6. import type { WaveEmission, WaveTuple } from "../wave/gate";
    7. import type { RegisterFile } from "./register-file";
    8. import { recordTransition } from "./record-transition";
    9. export function appendEmissions(file: RegisterFile, emissions: readonly WaveEmission[]): void {
    10. const engine = file.registers.engine;
    11. for (const emission of emissions) {
    12. const tuple: WaveTuple = { ...emission, offset: engine.base + engine.window.length };↑ the new record gets the next free number
    13. engine.window.push(tuple);↑ it is added at the end of the log
    14. recordTransition(file, "engine", "LOG", "append", {↑ the change is written into the journal
    15. offset: tuple.offset,
    16. kind: tuple.kind
    17. });
    18. }
    19. }

    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 f36e70d (2026-08-18)

when the membrane passed #10

  1. 76The membrane passes #10MEMBRANE.CURSOR · sweep

    a wave is settlingengine: at the endmembrane: passing #10

    The log
    1. #0a listener
    2. #1a doer
    3. #2listener: the charter
    4. #3doer: the author
    5. #4listener: charter seen
    6. #5listener: blueprint seen
    7. #6doer: the planner
    8. #7listener: assess · charter
    9. #8listener: assess · result
    10. #9doer: the evaluator
    11. #10the charter wantedmembrane · passing
    12. #11the blueprint
    13. #12readiness
    14. #13readiness
    15. #14a request: a charter
    16. end of the logengine
    The membrane
    Whatbeforeafter
    pointer — the next record to pass#10#11

    #10 asks nothing of the world, so the membrane's pointer simply moves on.

    Where it happens sweepNextTuple()Vol. 02 §4.6 · Vol. 07 §3

    The 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() in core/registers/sweep-next-tuple.ts, line 16: the membrane's pointer moves on by one
    Journal
    #10 · MEMBRANE.CURSOR · sweep · offset: 10 · by membrane
    Picture
    pointer — the next record to pass: #10 → #11
    core/registers/sweep-next-tuple.ts · build 043cc8b
    1. // MEMBRANE.CURSOR advance (Vol. 02 §4.6, Vol. 07 §3): the membrane's own
    2. // reading of the one log — the second reception of one publication, never a
    3. // second truth. The cursor advances exactly once per offset per machine:
    4. // the exactly-once discharge guarantee lives in this movement.
    5. import type { WaveTuple } from "../wave/gate";
    6. import type { RegisterFile } from "./register-file";
    7. import { recordTransition } from "./record-transition";
    8. import { setDriver, setWaveContext } from "./set-wave-context";
    9. export function sweepNextTuple(file: RegisterFile): WaveTuple | null {
    10. const engine = file.registers.engine;
    11. const membrane = file.registers.membrane;
    12. if (membrane.cursor >= engine.base + engine.window.length) return null;
    13. const tuple = engine.window[membrane.cursor - engine.base];
    14. membrane.cursor += 1;↑ the membrane's pointer moves on by one
    15. setWaveContext(file, { offset: tuple.offset, phase: "sweep" });
    16. setDriver(file, "membrane");
    17. recordTransition(file, "membrane", "MEMBRANE.CURSOR", "sweep", { offset: tuple.offset });↑ the change is written into the journal
    18. return tuple;
    19. }

    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)

Step 21: Record #10 enters the log

21 Record #10 enters the log

a wave is settlingengine: next: #2membrane: waiting at #2

The log
  1. #0a listener
  2. #1a doer
  3. #2listener: the charterenginemembrane
  4. #3doer: the author
  5. #4listener: charter seen
  6. #5listener: blueprint seen
  7. #6doer: the planner
  8. #7listener: assess · charter
  9. #8listener: assess · result
  10. #9doer: the evaluator
  11. #10the charter wantednew
  12. end of the log
The log
Whatbeforeafter
records in the log1011
#10—the charter wanted · admit.note.gate--l1.seeking.charter.wanted

The door adds #10: the first presentation: the charter wanted — the seat's title and purpose, the person's question, two criteria.

Where it happens · appendEmissions()

The only function that adds records to the log. Each new record gets the next free number, at the end.

Specification
Vol. 02 §4.1 · Vol. 03 §1
Code
appendEmissions() in core/registers/append-emissions.ts, line 14: the new record gets the next free number
Journal
LOG · append · offset: 10, kind: domain.fact · by engine
Picture
records in the log: 10 → 11
core/registers/append-emissions.ts · build 043cc8b
  1. // The one LOG writer (Vol. 02 §4.1, Vol. 03 §1): emissions become tuples by
  2. // receiving the next dense absolute offset — `base + window.length` — and
  3. // nothing else ever grows the log. Each append is journalled under the
  4. // ambient context, so a batch born of a propagated tuple carries that
  5. // tuple's offset as its cause — the cube's provenance line (ADR-002).
  6. import type { WaveEmission, WaveTuple } from "../wave/gate";
  7. import type { RegisterFile } from "./register-file";
  8. import { recordTransition } from "./record-transition";
  9. export function appendEmissions(file: RegisterFile, emissions: readonly WaveEmission[]): void {
  10. const engine = file.registers.engine;
  11. for (const emission of emissions) {
  12. const tuple: WaveTuple = { ...emission, offset: engine.base + engine.window.length };↑ the new record gets the next free number
  13. engine.window.push(tuple);↑ it is added at the end of the log
  14. recordTransition(file, "engine", "LOG", "append", {↑ the change is written into the journal
  15. offset: tuple.offset,
  16. kind: tuple.kind
  17. });
  18. }
  19. }

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 f36e70d (2026-08-18)

A fact: the charter wanted

The first presentation to the admission figure: what the Cell should be for — its title and purpose from the seat, the person's own question, and the seat's two questions as the criteria its result will be judged by.

#10domain.factadmit.note.gate--l1.seeking.charter.wanted a person

envelope
offset10Its 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.
kinddomain.factWhich of the four kinds of record the machine knows. The kind decides what the payload holds.
keyfragment-one-cellThis session's lane.
payload
factTypeadmit.note.gate--l1.seeking.charter.wantedThe fact type — named for the admission figure it is presented to, so that only its gate hears it.
payload.data.charter
titleSeekingThe charter's title — the seat's.
purpose«What are we seeking to understand, and for whom does it matter?»What the Cell is for — the seat's gloss.
question«What is a Cell, and why does the machine open one instead of answering in place?»The person's question: what the Cell should answer.
criteria×2What its result will be judged by: two questions, each with a weight and a minimum grade of 0.6.

end · #10

In the specificationVol. 03 §1Vol. 03 §2Vol. 03 §5Vol. 04 §3.1Vol. 07 §6Vol. 12 §5.1

The record as the machine keeps it
{
 "offset": 10,
 "kind": "domain.fact",
 "key": "fragment-one-cell",
 "payload": {
  "factType": "admit.note.gate--l1.seeking.charter.wanted",
  "data": {
   "charter": {
    "title": "Seeking",
    "purpose": "What are we seeking to understand, and for whom does it matter?",
    "question": "What is a Cell, and why does the machine open one instead of answering in place?",
    "criteria": [
     {
      "id": "q1",
      "question": "What is this material about, and what exactly are we seeking to understand in it?",
      "weight": 1,
      "minimum": 0.6
     },
     {
      "id": "q2",
      "question": "Whose problem does it address, and why does it exist?",
      "weight": 1,
      "minimum": 0.6
     }
    ]
   }
  }
 }
}