hq issue 327: every controller verb ran as a fresh process that dialled the bus, so three conditions calls added three connections, and hundreds of short connections an hour, all named mesh-controller, hid any client reconnecting in a loop. As hq ADR 0265 decides:
Read verbs answered in the serving process: conditions (list, show, history), hand-acts and queue run the same command function writing into the answer (readHere), on the serving keeper and connection. No connection opened. Silences and every acting verb still run as their own process.
The serving connection is lent (servingBus, aBus, broker.Borrow) to what the serving controller does for a moment: onTheBus, the queue, a build's log, buildSeatPause (a dial per watchdog tick while a walk waited), readiness, and builds it asks for (link.BuildsOn).
Every connection is named: mesh-controller serving, mesh-controller serving lease, mesh-controller verb <verb> (runVerb passes MESH_VERB), mesh-controller command <command>; the build agent build agent on <host>. broker.Dial puts its default name first so a caller's name wins.
Probe D15 asks the bus module's new nats_closed_connections (mesh-catalog, same group) each run and raises bus-reconnects (plain words) for a user whose connections were dropped more than 12 times in the last hour.
Replay: cmd/mesh-controller/replay327_test.go (R327 in mesh-lab), proved with the lab's prover: fails on 0cf5a3a (3 connections), passes on 63e5e3b. It builds the controller binary once to run a verb as its own process, as the serving controller does.
Delivery group: fix/327-a-verb-reads-on-the-serving-connection with mesh-catalog, mesh-lab and hq.
hq issue 327: every controller verb ran as a fresh process that dialled the bus, so three `conditions` calls added three connections, and hundreds of short connections an hour, all named `mesh-controller`, hid any client reconnecting in a loop. As hq ADR 0265 decides:
- **Read verbs answered in the serving process**: `conditions` (list, show, history), `hand-acts` and `queue` run the same command function writing into the answer (`readHere`), on the serving keeper and connection. No connection opened. Silences and every acting verb still run as their own process.
- **The serving connection is lent** (`servingBus`, `aBus`, `broker.Borrow`) to what the serving controller does for a moment: `onTheBus`, the queue, a build's log, `buildSeatPause` (a dial per watchdog tick while a walk waited), readiness, and builds it asks for (`link.BuildsOn`).
- **Every connection is named**: `mesh-controller serving`, `mesh-controller serving lease`, `mesh-controller verb <verb>` (runVerb passes `MESH_VERB`), `mesh-controller command <command>`; the build agent `build agent on <host>`. `broker.Dial` puts its default name first so a caller's name wins.
- **Probe D15** asks the bus module's new `nats_closed_connections` (mesh-catalog, same group) each run and raises `bus-reconnects` (plain words) for a user whose connections were dropped more than 12 times in the last hour.
Replay: `cmd/mesh-controller/replay327_test.go` (R327 in mesh-lab), proved with the lab's prover: fails on 0cf5a3a (3 connections), passes on 63e5e3b. It builds the controller binary once to run a verb as its own process, as the serving controller does.
merge-check.sh: passed locally (race detector on).
Delivery group: `fix/327-a-verb-reads-on-the-serving-connection` with mesh-catalog, mesh-lab and hq.
build-agent keeps data (ADR 0233): what it holds is backed up before it moves
route-proxy provides route: its consumers are sent again after it
route-proxy keeps data (ADR 0233): what it holds is backed up before it moves
Machines
mesh-controller on novox: passed — healthy 3 times over 3m38s
mesh-controller on the rest running it: sent
build-agent on ace: passed — healthy 3 times over 3m40s
build-agent on the rest running it: sent
route-proxy on ace: passed — healthy 3 times over 3m37s
route-proxy on the rest running it: sent
Transitions
2026-10-08 19:14 (new) → proposed (announced): novox/mesh-controller#161's head announced
2026-10-08 19:24 proposed → checked (checked): the verdict names this commit
2026-10-08 19:24 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-08 19:32 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-08 19:32 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path
2026-10-08 19:47 delivering → delivered (done): its walk is done: every machine of its deploy plan passed, or was left as its policy says
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-controller@5b7e6ff453eb` — **delivered** since 2026-10-08T19:47:27Z
**Delivery plan** — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
- tier 0: mesh-controller
- tier 1: build-agent
- tier 2: route-proxy
- ace: receives build-agent, route-proxy
- g14: receives build-agent
- novox: receives mesh-controller, build-agent, route-proxy
- shanks: receives build-agent
- build-agent keeps data (ADR 0233): what it holds is backed up before it moves
- route-proxy provides route: its consumers are sent again after it
- route-proxy keeps data (ADR 0233): what it holds is backed up before it moves
**Machines**
- mesh-controller on novox: passed — healthy 3 times over 3m38s
- mesh-controller on the rest running it: sent
- build-agent on ace: passed — healthy 3 times over 3m40s
- build-agent on the rest running it: sent
- route-proxy on ace: passed — healthy 3 times over 3m37s
- route-proxy on the rest running it: sent
**Transitions**
- 2026-10-08 19:14 (new) → proposed (announced): novox/mesh-controller#161's head announced
- 2026-10-08 19:24 proposed → checked (checked): the verdict names this commit
- 2026-10-08 19:24 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-08 19:32 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-08 19:32 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path
- 2026-10-08 19:47 delivering → delivered (done): its walk is done: every machine of its deploy plan passed, or was left as its policy says
The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
build-agent keeps data (ADR 0233): what it holds is backed up before it moves
route-proxy provides route: its consumers are sent again after it
route-proxy keeps data (ADR 0233): what it holds is backed up before it moves
Run by the build seat on shanks as build-1791474993685357614 (builds --log build-1791474993685357614).
--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 51 tool(s); WARNING: controller stay(s) up and say(s) not how it is ready — judged by liveness alone, refused from 2026-11-18 (ADR 0240 rule 8)
long-running resources without health: 1
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-08T15:52:40Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-08T15:52:40Z
machines:
- a machine (f35): composes
- holds mesh-dns-resolver (idt): composes
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
- a machine (yvbpsm): composes
a merge would rebuild 3 module(s) in 3 tier(s): build-agent, mesh-controller, route-proxy
--- its merge-check.sh (go toolchain)
ok github.com/novox/mesh-controller/cmd/mesh-builder 1.036s
ok github.com/novox/mesh-controller/cmd/mesh-controller 192.537s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.043s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.057s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.036s
ok github.com/novox/mesh-controller/examples/route-proxy 1.202s
ok github.com/novox/mesh-controller/internal/artifacts 1.077s
ok github.com/novox/mesh-controller/internal/broker 5.740s
ok github.com/novox/mesh-controller/internal/builder 6.778s
ok github.com/novox/mesh-controller/internal/catalogue 4.656s
ok github.com/novox/mesh-controller/internal/conditions 2.217s
ok github.com/novox/mesh-controller/internal/envfile 1.043s
ok github.com/novox/mesh-controller/internal/facts 1.063s
ok github.com/novox/mesh-controller/internal/identity 8.542s
ok github.com/novox/mesh-controller/internal/inventory 87.445s
ok github.com/novox/mesh-controller/internal/lease 17.697s
ok github.com/novox/mesh-controller/internal/licences 8.101s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.047s
ok github.com/novox/mesh-controller/internal/link 47.083s
ok github.com/novox/mesh-controller/internal/lint 2.135s
ok github.com/novox/mesh-controller/internal/outward 1.083s
ok github.com/novox/mesh-controller/internal/overlay 1.063s
ok github.com/novox/mesh-controller/internal/secrets 1.536s
ok github.com/novox/mesh-controller/internal/store 6.260s
ok github.com/novox/mesh-controller/internal/testbus 1.242s
ok github.com/novox/mesh-controller/internal/token 1.014s
**Merge check** at `63e5e3b2`
- `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller, route-proxy)
- `mesh/repo-check`: **PASS** — its merge-check.sh passed
**Delivery plan** — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
- tier 0: mesh-controller
- tier 1: build-agent
- tier 2: route-proxy
- ace: receives build-agent, route-proxy
- g14: receives build-agent
- novox: receives mesh-controller, build-agent, route-proxy
- shanks: receives build-agent
- build-agent keeps data (ADR 0233): what it holds is backed up before it moves
- route-proxy provides route: its consumers are sent again after it
- route-proxy keeps data (ADR 0233): what it holds is backed up before it moves
Run by the build seat on shanks as `build-1791474993685357614` (`builds --log build-1791474993685357614`).
```
--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 51 tool(s); WARNING: controller stay(s) up and say(s) not how it is ready — judged by liveness alone, refused from 2026-11-18 (ADR 0240 rule 8)
long-running resources without health: 1
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-08T15:52:40Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-08T15:52:40Z
machines:
- a machine (f35): composes
- holds mesh-dns-resolver (idt): composes
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
- a machine (yvbpsm): composes
a merge would rebuild 3 module(s) in 3 tier(s): build-agent, mesh-controller, route-proxy
--- its merge-check.sh (go toolchain)
ok github.com/novox/mesh-controller/cmd/mesh-builder 1.036s
ok github.com/novox/mesh-controller/cmd/mesh-controller 192.537s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.043s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.057s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.036s
ok github.com/novox/mesh-controller/examples/route-proxy 1.202s
ok github.com/novox/mesh-controller/internal/artifacts 1.077s
ok github.com/novox/mesh-controller/internal/broker 5.740s
ok github.com/novox/mesh-controller/internal/builder 6.778s
ok github.com/novox/mesh-controller/internal/catalogue 4.656s
ok github.com/novox/mesh-controller/internal/conditions 2.217s
ok github.com/novox/mesh-controller/internal/envfile 1.043s
ok github.com/novox/mesh-controller/internal/facts 1.063s
ok github.com/novox/mesh-controller/internal/identity 8.542s
ok github.com/novox/mesh-controller/internal/inventory 87.445s
ok github.com/novox/mesh-controller/internal/lease 17.697s
ok github.com/novox/mesh-controller/internal/licences 8.101s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.047s
ok github.com/novox/mesh-controller/internal/link 47.083s
ok github.com/novox/mesh-controller/internal/lint 2.135s
ok github.com/novox/mesh-controller/internal/outward 1.083s
ok github.com/novox/mesh-controller/internal/overlay 1.063s
ok github.com/novox/mesh-controller/internal/secrets 1.536s
ok github.com/novox/mesh-controller/internal/store 6.260s
ok github.com/novox/mesh-controller/internal/testbus 1.242s
ok github.com/novox/mesh-controller/internal/token 1.014s
```
build-agent keeps data (ADR 0233): what it holds is backed up before it moves
route-proxy provides route: its consumers are sent again after it
route-proxy keeps data (ADR 0233): what it holds is backed up before it moves
Run by the build seat on novox as build-1791482640703674566 (builds --log build-1791482640703674566).
--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 51 tool(s); WARNING: controller stay(s) up and say(s) not how it is ready — judged by liveness alone, refused from 2026-11-18 (ADR 0240 rule 8)
long-running resources without health: 1
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-08T17:18:48Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-08T17:18:48Z
machines:
- a machine (f35): composes
- holds mesh-dns-resolver (idt): composes
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
- a machine (yvbpsm): composes
a merge would rebuild 3 module(s) in 3 tier(s): build-agent, mesh-controller, route-proxy
--- its merge-check.sh (go toolchain)
ok github.com/novox/mesh-controller/cmd/mesh-builder 1.050s
ok github.com/novox/mesh-controller/cmd/mesh-controller 216.788s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.019s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.022s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.017s
ok github.com/novox/mesh-controller/examples/route-proxy 1.147s
ok github.com/novox/mesh-controller/internal/artifacts 1.062s
ok github.com/novox/mesh-controller/internal/broker 2.836s
ok github.com/novox/mesh-controller/internal/builder 2.621s
ok github.com/novox/mesh-controller/internal/catalogue 5.221s
ok github.com/novox/mesh-controller/internal/conditions 2.232s
ok github.com/novox/mesh-controller/internal/envfile 1.033s
ok github.com/novox/mesh-controller/internal/facts 1.026s
ok github.com/novox/mesh-controller/internal/identity 9.898s
ok github.com/novox/mesh-controller/internal/inventory 97.725s
ok github.com/novox/mesh-controller/internal/lease 17.710s
ok github.com/novox/mesh-controller/internal/licences 4.813s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.014s
ok github.com/novox/mesh-controller/internal/link 50.711s
ok github.com/novox/mesh-controller/internal/lint 2.148s
ok github.com/novox/mesh-controller/internal/outward 1.044s
ok github.com/novox/mesh-controller/internal/overlay 1.027s
ok github.com/novox/mesh-controller/internal/secrets 1.484s
ok github.com/novox/mesh-controller/internal/store 3.508s
ok github.com/novox/mesh-controller/internal/testbus 1.203s
ok github.com/novox/mesh-controller/internal/token 1.021s
**Merge check** at `a1a7cf45`
- `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller, route-proxy)
- `mesh/repo-check`: **PASS** — its merge-check.sh passed
**Delivery plan** — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
- tier 0: mesh-controller
- tier 1: build-agent
- tier 2: route-proxy
- ace: receives build-agent, route-proxy
- g14: receives build-agent
- novox: receives mesh-controller, build-agent, route-proxy
- shanks: receives build-agent
- build-agent keeps data (ADR 0233): what it holds is backed up before it moves
- route-proxy provides route: its consumers are sent again after it
- route-proxy keeps data (ADR 0233): what it holds is backed up before it moves
Run by the build seat on novox as `build-1791482640703674566` (`builds --log build-1791482640703674566`).
```
--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 51 tool(s); WARNING: controller stay(s) up and say(s) not how it is ready — judged by liveness alone, refused from 2026-11-18 (ADR 0240 rule 8)
long-running resources without health: 1
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-08T17:18:48Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-08T17:18:48Z
machines:
- a machine (f35): composes
- holds mesh-dns-resolver (idt): composes
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
- a machine (yvbpsm): composes
a merge would rebuild 3 module(s) in 3 tier(s): build-agent, mesh-controller, route-proxy
--- its merge-check.sh (go toolchain)
ok github.com/novox/mesh-controller/cmd/mesh-builder 1.050s
ok github.com/novox/mesh-controller/cmd/mesh-controller 216.788s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.019s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.022s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.017s
ok github.com/novox/mesh-controller/examples/route-proxy 1.147s
ok github.com/novox/mesh-controller/internal/artifacts 1.062s
ok github.com/novox/mesh-controller/internal/broker 2.836s
ok github.com/novox/mesh-controller/internal/builder 2.621s
ok github.com/novox/mesh-controller/internal/catalogue 5.221s
ok github.com/novox/mesh-controller/internal/conditions 2.232s
ok github.com/novox/mesh-controller/internal/envfile 1.033s
ok github.com/novox/mesh-controller/internal/facts 1.026s
ok github.com/novox/mesh-controller/internal/identity 9.898s
ok github.com/novox/mesh-controller/internal/inventory 97.725s
ok github.com/novox/mesh-controller/internal/lease 17.710s
ok github.com/novox/mesh-controller/internal/licences 4.813s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.014s
ok github.com/novox/mesh-controller/internal/link 50.711s
ok github.com/novox/mesh-controller/internal/lint 2.148s
ok github.com/novox/mesh-controller/internal/outward 1.044s
ok github.com/novox/mesh-controller/internal/overlay 1.027s
ok github.com/novox/mesh-controller/internal/secrets 1.484s
ok github.com/novox/mesh-controller/internal/store 3.508s
ok github.com/novox/mesh-controller/internal/testbus 1.203s
ok github.com/novox/mesh-controller/internal/token 1.021s
```
Each verb ran as a process that dialled the bus, so hundreds of short
connections an hour, all named mesh-controller, hid any client reconnecting
in a loop (hq issue 327). D15 now says a user whose connections keep dropping.
mesh/merge-gate pass: builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step; every machine composes with the change as it…
build-agent keeps data (ADR 0233): what it holds is backed up before it moves
route-proxy provides route: its consumers are sent again after it
route-proxy keeps data (ADR 0233): what it holds is backed up before it moves
Run by the build seat on shanks as build-1791486895781594665 (builds --log build-1791486895781594665).
--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 52 tool(s); WARNING: controller stay(s) up and say(s) not how it is ready — judged by liveness alone, refused from 2026-11-18 (ADR 0240 rule 8)
long-running resources without health: 1
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-08T19:18:42Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-08T19:18:42Z
machines:
- a machine (f35): composes
- holds mesh-dns-resolver (idt): composes
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
- a machine (yvbpsm): composes
a merge would rebuild 3 module(s) in 3 tier(s): build-agent, mesh-controller, route-proxy
--- its merge-check.sh (go toolchain)
ok github.com/novox/mesh-controller/cmd/mesh-builder 1.054s
ok github.com/novox/mesh-controller/cmd/mesh-controller 191.043s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.068s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.039s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.050s
ok github.com/novox/mesh-controller/examples/route-proxy 1.267s
ok github.com/novox/mesh-controller/internal/artifacts 1.099s
ok github.com/novox/mesh-controller/internal/broker 2.854s
ok github.com/novox/mesh-controller/internal/builder 2.246s
ok github.com/novox/mesh-controller/internal/catalogue 5.234s
ok github.com/novox/mesh-controller/internal/conditions 2.398s
ok github.com/novox/mesh-controller/internal/envfile 1.059s
ok github.com/novox/mesh-controller/internal/facts 1.080s
ok github.com/novox/mesh-controller/internal/identity 5.094s
ok github.com/novox/mesh-controller/internal/inventory 84.814s
ok github.com/novox/mesh-controller/internal/lease 17.738s
ok github.com/novox/mesh-controller/internal/licences 4.720s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.069s
ok github.com/novox/mesh-controller/internal/link 53.385s
ok github.com/novox/mesh-controller/internal/lint 2.351s
ok github.com/novox/mesh-controller/internal/outward 1.098s
ok github.com/novox/mesh-controller/internal/overlay 1.084s
ok github.com/novox/mesh-controller/internal/secrets 1.545s
ok github.com/novox/mesh-controller/internal/store 3.660s
ok github.com/novox/mesh-controller/internal/testbus 1.230s
ok github.com/novox/mesh-controller/internal/token 1.017s
**Merge check** at `5b7e6ff4`
- `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller, route-proxy)
- `mesh/repo-check`: **PASS** — its merge-check.sh passed
**Delivery plan** — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
- tier 0: mesh-controller
- tier 1: build-agent
- tier 2: route-proxy
- ace: receives build-agent, route-proxy
- g14: receives build-agent
- novox: receives mesh-controller, build-agent, route-proxy
- shanks: receives build-agent
- build-agent keeps data (ADR 0233): what it holds is backed up before it moves
- route-proxy provides route: its consumers are sent again after it
- route-proxy keeps data (ADR 0233): what it holds is backed up before it moves
Run by the build seat on shanks as `build-1791486895781594665` (`builds --log build-1791486895781594665`).
```
--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 52 tool(s); WARNING: controller stay(s) up and say(s) not how it is ready — judged by liveness alone, refused from 2026-11-18 (ADR 0240 rule 8)
long-running resources without health: 1
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-08T19:18:42Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-08T19:18:42Z
machines:
- a machine (f35): composes
- holds mesh-dns-resolver (idt): composes
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
- a machine (yvbpsm): composes
a merge would rebuild 3 module(s) in 3 tier(s): build-agent, mesh-controller, route-proxy
--- its merge-check.sh (go toolchain)
ok github.com/novox/mesh-controller/cmd/mesh-builder 1.054s
ok github.com/novox/mesh-controller/cmd/mesh-controller 191.043s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.068s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.039s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.050s
ok github.com/novox/mesh-controller/examples/route-proxy 1.267s
ok github.com/novox/mesh-controller/internal/artifacts 1.099s
ok github.com/novox/mesh-controller/internal/broker 2.854s
ok github.com/novox/mesh-controller/internal/builder 2.246s
ok github.com/novox/mesh-controller/internal/catalogue 5.234s
ok github.com/novox/mesh-controller/internal/conditions 2.398s
ok github.com/novox/mesh-controller/internal/envfile 1.059s
ok github.com/novox/mesh-controller/internal/facts 1.080s
ok github.com/novox/mesh-controller/internal/identity 5.094s
ok github.com/novox/mesh-controller/internal/inventory 84.814s
ok github.com/novox/mesh-controller/internal/lease 17.738s
ok github.com/novox/mesh-controller/internal/licences 4.720s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.069s
ok github.com/novox/mesh-controller/internal/link 53.385s
ok github.com/novox/mesh-controller/internal/lint 2.351s
ok github.com/novox/mesh-controller/internal/outward 1.098s
ok github.com/novox/mesh-controller/internal/overlay 1.084s
ok github.com/novox/mesh-controller/internal/secrets 1.545s
ok github.com/novox/mesh-controller/internal/store 3.660s
ok github.com/novox/mesh-controller/internal/testbus 1.230s
ok github.com/novox/mesh-controller/internal/token 1.017s
```
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
hq issue 327: every controller verb ran as a fresh process that dialled the bus, so three
conditionscalls added three connections, and hundreds of short connections an hour, all namedmesh-controller, hid any client reconnecting in a loop. As hq ADR 0265 decides:conditions(list, show, history),hand-actsandqueuerun the same command function writing into the answer (readHere), on the serving keeper and connection. No connection opened. Silences and every acting verb still run as their own process.servingBus,aBus,broker.Borrow) to what the serving controller does for a moment:onTheBus, the queue, a build's log,buildSeatPause(a dial per watchdog tick while a walk waited), readiness, and builds it asks for (link.BuildsOn).mesh-controller serving,mesh-controller serving lease,mesh-controller verb <verb>(runVerb passesMESH_VERB),mesh-controller command <command>; the build agentbuild agent on <host>.broker.Dialputs its default name first so a caller's name wins.nats_closed_connections(mesh-catalog, same group) each run and raisesbus-reconnects(plain words) for a user whose connections were dropped more than 12 times in the last hour.Replay:
cmd/mesh-controller/replay327_test.go(R327 in mesh-lab), proved with the lab's prover: fails on0cf5a3a(3 connections), passes on63e5e3b. It builds the controller binary once to run a verb as its own process, as the serving controller does.merge-check.sh: passed locally (race detector on).
Delivery group:
fix/327-a-verb-reads-on-the-serving-connectionwith mesh-catalog, mesh-lab and hq.Delivery
novox/mesh-controller@5b7e6ff453eb— delivered since 2026-10-08T19:47:27ZDelivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Machines
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.Merge check at
63e5e3b2mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller, route-proxy)mesh/repo-check: PASS — its merge-check.sh passedDelivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Run by the build seat on shanks as
build-1791474993685357614(builds --log build-1791474993685357614).63e5e3b2c4toa1a7cf451aMerge check at
a1a7cf45mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller, route-proxy)mesh/repo-check: PASS — its merge-check.sh passedDelivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Run by the build seat on novox as
build-1791482640703674566(builds --log build-1791482640703674566).a1a7cf451ato5b7e6ff453Merge check at
5b7e6ff4mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller, route-proxy)mesh/repo-check: PASS — its merge-check.sh passedDelivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Run by the build seat on shanks as
build-1791486895781594665(builds --log build-1791486895781594665).