After #104 merged, the re-checks of mesh-host#46 (build-1791331237244478582) and mesh-tools#19 (build-1791331238396298871) still said gate PASS … (0 of 4 compose).
Why: both checks were asked at 02:00:37–38 by the old controller process, the one replaced at 02:01:00. For a repository other than the controller, the judge is the controller the mesh runs, cloned beside the check at its registered build. At that moment that was 72d78024: #104's build b39eaa48 registered only with its plan at 02:00:53. The build log shows beside it mesh-controller at 72d78024 … judged by the controller the mesh runs. That judge predates the fix and the error rule, so it passed 0 of 4. The new process only reported the verdict.
Fix: the judge being the running controller is the design, so the rule now also holds where the seat reads the verdict. gateRaisedTheMesh reads the machines the verdict lists. A pass or warning in which any machine composes on the mesh (live-composes) and not in the gate's base is reported as error, whatever controller judged it. readGateVerdict also reads a verdict that an older judge preceded with composition's own lines on stdout.
It takes effect on the seat when build-agent is rebuilt from this. Until then, a judge at b39eaa48 or later already says error itself.
After #104 merged, the re-checks of mesh-host#46 (build-1791331237244478582) and mesh-tools#19 (build-1791331238396298871) still said `gate PASS … (0 of 4 compose)`.
**Why:** both checks were *asked* at 02:00:37–38 by the old controller process, the one replaced at 02:01:00. For a repository other than the controller, the judge is the controller the mesh runs, cloned beside the check at its registered build. At that moment that was 72d78024: #104's build b39eaa48 registered only with its plan at 02:00:53. The build log shows `beside it mesh-controller at 72d78024` … `judged by the controller the mesh runs`. That judge predates the fix and the error rule, so it passed 0 of 4. The new process only *reported* the verdict.
**Fix:** the judge being the running controller is the design, so the rule now also holds where the seat reads the verdict. `gateRaisedTheMesh` reads the machines the verdict lists. A pass or warning in which any machine composes on the mesh (`live-composes`) and not in the gate's base is reported as **error**, whatever controller judged it. `readGateVerdict` also reads a verdict that an older judge preceded with composition's own lines on stdout.
It takes effect on the seat when build-agent is rebuilt from this. Until then, a judge at b39eaa48 or later already says error itself.
Test: `TestTheSeatCallsAGateThatRaisedNoMachineAnError`.
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…
A check asked by the controller before its own build of the issue 285 fix was registered was judged by
the controller the mesh ran then, which passed 0 of 4 composing. The judge is the running controller by
design, so the rule is read where the verdict is taken too: from the machines the verdict lists.
build-agent keeps data (ADR 0233): what it holds is backed up before it moves
route-proxy provides route: its consumers are sent again after it
route-proxy keeps data (ADR 0233): what it holds is backed up before it moves
Machines
mesh-controller on novox: passed — healthy 3 times over 3m57s
mesh-controller on the rest running it: sent
build-agent on ace: passed — healthy 3 times over 2m13s
build-agent on the rest running it: sent
route-proxy on ace: passed — healthy 3 times over 2m25s
route-proxy on the rest running it: sent
Transitions
2026-10-07 00:18 (new) → proposed (announced): novox/mesh-controller#106's head announced
2026-10-07 00:24 proposed → checked (checked): the verdict names this commit
2026-10-07 00:24 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-07 00:28 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-07 00:28 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-07 00:44 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@8b2abd08cdf8` — **delivered** since 2026-10-07T00:44:23Z
**Delivery plan** — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
- tier 0: mesh-controller
- tier 1: build-agent
- tier 2: route-proxy
- ace: receives build-agent, route-proxy
- g14: receives build-agent
- novox: receives mesh-controller, build-agent, route-proxy
- shanks: receives build-agent
- build-agent keeps data (ADR 0233): what it holds is backed up before it moves
- route-proxy provides route: its consumers are sent again after it
- route-proxy keeps data (ADR 0233): what it holds is backed up before it moves
**Machines**
- mesh-controller on novox: passed — healthy 3 times over 3m57s
- mesh-controller on the rest running it: sent
- build-agent on ace: passed — healthy 3 times over 2m13s
- build-agent on the rest running it: sent
- route-proxy on ace: passed — healthy 3 times over 2m25s
- route-proxy on the rest running it: sent
**Transitions**
- 2026-10-07 00:18 (new) → proposed (announced): novox/mesh-controller#106's head announced
- 2026-10-07 00:24 proposed → checked (checked): the verdict names this commit
- 2026-10-07 00:24 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-07 00:28 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-07 00:28 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-07 00:44 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 ace as build-1791331632898670475 (builds --log build-1791331632898670475).
--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 45 tool(s)
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-07T00:02:01Z 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-07T00:02:01Z
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-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 414.587s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.013s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.016s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.013s
ok github.com/novox/mesh-controller/examples/route-proxy 1.104s
ok github.com/novox/mesh-controller/internal/artifacts 1.030s
ok github.com/novox/mesh-controller/internal/broker 2.375s
ok github.com/novox/mesh-controller/internal/builder 1.335s
ok github.com/novox/mesh-controller/internal/catalogue 3.564s
ok github.com/novox/mesh-controller/internal/conditions 2.009s
ok github.com/novox/mesh-controller/internal/envfile 1.064s
ok github.com/novox/mesh-controller/internal/facts 1.065s
ok github.com/novox/mesh-controller/internal/identity 42.952s
ok github.com/novox/mesh-controller/internal/inventory 276.897s
ok github.com/novox/mesh-controller/internal/lease 17.713s
ok github.com/novox/mesh-controller/internal/licences 40.384s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.025s
ok github.com/novox/mesh-controller/internal/link 86.989s
ok github.com/novox/mesh-controller/internal/lint 1.709s
ok github.com/novox/mesh-controller/internal/outward 1.053s
ok github.com/novox/mesh-controller/internal/overlay 1.037s
ok github.com/novox/mesh-controller/internal/secrets 1.372s
ok github.com/novox/mesh-controller/internal/store 22.255s
ok github.com/novox/mesh-controller/internal/testbus 1.184s
ok github.com/novox/mesh-controller/internal/token 1.015s
**Merge check** at `858b4672`
- `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
**Change 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-1791331632898670475` (`builds --log build-1791331632898670475`).
```
--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 45 tool(s)
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-07T00:02:01Z 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-07T00:02:01Z
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-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 414.587s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.013s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.016s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.013s
ok github.com/novox/mesh-controller/examples/route-proxy 1.104s
ok github.com/novox/mesh-controller/internal/artifacts 1.030s
ok github.com/novox/mesh-controller/internal/broker 2.375s
ok github.com/novox/mesh-controller/internal/builder 1.335s
ok github.com/novox/mesh-controller/internal/catalogue 3.564s
ok github.com/novox/mesh-controller/internal/conditions 2.009s
ok github.com/novox/mesh-controller/internal/envfile 1.064s
ok github.com/novox/mesh-controller/internal/facts 1.065s
ok github.com/novox/mesh-controller/internal/identity 42.952s
ok github.com/novox/mesh-controller/internal/inventory 276.897s
ok github.com/novox/mesh-controller/internal/lease 17.713s
ok github.com/novox/mesh-controller/internal/licences 40.384s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.025s
ok github.com/novox/mesh-controller/internal/link 86.989s
ok github.com/novox/mesh-controller/internal/lint 1.709s
ok github.com/novox/mesh-controller/internal/outward 1.053s
ok github.com/novox/mesh-controller/internal/overlay 1.037s
ok github.com/novox/mesh-controller/internal/secrets 1.372s
ok github.com/novox/mesh-controller/internal/store 22.255s
ok github.com/novox/mesh-controller/internal/testbus 1.184s
ok github.com/novox/mesh-controller/internal/token 1.015s
```
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…
An ask redelivered after the build agent stopped mid-check (the rollout it was checking updated it)
found its own throwaway store under its name, and the check said it could not run (mesh-controller#105,
build-1791331512096605198).
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-1791332299484999929 (builds --log build-1791332299484999929).
--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 45 tool(s)
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-07T00:11:01Z 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-07T00:11:01Z
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-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.833s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.012s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.019s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.016s
ok github.com/novox/mesh-controller/examples/route-proxy 1.193s
ok github.com/novox/mesh-controller/internal/artifacts 1.037s
ok github.com/novox/mesh-controller/internal/broker 2.460s
ok github.com/novox/mesh-controller/internal/builder 1.258s
ok github.com/novox/mesh-controller/internal/catalogue 3.678s
ok github.com/novox/mesh-controller/internal/conditions 1.954s
ok github.com/novox/mesh-controller/internal/envfile 1.023s
ok github.com/novox/mesh-controller/internal/facts 1.025s
ok github.com/novox/mesh-controller/internal/identity 6.590s
ok github.com/novox/mesh-controller/internal/inventory 116.200s
ok github.com/novox/mesh-controller/internal/lease 17.698s
ok github.com/novox/mesh-controller/internal/licences 5.509s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.007s
ok github.com/novox/mesh-controller/internal/link 47.939s
ok github.com/novox/mesh-controller/internal/lint 1.784s
ok github.com/novox/mesh-controller/internal/outward 1.035s
ok github.com/novox/mesh-controller/internal/overlay 1.022s
ok github.com/novox/mesh-controller/internal/secrets 1.453s
ok github.com/novox/mesh-controller/internal/store 3.837s
ok github.com/novox/mesh-controller/internal/testbus 1.186s
ok github.com/novox/mesh-controller/internal/token 1.012s
**Merge check** at `8b2abd08`
- `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
**Change 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-1791332299484999929` (`builds --log build-1791332299484999929`).
```
--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 45 tool(s)
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-07T00:11:01Z 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-07T00:11:01Z
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-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.833s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.012s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.019s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.016s
ok github.com/novox/mesh-controller/examples/route-proxy 1.193s
ok github.com/novox/mesh-controller/internal/artifacts 1.037s
ok github.com/novox/mesh-controller/internal/broker 2.460s
ok github.com/novox/mesh-controller/internal/builder 1.258s
ok github.com/novox/mesh-controller/internal/catalogue 3.678s
ok github.com/novox/mesh-controller/internal/conditions 1.954s
ok github.com/novox/mesh-controller/internal/envfile 1.023s
ok github.com/novox/mesh-controller/internal/facts 1.025s
ok github.com/novox/mesh-controller/internal/identity 6.590s
ok github.com/novox/mesh-controller/internal/inventory 116.200s
ok github.com/novox/mesh-controller/internal/lease 17.698s
ok github.com/novox/mesh-controller/internal/licences 5.509s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.007s
ok github.com/novox/mesh-controller/internal/link 47.939s
ok github.com/novox/mesh-controller/internal/lint 1.784s
ok github.com/novox/mesh-controller/internal/outward 1.035s
ok github.com/novox/mesh-controller/internal/overlay 1.022s
ok github.com/novox/mesh-controller/internal/secrets 1.453s
ok github.com/novox/mesh-controller/internal/store 3.837s
ok github.com/novox/mesh-controller/internal/testbus 1.186s
ok github.com/novox/mesh-controller/internal/token 1.012s
```
Second commit (8b2abd0): the first check of #105 (build-1791331512096605198) ran on novox, and the build agent there was restarted mid-check by the rollout of #104. The ask was redelivered under the same id, collided with its own throwaway store (Conflict. The container name "/build-…-store" is already in use), and came back as gate ERROR, "the check could not run". A check now removes the containers an earlier delivery of the same id left before it raises its store. Test: TestARedeliveredCheckRemovesWhatItsEarlierDeliveryLeft. It passes with MESH_TEST_DOCKER=1 against a local registry; it skips on the seat, which has no docker socket.
Live: build-1791332299484999929 → PASS (4 of 4 compose), repository PASS.
Second commit (8b2abd0): the first check of #105 (build-1791331512096605198) ran on novox, and the build agent there was restarted mid-check by the rollout of #104. The ask was redelivered under the same id, collided with its own throwaway store (`Conflict. The container name "/build-…-store" is already in use`), and came back as gate ERROR, "the check could not run". A check now removes the containers an earlier delivery of the same id left before it raises its store. Test: `TestARedeliveredCheckRemovesWhatItsEarlierDeliveryLeft`. It passes with `MESH_TEST_DOCKER=1` against a local registry; it skips on the seat, which has no docker socket.
Live: build-1791332299484999929 → PASS (4 of 4 compose), repository PASS.
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.
After #104 merged, the re-checks of mesh-host#46 (build-1791331237244478582) and mesh-tools#19 (build-1791331238396298871) still said
gate PASS … (0 of 4 compose).Why: both checks were asked at 02:00:37–38 by the old controller process, the one replaced at 02:01:00. For a repository other than the controller, the judge is the controller the mesh runs, cloned beside the check at its registered build. At that moment that was
72d78024: #104's buildb39eaa48registered only with its plan at 02:00:53. The build log showsbeside it mesh-controller at 72d78024…judged by the controller the mesh runs. That judge predates the fix and the error rule, so it passed 0 of 4. The new process only reported the verdict.Fix: the judge being the running controller is the design, so the rule now also holds where the seat reads the verdict.
gateRaisedTheMeshreads the machines the verdict lists. A pass or warning in which any machine composes on the mesh (live-composes) and not in the gate's base is reported as error, whatever controller judged it.readGateVerdictalso reads a verdict that an older judge preceded with composition's own lines on stdout.It takes effect on the seat when build-agent is rebuilt from this. Until then, a judge at
b39eaa48or later already says error itself.Test:
TestTheSeatCallsAGateThatRaisedNoMachineAnError.Delivery
novox/mesh-controller@8b2abd08cdf8— delivered since 2026-10-07T00:44:23ZDelivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Machines
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.Merge check at
858b4672mesh/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 passedChange plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Run by the build seat on ace as
build-1791331632898670475(builds --log build-1791331632898670475).Merge check at
8b2abd08mesh/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 passedChange plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Run by the build seat on g14 as
build-1791332299484999929(builds --log build-1791332299484999929).Second commit (
8b2abd0): the first check of #105 (build-1791331512096605198) ran on novox, and the build agent there was restarted mid-check by the rollout of #104. The ask was redelivered under the same id, collided with its own throwaway store (Conflict. The container name "/build-…-store" is already in use), and came back as gate ERROR, "the check could not run". A check now removes the containers an earlier delivery of the same id left before it raises its store. Test:TestARedeliveredCheckRemovesWhatItsEarlierDeliveryLeft. It passes withMESH_TEST_DOCKER=1against a local registry; it skips on the seat, which has no docker socket.Live: build-1791332299484999929 → PASS (4 of 4 compose), repository PASS.