The machine in reference · Volume 06

Volume 06 — Bind Descriptors: Gather, Judge, Publish

CURRENTsnapshot of 14 July 20267 min read← Volume 05 — Activation KnotsVolume 07 — The Membrane and Output Controllers →

Reading aids · CoAgnes LabNot part of the specification; where they differ, the volume governs.

At a glance

  • The bind as one scoped expression: understanding enters through exactly two channels — the activation and the demands; at the barrier (currently all) the bound names become simultaneously available; gates are predicates over the bound scope; and either the service's integration or the verdict of rejection is published. §1
  • The two descriptor forms of the current machine: the emit descriptor — one activation, no demands, no gates, one fact carrying the activating knot's snapshot at every readiness — and the operator bind — activation, demands, gates and a service crossing the membrane. §2§3
  • The rendezvous algorithm: one state per key lane; a latching barrier, met by the presence of every demand name, not by simultaneity; gates in declared order, the first failure winning; one projection per key — a machine-complete service intention, or a bind.rejected verdict, terminal for that rendezvous. §4§5
  • The two delegated emit declarations: writes — the discharging controller publishes the validated result as one fact of the declared type — and unfold — the result instantiates a declared template: knot records, the closing bind once, head facts, in exactly that order, each emission stamped emittedBy. §6§7
  • A third emit form, cell (PROPOSED) — mutually exclusive with the other two, leaving binds and the rendezvous algorithm unchanged — and the reference operator bind, abridged, as a demonstration. §8§9

A bind descriptorBind descriptorA bind. Woken by an activation knot, it gathers named understandings from the space, judges them, runs a service, and publishes an integration. aka descriptor, bind. (Vol. 06)Volume 15 — Terminology is a bind: woken by 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's 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 gathers named understandings from the space, judges them in that bound scopeBound scopeThe record of names — from the activation tuple and the demands — over which gates and the service are evaluated. (Vol. 06 §4)Volume 15 — Terminology, runs a serviceServiceThe function evaluated over the bound scope to produce the integration. Its kind (model instruction, deterministic function, other) is an assembly property. aka service function. (Vol. 06 §3, Vol. 08 §5)Volume 15 — Terminology, and publishes an 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. It never returns a value privately — publication is the composition mechanism. This volume specifies the two descriptor forms of the current machine (emit descriptorEmit descriptorThe minimal bind form: one activation, immediate truthful publication. (Vol. 06 §2)Volume 15 — Terminology, operator bindOperator bindThe full bind form: activation + demands + gates + a service crossing the membrane. (Vol. 06 §3)Volume 15 — Terminology), the 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 algorithm, 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, service intentionsService intentionThe machine-complete service.request an operator bind projects: instruction, scope, schema, emit declaration. (Vol. 04 §5.1)Volume 15 — Terminology, and the two delegated emit declarationsEmit declarationThe declared publication form carried in the intention: writes (one fact) or unfold (a sown-topology template); the proposed third member is cell. (Vol. 06 §6–8)Volume 15 — Terminology including the topology-sowing template.

§1. The bind as a form

Conceptually every bind is the same scoped expression:

bind {
  <name₀> ← ⟨activation: knot A⟩
  <name₁> ← ⟨demand:     knot D₁⟩
  …
} at barrier(all)
in if gates(name₀ … nameₙ)
   then emit    = service(name₀ … nameₙ)      — the integration, published
   else reject                                  — the verdict, published

Understanding enters a bind through exactly two channels: the activation (the one 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 whose 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 wakes it) and the demandsDemandA named binding (as:) to an activation knot whose integrated understanding the bind descriptor gathers back. The gathering face of affinity, and the second method through which understanding enters the bind. aka tendril. (Vol. 06 §3–4)Volume 15 — Terminology (named bindings to knots whose 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 it gathers). The barrierBarrierThe join policy over demands (currently all): the rendezvous at which the bound demands become simultaneously available. The current barrier latches: a later readiness refreshes a demand's entry until projection. (Vol. 06 §4)Volume 15 — Terminology is the 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 at which the bound names become simultaneously available; 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 are predicates over the bound scopeBound scopeThe record of names — from the activation tuple and the demands — over which gates and the service are evaluated. (Vol. 06 §4)Volume 15 — Terminology; the serviceServiceThe function evaluated over the bound scope to produce the integration. Its kind (model instruction, deterministic function, other) is an assembly property. aka service function. (Vol. 06 §3, Vol. 08 §5)Volume 15 — Terminology is the function evaluated over the scope; the current barrier policy is all.

§2. Emit descriptor (action: emit)

Seen at work Fragment 3 · #1 · the first fragment's doer

Status: CURRENT. The minimal bind: one activation, no demandsDemandA named binding (as:) to an activation knot whose integrated understanding the bind descriptor gathers back. The gathering face of affinity, and the second method through which understanding enters the bind. aka tendril. (Vol. 06 §3–4)Volume 15 — Terminology, no 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; its serviceServiceThe function evaluated over the bound scope to produce the integration. Its kind (model instruction, deterministic function, other) is an assembly property. aka service function. (Vol. 06 §3, Vol. 08 §5)Volume 15 — Terminology is the identity over the activation understanding.

Registration payload: {id, subscribesTo, actionConfig: {writes}} (Vol. 04 §2.2). Execution:

  1. On activation {knotId, key, understanding} emit exactly one fact of the declared type on the same key: {factType: writes, data: {triggeredBy: [knotId], understanding}}.
  2. The payload MUST be truthful — the activating 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 snapshot, never invented values.
  3. Emit descriptorsEmit descriptorThe minimal bind form: one activation, immediate truthful publication. (Vol. 06 §2)Volume 15 — Terminology are not one-shot: every 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 of the subscribed knot produces a publication (pair with knot reset policyReset policyWhat readiness does to the clew: on_ready clears the wound state; never keeps it, allowing repeated readiness. (Vol. 05 §1)Volume 15 — Terminology deliberately).

Limitation fixed by the current stage: emit-descriptor output carries triggeredBy but no bind-level uid; it is therefore not accepted where publication provenance is required (a rule the Cell extension states for results, Vol. 12 §5.3).

§3. Operator bind (action: operator)

Seen at work Fragment 1 · #1 · a doer is described

Status: CURRENT. The full bind: activation + demandsDemandA named binding (as:) to an activation knot whose integrated understanding the bind descriptor gathers back. The gathering face of affinity, and the second method through which understanding enters the bind. aka tendril. (Vol. 06 §3–4)Volume 15 — Terminology + 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 + serviceServiceThe function evaluated over the bound scope to produce the integration. Its kind (model instruction, deterministic function, other) is an assembly property. aka service function. (Vol. 06 §3, Vol. 08 §5)Volume 15 — Terminology crossing the membraneMembraneThe boundary where the wave meets the world: output controllers face outward, ingress faces inward. (Vol. 07)Volume 15 — Terminology. Configuration (carried in the registration record and echoed into every intention):

ts
type OperatorBindConfig = {
  on?: string;             // activation knot id; absent = demands-only bind
  on_as?: string;          // scope name of the activation entry (default 'activation')
  demands: readonly { as: string; knot: string }[];
  gates?: readonly { scope: string; min_grade: number }[];
  service: {
    instruction: string;   // the operator instruction
    schema?: JsonSchema;   // embedded result contract (required for unfold)
    emit: { writes: string } | { unfold: UnfoldEmitTemplate };
  };
};

Interests: the bind registers under its 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 and under every demand knot — it is woken by each of those 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 tuplesWave tupleAn immutable record in the wave log: offset, kind, key, payload. The unit of fact. aka tuple. (Vol. 03 §1)Volume 15 — Terminology. subscribesTo (the executor's nominal subscription) is on, else the first demand's knot, else the bind's own id.

§4. Rendezvous algorithm

Seen at work Fragment 1 · The doer opens its rendezvous

One 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 state per key lane (registers of Vol. 02 §4.5). On each activation {knotId, key, understanding}:

 1  S ← RDV[key]            (create: ACTIVATED = (on undeclared), SCOPE = ∅, PROJECTED = false)
 2  if knotId = on:            S.ACTIVATED ← true;  S.SCOPE[on_as ?? 'activation'] ← understanding
 3  if ∃ demand d: d.knot = knotId:                 S.SCOPE[d.as] ← understanding   (latch/refresh)
 4  if S.PROJECTED ∨ ¬S.ACTIVATED:                  return []
 5  if ∃ demand d: d.as ∉ S.SCOPE:                  return []          (barrier 'all' not met)
 6  S.PROJECTED ← true;  scope ← snapshot(S.SCOPE)
 7  for each gate g in declared order:
        grade ← scope[g.scope].grade
        if grade is not a number ∨ grade < g.min_grade:
            return [ bind.rejected {bindId, reason} ]                  (first failure wins)
 8  INTENT.CTR += 1;  uid ← "<bindId>#<INTENT.CTR>"
 9  return [ service.request {bindId, uid, instruction, scope, schema?, emit} ]
Lab fig. 06·1Three knots on the left — A, the activation, and D1 and D2, the demands — send their readiness into a box for one key lane, RDV[k], where they fill the scope entries activation, d1 and d2; the box also shows ACTIVATED true and PROJECTED true. An arrow marked snapshot crosses a dashed barrier line, marked all and met by presence, not simultaneity, to a diamond: the gates, in declared order. From the diamond one arrow leads to a new service.request (bindId, uid, instruction, scope, schema, emit), another, marked a gate fails, to a new bind.rejected (bindId, reason). A note below: PROJECTED latches on both outcomes; later readiness is absorbed silently.Gather — one key laneeach readiness on key kJudge · gatesin declared orderfirst failure winsPublishone-shot per keyRDV[k]ACTIVATED truePROJECTED trueAactivationactivationD1demand d1d1D2demand d2d2Barrier · allmet by presence,not simultaneitysnapshotservice.requestuid: <bindId>#<n>bindId · uidinstruction · scopeschema? · emita gate failsbind.rejectedbindId · reasona later readiness of a demandrefreshes its entry until projectionPROJECTED latches on both outcomes: later readiness is absorbed silently
Lab fig. 06·1Three knots on the left — A, the activation, and D1 and D2, the demands — send their readiness into a box for one key lane, RDV[k], where they fill the scope entries activation, d1 and d2; the box also shows ACTIVATED true and PROJECTED true. An arrow marked snapshot crosses a dashed barrier line, marked all and met by presence, not simultaneity, to a diamond: the gates, in declared order. From the diamond one arrow leads to a new service.request (bindId, uid, instruction, scope, schema, emit), another, marked a gate fails, to a new bind.rejected (bindId, reason). A note below: PROJECTED latches on both outcomes; later readiness is absorbed silently.Gather — one key laneeach readiness on key kRDV[k]AactivationactivationD1demand d1d1D2demand d2d2a later readiness of a demandrefreshes its entry until projectionACTIVATED truePROJECTED trueBarrier · allmet by presence,not simultaneitysnapshotJudge · gatesin declared orderfirst failure winsPublishservice.requesta gatefailsbind.rejecteduid: <bindId>#<n>bindId · uidinstruction · scopeschema? · emitbindId · reasonPROJECTED latches on both outcomes —one-shot per key: later readinessis absorbed silently
Lab fig. 06·1 One operator bind, one key lane: the activation knot's readiness marks the lane activated and fills its scope entry; each demand knot's readiness latches its named entry, and a later one refreshes it until projection. Once the lane is activated and every demand name is present — presence, not simultaneity — the scope is snapshotted, the gates run in declared order and the lane projects once: a service.request, or bind.rejected at the first failing gate; later readiness is absorbed silently. A reading aid by CoAgnes Lab; §4 governs.

Normative points:

  1. Latching barrierBarrierThe join policy over demands (currently all): the rendezvous at which the bound demands become simultaneously available. The current barrier latches: a later readiness refreshes a demand's entry until projection. (Vol. 06 §4)Volume 15 — Terminology. A later 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 of the same demandDemandA named binding (as:) to an activation knot whose integrated understanding the bind descriptor gathers back. The gathering face of affinity, and the second method through which understanding enters the bind. aka tendril. (Vol. 06 §3–4)Volume 15 — Terminology refreshes its scope entry until projection; the scope snapshot at step 6 is what 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 the serviceServiceThe function evaluated over the bound scope to produce the integration. Its kind (model instruction, deterministic function, other) is an assembly property. aka service function. (Vol. 06 §3, Vol. 08 §5)Volume 15 — Terminology see. The barrier is met by presence of all demand names, not by simultaneity.
  2. One-shot per key. PROJECTED latches on both outcomes (intention or rejection). The rendezvous never reopens in the current machine; revision patterns create fresh binds instead (Vol. 12 §6, blind spot §11.4 of the design proposal). Repeated readiness after projection is absorbed silently.
  3. Gate semantics. A gate reads the top-level grade field of the named scope entry — the convention that 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 understandings expose their sufficiency as grade (deterministic understandings without one simply fail a gate). Richer gate expressions are an extension rail (Vol. 11 §4.5).
  4. Machine-completeness. The projected intention carries scope, instruction, schema, and emit declarationEmit declarationThe declared publication form carried in the intention: writes (one fact) or unfold (a sown-topology template); the proposed third member is cell. (Vol. 06 §6–8)Volume 15 — Terminology in full: the bind is complete at projection, and completion is the controllerOutput 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's commit. Nothing about the bind needs to be consulted afterwards.
  5. A demands-only bind (on absent) is activated from creation and projects as soon as all demands are bound; an activation-only bind (demands: []) projects on activation immediately.

§5. Judgement and rejection

GateGateA 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 failure publishes bind.rejected {bindId, reason} on the activation key (Vol. 04 §3.2), carrying the first failing gate's reason. Rejection is a published verdict — visible, bindable (a guard or journal may collect it) — and terminal for that 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. There is no retry at this station.

§6. Delegated emit: writes

Seen at work Fragment 1 · #4 · the note is released

The simple declaration emit: { writes: T } instructs the discharging controllerOutput 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 to publish the validated result as one fact of type T, key preserved, data: {bindId, uid, result} (Vol. 04 §5.3). Publication by proxy keeps the station rules intact: the bind judged and projected; the controller merely commits under the declared form.

§7. Delegated emit: unfold — sowing topology

Status: CURRENT. The constrained in-wave authoring form: a serviceServiceThe function evaluated over the bound scope to produce the integration. Its kind (model instruction, deterministic function, other) is an assembly property. aka service function. (Vol. 06 §3, Vol. 08 §5)Volume 15 — Terminology result instantiates new topologyTopologyThe live set of registered activation knots and bind descriptors that the wave flows through. (Vol. 02 §5)Volume 15 — Terminology from a declared template. The model (or other oracle) supplies only the items; the pipeline fixed the record shapes, ids, schemas, and closing form at authoring time.

Lab fig. 06·2At the top, a service.request card with a stamped uid and its declared template, emit.unfold — for_each, knot, head, close — and beside it the result: items 1 to 3, supplied by the model. Below, the batch in log order: knot 1, knot 2, knot 3, close, head 1, head 2, head 3, grouped as knot records and the closing bind on key null, and head facts on the intention key. An arrow from head 1 reaches back to the knot that knot 1 registered, labelled registration precedes the facts that reach it; a dashed line joins the request's uid to every emission: emittedBy: uid.service.requestuidemit.unfold — declared:for_each · knot · head · closeresult[for_each]item 1item 2item 3the template: fixed at authoring timethe items: supplied by the model (or other oracle)instantiated controller-side, after schema validation — in exactly this order:registeredregistration precedes the facts that reach itknot 1knot 2knot 3closehead 1head 2head 3emittedBy: uidKnot recordssys.knot.definedkey nullClosing bindsys.descriptor.definedkey nullHead factsdomain.fact · head.writesintention key
Lab fig. 06·2At the top, a service.request card with a stamped uid and its declared template, emit.unfold — for_each, knot, head, close — and beside it the result: items 1 to 3, supplied by the model. Below, the batch in log order: knot 1, knot 2, knot 3, close, head 1, head 2, head 3, grouped as knot records and the closing bind on key null, and head facts on the intention key. An arrow from head 1 reaches back to the knot that knot 1 registered, labelled registration precedes the facts that reach it; a dashed line joins the request's uid to every emission: emittedBy: uid.service.requestuidemit.unfold — declared:for_each · knot · head · closethe template: fixed at authoring timeresult[for_each]item 1 · item 2 · item 3the items: supplied by the model (or other oracle)instantiated controller-side, afterschema validation, in exactly this order:knot 1knot 2knot 3closehead 1head 2head 3registeredregistration precedesthe facts that reach itKnot recordssys.knot.definedkey nullClosing bindsys.descriptor.definedkey nullHead factsdomain.fact · head.writesintention keyemittedBy: uid — on every emission
Lab fig. 06·2 An unfold, instantiated controller-side after schema validation: the model (or other oracle) supplies only the items; the pipeline fixed the record shapes, ids, schemas and closing form at authoring time, in the declared template. The batch is emitted in exactly this order — a knot record per item, the closing bind once, a head fact per item — so that registration precedes the facts that reach it. Records stand on key null, head facts on the intention key, and every emission carries emittedBy, the sowing intention's uid. A reading aid by CoAgnes Lab; §7 governs.
ts
type UnfoldEmitTemplate = {
  for_each: string;                       // answer field holding the items array
  knot: { id: string; strategy: 'semantic_evaluator'; config: Record<string, unknown> };
  head: { writes: string; data: Record<string, unknown> };
  close: {
    id: string;
    demands_from_items: { as: string; knot: string };  // both contain {index}
    gates?: readonly OperatorGate[];
    service: OperatorServiceConfig;                    // emit must be 'writes'
  };
};

Instantiation algorithm (controller-side, after schema validation):

 1  items ← result[for_each];  if not a non-empty array → service.failed
 2  contexts ← [{index: i+1, item: items[i], scope} for i in 0..|items|-1]
 3  emissions ← for each context: sys.knot.defined
        {payload: substitute(knot, ctx) + emittedBy: uid, key: null}
 4  emissions += one sys.descriptor.defined
        {id: close.id,
         operator: {demands: [substitute(demands_from_items, ctx) for each ctx],
                    gates?, service: close.service},
         emittedBy: uid, key: null}
 5  emissions += for each context: domain.fact
        {factType: head.writes, key: intention key,
         data: substitute(head.data, ctx) + emittedBy: uid}
 6  return emissions in exactly this order: knots, close, heads

Normative points:

  1. Order is load-bearing: 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 records first, the closing bind once, head facts last — registration always precedes the facts that reach it (Vol. 02 §5.1).
  2. Placeholders. {index} (one-based), {item.path…}, {scope.path…}. A string that is exactly one placeholder keeps the resolved raw type; embedded placeholders stringify (non-strings as JSON). A placeholder resolving to nothing aborts instantiation (→ service.failed).
  3. Static coherence is checked at compile time: every {item.*} path must exist in the declared items schema; every {scope.*} must name a bound scopeBound scopeThe record of names — from the activation tuple and the demands — over which gates and the service are evaluated. (Vol. 06 §4)Volume 15 — Terminology entry; knot and demandDemandA named binding (as:) to an activation knot whose integrated understanding the bind descriptor gathers back. The gathering face of affinity, and the second method through which understanding enters the bind. aka tendril. (Vol. 06 §3–4)Volume 15 — Terminology templates must contain {index}; the closing service's emit must be a simple writes (no recursive unfoldUnfoldThe constrained in-wave authoring form: a service result instantiates declared knot/close/head templates. (Vol. 06 §7)Volume 15 — Terminology at this stage); an unfold requires the service schema (Vol. 09 §5).
  4. Provenance. Every emissionEmissionA 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 carries emittedBy = the sowing intention's uid. The topology ignores the stamp; trace derivations and the proposed Cell ownership rules rely on it (Vol. 12 §4).
  5. TerminationAttribution, reachability, terminationThe three load-bearing obligations of the decoupled model. (Vol. 01 §7)Volume 15 — Terminology. The fan-out is bounded by the schema (maxItems where declared); extensions performing admission MUST bound worst-case fan-out statically rather than trusting one answer (Vol. 12 §6, check 13).

The canonical figure produced by an unfold — question cells + closing harvest bind + head facts seeding each cell — is treated as a construct in Vol. 10 §6.

§8. Third emit form (PROPOSED)

The Cell extension adds emit: { cell: CellEmitDeclaration } as a third, mutually exclusive variant: the validated result is treated as a CellBlueprint and wrapped, together with parent-owned Charter/policy/context, into a cell.seed (Vol. 12 §3). Binds and this volume's 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 algorithm are unchanged by it — the declaration passes through the intention like any other emit form, which is precisely why the extension can live on these rails.

§9. Demonstration: the reference operator bind (abridged)

ts
class OperatorBind implements IDescriptorExecutor<AnyEmission> {
  readonly id: string; readonly subscribesTo: string;
  private readonly states = new Map<string | null, RendezvousState>();
  private intentionCounter = 0;

  execute(a: DescriptorActivation): readonly AnyEmission[] {
    const s = this.stateFor(a.key);
    if (this.config.on === a.knotId) {
      s.activated = true;
      s.scope.set(this.config.on_as ?? 'activation', a.understanding);
    }
    const d = this.config.demands.find(d => d.knot === a.knotId);
    if (d) s.scope.set(d.as, a.understanding);              // latch / refresh
    if (s.projected || !s.activated) return [];
    if (this.config.demands.some(d => !s.scope.has(d.as))) return [];
    s.projected = true;
    const scope = Object.fromEntries(s.scope);
    const rejection = this.judge(scope);                     // first failing gate
    if (rejection !== null)
      return [fact('bind.rejected', a.key, { bindId: this.id, reason: rejection })];
    const uid = `${this.id}#${++this.intentionCounter}`;
    return [fact('service.request', a.key,
      { bindId: this.id, uid, instruction: this.config.service.instruction,
        scope, ...(this.config.service.schema && { schema: this.config.service.schema }),
        emit: this.config.service.emit })];
  }
}

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).

  1. MUSTThe payload MUST be truthful — the activating knot's snapshot, never invented values.§2
  2. MUSTTermination. The fan-out is bounded by the schema (maxItems where declared); extensions performing admission MUST bound worst-case fan-out statically rather than trusting one answer (Vol. 12 §6, check 13).§7