Serve the read verbs on the serving controller's own connection, and name every connection (hq issue 327, ADR 0265) #161

Merged
mesh-admin merged 3 commits from fix/327-a-verb-reads-on-the-serving-connection into main 2026-10-08 19:32:11 +00:00
Contributor

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.

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.
Author
Contributor

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.

<!-- 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`.
Author
Contributor

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
**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 ```
jschoubben force-pushed fix/327-a-verb-reads-on-the-serving-connection from 63e5e3b2c4 to a1a7cf451a 2026-10-08 18:03:32 +00:00 Compare
Author
Contributor

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
**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 ```
jschoubben added 3 commits 2026-10-08 19:14:53 +00:00
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.
Read verbs now run in the serving process, where a panic would end every
call; refused logins are nobody's reconnect loop (review of hq issue 327).
Answer dead-letters on the lent serving connection, and keep one clip helper
mesh/delivery delivered
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…
mesh/repo-check pass: its merge-check.sh passed
5b7e6ff453
Two handles to the same serving connection, and two copies of one helper,
would drift (review of hq issues 327 and 330).
jschoubben force-pushed fix/327-a-verb-reads-on-the-serving-connection from a1a7cf451a to 5b7e6ff453 2026-10-08 19:14:53 +00:00 Compare
Author
Contributor

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
**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 ```
mesh-admin merged commit efcdd5dd7d into main 2026-10-08 19:32:11 +00:00
mesh-admin deleted branch fix/327-a-verb-reads-on-the-serving-connection 2026-10-08 19:32:11 +00:00
This repo is archived. You cannot comment on pull requests.
No Reviewers
2 Participants
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-controller#161