Design 47: the assigner writes the bus module's want only to a node agent that keeps the server, and the test says so

Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
This commit is contained in:
2026-11-03 01:44:38 +01:00
parent ae4c90f990
commit 402ac3bfda
@@ -850,12 +850,14 @@ backup holder backs up nothing, and the have says so.
every module's, and the node agent applies what that want brings (its files, its processes' bus accounts and
secrets, its tools) while it keeps the server's container as it runs. Only a want written by a put, on the
operator's warrant after the streams' snapshot, replaces the server. mesh-sdk names the resources the bus's
server holds, so the assigner and the node agent read one list; a node agent that does not know the list yet is
never sent a want for the bus module, so the node agent's hold is delivered before the assigner's change. Until
server holds, so the assigner and the node agent read one list; the assigner writes the bus module's want only to a
node agent whose have says it keeps the server (the version it reports), so the node agent's keeping of the server
is delivered before the assigner's change. Until
then nothing writes the bus module's process accounts, and its tools that write to the bus fail (issue 774, the
operator, 2026-11-03). How it is checked: a node agent unit test applies a bus module's new want and shows the
server's container untouched and the tools' account written; an assigner unit test writes the bus module's want
by the rules and holds the server's replacement for a put.
by the rules, holds the server's replacement for a put, and writes none to a node agent whose have does not say it
keeps the server.
- **Every want is owed.** The watchman mirrors every want as a pulse owed by that node's agent until its have
names the want's fingerprint, so a node that does not move is a stall (ADR 0539 §19).
- **A move a person must allow is judged by the node and asked by the assigner.** The node agent applies ADR 0377