On the control node every agent session runs as the operator's account, which has passwordless sudo: any agent there can become root without a person. hq ADR 0266 (agents run under an account of their own, without sudo) decides an agent account per node; this is the controller's part.
What changes
Migration 0083: node.agent_account, node.agent_account_home (empty = agents run as the operator account). No consolidated schema exists in this repository; migrations are the schema.
Inventory: Node.AgentAccount, AgentAccountHome, AgentHome(); SetAgentAccount refuses root, the node's operator account, a malformed login and a relative home; empty clears.
CLI, at the controller's terminal only: mesh-controller node agent-account <node> reports; node agent-account <node> <account> [home] names; node agent-account <node> --clear clears. Not a verb and not a setting, so no agent can change it; the node verb still runs only node show (tested). node show says whom agents run as and the verdict.
Machine facts: ${machine:agent-account} (the agent account, or the operator account when none is named), ${machine:agent-home}, ${machine:agent-root} (never only for an account of the agents' own, else empty). A user resource's root field is substituted too.
Runtime env: MESH_AGENT_ACCOUNT, MESH_AGENT_HOME beside MESH_OPERATOR_*; reserved, a bundle may not set them.
Wire: link.ResourceHealth.Root (root), link.RootContract = 3, link.ReasonRoot. A user's root is sent only to an engine whose newest statement is contract 3 or later, and only when it says never; an older engine parses strictly and is not sent it.
Self-check probe DA, kind agent-can-become-root, urgent, with plain words: every machine that names an agent account has it judged, on its engine's newest statement, unable to become root without a person. Anything not judged (no statement, an older engine, no verdict on that account, a verdict of unknown) fails. The judgement is one function, agentConfined, for node show, the probe and later ADR 0259's router.
Facts snapshot carries the agent account as a pseudonym, and the merge gate restores it.
Depends on mesh-host
The node-engine judges root: never on branch feat/an-agent-account-never-becomes-root (mesh-host). This branch pins mesh-host at that branch's commit 8390fab5cb35 and vendors it, so D1's validator knows the field. After the mesh-host pull request merges, the pin must move to mesh-host's main commit (go mod edit -replace … and go mod vendor) before this merges.
Verified here
gofmt, go vet ./..., and the whole suite go test -count=1 ./... against a local throwaway PostgreSQL 18: all pass (not under the race detector locally). New tests: inventory round trip and refusals, the facts' fallback and never only when distinct, the runtime env, root stripped for an older engine and when empty, the judgement over every case, the probe raising and clearing, plain words, the snapshot pseudonym, and the node verb only showing.
On the control node every agent session runs as the operator's account, which has passwordless sudo: any agent there can become root without a person. hq ADR 0266 (agents run under an account of their own, without sudo) decides an agent account per node; this is the controller's part.
## What changes
- **Migration 0083**: `node.agent_account`, `node.agent_account_home` (empty = agents run as the operator account). No consolidated schema exists in this repository; migrations are the schema.
- **Inventory**: `Node.AgentAccount`, `AgentAccountHome`, `AgentHome()`; `SetAgentAccount` refuses root, the node's operator account, a malformed login and a relative home; empty clears.
- **CLI, at the controller's terminal only**: `mesh-controller node agent-account <node>` reports; `node agent-account <node> <account> [home]` names; `node agent-account <node> --clear` clears. Not a verb and not a setting, so no agent can change it; the `node` verb still runs only `node show` (tested). `node show` says whom agents run as and the verdict.
- **Machine facts**: `${machine:agent-account}` (the agent account, or the operator account when none is named), `${machine:agent-home}`, `${machine:agent-root}` (`never` only for an account of the agents' own, else empty). A user resource's `root` field is substituted too.
- **Runtime env**: `MESH_AGENT_ACCOUNT`, `MESH_AGENT_HOME` beside `MESH_OPERATOR_*`; reserved, a bundle may not set them.
- **Wire**: `link.ResourceHealth.Root` (`root`), `link.RootContract = 3`, `link.ReasonRoot`. A user's `root` is sent only to an engine whose newest statement is contract 3 or later, and only when it says `never`; an older engine parses strictly and is not sent it.
- **Self-check probe `DA`**, kind `agent-can-become-root`, urgent, with plain words: every machine that names an agent account has it judged, on its engine's newest statement, unable to become root without a person. Anything not judged (no statement, an older engine, no verdict on that account, a verdict of unknown) fails. The judgement is one function, `agentConfined`, for `node show`, the probe and later ADR 0259's router.
- **Facts snapshot** carries the agent account as a pseudonym, and the merge gate restores it.
## Depends on mesh-host
The node-engine judges `root: never` on branch `feat/an-agent-account-never-becomes-root` (mesh-host). This branch pins mesh-host at that branch's commit `8390fab5cb35` and vendors it, so D1's validator knows the field. **After the mesh-host pull request merges, the pin must move to mesh-host's main commit (`go mod edit -replace …` and `go mod vendor`) before this merges.**
## Verified here
gofmt, `go vet ./...`, and the whole suite `go test -count=1 ./...` against a local throwaway PostgreSQL 18: all pass (not under the race detector locally). New tests: inventory round trip and refusals, the facts' fallback and `never` only when distinct, the runtime env, `root` stripped for an older engine and when empty, the judgement over every case, the probe raising and clearing, plain words, the snapshot pseudonym, and the `node` verb only showing.
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
Transitions
2026-10-09 10:37 (new) → proposed (announced): novox/mesh-controller#164's head announced
2026-10-09 10:43 proposed → checked (checked): the verdict names this commit
2026-10-09 10:43 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-09 10:56 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-09 10:56 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-09 10:56 delivering → superseded (superseded): a newer delivery to the same trunk took over its walk
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-controller@e168b60159f7` — **superseded** since 2026-10-09T10:56:47Z
**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
**Transitions**
- 2026-10-09 10:37 (new) → proposed (announced): novox/mesh-controller#164's head announced
- 2026-10-09 10:43 proposed → checked (checked): the verdict names this commit
- 2026-10-09 10:43 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-09 10:56 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-09 10:56 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-09 10:56 delivering → superseded (superseded): a newer delivery to the same trunk took over its walk
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-1791477470452846257 (builds --log build-1791477470452846257).
--- 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-08T16:26: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-08T16:26: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.032s
ok github.com/novox/mesh-controller/cmd/mesh-controller 186.522s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.049s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.049s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.041s
ok github.com/novox/mesh-controller/examples/route-proxy 1.237s
ok github.com/novox/mesh-controller/internal/artifacts 1.079s
ok github.com/novox/mesh-controller/internal/broker 2.691s
ok github.com/novox/mesh-controller/internal/builder 1.953s
ok github.com/novox/mesh-controller/internal/catalogue 4.806s
ok github.com/novox/mesh-controller/internal/conditions 2.233s
ok github.com/novox/mesh-controller/internal/envfile 1.055s
ok github.com/novox/mesh-controller/internal/facts 1.054s
ok github.com/novox/mesh-controller/internal/identity 4.664s
ok github.com/novox/mesh-controller/internal/inventory 84.765s
ok github.com/novox/mesh-controller/internal/lease 17.703s
ok github.com/novox/mesh-controller/internal/licences 4.243s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.046s
ok github.com/novox/mesh-controller/internal/link 46.525s
ok github.com/novox/mesh-controller/internal/lint 2.147s
ok github.com/novox/mesh-controller/internal/outward 1.083s
ok github.com/novox/mesh-controller/internal/overlay 1.069s
ok github.com/novox/mesh-controller/internal/secrets 1.565s
ok github.com/novox/mesh-controller/internal/store 3.444s
ok github.com/novox/mesh-controller/internal/testbus 1.233s
ok github.com/novox/mesh-controller/internal/token 1.014s
**Merge check** at `2d7d4d44`
- `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-1791477470452846257` (`builds --log build-1791477470452846257`).
```
--- 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-08T16:26: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-08T16:26: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.032s
ok github.com/novox/mesh-controller/cmd/mesh-controller 186.522s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.049s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.049s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.041s
ok github.com/novox/mesh-controller/examples/route-proxy 1.237s
ok github.com/novox/mesh-controller/internal/artifacts 1.079s
ok github.com/novox/mesh-controller/internal/broker 2.691s
ok github.com/novox/mesh-controller/internal/builder 1.953s
ok github.com/novox/mesh-controller/internal/catalogue 4.806s
ok github.com/novox/mesh-controller/internal/conditions 2.233s
ok github.com/novox/mesh-controller/internal/envfile 1.055s
ok github.com/novox/mesh-controller/internal/facts 1.054s
ok github.com/novox/mesh-controller/internal/identity 4.664s
ok github.com/novox/mesh-controller/internal/inventory 84.765s
ok github.com/novox/mesh-controller/internal/lease 17.703s
ok github.com/novox/mesh-controller/internal/licences 4.243s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.046s
ok github.com/novox/mesh-controller/internal/link 46.525s
ok github.com/novox/mesh-controller/internal/lint 2.147s
ok github.com/novox/mesh-controller/internal/outward 1.083s
ok github.com/novox/mesh-controller/internal/overlay 1.069s
ok github.com/novox/mesh-controller/internal/secrets 1.565s
ok github.com/novox/mesh-controller/internal/store 3.444s
ok github.com/novox/mesh-controller/internal/testbus 1.233s
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 g14 as build-1791484791914080976 (builds --log build-1791484791914080976).
--- 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-08T18:28: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-08T18:28: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.033s
ok github.com/novox/mesh-controller/cmd/mesh-controller 181.348s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.011s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.018s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.013s
ok github.com/novox/mesh-controller/examples/route-proxy 3.113s
ok github.com/novox/mesh-controller/internal/artifacts 1.046s
--- FAIL: TestTheInstallersFirstUserListIsWhatTheControllerWouldCompose (0.62s)
genesis_template_test.go:46: the installer's user list lets the controller publish [$JS.ACK.DEAD_LETTER_NOTICES.controller.> mesh.again.> mesh.events.dead.>], which it does not derive
FAIL
FAIL github.com/novox/mesh-controller/internal/broker 1.444s
ok github.com/novox/mesh-controller/internal/builder 1.834s
ok github.com/novox/mesh-controller/internal/catalogue 3.931s
ok github.com/novox/mesh-controller/internal/conditions 2.118s
ok github.com/novox/mesh-controller/internal/envfile 1.025s
ok github.com/novox/mesh-controller/internal/facts 1.025s
ok github.com/novox/mesh-controller/internal/identity 4.084s
ok github.com/novox/mesh-controller/internal/inventory 73.131s
ok github.com/novox/mesh-controller/internal/lease 17.690s
ok github.com/novox/mesh-controller/internal/licences 3.702s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.011s
ok github.com/novox/mesh-controller/internal/link 43.782s
ok github.com/novox/mesh-controller/internal/lint 1.870s
ok github.com/novox/mesh-controller/internal/outward 1.038s
ok github.com/novox/mesh-controller/internal/overlay 1.025s
ok github.com/novox/mesh-controller/internal/secrets 1.409s
ok github.com/novox/mesh-controller/internal/store 3.166s
ok github.com/novox/mesh-controller/internal/testbus 1.170s
ok github.com/novox/mesh-controller/internal/token 1.015s
FAIL
**Merge check** at `d7b911fa`
- `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`: **FAIL** — its merge-check.sh failed: --- FAIL: TestTheInstallersFirstUserListIsWhatTheControllerWouldCompose (0.62s)
**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 g14 as `build-1791484791914080976` (`builds --log build-1791484791914080976`).
```
--- 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-08T18:28: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-08T18:28: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.033s
ok github.com/novox/mesh-controller/cmd/mesh-controller 181.348s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.011s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.018s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.013s
ok github.com/novox/mesh-controller/examples/route-proxy 3.113s
ok github.com/novox/mesh-controller/internal/artifacts 1.046s
--- FAIL: TestTheInstallersFirstUserListIsWhatTheControllerWouldCompose (0.62s)
genesis_template_test.go:46: the installer's user list lets the controller publish [$JS.ACK.DEAD_LETTER_NOTICES.controller.> mesh.again.> mesh.events.dead.>], which it does not derive
FAIL
FAIL github.com/novox/mesh-controller/internal/broker 1.444s
ok github.com/novox/mesh-controller/internal/builder 1.834s
ok github.com/novox/mesh-controller/internal/catalogue 3.931s
ok github.com/novox/mesh-controller/internal/conditions 2.118s
ok github.com/novox/mesh-controller/internal/envfile 1.025s
ok github.com/novox/mesh-controller/internal/facts 1.025s
ok github.com/novox/mesh-controller/internal/identity 4.084s
ok github.com/novox/mesh-controller/internal/inventory 73.131s
ok github.com/novox/mesh-controller/internal/lease 17.690s
ok github.com/novox/mesh-controller/internal/licences 3.702s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.011s
ok github.com/novox/mesh-controller/internal/link 43.782s
ok github.com/novox/mesh-controller/internal/lint 1.870s
ok github.com/novox/mesh-controller/internal/outward 1.038s
ok github.com/novox/mesh-controller/internal/overlay 1.025s
ok github.com/novox/mesh-controller/internal/secrets 1.409s
ok github.com/novox/mesh-controller/internal/store 3.166s
ok github.com/novox/mesh-controller/internal/testbus 1.170s
ok github.com/novox/mesh-controller/internal/token 1.015s
FAIL
```
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-1791485616650385069 (builds --log build-1791485616650385069).
--- 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-08T18:48: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-08T18:48: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.035s
ok github.com/novox/mesh-controller/cmd/mesh-controller 186.176s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.042s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.054s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.046s
ok github.com/novox/mesh-controller/examples/route-proxy 1.188s
ok github.com/novox/mesh-controller/internal/artifacts 1.088s
--- FAIL: TestTheInstallersFirstUserListIsWhatTheControllerWouldCompose (0.74s)
genesis_template_test.go:46: the installer's user list lets the controller publish [$JS.ACK.DEAD_LETTER_NOTICES.controller.> mesh.again.> mesh.events.dead.>], which it does not derive
FAIL
FAIL github.com/novox/mesh-controller/internal/broker 1.622s
ok github.com/novox/mesh-controller/internal/builder 1.923s
ok github.com/novox/mesh-controller/internal/catalogue 4.796s
ok github.com/novox/mesh-controller/internal/conditions 2.221s
ok github.com/novox/mesh-controller/internal/envfile 1.056s
ok github.com/novox/mesh-controller/internal/facts 1.064s
ok github.com/novox/mesh-controller/internal/identity 4.713s
ok github.com/novox/mesh-controller/internal/inventory 85.065s
ok github.com/novox/mesh-controller/internal/lease 17.696s
ok github.com/novox/mesh-controller/internal/licences 4.292s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.050s
ok github.com/novox/mesh-controller/internal/link 46.421s
ok github.com/novox/mesh-controller/internal/lint 2.113s
ok github.com/novox/mesh-controller/internal/outward 1.084s
ok github.com/novox/mesh-controller/internal/overlay 1.075s
ok github.com/novox/mesh-controller/internal/secrets 1.550s
ok github.com/novox/mesh-controller/internal/store 3.500s
ok github.com/novox/mesh-controller/internal/testbus 1.251s
ok github.com/novox/mesh-controller/internal/token 1.014s
FAIL
**Merge check** at `0df02f20`
- `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`: **FAIL** — its merge-check.sh failed: --- FAIL: TestTheInstallersFirstUserListIsWhatTheControllerWouldCompose (0.74s)
**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-1791485616650385069` (`builds --log build-1791485616650385069`).
```
--- 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-08T18:48: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-08T18:48: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.035s
ok github.com/novox/mesh-controller/cmd/mesh-controller 186.176s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.042s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.054s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.046s
ok github.com/novox/mesh-controller/examples/route-proxy 1.188s
ok github.com/novox/mesh-controller/internal/artifacts 1.088s
--- FAIL: TestTheInstallersFirstUserListIsWhatTheControllerWouldCompose (0.74s)
genesis_template_test.go:46: the installer's user list lets the controller publish [$JS.ACK.DEAD_LETTER_NOTICES.controller.> mesh.again.> mesh.events.dead.>], which it does not derive
FAIL
FAIL github.com/novox/mesh-controller/internal/broker 1.622s
ok github.com/novox/mesh-controller/internal/builder 1.923s
ok github.com/novox/mesh-controller/internal/catalogue 4.796s
ok github.com/novox/mesh-controller/internal/conditions 2.221s
ok github.com/novox/mesh-controller/internal/envfile 1.056s
ok github.com/novox/mesh-controller/internal/facts 1.064s
ok github.com/novox/mesh-controller/internal/identity 4.713s
ok github.com/novox/mesh-controller/internal/inventory 85.065s
ok github.com/novox/mesh-controller/internal/lease 17.696s
ok github.com/novox/mesh-controller/internal/licences 4.292s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.050s
ok github.com/novox/mesh-controller/internal/link 46.421s
ok github.com/novox/mesh-controller/internal/lint 2.113s
ok github.com/novox/mesh-controller/internal/outward 1.084s
ok github.com/novox/mesh-controller/internal/overlay 1.075s
ok github.com/novox/mesh-controller/internal/secrets 1.550s
ok github.com/novox/mesh-controller/internal/store 3.500s
ok github.com/novox/mesh-controller/internal/testbus 1.251s
ok github.com/novox/mesh-controller/internal/token 1.014s
FAIL
```
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 ace as build-1791486525309422142 (builds --log build-1791486525309422142).
--- 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 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-08T19:03:27Z 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:03:27Z
modules the change moves:
- mesh-controller (changed)
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 165.242s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.014s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.017s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.013s
ok github.com/novox/mesh-controller/examples/route-proxy 1.114s
ok github.com/novox/mesh-controller/internal/artifacts 1.037s
ok github.com/novox/mesh-controller/internal/broker 2.505s
ok github.com/novox/mesh-controller/internal/builder 1.941s
ok github.com/novox/mesh-controller/internal/catalogue 4.094s
ok github.com/novox/mesh-controller/internal/conditions 2.192s
ok github.com/novox/mesh-controller/internal/envfile 1.058s
ok github.com/novox/mesh-controller/internal/facts 1.060s
ok github.com/novox/mesh-controller/internal/identity 4.176s
ok github.com/novox/mesh-controller/internal/inventory 74.161s
ok github.com/novox/mesh-controller/internal/lease 17.685s
ok github.com/novox/mesh-controller/internal/licences 3.819s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.052s
ok github.com/novox/mesh-controller/internal/link 51.543s
ok github.com/novox/mesh-controller/internal/lint 1.989s
ok github.com/novox/mesh-controller/internal/outward 1.105s
ok github.com/novox/mesh-controller/internal/overlay 1.068s
ok github.com/novox/mesh-controller/internal/secrets 1.453s
ok github.com/novox/mesh-controller/internal/store 3.299s
ok github.com/novox/mesh-controller/internal/testbus 1.219s
ok github.com/novox/mesh-controller/internal/token 1.016s
**Merge check** at `874a2670`
- `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 ace as `build-1791486525309422142` (`builds --log build-1791486525309422142`).
```
--- 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 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-08T19:03:27Z 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:03:27Z
modules the change moves:
- mesh-controller (changed)
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 165.242s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.014s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.017s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.013s
ok github.com/novox/mesh-controller/examples/route-proxy 1.114s
ok github.com/novox/mesh-controller/internal/artifacts 1.037s
ok github.com/novox/mesh-controller/internal/broker 2.505s
ok github.com/novox/mesh-controller/internal/builder 1.941s
ok github.com/novox/mesh-controller/internal/catalogue 4.094s
ok github.com/novox/mesh-controller/internal/conditions 2.192s
ok github.com/novox/mesh-controller/internal/envfile 1.058s
ok github.com/novox/mesh-controller/internal/facts 1.060s
ok github.com/novox/mesh-controller/internal/identity 4.176s
ok github.com/novox/mesh-controller/internal/inventory 74.161s
ok github.com/novox/mesh-controller/internal/lease 17.685s
ok github.com/novox/mesh-controller/internal/licences 3.819s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.052s
ok github.com/novox/mesh-controller/internal/link 51.543s
ok github.com/novox/mesh-controller/internal/lint 1.989s
ok github.com/novox/mesh-controller/internal/outward 1.105s
ok github.com/novox/mesh-controller/internal/overlay 1.068s
ok github.com/novox/mesh-controller/internal/secrets 1.453s
ok github.com/novox/mesh-controller/internal/store 3.299s
ok github.com/novox/mesh-controller/internal/testbus 1.219s
ok github.com/novox/mesh-controller/internal/token 1.016s
```
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-1791487322812336862 (builds --log build-1791487322812336862).
--- 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.048s
ok github.com/novox/mesh-controller/cmd/mesh-controller 210.263s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.015s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.027s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.017s
ok github.com/novox/mesh-controller/examples/route-proxy 1.126s
ok github.com/novox/mesh-controller/internal/artifacts 1.055s
ok github.com/novox/mesh-controller/internal/broker 2.791s
ok github.com/novox/mesh-controller/internal/builder 2.206s
ok github.com/novox/mesh-controller/internal/catalogue 5.357s
ok github.com/novox/mesh-controller/internal/conditions 2.214s
ok github.com/novox/mesh-controller/internal/envfile 1.031s
ok github.com/novox/mesh-controller/internal/facts 1.031s
ok github.com/novox/mesh-controller/internal/identity 5.138s
ok github.com/novox/mesh-controller/internal/inventory 93.983s
ok github.com/novox/mesh-controller/internal/lease 17.689s
ok github.com/novox/mesh-controller/internal/licences 4.648s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.015s
ok github.com/novox/mesh-controller/internal/link 55.165s
ok github.com/novox/mesh-controller/internal/lint 2.209s
ok github.com/novox/mesh-controller/internal/outward 1.040s
ok github.com/novox/mesh-controller/internal/overlay 1.030s
ok github.com/novox/mesh-controller/internal/secrets 1.499s
ok github.com/novox/mesh-controller/internal/store 3.489s
ok github.com/novox/mesh-controller/internal/testbus 1.199s
ok github.com/novox/mesh-controller/internal/token 1.019s
**Merge check** at `10bbc591`
- `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-1791487322812336862` (`builds --log build-1791487322812336862`).
```
--- 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.048s
ok github.com/novox/mesh-controller/cmd/mesh-controller 210.263s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.015s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.027s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.017s
ok github.com/novox/mesh-controller/examples/route-proxy 1.126s
ok github.com/novox/mesh-controller/internal/artifacts 1.055s
ok github.com/novox/mesh-controller/internal/broker 2.791s
ok github.com/novox/mesh-controller/internal/builder 2.206s
ok github.com/novox/mesh-controller/internal/catalogue 5.357s
ok github.com/novox/mesh-controller/internal/conditions 2.214s
ok github.com/novox/mesh-controller/internal/envfile 1.031s
ok github.com/novox/mesh-controller/internal/facts 1.031s
ok github.com/novox/mesh-controller/internal/identity 5.138s
ok github.com/novox/mesh-controller/internal/inventory 93.983s
ok github.com/novox/mesh-controller/internal/lease 17.689s
ok github.com/novox/mesh-controller/internal/licences 4.648s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.015s
ok github.com/novox/mesh-controller/internal/link 55.165s
ok github.com/novox/mesh-controller/internal/lint 2.209s
ok github.com/novox/mesh-controller/internal/outward 1.040s
ok github.com/novox/mesh-controller/internal/overlay 1.030s
ok github.com/novox/mesh-controller/internal/secrets 1.499s
ok github.com/novox/mesh-controller/internal/store 3.489s
ok github.com/novox/mesh-controller/internal/testbus 1.199s
ok github.com/novox/mesh-controller/internal/token 1.019s
```
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 ace as build-1791487935528407222 (builds --log build-1791487935528407222).
--- 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:28: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:28: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.032s
ok github.com/novox/mesh-controller/cmd/mesh-controller 162.784s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.014s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.019s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.014s
ok github.com/novox/mesh-controller/examples/route-proxy 1.126s
ok github.com/novox/mesh-controller/internal/artifacts 1.037s
ok github.com/novox/mesh-controller/internal/broker 2.463s
ok github.com/novox/mesh-controller/internal/builder 1.792s
ok github.com/novox/mesh-controller/internal/catalogue 4.160s
ok github.com/novox/mesh-controller/internal/conditions 2.195s
ok github.com/novox/mesh-controller/internal/envfile 1.068s
ok github.com/novox/mesh-controller/internal/facts 1.070s
ok github.com/novox/mesh-controller/internal/identity 4.114s
ok github.com/novox/mesh-controller/internal/inventory 71.838s
ok github.com/novox/mesh-controller/internal/lease 17.696s
ok github.com/novox/mesh-controller/internal/licences 3.740s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.064s
ok github.com/novox/mesh-controller/internal/link 50.849s
ok github.com/novox/mesh-controller/internal/lint 1.952s
ok github.com/novox/mesh-controller/internal/outward 1.091s
ok github.com/novox/mesh-controller/internal/overlay 1.079s
ok github.com/novox/mesh-controller/internal/secrets 1.445s
ok github.com/novox/mesh-controller/internal/store 3.296s
ok github.com/novox/mesh-controller/internal/testbus 1.235s
ok github.com/novox/mesh-controller/internal/token 1.016s
**Merge check** at `10d8a9be`
- `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 ace as `build-1791487935528407222` (`builds --log build-1791487935528407222`).
```
--- 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:28: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:28: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.032s
ok github.com/novox/mesh-controller/cmd/mesh-controller 162.784s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.014s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.019s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.014s
ok github.com/novox/mesh-controller/examples/route-proxy 1.126s
ok github.com/novox/mesh-controller/internal/artifacts 1.037s
ok github.com/novox/mesh-controller/internal/broker 2.463s
ok github.com/novox/mesh-controller/internal/builder 1.792s
ok github.com/novox/mesh-controller/internal/catalogue 4.160s
ok github.com/novox/mesh-controller/internal/conditions 2.195s
ok github.com/novox/mesh-controller/internal/envfile 1.068s
ok github.com/novox/mesh-controller/internal/facts 1.070s
ok github.com/novox/mesh-controller/internal/identity 4.114s
ok github.com/novox/mesh-controller/internal/inventory 71.838s
ok github.com/novox/mesh-controller/internal/lease 17.696s
ok github.com/novox/mesh-controller/internal/licences 3.740s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.064s
ok github.com/novox/mesh-controller/internal/link 50.849s
ok github.com/novox/mesh-controller/internal/lint 1.952s
ok github.com/novox/mesh-controller/internal/outward 1.091s
ok github.com/novox/mesh-controller/internal/overlay 1.079s
ok github.com/novox/mesh-controller/internal/secrets 1.445s
ok github.com/novox/mesh-controller/internal/store 3.296s
ok github.com/novox/mesh-controller/internal/testbus 1.235s
ok github.com/novox/mesh-controller/internal/token 1.016s
```
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 ace as build-1791489299966716399 (builds --log build-1791489299966716399).
--- 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:50:18Z 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:50:18Z
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.034s
ok github.com/novox/mesh-controller/cmd/mesh-controller 169.936s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.012s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.016s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.012s
ok github.com/novox/mesh-controller/examples/route-proxy 1.166s
ok github.com/novox/mesh-controller/internal/artifacts 1.092s
ok github.com/novox/mesh-controller/internal/broker 2.533s
ok github.com/novox/mesh-controller/internal/builder 1.842s
ok github.com/novox/mesh-controller/internal/catalogue 4.147s
ok github.com/novox/mesh-controller/internal/conditions 2.194s
ok github.com/novox/mesh-controller/internal/envfile 1.067s
ok github.com/novox/mesh-controller/internal/facts 1.068s
ok github.com/novox/mesh-controller/internal/identity 4.077s
ok github.com/novox/mesh-controller/internal/inventory 71.974s
ok github.com/novox/mesh-controller/internal/lease 17.708s
ok github.com/novox/mesh-controller/internal/licences 3.716s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.067s
ok github.com/novox/mesh-controller/internal/link 50.948s
ok github.com/novox/mesh-controller/internal/lint 2.012s
ok github.com/novox/mesh-controller/internal/outward 1.136s
ok github.com/novox/mesh-controller/internal/overlay 1.117s
ok github.com/novox/mesh-controller/internal/secrets 1.504s
ok github.com/novox/mesh-controller/internal/store 3.320s
ok github.com/novox/mesh-controller/internal/testbus 1.248s
ok github.com/novox/mesh-controller/internal/token 1.015s
**Merge check** at `1d5a523a`
- `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 ace as `build-1791489299966716399` (`builds --log build-1791489299966716399`).
```
--- 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:50:18Z 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:50:18Z
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.034s
ok github.com/novox/mesh-controller/cmd/mesh-controller 169.936s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.012s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.016s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.012s
ok github.com/novox/mesh-controller/examples/route-proxy 1.166s
ok github.com/novox/mesh-controller/internal/artifacts 1.092s
ok github.com/novox/mesh-controller/internal/broker 2.533s
ok github.com/novox/mesh-controller/internal/builder 1.842s
ok github.com/novox/mesh-controller/internal/catalogue 4.147s
ok github.com/novox/mesh-controller/internal/conditions 2.194s
ok github.com/novox/mesh-controller/internal/envfile 1.067s
ok github.com/novox/mesh-controller/internal/facts 1.068s
ok github.com/novox/mesh-controller/internal/identity 4.077s
ok github.com/novox/mesh-controller/internal/inventory 71.974s
ok github.com/novox/mesh-controller/internal/lease 17.708s
ok github.com/novox/mesh-controller/internal/licences 3.716s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.067s
ok github.com/novox/mesh-controller/internal/link 50.948s
ok github.com/novox/mesh-controller/internal/lint 2.012s
ok github.com/novox/mesh-controller/internal/outward 1.136s
ok github.com/novox/mesh-controller/internal/overlay 1.117s
ok github.com/novox/mesh-controller/internal/secrets 1.504s
ok github.com/novox/mesh-controller/internal/store 3.320s
ok github.com/novox/mesh-controller/internal/testbus 1.248s
ok github.com/novox/mesh-controller/internal/token 1.015s
```
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 g14 as build-1791489360900150520 (builds --log build-1791489360900150520).
--- 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:50:18Z 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:50:18Z
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.038s
ok github.com/novox/mesh-controller/cmd/mesh-controller 194.061s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.016s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.027s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.013s
ok github.com/novox/mesh-controller/examples/route-proxy 1.205s
ok github.com/novox/mesh-controller/internal/artifacts 1.048s
ok github.com/novox/mesh-controller/internal/broker 3.117s
ok github.com/novox/mesh-controller/internal/builder 2.184s
ok github.com/novox/mesh-controller/internal/catalogue 5.750s
ok github.com/novox/mesh-controller/internal/conditions 2.209s
ok github.com/novox/mesh-controller/internal/envfile 1.035s
ok github.com/novox/mesh-controller/internal/facts 1.042s
ok github.com/novox/mesh-controller/internal/identity 5.718s
ok github.com/novox/mesh-controller/internal/inventory 76.462s
ok github.com/novox/mesh-controller/internal/lease 17.738s
ok github.com/novox/mesh-controller/internal/licences 5.257s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.030s
ok github.com/novox/mesh-controller/internal/link 51.552s
ok github.com/novox/mesh-controller/internal/lint 2.817s
ok github.com/novox/mesh-controller/internal/outward 1.081s
ok github.com/novox/mesh-controller/internal/overlay 1.063s
ok github.com/novox/mesh-controller/internal/secrets 1.822s
ok github.com/novox/mesh-controller/internal/store 3.959s
ok github.com/novox/mesh-controller/internal/testbus 1.205s
ok github.com/novox/mesh-controller/internal/token 1.036s
**Merge check** at `9b00d2dd`
- `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 g14 as `build-1791489360900150520` (`builds --log build-1791489360900150520`).
```
--- 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:50:18Z 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:50:18Z
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.038s
ok github.com/novox/mesh-controller/cmd/mesh-controller 194.061s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.016s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.027s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.013s
ok github.com/novox/mesh-controller/examples/route-proxy 1.205s
ok github.com/novox/mesh-controller/internal/artifacts 1.048s
ok github.com/novox/mesh-controller/internal/broker 3.117s
ok github.com/novox/mesh-controller/internal/builder 2.184s
ok github.com/novox/mesh-controller/internal/catalogue 5.750s
ok github.com/novox/mesh-controller/internal/conditions 2.209s
ok github.com/novox/mesh-controller/internal/envfile 1.035s
ok github.com/novox/mesh-controller/internal/facts 1.042s
ok github.com/novox/mesh-controller/internal/identity 5.718s
ok github.com/novox/mesh-controller/internal/inventory 76.462s
ok github.com/novox/mesh-controller/internal/lease 17.738s
ok github.com/novox/mesh-controller/internal/licences 5.257s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.030s
ok github.com/novox/mesh-controller/internal/link 51.552s
ok github.com/novox/mesh-controller/internal/lint 2.817s
ok github.com/novox/mesh-controller/internal/outward 1.081s
ok github.com/novox/mesh-controller/internal/overlay 1.063s
ok github.com/novox/mesh-controller/internal/secrets 1.822s
ok github.com/novox/mesh-controller/internal/store 3.959s
ok github.com/novox/mesh-controller/internal/testbus 1.205s
ok github.com/novox/mesh-controller/internal/token 1.036s
```
On the control node every agent ran as the operator's account, which has
passwordless sudo, so an agent could become root without a person (hq ADR
0266). A node now names an agent account at the controller's terminal only;
the agent's module declares it never to become root, the node-engine judges
that, and the self-check (DA) raises agent-can-become-root while it does not
hold, so ADR 0259's router can rest on it.
The generic command verb ran node account and node agent-account, so an agent
could name itself the operator account and have the next send grant it root
(hq ADR 0266 review). Refuse every node subcommand but list and show through
any verb; refuse the operator account as the agent account in both
directions and well-known service accounts as an agent account; and count a
verdict heard more than 15 minutes ago as not judged, so stopping the
node-engine cannot freeze a healthy one. Re-pin mesh-host to its review head.
Review found a chain through the command verb: set the operator's key to one
the caller holds, rotate secrets so they are sealed to it too, read the sealed
copies, open them. Whoever may call a verb includes agents (hq ADR 0266), so
command now runs an allow list of reading forms, and operator, identity,
token, broker, api, licence and every secret command but rotate are refused
through any verb.
A flag before the subcommand (plans --json go <id>) still acts, so the
generic command verb judges every word of a plans line, retry included
(hq ADR 0266). The rest of this change, places and accesses at the
terminal and one line per setting, is issue 339's on main (#168, #170,
#172), which now does it for every process a verb runs; this branch's
--through-verb flag and its copy of those rules go.
The engine's pull request now keeps main's placement guard (issue 339) and adds
only the agent-home rule; the pin follows it so the two are judged together
(hq ADR 0266). Move it to the engine's merged commit before this merges.
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…
node agent-account <node> <account> [home] stored a home that nothing used: the
account was created at /home/<account> while its files went to the named home
(hq ADR 0266). The engine reads a user's home only when it creates the account,
so an existing one is never moved.
Dropped, because main does it better: places and accesses at the terminal, and the newline refusal in settings. Issue 339 and 340 cover these on main (#168, #170, #172) for every process a verb runs. This branch's --through-verb flag is gone.
Kept: a plans line that acts is refused wherever its subcommand stands, retry included (plans --json go p is refused).
Combined: main's refusal of settings set|clear through command stays first, and is now a terminal-held refusal. The read-only allow list follows it.
New: a user resource's home gets the machine facts too. Before this, node agent-account <node> <account> <home> stored a home that nothing used.
Pin: mesh-host is pinned at #61's rebased head b28d7bb, and vendored, with only that pin's two lines added to go.sum. Before this merges, move the pin to mesh-host's merged commit.
sh merge-check.sh passed on the rebased head: race detector, the whole suite, against a local PostgreSQL 18.
**Rebased onto main on 2026-10-09 (head 926dbd7).**
- **Dropped, because main does it better:** places and accesses at the terminal, and the newline refusal in settings. Issue 339 and 340 cover these on main (#168, #170, #172) for every process a verb runs. This branch's `--through-verb` flag is gone.
- **Kept:** a `plans` line that acts is refused wherever its subcommand stands, `retry` included (`plans --json go p` is refused).
- **Combined:** main's refusal of `settings set|clear` through `command` stays first, and is now a terminal-held refusal. The read-only allow list follows it.
- **New:** a user resource's `home` gets the machine facts too. Before this, `node agent-account <node> <account> <home>` stored a home that nothing used.
- **Pin:** mesh-host is pinned at #61's rebased head b28d7bb, and vendored, with only that pin's two lines added to go.sum. Before this merges, move the pin to mesh-host's merged commit.
- `sh merge-check.sh` passed on the rebased head: race detector, the whole suite, against a local PostgreSQL 18.
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-1791536859913357524 (builds --log build-1791536859913357524).
--- 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
files asking for a setting without saying whether it is trusted: 0
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-09T08:07:39Z 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-09T08:07:39Z
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.035s
ok github.com/novox/mesh-controller/cmd/mesh-controller 199.337s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.028s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.043s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.029s
ok github.com/novox/mesh-controller/examples/route-proxy 1.189s
ok github.com/novox/mesh-controller/internal/artifacts 1.075s
ok github.com/novox/mesh-controller/internal/broker 2.795s
ok github.com/novox/mesh-controller/internal/builder 1.928s
ok github.com/novox/mesh-controller/internal/catalogue 4.995s
ok github.com/novox/mesh-controller/internal/conditions 2.482s
ok github.com/novox/mesh-controller/internal/envfile 1.047s
ok github.com/novox/mesh-controller/internal/facts 1.045s
ok github.com/novox/mesh-controller/internal/identity 4.773s
ok github.com/novox/mesh-controller/internal/inventory 85.275s
ok github.com/novox/mesh-controller/internal/lease 17.696s
ok github.com/novox/mesh-controller/internal/licences 4.337s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.038s
ok github.com/novox/mesh-controller/internal/link 53.287s
ok github.com/novox/mesh-controller/internal/lint 2.186s
ok github.com/novox/mesh-controller/internal/outward 1.077s
ok github.com/novox/mesh-controller/internal/overlay 1.067s
ok github.com/novox/mesh-controller/internal/secrets 1.538s
ok github.com/novox/mesh-controller/internal/store 3.462s
ok github.com/novox/mesh-controller/internal/testbus 1.230s
ok github.com/novox/mesh-controller/internal/token 1.016s
**Merge check** at `926dbd7a`
- `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-1791536859913357524` (`builds --log build-1791536859913357524`).
```
--- 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
files asking for a setting without saying whether it is trusted: 0
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-09T08:07:39Z 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-09T08:07:39Z
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.035s
ok github.com/novox/mesh-controller/cmd/mesh-controller 199.337s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.028s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.043s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.029s
ok github.com/novox/mesh-controller/examples/route-proxy 1.189s
ok github.com/novox/mesh-controller/internal/artifacts 1.075s
ok github.com/novox/mesh-controller/internal/broker 2.795s
ok github.com/novox/mesh-controller/internal/builder 1.928s
ok github.com/novox/mesh-controller/internal/catalogue 4.995s
ok github.com/novox/mesh-controller/internal/conditions 2.482s
ok github.com/novox/mesh-controller/internal/envfile 1.047s
ok github.com/novox/mesh-controller/internal/facts 1.045s
ok github.com/novox/mesh-controller/internal/identity 4.773s
ok github.com/novox/mesh-controller/internal/inventory 85.275s
ok github.com/novox/mesh-controller/internal/lease 17.696s
ok github.com/novox/mesh-controller/internal/licences 4.337s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.038s
ok github.com/novox/mesh-controller/internal/link 53.287s
ok github.com/novox/mesh-controller/internal/lint 2.186s
ok github.com/novox/mesh-controller/internal/outward 1.077s
ok github.com/novox/mesh-controller/internal/overlay 1.067s
ok github.com/novox/mesh-controller/internal/secrets 1.538s
ok github.com/novox/mesh-controller/internal/store 3.462s
ok github.com/novox/mesh-controller/internal/testbus 1.230s
ok github.com/novox/mesh-controller/internal/token 1.016s
```
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-host #61 dropped the two-minute limit inside the search's 15-minute
bound, asks pacman once, and calls a walk with errors incomplete; the pin
follows it so the two are judged together (hq ADR 0266). Move it to the
engine's merged commit before this merges.
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-1791540770800074701 (builds --log build-1791540770800074701).
--- 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
files asking for a setting without saying whether it is trusted: 0
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-09T08:07:39Z 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-09T08:07:39Z
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.037s
ok github.com/novox/mesh-controller/cmd/mesh-controller 197.194s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.035s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.049s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.039s
ok github.com/novox/mesh-controller/examples/route-proxy 1.235s
ok github.com/novox/mesh-controller/internal/artifacts 1.078s
ok github.com/novox/mesh-controller/internal/broker 2.729s
ok github.com/novox/mesh-controller/internal/builder 1.927s
ok github.com/novox/mesh-controller/internal/catalogue 4.985s
ok github.com/novox/mesh-controller/internal/conditions 2.517s
ok github.com/novox/mesh-controller/internal/envfile 1.046s
ok github.com/novox/mesh-controller/internal/facts 1.046s
ok github.com/novox/mesh-controller/internal/identity 4.714s
ok github.com/novox/mesh-controller/internal/inventory 85.135s
ok github.com/novox/mesh-controller/internal/lease 17.704s
ok github.com/novox/mesh-controller/internal/licences 4.278s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.037s
ok github.com/novox/mesh-controller/internal/link 53.296s
ok github.com/novox/mesh-controller/internal/lint 2.181s
ok github.com/novox/mesh-controller/internal/outward 1.072s
ok github.com/novox/mesh-controller/internal/overlay 1.063s
ok github.com/novox/mesh-controller/internal/secrets 1.523s
ok github.com/novox/mesh-controller/internal/store 3.461s
ok github.com/novox/mesh-controller/internal/testbus 1.188s
ok github.com/novox/mesh-controller/internal/token 1.016s
**Merge check** at `d951f22c`
- `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-1791540770800074701` (`builds --log build-1791540770800074701`).
```
--- 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
files asking for a setting without saying whether it is trusted: 0
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-09T08:07:39Z 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-09T08:07:39Z
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.037s
ok github.com/novox/mesh-controller/cmd/mesh-controller 197.194s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.035s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.049s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.039s
ok github.com/novox/mesh-controller/examples/route-proxy 1.235s
ok github.com/novox/mesh-controller/internal/artifacts 1.078s
ok github.com/novox/mesh-controller/internal/broker 2.729s
ok github.com/novox/mesh-controller/internal/builder 1.927s
ok github.com/novox/mesh-controller/internal/catalogue 4.985s
ok github.com/novox/mesh-controller/internal/conditions 2.517s
ok github.com/novox/mesh-controller/internal/envfile 1.046s
ok github.com/novox/mesh-controller/internal/facts 1.046s
ok github.com/novox/mesh-controller/internal/identity 4.714s
ok github.com/novox/mesh-controller/internal/inventory 85.135s
ok github.com/novox/mesh-controller/internal/lease 17.704s
ok github.com/novox/mesh-controller/internal/licences 4.278s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.037s
ok github.com/novox/mesh-controller/internal/link 53.296s
ok github.com/novox/mesh-controller/internal/lint 2.181s
ok github.com/novox/mesh-controller/internal/outward 1.072s
ok github.com/novox/mesh-controller/internal/overlay 1.063s
ok github.com/novox/mesh-controller/internal/secrets 1.523s
ok github.com/novox/mesh-controller/internal/store 3.461s
ok github.com/novox/mesh-controller/internal/testbus 1.188s
ok github.com/novox/mesh-controller/internal/token 1.016s
```
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…
Only the engine's own test changed; the pin follows the head so the two are
judged together (hq ADR 0266). Move it to the engine's merged commit before
this merges.
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 g14 as build-1791542265088884237 (builds --log build-1791542265088884237).
--- 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
files asking for a setting without saying whether it is trusted: 0
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-09T08:07:39Z 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-09T08:07:39Z
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.031s
ok github.com/novox/mesh-controller/cmd/mesh-controller 193.726s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.023s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.029s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.025s
ok github.com/novox/mesh-controller/examples/route-proxy 1.164s
ok github.com/novox/mesh-controller/internal/artifacts 1.058s
ok github.com/novox/mesh-controller/internal/broker 2.648s
ok github.com/novox/mesh-controller/internal/builder 2.259s
ok github.com/novox/mesh-controller/internal/catalogue 4.534s
ok github.com/novox/mesh-controller/internal/conditions 2.375s
ok github.com/novox/mesh-controller/internal/envfile 1.032s
ok github.com/novox/mesh-controller/internal/facts 1.032s
ok github.com/novox/mesh-controller/internal/identity 4.952s
ok github.com/novox/mesh-controller/internal/inventory 81.932s
ok github.com/novox/mesh-controller/internal/lease 17.595s
ok github.com/novox/mesh-controller/internal/licences 4.722s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.008s
ok github.com/novox/mesh-controller/internal/link 52.800s
ok github.com/novox/mesh-controller/internal/lint 1.953s
ok github.com/novox/mesh-controller/internal/outward 1.035s
ok github.com/novox/mesh-controller/internal/overlay 1.026s
ok github.com/novox/mesh-controller/internal/secrets 1.455s
ok github.com/novox/mesh-controller/internal/store 3.516s
ok github.com/novox/mesh-controller/internal/testbus 1.173s
ok github.com/novox/mesh-controller/internal/token 1.015s
**Merge check** at `e168b601`
- `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 g14 as `build-1791542265088884237` (`builds --log build-1791542265088884237`).
```
--- 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
files asking for a setting without saying whether it is trusted: 0
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-09T08:07:39Z 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-09T08:07:39Z
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.031s
ok github.com/novox/mesh-controller/cmd/mesh-controller 193.726s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.023s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.029s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.025s
ok github.com/novox/mesh-controller/examples/route-proxy 1.164s
ok github.com/novox/mesh-controller/internal/artifacts 1.058s
ok github.com/novox/mesh-controller/internal/broker 2.648s
ok github.com/novox/mesh-controller/internal/builder 2.259s
ok github.com/novox/mesh-controller/internal/catalogue 4.534s
ok github.com/novox/mesh-controller/internal/conditions 2.375s
ok github.com/novox/mesh-controller/internal/envfile 1.032s
ok github.com/novox/mesh-controller/internal/facts 1.032s
ok github.com/novox/mesh-controller/internal/identity 4.952s
ok github.com/novox/mesh-controller/internal/inventory 81.932s
ok github.com/novox/mesh-controller/internal/lease 17.595s
ok github.com/novox/mesh-controller/internal/licences 4.722s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.008s
ok github.com/novox/mesh-controller/internal/link 52.800s
ok github.com/novox/mesh-controller/internal/lint 1.953s
ok github.com/novox/mesh-controller/internal/outward 1.035s
ok github.com/novox/mesh-controller/internal/overlay 1.026s
ok github.com/novox/mesh-controller/internal/secrets 1.455s
ok github.com/novox/mesh-controller/internal/store 3.516s
ok github.com/novox/mesh-controller/internal/testbus 1.173s
ok github.com/novox/mesh-controller/internal/token 1.015s
```
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.
On the control node every agent session runs as the operator's account, which has passwordless sudo: any agent there can become root without a person. hq ADR 0266 (agents run under an account of their own, without sudo) decides an agent account per node; this is the controller's part.
What changes
node.agent_account,node.agent_account_home(empty = agents run as the operator account). No consolidated schema exists in this repository; migrations are the schema.Node.AgentAccount,AgentAccountHome,AgentHome();SetAgentAccountrefuses root, the node's operator account, a malformed login and a relative home; empty clears.mesh-controller node agent-account <node>reports;node agent-account <node> <account> [home]names;node agent-account <node> --clearclears. Not a verb and not a setting, so no agent can change it; thenodeverb still runs onlynode show(tested).node showsays whom agents run as and the verdict.${machine:agent-account}(the agent account, or the operator account when none is named),${machine:agent-home},${machine:agent-root}(neveronly for an account of the agents' own, else empty). A user resource'srootfield is substituted too.MESH_AGENT_ACCOUNT,MESH_AGENT_HOMEbesideMESH_OPERATOR_*; reserved, a bundle may not set them.link.ResourceHealth.Root(root),link.RootContract = 3,link.ReasonRoot. A user'srootis sent only to an engine whose newest statement is contract 3 or later, and only when it saysnever; an older engine parses strictly and is not sent it.DA, kindagent-can-become-root, urgent, with plain words: every machine that names an agent account has it judged, on its engine's newest statement, unable to become root without a person. Anything not judged (no statement, an older engine, no verdict on that account, a verdict of unknown) fails. The judgement is one function,agentConfined, fornode show, the probe and later ADR 0259's router.Depends on mesh-host
The node-engine judges
root: neveron branchfeat/an-agent-account-never-becomes-root(mesh-host). This branch pins mesh-host at that branch's commit8390fab5cb35and vendors it, so D1's validator knows the field. After the mesh-host pull request merges, the pin must move to mesh-host's main commit (go mod edit -replace …andgo mod vendor) before this merges.Verified here
gofmt,
go vet ./..., and the whole suitego test -count=1 ./...against a local throwaway PostgreSQL 18: all pass (not under the race detector locally). New tests: inventory round trip and refusals, the facts' fallback andneveronly when distinct, the runtime env,rootstripped for an older engine and when empty, the judgement over every case, the probe raising and clearing, plain words, the snapshot pseudonym, and thenodeverb only showing.Delivery
novox/mesh-controller@e168b60159f7— superseded since 2026-10-09T10:56:47ZDelivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.Merge check at
2d7d4d44mesh/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-1791477470452846257(builds --log build-1791477470452846257).Merge check at
d7b911famesh/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: FAIL — its merge-check.sh failed: --- FAIL: TestTheInstallersFirstUserListIsWhatTheControllerWouldCompose (0.62s)Delivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Run by the build seat on g14 as
build-1791484791914080976(builds --log build-1791484791914080976).Merge check at
0df02f20mesh/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: FAIL — its merge-check.sh failed: --- FAIL: TestTheInstallersFirstUserListIsWhatTheControllerWouldCompose (0.74s)Delivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Run by the build seat on shanks as
build-1791485616650385069(builds --log build-1791485616650385069).0df02f20e1to874a2670faMerge check at
874a2670mesh/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 ace as
build-1791486525309422142(builds --log build-1791486525309422142).Merge check at
10bbc591mesh/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-1791487322812336862(builds --log build-1791487322812336862).Merge check at
10d8a9bemesh/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 ace as
build-1791487935528407222(builds --log build-1791487935528407222).10d8a9be9bto1d5a523a53Merge check at
1d5a523amesh/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 ace as
build-1791489299966716399(builds --log build-1791489299966716399).Merge check at
9b00d2ddmesh/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 g14 as
build-1791489360900150520(builds --log build-1791489360900150520).9b00d2ddf7to926dbd7a97Rebased onto main on 2026-10-09 (head
926dbd7).--through-verbflag is gone.plansline that acts is refused wherever its subcommand stands,retryincluded (plans --json go pis refused).settings set|clearthroughcommandstays first, and is now a terminal-held refusal. The read-only allow list follows it.homegets the machine facts too. Before this,node agent-account <node> <account> <home>stored a home that nothing used.sh merge-check.shpassed on the rebased head: race detector, the whole suite, against a local PostgreSQL 18.Merge check at
926dbd7amesh/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-1791536859913357524(builds --log build-1791536859913357524).Merge check at
d951f22cmesh/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-1791540770800074701(builds --log build-1791540770800074701).Merge check at
e168b601mesh/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 g14 as
build-1791542265088884237(builds --log build-1791542265088884237).