Wave 2 · The opening · record #20domain.factcell.seed
#20 · the seed: the Cell opens
CellSpace closes the request, checks the package and opens cell@20 — then writes its opening, its inner listener and doer, and its context (#21–#24).
Came fromthe worldThe world answered — controller.ceremony.local — with the whole package of a Cell. step 115
when the engine took #20
116The engine takes #20ENGINE.CURSOR · propagate
a wave is settlingengine: working on #20membrane: 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
- end of the log
The engine What before after pointer — the next record to take #20 #21 The engine moves on to #20 — the seed, the whole package of a Cell.
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
- #20 ·
ENGINE.CURSOR · propagate· offset: 20 · by engine - Picture
- pointer — the next record to take: #20 → #21
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)
117The planner's request is closedREQUESTS · consume-request
a wave is settlingengine: working on #20membrane: 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
- end of the log
CellSpace No register changed its value.
CellSpace closes the planner's request: the intention that asked for a Cell is answered by the seed.
Where it happens
consumeCausalRequest()Vol. 12 §5.1Closes a request once its answer has come: the index entry is spent, and a second answer under the same name finds nothing to close.
- Specification
- Vol. 12 §5.1
- Code
consumeCausalRequest()incore/registers/consume-causal-request.ts, line 10: the request is marked as answered- Journal
- #20 ·
REQUESTS · consume-request· uid: admit.note.gate--l1.seeking.planner#1 · by cellspace - Picture
- no register changed its value
core/registers/consume-causal-request.ts· build 043cc8b// REQUESTS consumption (Vol. 12 §5.1): the first proposal or failure over a// causal request is terminal for it — a correlation spends exactly once,// even when what it bought was a rejection.import type { CausalRequest } from "../cells/gate";import type { RegisterFile } from "./register-file";import { recordTransition } from "./record-transition";export function consumeCausalRequest(file: RegisterFile, request: CausalRequest): void {request.consumed = true;↑ the request is marked as answeredrecordTransition(file, "cellspace", "REQUESTS", "consume-request", { uid: request.uid });↑ the change is written into the journal}
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)
118The Cell is admitted: cell@20CELLS · open-cell
a wave is settlingengine: working on #20membrane: 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
- end of the log
CellSpace What before after Cells empty cell@20 CellSpace checks the package — the charter's digest, the blueprint's shape, the policy — and, all of it holding, opens cell@20 under charter@15, in trial mode. Admission is all or nothing.
Where it happens
openCell()Vol. 12 §5.2 · Vol. 12 §4Admits a Cell: once its package has passed every check, the Cell is kept under its name, with its charter and its policy.
- Specification
- Vol. 12 §5.2 · Vol. 12 §4
- Code
openCell()incore/registers/open-cell.ts, line 12: the Cell is kept under its name- Journal
- #20 ·
CELLS · open-cell· cellRef: cell@20, charterRef: charter@15, mode: trial · by cellspace - Picture
- Cells: empty → cell@20
core/registers/open-cell.ts· build 043cc8b// CELLS write (Vol. 12 §5.2): an admitted Cell's registers land whole —// lifecycle at `running`, budgets at zero, its own nested topology region// materialised under the cellRef. Creation order is preserved by the map// (Vol. 12 §4 routing iterates it).import type { CellRegisters } from "./cell-registers";import type { RegisterFile } from "./register-file";import { cellsRegion } from "./cells-region";import { recordTransition } from "./record-transition";export function openCell(file: RegisterFile, cell: CellRegisters): void {cellsRegion(file).cells.set(cell.cellRef, cell);↑ the Cell is kept under its namerecordTransition(file, "cellspace", "CELLS", "open-cell", {↑ the change is written into the journalcellRef: cell.cellRef,charterRef: cell.charterRef,mode: cell.policy.mode});}
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)
119The opening enters the log as #21LOG · append
a wave is settlingengine: working on #20membrane: 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 opennew
- end of the log
The log What before after records in the log 21 22 #21 — the Cell is open · cell.openedThe public mark that the Cell is open —
cell.opened, with its references, its budgets and the names of its records — is written as #21.Where it happens
appendEmissions()Vol. 02 §4.1 · Vol. 03 §1The 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()incore/registers/append-emissions.ts, line 14: the new record gets the next free number- Journal
- #20 ·
LOG · append· offset: 21, kind: domain.fact · by engine - Picture
- records in the log: 21 → 22
core/registers/append-emissions.ts· build 043cc8b// The one LOG writer (Vol. 02 §4.1, Vol. 03 §1): emissions become tuples by// receiving the next dense absolute offset — `base + window.length` — and// nothing else ever grows the log. Each append is journalled under the// ambient context, so a batch born of a propagated tuple carries that// tuple's offset as its cause — the cube's provenance line (ADR-002).import type { WaveEmission, WaveTuple } from "../wave/gate";import type { RegisterFile } from "./register-file";import { recordTransition } from "./record-transition";export function appendEmissions(file: RegisterFile, emissions: readonly WaveEmission[]): void {const engine = file.registers.engine;for (const emission of emissions) {const tuple: WaveTuple = { ...emission, offset: engine.base + engine.window.length };↑ the new record gets the next free numberengine.window.push(tuple);↑ it is added at the end of the logrecordTransition(file, "engine", "LOG", "append", {↑ the change is written into the journaloffset: tuple.offset,kind: tuple.kind});}}
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)
120The inner listener enters as #22LOG · append
a wave is settlingengine: working on #20membrane: 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 listenernew
- end of the log
The log What before after records in the log 22 23 #22 — inner listener · sys.knot.definedThe blueprint becomes a figure: the Cell's inner listener is written as #22, its name prefixed by the Cell's — cell@20::
l1.seeking.gate.Where it happens
appendEmissions()Vol. 02 §4.1 · Vol. 03 §1The 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()incore/registers/append-emissions.ts, line 14: the new record gets the next free number- Journal
- #20 ·
LOG · append· offset: 22, kind: sys.knot.defined · by engine - Picture
- records in the log: 22 → 23
core/registers/append-emissions.ts· build 043cc8b// The one LOG writer (Vol. 02 §4.1, Vol. 03 §1): emissions become tuples by// receiving the next dense absolute offset — `base + window.length` — and// nothing else ever grows the log. Each append is journalled under the// ambient context, so a batch born of a propagated tuple carries that// tuple's offset as its cause — the cube's provenance line (ADR-002).import type { WaveEmission, WaveTuple } from "../wave/gate";import type { RegisterFile } from "./register-file";import { recordTransition } from "./record-transition";export function appendEmissions(file: RegisterFile, emissions: readonly WaveEmission[]): void {const engine = file.registers.engine;for (const emission of emissions) {const tuple: WaveTuple = { ...emission, offset: engine.base + engine.window.length };↑ the new record gets the next free numberengine.window.push(tuple);↑ it is added at the end of the logrecordTransition(file, "engine", "LOG", "append", {↑ the change is written into the journaloffset: tuple.offset,kind: tuple.kind});}}
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)
121The inner doer enters as #23LOG · append
a wave is settlingengine: working on #20membrane: 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 doernew
- end of the log
The log What before after records in the log 23 24 #23 — inner doer · sys.descriptor.definedThen the inner doer, cell@20::
l1.seeking.release, as #23. The Cell's figure is complete — exactly what the blueprint declared.Where it happens
appendEmissions()Vol. 02 §4.1 · Vol. 03 §1The 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()incore/registers/append-emissions.ts, line 14: the new record gets the next free number- Journal
- #20 ·
LOG · append· offset: 23, kind: sys.descriptor.defined · by engine - Picture
- records in the log: 23 → 24
core/registers/append-emissions.ts· build 043cc8b// The one LOG writer (Vol. 02 §4.1, Vol. 03 §1): emissions become tuples by// receiving the next dense absolute offset — `base + window.length` — and// nothing else ever grows the log. Each append is journalled under the// ambient context, so a batch born of a propagated tuple carries that// tuple's offset as its cause — the cube's provenance line (ADR-002).import type { WaveEmission, WaveTuple } from "../wave/gate";import type { RegisterFile } from "./register-file";import { recordTransition } from "./record-transition";export function appendEmissions(file: RegisterFile, emissions: readonly WaveEmission[]): void {const engine = file.registers.engine;for (const emission of emissions) {const tuple: WaveTuple = { ...emission, offset: engine.base + engine.window.length };↑ the new record gets the next free numberengine.window.push(tuple);↑ it is added at the end of the logrecordTransition(file, "engine", "LOG", "append", {↑ the change is written into the journaloffset: tuple.offset,kind: tuple.kind});}}
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)
122The Cell's context enters as #24LOG · append
a wave is settlingengine: working on #20membrane: 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 contextnew
- end of the log
The log What before after records in the log 24 25 #24 — the Cell's context · cell.contextLast, what the Cell is given at birth is written as #24 — after its records, so that they are registered before anything can reach them.
Where it happens
appendEmissions()Vol. 02 §4.1 · Vol. 03 §1The 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()incore/registers/append-emissions.ts, line 14: the new record gets the next free number- Journal
- #20 ·
LOG · append· offset: 24, kind: domain.fact · by engine - Picture
- records in the log: 24 → 25
core/registers/append-emissions.ts· build 043cc8b// The one LOG writer (Vol. 02 §4.1, Vol. 03 §1): emissions become tuples by// receiving the next dense absolute offset — `base + window.length` — and// nothing else ever grows the log. Each append is journalled under the// ambient context, so a batch born of a propagated tuple carries that// tuple's offset as its cause — the cube's provenance line (ADR-002).import type { WaveEmission, WaveTuple } from "../wave/gate";import type { RegisterFile } from "./register-file";import { recordTransition } from "./record-transition";export function appendEmissions(file: RegisterFile, emissions: readonly WaveEmission[]): void {const engine = file.registers.engine;for (const emission of emissions) {const tuple: WaveTuple = { ...emission, offset: engine.base + engine.window.length };↑ the new record gets the next free numberengine.window.push(tuple);↑ it is added at the end of the logrecordTransition(file, "engine", "LOG", "append", {↑ the change is written into the journaloffset: tuple.offset,kind: tuple.kind});}}
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 #20
130The membrane passes #20MEMBRANE.CURSOR · sweep
a wave is settlingengine: at the endmembrane: passing #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 membrane What before after pointer — the next record to pass #20 #21 #20 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
- #20 ·
MEMBRANE.CURSOR · sweep· offset: 20 · by membrane - Picture
- pointer — the next record to pass: #20 → #21
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)
Step 122: The Cell's context enters as #24
122 The Cell's context enters as #24
a wave is settlingengine: working on #20membrane: waiting at #20
- #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 contextnew
- end of the log
| What | before | after |
|---|---|---|
| records in the log | 24 | 25 |
| #24 | — | the Cell's context · cell.context |
Last, what the Cell is given at birth is written as #24 — after its records, so that they are registered before anything can reach them.
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()incore/registers/append-emissions.ts, line 14: the new record gets the next free number- Journal
- #20 ·
LOG · append· offset: 24, kind: domain.fact · by engine - Picture
- records in the log: 24 → 25
core/registers/append-emissions.ts · build 043cc8b// The one LOG writer (Vol. 02 §4.1, Vol. 03 §1): emissions become tuples by// receiving the next dense absolute offset — `base + window.length` — and// nothing else ever grows the log. Each append is journalled under the// ambient context, so a batch born of a propagated tuple carries that// tuple's offset as its cause — the cube's provenance line (ADR-002).import type { WaveEmission, WaveTuple } from "../wave/gate";import type { RegisterFile } from "./register-file";import { recordTransition } from "./record-transition";export function appendEmissions(file: RegisterFile, emissions: readonly WaveEmission[]): void {const engine = file.registers.engine;for (const emission of emissions) {const tuple: WaveTuple = { ...emission, offset: engine.base + engine.window.length };↑ the new record gets the next free numberengine.window.push(tuple);↑ it is added at the end of the logrecordTransition(file, "engine", "LOG", "append", {↑ the change is written into the journaloffset: tuple.offset,kind: tuple.kind});}}
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 seed — a Cell's package
The world's answer to the planner: everything a Cell consists of, in one package — the charter by reference and digest, the blueprint, the policy, the context it will be given, and the request it answers. Its place in the log becomes the Cell's name.
#20domain.factcell.seed the world
| envelope | |
|---|---|
offset | 20Its 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.seedThe fact type — cell.seed. |
| payload.data.package | |
version | 1The package's format. |
charter | ref · digest · valueThe charter, by reference, digest and value. |
blueprint | version · topology · result · schemasThe inner figure. |
policy | mode · isolation · raw_input · accepts ×1 · capabilities ×1 · budget · publishThe rules the Cell runs under: trial mode, subscribed isolation, no raw input, what it accepts, its capabilities, its budget, what it publishes. |
context | charter · blueprintWhat the Cell will be given at birth: its charter and its blueprint. |
provenance | bindId · uid · serviceRequestOffsetThe planner's intention, and the request this package answers. |
end · #20
In the specificationVol. 03 §1Vol. 03 §5Vol. 12 §2.1Vol. 12 §4Vol. 12 §5.2
The record as the machine keeps it
{
"offset": 20,
"kind": "domain.fact",
"key": "fragment-one-cell",
"payload": {
"factType": "cell.seed",
"data": {
"package": {
"version": 1,
"charter": {
"ref": "charter@15",
"digest": "sha256:d697d7f3224e3a44a0888949eb98ee5ecf54aa09b2fc4aba2addca763458ec1b",
"value": {
"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
}
]
}
},
"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": {}
},
"policy": {
"mode": "trial",
"isolation": "subscribed",
"raw_input": "deny",
"accepts": [
{
"match_type": "context.given"
}
],
"capabilities": [
"inference"
],
"budget": {
"max_records": 2,
"max_emissions": 120,
"max_inference_calls": 12
},
"publish": {
"candidate": "knowledge.l1",
"accepted": "knowledge.l1.accepted"
}
},
"context": {
"charter": {
"ref": "charter@15",
"digest": "sha256:d697d7f3224e3a44a0888949eb98ee5ecf54aa09b2fc4aba2addca763458ec1b",
"value": {
"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
}
]
}
},
"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": {}
}
},
"provenance": {
"bindId": "admit.note.gate--l1.seeking.planner",
"uid": "admit.note.gate--l1.seeking.planner#1",
"serviceRequestOffset": 19
}
}
}
}
}