The machine in reference · Volume 05
Volume 05 — Activation Knots: the Accumulating Units
CURRENTsnapshot of 14 July 20267 min read← Volume 04 — Tuple ReferenceVolume 06 — Bind Descriptors →
Reading aids · CoAgnes LabNot part of the specification; where they differ, the volume governs.
At a glance
- The lifecycle every knot executor implements —
matches,wind,test,understanding(),reset— with readiness evaluated after every wind and committed by the topology, not the knot. §1 - Definition and clews: the topology maintains one clew per
(definition, key)pair — the null-key clew constructed eagerly at registration, every other clew lazily at the firstdomain.factof its key; clews never share registers. §2 - Collection rules, shared by both strategies: a rule accepts a fact when its
match_typeequals the fact type and everywhereclause holds; a fact is wound once per accepting rule, andwhereclauses let a clew collect only complementary tuples. §3 - The two bundled strategies: the deterministic knot, a gate over named slots tested by a null-guard conjunction, and the semantic knot, which winds locally through an injected integrator or through the world in two tacts — at most one intention in flight per clew. §4§5.1§5.2
- Budgets, lanes and the registry: an exhausted budget below threshold leaves the wave settled but unfinished; a
lanemark lets clews subscribe to one another's integrations throughwhereclauses; an implementation may install further strategies, resolved by name. §6§7§8
Where it sits
- Read after
- Volume 02 — Machine Model and the Architectural Register FileVolume 03 — The Wave LogVolume 04 — Tuple Reference
- Read next
- Volume 06 — Bind Descriptors
- Requirements
- 8 sentences with MUST, SHOULD or MAY — the list
- At work
- 2 of its sections seen in a real run of the machine, each linked under its heading
- Across the set
- every volume's questionsthe machine in figures
Questions this volume answers
- Who commits a knot's readiness, and when is it evaluated? §1
- Can a knot become ready more than once? §1
- What is the difference between a knot definition and its clews? §2
- When does a collection rule accept a fact? §3
- Which conditions may a deterministic knot test? §4
- How does a semantic knot wind through the world? §5.2
- What happens to a clew when its winding intention fails? §5.3
- What happens when a clew exhausts its budget below its threshold? §6
An activation knotActivation knotAn accumulating unit that matches wave tuples, winds them, and tests readiness; it accumulates understanding. When ready, it activates bind descriptors. Its minimal form is a single condition matcher — a degenerate configuration of the same accumulator, not a different kind. aka knot, clew (for the per-key instance see clew). (Vol. 05)Volume 15 — Terminology is the machine's accumulator: it matches wave tuplesWave tupleAn immutable record in the wave log: offset, kind, key, payload. The unit of fact. aka tuple. (Vol. 03 §1)Volume 15 — Terminology, windsWindThe act of integrating a matched tuple into the knot's wound state. Deterministic winding completes locally; semantic winding unfolds through the world — the knot projects a winding intention and later winds the returned integration. (Vol. 05 §1, §5)Volume 15 — Terminology them into wound state, and tests readinessReadinessThe state an activation knot reaches when its accumulated understanding satisfies its test; readiness is what activates bind descriptors. Readiness is reified: the topology commits it as a tuple carrying the understanding snapshot. (Vol. 02 §5, Vol. 04 §2.3)Volume 15 — Terminology. It accumulates understanding. Its minimal form — a single condition matcher — is a degenerate configuration of the same accumulator, never a different kind of unit. This volume specifies the knot lifecycle, the two bundled strategies, the two winding policies, and the registers each maintains.
§1. Lifecycle
Every knotActivation knotAn accumulating unit that matches wave tuples, winds them, and tests readiness; it accumulates understanding. When ready, it activates bind descriptors. Its minimal form is a single condition matcher — a degenerate configuration of the same accumulator, not a different kind. aka knot, clew (for the per-key instance see clew). (Vol. 05)Volume 15 — Terminology executor implements the lifecycle over IKnotExecutor (Vol. 02 §2):
committed domain.fact
│
matches(t)? ──no──► (ignored by this clew)
│yes
wind(t) ──────────► emissions (winding intentions only, or none)
│
test()? ──no──► (waits for more)
│yes
topology commits sys.knot.ready {knotId, understanding()} ← snapshot first
│
reset() ← policy appliesNormative rules:
matchesMUST be a pure predicate over the tupleWave tupleAn immutable record in the wave log:offset,kind,key,payload. The unit of fact. aka tuple. (Vol. 03 §1)Volume 15 — Terminology; it MUST NOT mutate state.windintegrates the matched tuple into the clewClewOne per-key executor instance of a registered knot definition; parallel keys wind independent clews. (Vol. 05 §2)Volume 15 — Terminology's registers. It MAY return emissionsEmissionA wave tuple without itsoffset— the form in which content is handed to the engine; the engine assigns the offset at append. (Vol. 03 §1)Volume 15 — Terminology, but only winding intentionsWinding intentionAn intention tuple a knot projects to grow its own wound state: a request to integrate newly matched deltas into its accumulated understanding, correlated back to the knot. Bounded to the knot's metabolism — never an integration for others, never a decision. (Vol. 04 §4.1, Vol. 05 §5.2)Volume 15 — Terminology bounded to the knot's own accumulation and correlated back to the knot (§5). It MUST NOT publish integrationsIntegrationThe understanding a bind descriptor forms and publishes as a wave tuple; received by others through binding — as an activation or as a demand — so integrations compose into higher-order understanding. (Vol. 06 §1)Volume 15 — Terminology for others or emit decisions.testMUST be synchronous and read-only over wound state. While an integration is in flight, the knot is simply not ready.understanding()MUST be a synchronous snapshot of the wound state — the value reified intosys.knot.ready.resetclears the clew per its reset policyReset policyWhat readiness does to the clew:on_readyclears the wound state;neverkeeps it, allowing repeated readiness. (Vol. 05 §1)Volume 15 — Terminology:on_ready(default) clears everything;neverkeeps wound state across readinessReadinessThe state an activation knot reaches when its accumulated understanding satisfies its test; readiness is what activates bind descriptors. Readiness is reified: the topology commits it as a tuple carrying the understanding snapshot. (Vol. 02 §5, Vol. 04 §2.3)Volume 15 — Terminology, allowing repeated readiness (the journal pattern).- Readiness is evaluated after every windWindThe act of integrating a matched tuple into the knot's wound state. Deterministic winding completes locally; semantic winding unfolds through the world — the knot projects a winding intention and later winds the returned integration. (Vol. 05 §1, §5)Volume 15 — Terminology of the clew; the topologyTopologyThe live set of registered activation knots and bind descriptors that the wave flows through. (Vol. 02 §5)Volume 15 — Terminology, not the knot, commits the readiness tuple (Vol. 02 §5).
§2. Clews: instantiation and attribution by key
A knotActivation knotAn accumulating unit that matches wave tuples, winds them, and tests readiness; it accumulates understanding. When ready, it activates bind descriptors. Its minimal form is a single condition matcher — a degenerate configuration of the same accumulator, not a different kind. aka knot, clew (for the per-key instance see clew). (Vol. 05)Volume 15 — Terminology definition (the registered record) is distinguished from its clewsClewOne per-key executor instance of a registered knot definition; parallel keys wind independent clews. (Vol. 05 §2)Volume 15 — Terminology (executor instances). The topologyTopologyThe live set of registered activation knots and bind descriptors that the wave flows through. (Vol. 02 §5)Volume 15 — Terminology maintains one clew per (definition, key) pair:
- Registration eagerly constructs the null-key clew; construction failure is a registration defectDefectA rejected discharge or invalid registration; the settle fails and the shell reports it. (Vol. 08 §7)Volume 15 — Terminology (invalid configuration surfaces immediately).
- A clew for key
kis created lazily on the firstdomain.factwithkey = kdispatched to the definition. - Clews never share registers: parallel keys windWindThe act of integrating a matched tuple into the knot's wound state. Deterministic winding completes locally; semantic winding unfolds through the world — the knot projects a winding intention and later winds the returned integration. (Vol. 05 §1, §5)Volume 15 — Terminology independent understanding.
- A clew's identity for correlation purposes is the knot id; uid sequences are per clew (
WIND.CTRlives in the executor instance).
§3. Collection rules (shared by both strategies)
Seen at work Fragment 1 · #0 · a listener is described
The windingWindThe act of integrating a matched tuple into the knot's wound state. Deterministic winding completes locally; semantic winding unfolds through the world — the knot projects a winding intention and later winds the returned integration. (Vol. 05 §1, §5)Volume 15 — Terminology side of a knotActivation knotAn accumulating unit that matches wave tuples, winds them, and tests readiness; it accumulates understanding. When ready, it activates bind descriptors. Its minimal form is a single condition matcher — a degenerate configuration of the same accumulator, not a different kind. aka knot, clew (for the per-key instance see clew). (Vol. 05)Volume 15 — Terminology configuration is a list of collection rulesCollection ruleOne declared acceptance-and-reduction rule of a knot: slot name (as), matched fact type, reducer, optional payload field, optional where clauses. (Vol. 05 §3)Volume 15 — Terminology:
type CollectWhereClause = { field: string; equals?: unknown; not_equals?: unknown };
type SemanticCollectionRule = {
as: string; // slot name in the clew
match_type: string; // fact type to accept ('match' is the authoring alias)
reduce: 'append' | 'latest' | 'overwrite'; // 'latest' ≡ 'overwrite' (keep most recent)
field?: string; // payload data field to read; absent = whole data
where?: readonly CollectWhereClause[]; // complementarity predicates
};Matching (normative, shared function):
- A rule accepts a fact iff
factType = match_typeand everywhereclause holds overdata:equalsrequires strict equality ofdata[field];not_equalsrequires strict inequality. - A knot matches a fact iff at least one rule accepts it (semantic knots additionally match their own correlated integrationIntegrationThe understanding a bind descriptor forms and publishes as a wave tuple; received by others through binding — as an activation or as a demand — so integrations compose into higher-order understanding. (Vol. 06 §1)Volume 15 — Terminology, §5.3).
- A fact is wound once per accepting rule.
- DeltaDeltaThe unit of new material a collection rule extracts from an accepted fact. On a canvas, deltas are labelled by their rule name. (Vol. 05 §3, §5.4)Volume 15 — Terminology extraction: with
field, the delta isdata[field](for the semantic knot: if it is not a string, the wholedatais serialised as JSON instead); withoutfield, the wholedata. - Reduction:
appendaccumulates a sequence;latest/overwritekeeps only the newest value in the slot.
where clauses are the canvasUnderstanding canvasSeveral clews winding in parallel and collecting one another's committed integrations through where clauses over lanes — cross-pollination under budgets. aka canvas. (Vol. 10 §4)Volume 15 — Terminology subscription mechanism: they let one clewClewOne per-key executor instance of a registered knot definition; parallel keys wind independent clews. (Vol. 05 §2)Volume 15 — Terminology collect only complementary tuplesWave tupleAn immutable record in the wave log: offset, kind, key, payload. The unit of fact. aka tuple. (Vol. 03 §1)Volume 15 — Terminology (for example, siblings' integrations on a particular lane) — see §7 and Vol. 10 §4.
§4. The deterministic strategy
Seen at work Fragment 1 · #0 · a listener is described
Status: CURRENT. The degenerate clewClewOne per-key executor instance of a registered knot definition; parallel keys wind independent clews. (Vol. 05 §2)Volume 15 — Terminology that windsWindThe act of integrating a matched tuple into the knot's wound state. Deterministic winding completes locally; semantic winding unfolds through the world — the knot projects a winding intention and later winds the returned integration. (Vol. 05 §1, §5)Volume 15 — Terminology locally and projects nothing.
Configuration:
type DeterministicKnotConfig = {
wind: { collect: readonly SemanticCollectionRule[]; reset?: 'on_ready' | 'never' };
condition: string; // null-guard conjunction over slot names
};Semantics:
- Winding stores collected values into
COLLECTED[as]per rule (§3); no emissionsEmissionA wave tuple without itsoffset— the form in which content is handed to the engine; the engine assigns the offset at append. (Vol. 03 §1)Volume 15 — Terminology ever. - The condition language at this stage is the closed subset
name != null/name == nulljoined by&&, where everynameis a declared slot. Parsers MUST reject anything richer explicitly — richer conditions are an extension rail (Vol. 11 §4.5). test()evaluates the parsed conjunction against the slots;understanding()is the record of collected slots.- Duplicate
asnames across a deterministic knotActivation knotAn accumulating unit that matches wave tuples, winds them, and tests readiness; it accumulates understanding. When ready, it activates bind descriptors. Its minimal form is a single condition matcher — a degenerate configuration of the same accumulator, not a different kind. aka knot, clew (for the per-key instance see clew). (Vol. 05)Volume 15 — Terminology's rules are an authoring error (the slots would alias).
Deterministic knots are the machine's gatesGateA predicate over the bound scope. Gates decide between emit and reject; the current form is min_grade over a named entry. (Vol. 06 §5)Volume 15 — Terminology and rendezvousRendezvousOne key lane's gathering state of an operator bind: activation flag, scope, one-shot projection latch. (Vol. 02 §4.5, Vol. 06 §4)Volume 15 — Terminology latches: "wait until these named things exist" (Vol. 10 §2).
§5. The semantic strategy
Status: CURRENT. The accumulator whose integrationIntegrationThe understanding a bind descriptor forms and publishes as a wave tuple; received by others through binding — as an activation or as a demand — so integrations compose into higher-order understanding. (Vol. 06 §1)Volume 15 — Terminology is semantic. Configuration:
type SemanticKnotConfig = {
wind: {
collect: readonly SemanticCollectionRule[];
integrate?: 'local' | 'through_world'; // default: local
reset?: 'on_ready' | 'never'; // default: on_ready
lane?: string; // canvas mark echoed by controllers
budget?: number; // max winding intentions per clew
};
condition: {
evaluate_understanding: boolean; // false disables readiness entirely
questions: readonly string[]; // the knot's angle of perception
threshold_grade: number; // readiness threshold over GRADE
};
};test() is evaluate_understanding && GRADE ≥ threshold_grade; understanding() is { state: STATE, grade: GRADE }.
§5.1 Local winding (integrate: local)
Each accepted deltaDeltaThe unit of new material a collection rule extracts from an accepted fact. On a canvas, deltas are labelled by their rule name. (Vol. 05 §3, §5.4)Volume 15 — Terminology is stored into SLOTS per rule, and the clewClewOne per-key executor instance of a registered knot definition; parallel keys wind independent clews. (Vol. 05 §2)Volume 15 — Terminology's injected local integratorLocal integratorThe pure function (deltas) → {state, grade} used by locally winding semantic knots. (Vol. 05 §5.1)Volume 15 — Terminology — a function (deltas) → {state, grade} supplied by the strategy registryStrategy registryThe named-factory table resolving knot strategies at registration; also the injection seam for the local integrator. (Vol. 05 §8)Volume 15 — Terminology, not chosen by the knotActivation knotAn accumulating unit that matches wave tuples, winds them, and tests readiness; it accumulates understanding. When ready, it activates bind descriptors. Its minimal form is a single condition matcher — a degenerate configuration of the same accumulator, not a different kind. aka knot, clew (for the per-key instance see clew). (Vol. 05)Volume 15 — Terminology — recomputes STATE/GRADE from all collected values. No emissionsEmissionA wave tuple without its offset — the form in which content is handed to the engine; the engine assigns the offset at append. (Vol. 03 §1)Volume 15 — Terminology. A deterministic machine uses a pure function here; the reference bundles a demonstration heuristic (refimpl 05 §6).
§5.2 Winding through the world (integrate: through_world)
Semantic growth cannot complete locally: integrating a deltaDeltaThe unit of new material a collection rule extracts from an accepted fact. On a canvas, deltas are labelled by their rule name. (Vol. 05 §3, §5.4)Volume 15 — Terminology into wound understanding is an inference. WindingWindThe act of integrating a matched tuple into the knot's wound state. Deterministic winding completes locally; semantic winding unfolds through the world — the knot projects a winding intention and later winds the returned integration. (Vol. 05 §1, §5)Volume 15 — Terminology therefore unfolds as a two-tact cascadeCascadeThe chain (activation knot → bind descriptor → activation knot → …) seeded by a head, whose integrative end a demand gathers. (Vol. 01 §7)Volume 15 — Terminology through the world; the knotActivation knotAn accumulating unit that matches wave tuples, winds them, and tests readiness; it accumulates understanding. When ready, it activates bind descriptors. Its minimal form is a single condition matcher — a degenerate configuration of the same accumulator, not a different kind. aka knot, clew (for the per-key instance see clew). (Vol. 05)Volume 15 — Terminology gains a projecting face bounded to its own metabolism.
Tact one — accept and project. On accepted deltas:
- push each delta (labelled per §5.4) into
DELTAQ; - if
INFLIGHT.UID ≠ null→ return no emissionsEmissionA wave tuple without itsoffset— the form in which content is handed to the engine; the engine assigns the offset at append. (Vol. 03 §1)Volume 15 — Terminology (at most one intention in flight per clewClewOne per-key executor instance of a registered knot definition; parallel keys wind independent clews. (Vol. 05 §2)Volume 15 — Terminology); - if
budgetis declared andWIND.CTR ≥ budget→ return no emissions (the resonance damper: queued deltas stay unwound; the wave settlesSettleThe runtime algorithm alternating propagation with membrane discharges until the machine settles. (Vol. 08 §3)Volume 15 — Terminology unfinished and the stall is visible on the log); - otherwise:
WIND.CTR += 1;uid ← "<knotId>#<WIND.CTR>"; move the wholeDELTAQinto the intention; setINFLIGHT.UID ← uid; emit oneinference.request{knotId, uid, questions, state: STATE, deltas, lane?}on the clew's key (Vol. 04 §4.1).
Tact two — wind the integrationIntegrationThe understanding a bind descriptor forms and publishes as a wave tuple; received by others through binding — as an activation or as a demand — so integrations compose into higher-order understanding. (Vol. 06 §1)Volume 15 — Terminology. On a committed inference.response whose data.knotId equals the knot id:
- if
data.uid ≠ INFLIGHT.UID→ ignore (stale or foreign answer); STATE ← data.state;GRADE ← data.grade;INFLIGHT.UID ← null;- if
DELTAQis non-empty, project the next intention per tact one (budget permitting).
ReadinessReadinessThe state an activation knot reaches when its accumulated understanding satisfies its test; readiness is what activates bind descriptors. Readiness is reified: the topology commits it as a tuple carrying the understanding snapshot. (Vol. 02 §5, Vol. 04 §2.3)Volume 15 — Terminology then follows the ordinary lifecycle: test() reads the freshly wound GRADE. Note the two-tact discipline preserves rule 3 of §1: between tacts the clew is not ready.
§5.3 Own-integration matching
A through-world clewClewOne per-key executor instance of a registered knot definition; parallel keys wind independent clews. (Vol. 05 §2)Volume 15 — Terminology's matches accepts, besides its collection rulesCollection ruleOne declared acceptance-and-reduction rule of a knot: slot name (as), matched fact type, reducer, optional payload field, optional where clauses. (Vol. 05 §3)Volume 15 — Terminology, exactly the facts factType = 'inference.response' ∧ data.knotId = id. Reasoning and failure facts are NOT matched by the clew: a failure leaves INFLIGHT.UID set and the clew stalls honestly (Vol. 04 §4.4) unless the topologyTopologyThe live set of registered activation knots and bind descriptors that the wave flows through. (Vol. 02 §5)Volume 15 — Terminology collects the failure deliberately.
§5.4 Delta labelling on a canvas
With a single collection ruleCollection ruleOne declared acceptance-and-reduction rule of a knot: slot name (as), matched fact type, reducer, optional payload field, optional where clauses. (Vol. 05 §3)Volume 15 — Terminology the deltaDeltaThe unit of new material a collection rule extracts from an accepted fact. On a canvas, deltas are labelled by their rule name. (Vol. 05 §3, §5.4)Volume 15 — Terminology stays raw. With several rules — a canvasUnderstanding canvasSeveral clews winding in parallel and collecting one another's committed integrations through where clauses over lanes — cross-pollination under budgets. aka canvas. (Vol. 10 §4)Volume 15 — Terminology cell collecting from complementary sources — each delta is labelled by its rule name: "[<as>] <text>", so the integrationIntegrationThe understanding a bind descriptor forms and publishes as a wave tuple; received by others through binding — as an activation or as a demand — so integrations compose into higher-order understanding. (Vol. 06 §1)Volume 15 — Terminology sees where material came from.
§6. Budgets and stalling
The windingWindThe act of integrating a matched tuple into the knot's wound state. Deterministic winding completes locally; semantic winding unfolds through the world — the knot projects a winding intention and later winds the returned integration. (Vol. 05 §1, §5)Volume 15 — Terminology budget caps intentions per clewClewOne per-key executor instance of a registered knot definition; parallel keys wind independent clews. (Vol. 05 §2)Volume 15 — Terminology, bounding cost and divergence:
- A clew whose budget is exhausted below its threshold leaves the wave settledSettledQuiescent with no discharge in flight. (Vol. 03 §7)Volume 15 — Terminology but unfinished — never an exception, never a retry loop; the stall is visible on the log (queued deltasDeltaThe unit of new material a collection rule extracts from an accepted fact. On a canvas, deltas are labelled by their rule name. (Vol. 05 §3, §5.4)Volume 15 — Terminology unwound, no readinessReadinessThe state an activation knot reaches when its accumulated understanding satisfies its test; readiness is what activates bind descriptors. Readiness is reified: the topology commits it as a tuple carrying the understanding snapshot. (Vol. 02 §5, Vol. 04 §2.3)Volume 15 — Terminology).
- Budget accounting counts projections, including those answered by failure.
- Extensions layering wider budgets (per-run, per-Cell) MUST keep this semantics: the first action over a hard ceiling is withheld and the state is reported honestly (Vol. 12 §8).
§7. Lanes and the understanding canvas
A clewClewOne per-key executor instance of a registered knot definition; parallel keys wind independent clews. (Vol. 05 §2)Volume 15 — Terminology's lane mark is written into its winding intentionsWinding intentionAn intention tuple a knot projects to grow its own wound state: a request to integrate newly matched deltas into its accumulated understanding, correlated back to the knot. Bounded to the knot's metabolism — never an integration for others, never a decision. (Vol. 04 §4.1, Vol. 05 §5.2)Volume 15 — Terminology and echoed verbatim by controllersOutput controllerA receiver of committed tuples facing outward: it claims tuples by kind/fact type and discharges them to the external world exactly once per runtime. It neither judges nor integrates — a third station beside the activation knot and the bind descriptor, standing outside the propagation cycle on its own cursor. aka effector, egress handler. (Vol. 07 §2–3)Volume 15 — Terminology into the answers (Vol. 04 §4). Complementary cells subscribe by where clauses over lane (or any payload field), which composes into the understanding canvasUnderstanding canvasSeveral clews winding in parallel and collecting one another's committed integrations through where clauses over lanes — cross-pollination under budgets. aka canvas. (Vol. 10 §4)Volume 15 — Terminology: several clews windingWindThe act of integrating a matched tuple into the knot's wound state. Deterministic winding completes locally; semantic winding unfolds through the world — the knot projects a winding intention and later winds the returned integration. (Vol. 05 §1, §5)Volume 15 — Terminology in parallel, cross-pollinating through each other's committed integrationsIntegrationThe understanding a bind descriptor forms and publishes as a wave tuple; received by others through binding — as an activation or as a demand — so integrations compose into higher-order understanding. (Vol. 06 §1)Volume 15 — Terminology, each guarded by its own budget. The construct-level treatment with a worked figure is Vol. 10 §4.
§8. Strategy registry (extension point)
Strategies are resolved by name through a registry of factories:
type KnotFactory = (id: string, config: KnotConfig) => IKnotExecutor<AnyTuple>;
type KnotStrategyRegistry = ReadonlyMap<string, KnotFactory>;- The bundled names are
deterministicandsemantic_evaluator; an unknown name is a registration defectDefectA rejected discharge or invalid registration; the settle fails and the shell reports it. (Vol. 08 §7)Volume 15 — Terminology. - An implementation MAY install additional strategies (a rules engine, a vector accumulator, a human-answer latch) provided the executor honours §1 and the station rules of Vol. 02 §3.
- The registry is also the injection seam for the local integratorLocal integratorThe pure function
(deltas) → {state, grade}used by locally winding semantic knots. (Vol. 05 §5.1)Volume 15 — Terminology: the knotActivation knotAn accumulating unit that matches wave tuples, winds them, and tests readiness; it accumulates understanding. When ready, it activates bind descriptors. Its minimal form is a single condition matcher — a degenerate configuration of the same accumulator, not a different kind. aka knot, clew (for the per-key instance see clew). (Vol. 05)Volume 15 — Terminology itself stays free of any concrete evaluator. - Authoring-format visibility of a custom strategy requires the compiler to accept its name and validate its config; unknown strategies in YAML are rejected explicitly (Vol. 09 §5).
§9. Demonstration: minimal conforming deterministic knot
class GateKnot implements IKnotExecutor<AnyTuple> {
readonly id: string;
private slots = new Map<string, unknown>();
constructor(id: string, private readonly rules: SemanticCollectionRule[],
private readonly wants: (lookup: (n: string) => unknown) => boolean) {
this.id = id;
}
matches(t: AnyTuple) {
return t.kind === 'domain.fact' &&
this.rules.some(r => ruleMatches(r, t.payload.factType, t.payload.data));
}
wind(t: AnyTuple) {
if (t.kind !== 'domain.fact') return [];
for (const r of this.rules)
if (ruleMatches(r, t.payload.factType, t.payload.data))
this.slots.set(r.as, r.field === undefined ? t.payload.data
: (t.payload.data as any)[r.field]);
return [];
}
test() { return this.wants(n => this.slots.get(n)); }
understanding() { return Object.fromEntries(this.slots); }
reset() { this.slots = new Map(); }
}Anything beyond this skeleton — projection, budgets, canvases — is additive behaviour inside the same five-method lifecycle.
Reading aids · CoAgnes LabNot part of the specification; where they differ, the volume governs.
Requirements in this volume
Every sentence of the volume with MUST, SHOULD or MAY, as it stands, with the section it stands in. These key words mark its conformance requirements; the rest of its text is descriptive (Vol. 00 §4).
- MUSTMUST NOT
matchesMUST be a pure predicate over the tuple; it MUST NOT mutate state.§1 - MAYIt MAY return emissions, but only winding intentions bounded to the knot's own accumulation and correlated back to the knot (§5).§1
- MUST NOTIt MUST NOT publish integrations for others or emit decisions.§1
- MUST
testMUST be synchronous and read-only over wound state.§1 - MUST
understanding()MUST be a synchronous snapshot of the wound state — the value reified intosys.knot.ready.§1 - MUSTParsers MUST reject anything richer explicitly — richer conditions are an extension rail (Vol. 11 §4.5).§4
- MUSTExtensions layering wider budgets (per-run, per-Cell) MUST keep this semantics: the first action over a hard ceiling is withheld and the state is reported honestly (Vol. 12 §8).§6
- MAYAn implementation MAY install additional strategies (a rules engine, a vector accumulator, a human-answer latch) provided the executor honours §1 and the station rules of Vol. 02 §3.§8