At 2026-11-02 22:55:58 the provisioner's first pass after a new membership read part of the picture, took the modules missing from it as handing nothing, set 21 route keys of running web apps retiring and asked the operator to remove them; 3 s later the next pass put every plan back. Only 3 asks reached the router; the other 18 were refused yet counted asked. Third of its kind (937, 1332), so the kind is fixed, not the instance. Quick fix: wait for the watched reads' first load before any pass. Thorough fix, chosen because the kind recurred three times and its obvious answer would cut running apps off their routes: - no pass judges before placement, wants, haves, the indexer's modules and the published compositions have loaded once; a read error fails the pass instead of reading as empty; - while a module's composition is not published at its build, no key on that node turns retiring and no plan is removed; a placed module with no known build is held, not counted as handing nothing; - a key whose consumer still has a want or a have on the node and no plan read in this pass is left as it is; - a pass that would retire most of a node's consumers at once (more than 3, or more than half and at least 2) retires and asks nothing and says it as a fault through provisioner_health (runtime-health, so a condition names the likely cause); provisioner_compose retire-many is the operator's word that such a removal is meant; - at most 3 asks stand open (the router's bound per asker); the rest wait and are raised as one ends, and an ask the router holds no record of a minute on is raised again. Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
mesh-provisioner
Holds the mesh-provisioner seat once for the mesh: the provisioner's server (novox/hq ADR 0349 clause 3, design 57
P4). Go, one binary (cmd/mesh-provisioner), served by a runtime of its own on its own bus account (runs-as), so
that its account alone writes the registry. The provisioner client on each node (node-provisioner, design 57 P5)
is the module mesh-provisioner-client.
What it keeps
mesh-provisioner_registry: which domain answers which kind of placeholder, keyed by the kind (config,secret,bound— the provider's own bucket,<provider-module>_bound, keyed<node>.<module>.<provision>[.<local>](mesh-sdkgo/provider) —consumers— a provider's consumers' credentials, asked of the vault by the provider machine's client (novox/hq ADR 0373) —collected— andshell,environmentandcontribution, read as collections of the same name (design 57 L1) — and the placement namespacesdir,access,port,seat,machine). Each answer names the owning module and where a client finds the values: a domain's bucket and its key shape (placement's is the controller's assignments mirror, whose value carries the provisioner's plan of a module handed to it), or a seat's verb asked on request and reply (a secret is never in a bucket). Compiled inregistry.go, written at start and every hour, only where it differs; a kind no domain answers is deleted.mesh-provisioner_needs: what each module on each node needs,<node>.<module>.<kind>.<name>.mesh-provisioner_applied: what is applied where,<node>.<module>.mesh-provisioner_collect: the items of every collection,<node>.<collection>.<contributor>, the collection with a character a key's token cannot hold written=<hex>(shell=3Azsh=3Anormalisshell:zsh:normal), and read back by its name.
The last three are written by each node's provisioner client for its own node's keys alone: the controller grants
the client <node>.> of each and nothing wider (mesh-controller internal/broker/provisioner.go), and a provider
reads the needs without writing them. This module writes only the registry.
The verb
mesh-provisioner.provisioning with what registry (the default), needs, applied or collect, narrowed by
node and module (for collect, the contributor) and, for collect, collection. Reads only. A key out of its
bucket's shape is said in the answer, never dropped quietly.
Files it does not know
Each directory or archive this module declares says how it treats a file it did not write (ADR 0422, ADR 0416).
${dir:state}: everything in it is the program's; the mesh moves nothing out (ADR 0422 §2).