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

Wave 2 · The charter · record #13sys.knot.ready

#13 · blueprint seen — the planner waits

The planner wakes but does not act: blueprint seen is not the listener it acts on. It holds the blueprint in an inactive lane — a barrier.

Came fromthe machineThe machine wrote it while the engine took #11: blueprint seen had what it waited for. step 54

Read as

when the engine took #13

  1. 62The engine takes #13ENGINE.CURSOR · propagate

    a wave is settlingengine: working on #13membrane: 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 wanted
    12. #11the blueprint
    13. #12readiness
    14. #13readinessengine · working
    15. #14a request: a charter
    16. end of the log
    The engine
    Whatbeforeafter
    pointer — the next record to take#13#14

    The engine moves on to #13 — blueprint seen's readiness, written by the machine itself.

    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
    #13 · ENGINE.CURSOR · propagate · offset: 13 · by engine
    Picture
    pointer — the next record to take: #13 → #14
    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. 63The planner opens its rendezvousRDV · open-bank

    a wave is settlingengine: working on #13membrane: 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 wanted
    12. #11the blueprint
    13. #12readiness
    14. #13readinessengine · working
    15. #14a request: a charter
    16. end of the log
    The figure
    Whatbeforeafter
    rendezvous openedadmit.note.gate--l1.seeking.charter.authoradmit.note.gate--l1.seeking.charter.author, admit.note.gate--l1.seeking.planner

    The planner needs blueprint seen, so this readiness wakes it — but it acts on charter seen, which has not spoken. It opens its rendezvous all the same, to hold what came first.

    Where it happens ensureRendezvous()Vol. 02 §4.5 · Vol. 06 §4.5

    Opens a doer's rendezvous the first time it is woken, and a lane in it for each new key.

    Specification
    Vol. 02 §4.5 · Vol. 06 §4.5
    Code
    ensureRendezvous() in core/registers/ensure-rendezvous.ts, line 13: a rendezvous for this doer
    Journal
    #13 · RDV · open-bank · bindId: admit.note.gate--l1.seeking.planner · by bind:admit.note.gate--l1.seeking.planner
    Picture
    rendezvous opened: admit.note.gate--l1.seeking.charter.author → admit.note.gate--l1.seeking.charter.author, admit.note.gate--l1.seeking.planner
    core/registers/ensure-rendezvous.ts · build 043cc8b
    1. // RDV lane access (Vol. 02 §4.5): one rendezvous state per key lane, created
    2. // lazily on the first readiness that reaches the bind — activated at birth
    3. // when the bind declares no `on` (a demands-only bind, Vol. 06 §4.5).
    4. // Creation is a transition; an existing lane passes through as a read.
    5. import type { BindHandle, RendezvousLane, RendezvousRegisters } from "./topology-registers";
    6. import { recordTransition } from "./record-transition";
    7. export function ensureRendezvous(bind: BindHandle, key: string | null, activatedAtBirth: boolean): RendezvousLane {
    8. let bank: RendezvousRegisters | undefined = bind.region.rdv.get(bind.bindId);
    9. if (!bank) {
    10. bank = { lanes: new Map(), intentCtr: 0 };
    11. bind.region.rdv.set(bind.bindId, bank);↑ a rendezvous for this doer
    12. // A new bank changes the REGION's RDV register set (Vol. 02 §4.5) — the
    13. // region station journals it, so its document (rdvOrder) folds true
    14. // (the fold oracle, ADR-004 d11).
    15. recordTransition(bind.file, `topology:${bind.region.regionId}`, "RDV", "open-bank", { bindId: bind.bindId });↑ the change is written into the journal
    16. }
    17. let lane = bank.lanes.get(key);
    18. if (!lane) {
    19. lane = { activated: activatedAtBirth, scope: new Map(), projected: false };
    20. bank.lanes.set(key, lane);↑ a lane for this key
    21. recordTransition(bind.file, `topology:${bind.region.regionId}/bind:${bind.bindId}`, "RDV", "open-lane", {↑ the change is written into the journal
    22. key,
    23. activatedAtBirth
    24. });
    25. }
    26. return lane;
    27. }

    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 3530f2c (2026-09-07)

  3. 64A lane, not activeRDV · open-lane

    a wave is settlingengine: working on #13membrane: 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 wanted
    12. #11the blueprint
    13. #12readiness
    14. #13readinessengine · working
    15. #14a request: a charter
    16. end of the log
    The doer admit.note.gate--l1.seeking.planner · appears
    Whatbeforeafter
    lane · this session—open
    lane · this session · active—no
    lane · this session · has acted—no
    intentions named so far—0

    A lane for this session, born not active: the readiness that opened it is not the one the planner acts on. The planner will wait here.

    Where it happens ensureRendezvous()Vol. 02 §4.5 · Vol. 06 §4.5

    Opens a doer's rendezvous the first time it is woken, and a lane in it for each new key.

    Specification
    Vol. 02 §4.5 · Vol. 06 §4.5
    Code
    ensureRendezvous() in core/registers/ensure-rendezvous.ts, line 13: a rendezvous for this doer
    Journal
    #13 · RDV · open-lane · key: fragment-one-cell, activatedAtBirth: false · by bind:admit.note.gate--l1.seeking.planner
    Picture
    lane · this session: — → open
    core/registers/ensure-rendezvous.ts · build 043cc8b
    1. // RDV lane access (Vol. 02 §4.5): one rendezvous state per key lane, created
    2. // lazily on the first readiness that reaches the bind — activated at birth
    3. // when the bind declares no `on` (a demands-only bind, Vol. 06 §4.5).
    4. // Creation is a transition; an existing lane passes through as a read.
    5. import type { BindHandle, RendezvousLane, RendezvousRegisters } from "./topology-registers";
    6. import { recordTransition } from "./record-transition";
    7. export function ensureRendezvous(bind: BindHandle, key: string | null, activatedAtBirth: boolean): RendezvousLane {
    8. let bank: RendezvousRegisters | undefined = bind.region.rdv.get(bind.bindId);
    9. if (!bank) {
    10. bank = { lanes: new Map(), intentCtr: 0 };
    11. bind.region.rdv.set(bind.bindId, bank);↑ a rendezvous for this doer
    12. // A new bank changes the REGION's RDV register set (Vol. 02 §4.5) — the
    13. // region station journals it, so its document (rdvOrder) folds true
    14. // (the fold oracle, ADR-004 d11).
    15. recordTransition(bind.file, `topology:${bind.region.regionId}`, "RDV", "open-bank", { bindId: bind.bindId });↑ the change is written into the journal
    16. }
    17. let lane = bank.lanes.get(key);
    18. if (!lane) {
    19. lane = { activated: activatedAtBirth, scope: new Map(), projected: false };
    20. bank.lanes.set(key, lane);↑ a lane for this key
    21. recordTransition(bind.file, `topology:${bind.region.regionId}/bind:${bind.bindId}`, "RDV", "open-lane", {↑ the change is written into the journal
    22. key,
    23. activatedAtBirth
    24. });
    25. }
    26. return lane;
    27. }

    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 3530f2c (2026-09-07)

  4. 65The blueprint is gathered — and heldRDV.SCOPE · latch-scope

    a wave is settlingengine: working on #13membrane: 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 wanted
    12. #11the blueprint
    13. #12readiness
    14. #13readinessengine · working
    15. #14a request: a charter
    16. end of the log
    The doer admit.note.gate--l1.seeking.planner
    Whatbeforeafter
    lane · this session · gathered blueprint—blueprint = {"version":1,"topology":{"knots":[{"id":"l1.seeking.gate","strategy":"deterministic","config":{"meta":{"title":"Seeking","gloss":"What are we seeking to understand, and for whom does it matter?","fields":[{"name":"text","label":"What is this material about, and what exactly are we seeking to understand in it?","kind":"text"}]},"wind":{"collect":[{"as":"text","match_type":"context.given","reduce":"latest","field":"text","where":[{"field":"level","equals":"l1.seeking"}]}]},"condition":"text != null"}}],"descriptors":[{"id":"l1.seeking.release","operator":{"on":"l1.seeking.gate","demands":[],"service":{"instruction":"Release the seat's answer as knowledge.l1.","schema":{"type":"object"},"emit":{"writes":"knowledge.l1"},"action":"release@1"}}}]},"result":{"local_fact_type":"knowledge.l1","producer_bind":"l1.seeking.release","data_field":"result"},"schemas":{}}

    Only the scope is written: the blueprint enters it as blueprint, and the lane stays inactive. A barrier in its smallest form: a doer gathers what it needs, then acts once.

    Where it happens latchRendezvousScope()Vol. 02 §4.5 · Vol. 06 §4

    Gathers what a listener understood into the doer's scope — and, from the listener the doer acts on, activates the lane.

    Specification
    Vol. 02 §4.5 · Vol. 06 §4
    Code
    latchRendezvousScope() in core/registers/latch-rendezvous-scope.ts, line 17: the lane is activated
    Journal
    #13 · RDV.SCOPE · latch-scope · key: fragment-one-cell, as: blueprint · by bind:admit.note.gate--l1.seeking.planner
    Picture
    lane · this session · gathered blueprint: — → blueprint = {"version":1,"topology":{"knots":[{"id":"l1.seeking.gate","strategy":"deterministic","config":{"meta":{"title":"Seeking","gloss":"What are we seeking to understand, and for whom does it matter?","fields":[{"name":"text","label":"What is this material about, and what exactly are we seeking to understand in it?","kind":"text"}]},"wind":{"collect":[{"as":"text","match_type":"context.given","reduce":"latest","field":"text","where":[{"field":"level","equals":"l1.seeking"}]}]},"condition":"text != null"}}],"descriptors":[{"id":"l1.seeking.release","operator":{"on":"l1.seeking.gate","demands":[],"service":{"instruction":"Release the seat's answer as knowledge.l1.","schema":{"type":"object"},"emit":{"writes":"knowledge.l1"},"action":"release@1"}}}]},"result":{"local_fact_type":"knowledge.l1","producer_bind":"l1.seeking.release","data_field":"result"},"schemas":{}}
    core/registers/latch-rendezvous-scope.ts · build 043cc8b
    1. // RDV scope latch (Vol. 02 §4.5, Vol. 06 §4): a readiness understanding
    2. // enters the bound scope under its declared name — a later readiness of the
    3. // same demand refreshes its entry until projection (the latching barrier).
    4. // Activation readiness additionally opens the lane (ACTIVATED).
    5. import type { BindHandle, RendezvousLane } from "./topology-registers";
    6. import { recordTransition } from "./record-transition";
    7. export function latchRendezvousScope(
    8. bind: BindHandle,
    9. lane: RendezvousLane,
    10. key: string | null,
    11. as: string,
    12. understanding: unknown,
    13. options: { activates: boolean }
    14. ): void {
    15. if (options.activates) lane.activated = true;↑ the lane is activated
    16. lane.scope.set(as, understanding);↑ the understanding is gathered
    17. recordTransition(↑ the change is written into the journal
    18. bind.file,
    19. `topology:${bind.region.regionId}/bind:${bind.bindId}`,
    20. options.activates ? "RDV.ACTIVATED,RDV.SCOPE" : "RDV.SCOPE",
    21. "latch-scope",
    22. { key, as }
    23. );
    24. }

    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 #13

  1. 79The membrane passes #13MEMBRANE.CURSOR · sweep

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

    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 wanted
    12. #11the blueprint
    13. #12readiness
    14. #13readinessmembrane · passing
    15. #14a request: a charter
    16. end of the logengine
    The membrane
    Whatbeforeafter
    pointer — the next record to pass#13#14

    #13 asks nothing of the world, and nothing else happens: the planner waits for the charter.

    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
    #13 · MEMBRANE.CURSOR · sweep · offset: 13 · by membrane
    Picture
    pointer — the next record to pass: #13 → #14
    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)

Choose a step in the stack — or press →.

A listener's readiness

The machine's own record that a listener's condition came true. It names the listener and keeps what the listener understood at that moment — its slots, taken before they are emptied, and written before any doer acts.

#13sys.knot.ready the machine

envelope
offset13Its 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.
kindsys.knot.readyWhich of the four kinds of record the machine knows. The kind decides what the payload holds.
keyfragment-one-cellThe lane of the fact that made the listener ready.
payload
knotIdadmit.note.gate--l1.seeking.blueprint.seenThe listener that is ready.
payload.understanding
blueprintversion · topology · result · schemasWhat blueprint seen understood: the blueprint.

end · #13

In the specificationVol. 03 §1Vol. 03 §2Vol. 03 §5Vol. 04 §2.3

Names it shares with other records

The record as the machine keeps it
{
 "offset": 13,
 "kind": "sys.knot.ready",
 "key": "fragment-one-cell",
 "payload": {
  "knotId": "admit.note.gate--l1.seeking.blueprint.seen",
  "understanding": {
   "blueprint": {
    "version": 1,
    "topology": {
     "knots": [
      {
       "id": "l1.seeking.gate",
       "strategy": "deterministic",
       "config": {
        "meta": {
         "title": "Seeking",
         "gloss": "What are we seeking to understand, and for whom does it matter?",
         "fields": [
          {
           "name": "text",
           "label": "What is this material about, and what exactly are we seeking to understand in it?",
           "kind": "text"
          }
         ]
        },
        "wind": {
         "collect": [
          {
           "as": "text",
           "match_type": "context.given",
           "reduce": "latest",
           "field": "text",
           "where": [
            {
             "field": "level",
             "equals": "l1.seeking"
            }
           ]
          }
         ]
        },
        "condition": "text != null"
       }
      }
     ],
     "descriptors": [
      {
       "id": "l1.seeking.release",
       "operator": {
        "on": "l1.seeking.gate",
        "demands": [],
        "service": {
         "instruction": "Release the seat's answer as knowledge.l1.",
         "schema": {
          "type": "object"
         },
         "emit": {
          "writes": "knowledge.l1"
         },
         "action": "release@1"
        }
       }
      }
     ]
    },
    "result": {
     "local_fact_type": "knowledge.l1",
     "producer_bind": "l1.seeking.release",
     "data_field": "result"
    },
    "schemas": {}
   }
  }
 }
}