A tool call names the machine it is for, every answer says which machine answered, and a holder's runtime serves its seat's verbs (ADR 0159) #22

Merged
mesh-admin merged 1 commits from feat/a-tool-call-names-the-machine into main 2026-10-01 12:01:42 +00:00
Contributor

novox/hq ADR 0159, issue 182. Each instance serves its module's subject in the queue group as before and with its machine as the last token; <module>.<tool>@<node> addresses one machine; every answer carries the node, the console appends answered by and lists node on every module tool (stripped into the subject, never handed to the module); mesh call prints it. A claimed seat's verbs are served from the credential's claims with the module's tools of the same name, on the seat's subject, admitted by the bus only where the module holds the seat.

Tests against a real NATS: a module on two machines answers each by name and says who answered unnamed; a claimant answers a seat's verb; the MCP listing carries node on a module's tool and not on a seat's. 22/22.

Merge after mesh-controller #185. Then every module standing on the runtime image must be rebuilt (build --on mesh-tools) to serve the second subject, and the store's holder re-issued so its credential carries claims.

novox/hq ADR 0159, issue 182. Each instance serves its module's subject in the queue group as before and with its machine as the last token; `<module>.<tool>@<node>` addresses one machine; every answer carries the node, the console appends *answered by <node>* and lists `node` on every module tool (stripped into the subject, never handed to the module); `mesh call` prints it. A claimed seat's verbs are served from the credential's `claims` with the module's tools of the same name, on the seat's subject, admitted by the bus only where the module holds the seat. Tests against a real NATS: a module on two machines answers each by name and says who answered unnamed; a claimant answers a seat's verb; the MCP listing carries `node` on a module's tool and not on a seat's. 22/22. **Merge after mesh-controller #185.** Then every module standing on the runtime image must be rebuilt (`build --on mesh-tools`) to serve the second subject, and the store's holder re-issued so its credential carries `claims`.
mesh-admin added 1 commit 2026-10-01 12:01:06 +00:00
runtime serves its seat's verbs (novox/hq ADR 0159)

A module on several machines served one subject in one queue group, so a call reached whichever
instance answered first and nobody could ask one machine's instance. Now each instance also serves
its subject with its machine as the last token, `<module>.<tool>@<node>` addresses it, and every
answer carries the machine that gave it: the console lists `node` on every module tool, strips it
into the subject, and appends "answered by <node>" to the answer; `mesh call` prints it.

And a seat's verbs are served by whoever claims the seat: the credential names the claimed seats
and the verbs each promises, the runtime serves each verb with the module's tool of the same name
on the seat's own subject, and the bus — which admits only the holder's subscription — decides where
that serving is real. Design 33 §3 and §4, built.
mesh-admin merged commit 278a25b3e5 into main 2026-10-01 12:01:42 +00:00
mesh-admin deleted branch feat/a-tool-call-names-the-machine 2026-10-01 12:01:42 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-tools#22