hq issue 318: one module's wait for a new login held every other module's walk, failed the send at the gate's bound and put the module back (which also took its account group back).
What changes (hq ADR 0254):
A new gate reading, healthPerson (waits for a person). A module's account resource unhealthy with relogin needed, and every other unhealthy resource of that module running in the own service manager of that same account (account on the resource, said by the node-engine), reads as a wait. Anything else unhealthy beside it is judged as before (personWait, narrow on purpose). The reading counts as a pass; the verdict carries it ("…; and it waits for a person: relogin needed on : …"). Nothing is put back.
The condition is module.<module>.<machine>.relogin-needed instead of unhealthy: a warning, resolver operator, never escalated by age, one sentence starting "relogin needed on ". It clears on the first statement without the wait; a unit still failing after the login becomes the module's own unhealthy. The gate does not read it as a condition raised since the send.
Each module of a send counts its own passes (PlanGate.Healthy). The send keeps one verdict, but when it fails, a module healthy on its own for the passes asked keeps a pass (PlanGate.Passing, recorded "on its own"), is not put back, and so no longer stays a move every other walk waits for. ungatedIn is unchanged: ADR 0236 §4a stands.
Tests: cmd/mesh-controller/person_wait_test.go (narrowness, gate reading, condition raise/clear, a module keeping its pass when its send fails) and cmd/mesh-controller/replay318_test.go (the replay, R318 in mesh-lab: fails on 950562a, passes here). merge-check.sh passes locally against a throwaway store.
Merge order of the delivery group: mesh-host first, then this, then mesh-lab, then hq.
Note: if hq's plain-words record (issue 320, branch feat/plain-notifications) lands first, the new kind relogin-needed needs its words; whichever lands second adds them.
hq issue 318: one module's wait for a new login held every other module's walk, failed the send at the gate's bound and put the module back (which also took its account group back).
What changes (hq ADR 0254):
1. **A new gate reading, `healthPerson` (waits for a person).** A module's `account` resource unhealthy with *relogin needed*, and every other unhealthy resource of that module running in the own service manager of that same account (`account` on the resource, said by the node-engine), reads as a wait. Anything else unhealthy beside it is judged as before (`personWait`, narrow on purpose). The reading counts as a pass; the verdict carries it ("…; and it waits for a person: relogin needed on <machine>: …"). Nothing is put back.
2. **The condition** is `module.<module>.<machine>.relogin-needed` instead of `unhealthy`: a warning, resolver operator, never escalated by age, one sentence starting "relogin needed on <machine>". It clears on the first statement without the wait; a unit still failing after the login becomes the module's own `unhealthy`. The gate does not read it as a condition raised since the send.
3. **Each module of a send counts its own passes** (`PlanGate.Healthy`). The send keeps one verdict, but when it fails, a module healthy on its own for the passes asked keeps a pass (`PlanGate.Passing`, recorded "on its own"), is not put back, and so no longer stays a move every other walk waits for. `ungatedIn` is unchanged: ADR 0236 §4a stands.
Tests: `cmd/mesh-controller/person_wait_test.go` (narrowness, gate reading, condition raise/clear, a module keeping its pass when its send fails) and `cmd/mesh-controller/replay318_test.go` (the replay, R318 in mesh-lab: fails on 950562a, passes here). `merge-check.sh` passes locally against a throwaway store.
Merge order of the delivery group: mesh-host first, then this, then mesh-lab, then hq.
Note: if hq's plain-words record (issue 320, branch feat/plain-notifications) lands first, the new kind `relogin-needed` needs its words; whichever lands second adds them.
composed together: pass — every machine composes with the change as it did without (4 of 4 compose)
Machines
mesh-controller on novox: passed — healthy 3 times over 3m57s
mesh-controller on the rest running it: sent
build-agent on ace: passed — healthy 3 times over 3m19s
build-agent on the rest running it: sent
route-proxy on ace: passed — healthy 3 times over 3m36s
route-proxy on the rest running it: sent
Transitions
2026-10-08 12:25 (new) → proposed (announced): novox/mesh-controller#142's head announced
2026-10-08 12:35 proposed → checked (checked): the verdict names this commit
2026-10-08 12:35 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-08 12:41 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-08 12:41 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path
2026-10-08 13:01 delivering → delivered (done): its walk is done: every machine of its deploy plan passed, or was left as its policy says
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-controller@51d7bbfdc88c` — **delivered** since 2026-10-08T13:01:00Z
**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
**Group** `fix/318-a-wait-for-a-person-is-not-a-failure`, in order: novox/hq@01e48196f747 → novox/mesh-controller@51d7bbfdc88c → novox/mesh-host@9d8398206e5b → novox/mesh-lab@1455d9560e1c
- novox/mesh-controller@51d7bbfdc88c before novox/mesh-host@9d8398206e5b: built by, over engine before controller
- composed together: pass — every machine composes with the change as it did without (4 of 4 compose)
**Machines**
- mesh-controller on novox: passed — healthy 3 times over 3m57s
- mesh-controller on the rest running it: sent
- build-agent on ace: passed — healthy 3 times over 3m19s
- build-agent on the rest running it: sent
- route-proxy on ace: passed — healthy 3 times over 3m36s
- route-proxy on the rest running it: sent
**Transitions**
- 2026-10-08 12:25 (new) → proposed (announced): novox/mesh-controller#142's head announced
- 2026-10-08 12:35 proposed → checked (checked): the verdict names this commit
- 2026-10-08 12:35 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-08 12:41 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-08 12:41 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path
- 2026-10-08 13:01 delivering → delivered (done): its walk is done: every machine of its deploy plan passed, or was left as its policy says
The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
build-agent keeps data (ADR 0233): what it holds is backed up before it moves
route-proxy provides route: its consumers are sent again after it
route-proxy keeps data (ADR 0233): what it holds is backed up before it moves
Run by the build seat on novox as build-1791459800912200002 (builds --log build-1791459800912200002).
--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 50 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-08T11:31:31Z 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-08T11:31:31Z
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 184.905s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.024s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.028s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.024s
ok github.com/novox/mesh-controller/examples/route-proxy 1.129s
ok github.com/novox/mesh-controller/internal/artifacts 1.053s
ok github.com/novox/mesh-controller/internal/broker 2.806s
ok github.com/novox/mesh-controller/internal/builder 2.633s
--- FAIL: TestTheForgesOwnAddressFollowsThePortTheNodeGaveIt (0.00s)
foundation_manifests_test.go:186: the forge's manifest does not resolve against its own build: gitea says it builds npm-registry and the build did not produce it — the build did not do what the manifest asked, which is a different fault from a resource asking for the wrong thing
--- FAIL: TestTheForgesSshPortIsTheMeshsFixedConventionByDefault (0.01s)
foundation_manifests_test.go:286: the forge's manifest does not resolve against its own build: gitea says it builds npm-registry and the build did not produce it — the build did not do what the manifest asked, which is a different fault from a resource asking for the wrong thing
--- FAIL: TestANodeMayGiveTheForgesSshPortADifferentNumber (0.01s)
foundation_manifests_test.go:306: the forge's manifest does not resolve against its own build: gitea says it builds npm-registry and the build did not produce it — the build did not do what the manifest asked, which is a different fault from a resource asking for the wrong thing
FAIL
FAIL github.com/novox/mesh-controller/internal/catalogue 3.959s
ok github.com/novox/mesh-controller/internal/conditions 2.032s
ok github.com/novox/mesh-controller/internal/envfile 1.034s
ok github.com/novox/mesh-controller/internal/facts 1.032s
ok github.com/novox/mesh-controller/internal/identity 5.134s
ok github.com/novox/mesh-controller/internal/inventory 88.742s
ok github.com/novox/mesh-controller/internal/lease 17.684s
ok github.com/novox/mesh-controller/internal/licences 4.546s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.010s
ok github.com/novox/mesh-controller/internal/link 47.590s
ok github.com/novox/mesh-controller/internal/lint 2.029s
ok github.com/novox/mesh-controller/internal/outward 1.047s
ok github.com/novox/mesh-controller/internal/overlay 1.026s
ok github.com/novox/mesh-controller/internal/secrets 1.497s
ok github.com/novox/mesh-controller/internal/store 3.390s
ok github.com/novox/mesh-controller/internal/testbus 1.181s
ok github.com/novox/mesh-controller/internal/token 1.015s
FAIL
**Merge check** at `9b86fa9a`
- `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: TestTheForgesOwnAddressFollowsThePortTheNodeGaveIt (0.00s)
**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-1791459800912200002` (`builds --log build-1791459800912200002`).
```
--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 50 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-08T11:31:31Z 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-08T11:31:31Z
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 184.905s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.024s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.028s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.024s
ok github.com/novox/mesh-controller/examples/route-proxy 1.129s
ok github.com/novox/mesh-controller/internal/artifacts 1.053s
ok github.com/novox/mesh-controller/internal/broker 2.806s
ok github.com/novox/mesh-controller/internal/builder 2.633s
--- FAIL: TestTheForgesOwnAddressFollowsThePortTheNodeGaveIt (0.00s)
foundation_manifests_test.go:186: the forge's manifest does not resolve against its own build: gitea says it builds npm-registry and the build did not produce it — the build did not do what the manifest asked, which is a different fault from a resource asking for the wrong thing
--- FAIL: TestTheForgesSshPortIsTheMeshsFixedConventionByDefault (0.01s)
foundation_manifests_test.go:286: the forge's manifest does not resolve against its own build: gitea says it builds npm-registry and the build did not produce it — the build did not do what the manifest asked, which is a different fault from a resource asking for the wrong thing
--- FAIL: TestANodeMayGiveTheForgesSshPortADifferentNumber (0.01s)
foundation_manifests_test.go:306: the forge's manifest does not resolve against its own build: gitea says it builds npm-registry and the build did not produce it — the build did not do what the manifest asked, which is a different fault from a resource asking for the wrong thing
FAIL
FAIL github.com/novox/mesh-controller/internal/catalogue 3.959s
ok github.com/novox/mesh-controller/internal/conditions 2.032s
ok github.com/novox/mesh-controller/internal/envfile 1.034s
ok github.com/novox/mesh-controller/internal/facts 1.032s
ok github.com/novox/mesh-controller/internal/identity 5.134s
ok github.com/novox/mesh-controller/internal/inventory 88.742s
ok github.com/novox/mesh-controller/internal/lease 17.684s
ok github.com/novox/mesh-controller/internal/licences 4.546s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.010s
ok github.com/novox/mesh-controller/internal/link 47.590s
ok github.com/novox/mesh-controller/internal/lint 2.029s
ok github.com/novox/mesh-controller/internal/outward 1.047s
ok github.com/novox/mesh-controller/internal/overlay 1.026s
ok github.com/novox/mesh-controller/internal/secrets 1.497s
ok github.com/novox/mesh-controller/internal/store 3.390s
ok github.com/novox/mesh-controller/internal/testbus 1.181s
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-1791460349983046743 (builds --log build-1791460349983046743).
--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 50 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-08T11:31:31Z 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-08T11:31:31Z
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 162.200s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.055s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.015s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.008s
ok github.com/novox/mesh-controller/examples/route-proxy 1.209s
ok github.com/novox/mesh-controller/internal/artifacts 1.083s
ok github.com/novox/mesh-controller/internal/broker 2.685s
ok github.com/novox/mesh-controller/internal/builder 1.806s
ok github.com/novox/mesh-controller/internal/catalogue 4.764s
ok github.com/novox/mesh-controller/internal/conditions 2.033s
ok github.com/novox/mesh-controller/internal/envfile 1.061s
ok github.com/novox/mesh-controller/internal/facts 1.060s
ok github.com/novox/mesh-controller/internal/identity 4.722s
ok github.com/novox/mesh-controller/internal/inventory 79.456s
ok github.com/novox/mesh-controller/internal/lease 17.710s
ok github.com/novox/mesh-controller/internal/licences 4.287s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.053s
ok github.com/novox/mesh-controller/internal/link 46.047s
ok github.com/novox/mesh-controller/internal/lint 2.051s
ok github.com/novox/mesh-controller/internal/outward 1.088s
ok github.com/novox/mesh-controller/internal/overlay 1.073s
ok github.com/novox/mesh-controller/internal/secrets 1.531s
ok github.com/novox/mesh-controller/internal/store 3.474s
ok github.com/novox/mesh-controller/internal/testbus 1.246s
ok github.com/novox/mesh-controller/internal/token 1.014s
**Merge check** at `0012ea56`
- `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-1791460349983046743` (`builds --log build-1791460349983046743`).
```
--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 50 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-08T11:31:31Z 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-08T11:31:31Z
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 162.200s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.055s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.015s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.008s
ok github.com/novox/mesh-controller/examples/route-proxy 1.209s
ok github.com/novox/mesh-controller/internal/artifacts 1.083s
ok github.com/novox/mesh-controller/internal/broker 2.685s
ok github.com/novox/mesh-controller/internal/builder 1.806s
ok github.com/novox/mesh-controller/internal/catalogue 4.764s
ok github.com/novox/mesh-controller/internal/conditions 2.033s
ok github.com/novox/mesh-controller/internal/envfile 1.061s
ok github.com/novox/mesh-controller/internal/facts 1.060s
ok github.com/novox/mesh-controller/internal/identity 4.722s
ok github.com/novox/mesh-controller/internal/inventory 79.456s
ok github.com/novox/mesh-controller/internal/lease 17.710s
ok github.com/novox/mesh-controller/internal/licences 4.287s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.053s
ok github.com/novox/mesh-controller/internal/link 46.047s
ok github.com/novox/mesh-controller/internal/lint 2.051s
ok github.com/novox/mesh-controller/internal/outward 1.088s
ok github.com/novox/mesh-controller/internal/overlay 1.073s
ok github.com/novox/mesh-controller/internal/secrets 1.531s
ok github.com/novox/mesh-controller/internal/store 3.474s
ok github.com/novox/mesh-controller/internal/testbus 1.246s
ok github.com/novox/mesh-controller/internal/token 1.014s
```
mesh/merge-gate pass: builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step; every machine composes with the change as it…
build-agent keeps data (ADR 0233): what it holds is backed up before it moves
route-proxy provides route: its consumers are sent again after it
route-proxy keeps data (ADR 0233): what it holds is backed up before it moves
Run by the build seat on ace as build-1791462339025090184 (builds --log build-1791462339025090184).
--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 50 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-08T12:22:31Z 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-08T12:22:31Z
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.030s
ok github.com/novox/mesh-controller/cmd/mesh-controller 143.814s
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.012s
ok github.com/novox/mesh-controller/examples/route-proxy 1.117s
ok github.com/novox/mesh-controller/internal/artifacts 1.030s
ok github.com/novox/mesh-controller/internal/broker 2.425s
ok github.com/novox/mesh-controller/internal/builder 1.708s
ok github.com/novox/mesh-controller/internal/catalogue 3.981s
ok github.com/novox/mesh-controller/internal/conditions 2.134s
ok github.com/novox/mesh-controller/internal/envfile 1.042s
ok github.com/novox/mesh-controller/internal/facts 1.071s
ok github.com/novox/mesh-controller/internal/identity 4.024s
ok github.com/novox/mesh-controller/internal/inventory 66.982s
ok github.com/novox/mesh-controller/internal/lease 17.704s
ok github.com/novox/mesh-controller/internal/licences 3.699s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.041s
ok github.com/novox/mesh-controller/internal/link 43.605s
ok github.com/novox/mesh-controller/internal/lint 1.864s
ok github.com/novox/mesh-controller/internal/outward 1.069s
ok github.com/novox/mesh-controller/internal/overlay 1.060s
ok github.com/novox/mesh-controller/internal/secrets 1.440s
ok github.com/novox/mesh-controller/internal/store 3.299s
ok github.com/novox/mesh-controller/internal/testbus 1.210s
ok github.com/novox/mesh-controller/internal/token 1.016s
**Merge check** at `51d7bbfd`
- `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-1791462339025090184` (`builds --log build-1791462339025090184`).
```
--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 50 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-08T12:22:31Z 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-08T12:22:31Z
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.030s
ok github.com/novox/mesh-controller/cmd/mesh-controller 143.814s
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.012s
ok github.com/novox/mesh-controller/examples/route-proxy 1.117s
ok github.com/novox/mesh-controller/internal/artifacts 1.030s
ok github.com/novox/mesh-controller/internal/broker 2.425s
ok github.com/novox/mesh-controller/internal/builder 1.708s
ok github.com/novox/mesh-controller/internal/catalogue 3.981s
ok github.com/novox/mesh-controller/internal/conditions 2.134s
ok github.com/novox/mesh-controller/internal/envfile 1.042s
ok github.com/novox/mesh-controller/internal/facts 1.071s
ok github.com/novox/mesh-controller/internal/identity 4.024s
ok github.com/novox/mesh-controller/internal/inventory 66.982s
ok github.com/novox/mesh-controller/internal/lease 17.704s
ok github.com/novox/mesh-controller/internal/licences 3.699s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.041s
ok github.com/novox/mesh-controller/internal/link 43.605s
ok github.com/novox/mesh-controller/internal/lint 1.864s
ok github.com/novox/mesh-controller/internal/outward 1.069s
ok github.com/novox/mesh-controller/internal/overlay 1.060s
ok github.com/novox/mesh-controller/internal/secrets 1.440s
ok github.com/novox/mesh-controller/internal/store 3.299s
ok github.com/novox/mesh-controller/internal/testbus 1.210s
ok github.com/novox/mesh-controller/internal/token 1.016s
```
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
hq issue 318: one module's wait for a new login held every other module's walk, failed the send at the gate's bound and put the module back (which also took its account group back).
What changes (hq ADR 0254):
healthPerson(waits for a person). A module'saccountresource unhealthy with relogin needed, and every other unhealthy resource of that module running in the own service manager of that same account (accounton the resource, said by the node-engine), reads as a wait. Anything else unhealthy beside it is judged as before (personWait, narrow on purpose). The reading counts as a pass; the verdict carries it ("…; and it waits for a person: relogin needed on : …"). Nothing is put back.module.<module>.<machine>.relogin-neededinstead ofunhealthy: a warning, resolver operator, never escalated by age, one sentence starting "relogin needed on ". It clears on the first statement without the wait; a unit still failing after the login becomes the module's ownunhealthy. The gate does not read it as a condition raised since the send.PlanGate.Healthy). The send keeps one verdict, but when it fails, a module healthy on its own for the passes asked keeps a pass (PlanGate.Passing, recorded "on its own"), is not put back, and so no longer stays a move every other walk waits for.ungatedInis unchanged: ADR 0236 §4a stands.Tests:
cmd/mesh-controller/person_wait_test.go(narrowness, gate reading, condition raise/clear, a module keeping its pass when its send fails) andcmd/mesh-controller/replay318_test.go(the replay, R318 in mesh-lab: fails on950562a, passes here).merge-check.shpasses locally against a throwaway store.Merge order of the delivery group: mesh-host first, then this, then mesh-lab, then hq.
Note: if hq's plain-words record (issue 320, branch feat/plain-notifications) lands first, the new kind
relogin-neededneeds its words; whichever lands second adds them.Delivery
novox/mesh-controller@51d7bbfdc88c— delivered since 2026-10-08T13:01:00ZDelivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Group
fix/318-a-wait-for-a-person-is-not-a-failure, in order: novox/hq@01e48196f7 → novox/mesh-controller@51d7bbfdc8 → novox/mesh-host@9d8398206e → novox/mesh-lab@1455d9560eMachines
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.Merge check at
9b86fa9amesh/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: TestTheForgesOwnAddressFollowsThePortTheNodeGaveIt (0.00s)Delivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Run by the build seat on novox as
build-1791459800912200002(builds --log build-1791459800912200002).Merge check at
0012ea56mesh/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-1791460349983046743(builds --log build-1791460349983046743).0012ea562eto51d7bbfdc8Merge check at
51d7bbfdmesh/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-1791462339025090184(builds --log build-1791462339025090184).