Merge pull request 'Design 47 milestone G: answers to develop's first questions (callers of the bus module's acts, the node-engine's verbs, small body forms)' (#544) from design/47-G-develop-answers into main

This commit was merged in pull request #544.
This commit is contained in:
2026-11-11 09:46:41 +00:00
@@ -16,6 +16,7 @@ decisions:
- "ADR 0596"
- "ADR 0595"
- "ADR 0564"
- "ADR 0563"
- "ADR 0363"
---
@@ -55,8 +56,8 @@ line says so.*
checked: unit (definition reader), a bare name refused, both prefixed forms accepted.
- §393 **The node-engine's eleven verbs name today's callers.** The eleven verbs of the seat `node-engine` that name
no `callers` on main get, in their definition, the callers the node-engine's compiled callers table names for each
on main, written in §392's forms, and that table goes from the node-engine's code: the definition is the one
source (§68). Why: the design's choice (Q-H8). How it is checked: unit (definition reader), each of the eleven names
on main, written in §392's forms, or their class's default where the table names none (§447), and that table goes
from the node-engine's code: the definition is the one source (§68). Why: the design's choice (Q-H8). How it is checked: unit (definition reader), each of the eleven names
its callers; the code review finds no callers table in the node-engine.
- §394 **The callers of G's new trusted acts.** `mesh-catalog`'s `register`, `policy`, `watch` and `unwatch`, and
`mesh-delivery`'s `recovery`, are of class `act`: the operator and sessions; `registrations` is a `read`.
@@ -352,3 +353,36 @@ line says so.*
manifest validator holds it to that reader's words at G's heads. Why: readers first (ADR 0667 §4). How it is
checked: unit (manifest validator), a row refusing a node-engine manifest with a word the older reader refuses;
whole (node-engine of the version before), it composes from a manifest by digest written by G's indexer.
### From develop (2026-11-11)
- §446 **`mesh-broker`'s acting verbs are the bus module's own.** The seat `mesh-broker`'s `create` and `apply` name
the callers `module:nats`, the bus module's own process alone; `recreate` and `drop` are of class `warrant`, on the
operator's warrant with the approval mark, their callers `module:nats`. This amends §336's reading of "the bus
module's own process only" and "the bus module's process, on the operator's warrant". Why: develop question D-1,
2026-11-11; ADR 0595 §4 has `recreate` and `drop` on a person's word. How it is checked: unit (definition reader),
the four verbs' callers and classes; the grants part's table test, a call from any other module refused.
- §447 **The node-engine's verbs and their callers.** The node-engine's compiled callers table on main
(`internal/link/handacts.go`, `SeatListCallers`) names two verbs: `seat-list` and `seat-list-again`, each called by
any person, the tool runner standing for a session, and the healers; their definitions name `persons`, `sessions`
and `healers`, which amends §204 for the node-engine's `seat-list-again`. The eleven verbs absent from it take their
class's default (§391): `judge-directories`, `setuid-search`, `root-free`, `acts`, `packages`, `composition`,
`compose-candidate` and `manifest-reads` are of class `read`; `compose` of class `act`; `hand-over` and
`access-act` of class `warrant`, performed only on the operator's warrant (ADR 0563 §3). Why: develop question D-2,
2026-11-11; the classes are the design's choice from what each verb does on main. How it is checked: unit
(definition reader), each of the thirteen verbs' class and callers; the code review finds no callers table in the
node-engine.
- §448 **The keeper's `findings-views` is a state of its seat.** The seat `mesh-conditions`' definition declares
`findings-views` among its `states`, beside `conditions` (§388). Why: develop question D-3, 2026-11-11. How it is
checked: the seat's fixtures.
- §449 **The grants part's fill events say what `mesh-wants`' say.** The seat `mesh-grants`' events `filling` and `room`
carry the same body as `mesh-wants`' fill events: `store`, `bytes`, `cap` and `at` (§181, §331). Why: develop
question D-4, 2026-11-11. How it is checked: the seat's fixtures, against `mesh-wants`'.
- §450 **`ask-again` and `aside` answer.** `operator-channel`'s `ask-again` (§394) takes `key`, the ask's, and answers
`state`, the ask's state after it, or `error`; `node-backup`'s `aside` (§405) answers `aside`, the name the data was
set aside under, or `error`. Why: develop question D-5, 2026-11-11. How it is checked: the seats' fixtures.
- §451 **The forms of `owner`, `waiting-on` and a catch-up.** A finding's `owner` and `waiting-on` (§434, §439) are each
a string: a person or a session as who@node, or a seat's name. A restore point's catch-up (§406) is `{tool,
arguments}`: `tool` an address as the mesh MCP server names one, `arguments` an object. Why: develop question D-6,
2026-11-11. How it is checked: unit (mesh-conditions' contract, node-backup's contract), each form read and another
refused.