Why. Every controller check that landed on the control node ran past the suite's 30-minute timeout. Its store-free packages ran as fast as anywhere (catalogue 4.4 s vs 3.7 s, lease 17.7 s vs 17.7 s), but the store-bound ones ran 5-7x slower (identity 234-256 s vs 44-54 s, inventory 1744 s vs 230-285 s). The throwaway store flushes to a disk that the mesh's own store, bus and forge keep busy, and it wrote 16-20 GB per check. Separately, a holder recreated mid-check left its check's store and bus running when the redelivery went to another machine. Eleven such pairs were still running across the four machines.
What.
internal/builder: the throwaway store is raised with -c fsync=off -c synchronous_commit=off -c full_page_writes=off (StoreSettings). It is the same release; only crash safety is off, and the store lives for one check.
internal/builder.RemoveLeftBehind and the holder's start (cmd/mesh-builder): before taking anything, a holder removes every container labelled mesh.build=build-<n>. Other ids are left alone: check-here-… and tests.
Tests.
TestTheThrowawayStoreFlushesNothing: the settings, and with MESH_TEST_DOCKER=1 a raised store reads them back as off (run on the laptop: pass).
TestAStartingHolderRemovesWhatEarlierHoldersLeftAndNothingElse: only ids of the seat's shape are removed.
TestAHolderStartingRemovesWhatEarlierBuildsLeftHere: the holder's start sweeps through its runner, and an unreachable runtime does not stop it.
Measured on the laptop (fast, idle disk): identity, licences, link, store and inventory wrote 604 MB instead of 2.07 GB and took 43 s instead of 47 s. The real proof is the next controller check that lands on the control node.
The rollout that ships this recreates every build agent, and that clears the existing strays.
novox/hq issue 306.
**Why.** Every controller check that landed on the control node ran past the suite's 30-minute timeout. Its store-free packages ran as fast as anywhere (catalogue 4.4 s vs 3.7 s, lease 17.7 s vs 17.7 s), but the store-bound ones ran 5-7x slower (identity 234-256 s vs 44-54 s, inventory 1744 s vs 230-285 s). The throwaway store flushes to a disk that the mesh's own store, bus and forge keep busy, and it wrote 16-20 GB per check. Separately, a holder recreated mid-check left its check's store and bus running when the redelivery went to another machine. Eleven such pairs were still running across the four machines.
**What.**
- `internal/builder`: the throwaway store is raised with `-c fsync=off -c synchronous_commit=off -c full_page_writes=off` (`StoreSettings`). It is the same release; only crash safety is off, and the store lives for one check.
- `internal/builder.RemoveLeftBehind` and the holder's start (`cmd/mesh-builder`): before taking anything, a holder removes every container labelled `mesh.build=build-<n>`. Other ids are left alone: `check-here-…` and tests.
**Tests.**
- `TestTheThrowawayStoreFlushesNothing`: the settings, and with `MESH_TEST_DOCKER=1` a raised store reads them back as `off` (run on the laptop: pass).
- `TestAStartingHolderRemovesWhatEarlierHoldersLeftAndNothingElse`: only ids of the seat's shape are removed.
- `TestAHolderStartingRemovesWhatEarlierBuildsLeftHere`: the holder's start sweeps through its runner, and an unreachable runtime does not stop it.
Measured on the laptop (fast, idle disk): identity, licences, link, store and inventory wrote 604 MB instead of 2.07 GB and took 43 s instead of 47 s. The real proof is the next controller check that lands on the control node.
The rollout that ships this recreates every build agent, and that clears the existing strays.
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…
On the control node the store-bound packages of the controller's suite ran
five to seven times slower than on any other holder, and every controller
check that landed there ran past the suite's thirty minutes: a throwaway
store flushing to a disk the mesh's own store, bus and forge keep busy.
A store that lives for one check needs no crash safety.
A holder recreated mid-check left the check's store and bus running, and
the redelivery went to another machine, so nothing removed them: eleven
pairs across four machines. A starting holder has taken nothing, so every
container labelled with an ask of the seat is an earlier holder's.
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 3m40s
mesh-controller on the rest running it: sent
build-agent on ace: passed — healthy 3 times over 3m45s
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 08:21 (new) → proposed (announced): novox/mesh-controller#133's head announced
2026-10-08 08:43 proposed → checked (checked): the verdict names this commit
2026-10-08 08:43 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-08 08:46 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 08:46 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 09:02 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@85b2a1855b83` — **delivered** since 2026-10-08T09:02:19Z
**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 3m40s
- mesh-controller on the rest running it: sent
- build-agent on ace: passed — healthy 3 times over 3m45s
- 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 08:21 (new) → proposed (announced): novox/mesh-controller#133's head announced
- 2026-10-08 08:43 proposed → checked (checked): the verdict names this commit
- 2026-10-08 08:43 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-08 08:46 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 08:46 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 09:02 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 g14 as build-1791448621594897977 (builds --log build-1791448621594897977).
--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 46 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-08T08:34:32Z 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-08T08:34:32Z
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.033s
ok github.com/novox/mesh-controller/cmd/mesh-controller 260.374s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.015s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.020s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.018s
ok github.com/novox/mesh-controller/examples/route-proxy 1.181s
ok github.com/novox/mesh-controller/internal/artifacts 1.043s
ok github.com/novox/mesh-controller/internal/broker 2.352s
ok github.com/novox/mesh-controller/internal/builder 1.270s
ok github.com/novox/mesh-controller/internal/catalogue 3.767s
ok github.com/novox/mesh-controller/internal/conditions 1.964s
ok github.com/novox/mesh-controller/internal/envfile 1.021s
ok github.com/novox/mesh-controller/internal/facts 1.022s
ok github.com/novox/mesh-controller/internal/identity 6.295s
ok github.com/novox/mesh-controller/internal/inventory 122.603s
ok github.com/novox/mesh-controller/internal/lease 17.692s
ok github.com/novox/mesh-controller/internal/licences 5.317s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.011s
ok github.com/novox/mesh-controller/internal/link 52.979s
ok github.com/novox/mesh-controller/internal/lint 1.771s
ok github.com/novox/mesh-controller/internal/outward 1.038s
ok github.com/novox/mesh-controller/internal/overlay 1.023s
ok github.com/novox/mesh-controller/internal/secrets 1.378s
ok github.com/novox/mesh-controller/internal/store 3.791s
ok github.com/novox/mesh-controller/internal/testbus 1.170s
ok github.com/novox/mesh-controller/internal/token 1.015s
**Merge check** at `85b2a185`
- `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-1791448621594897977` (`builds --log build-1791448621594897977`).
```
--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 46 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-08T08:34:32Z 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-08T08:34:32Z
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.033s
ok github.com/novox/mesh-controller/cmd/mesh-controller 260.374s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.015s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.020s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.018s
ok github.com/novox/mesh-controller/examples/route-proxy 1.181s
ok github.com/novox/mesh-controller/internal/artifacts 1.043s
ok github.com/novox/mesh-controller/internal/broker 2.352s
ok github.com/novox/mesh-controller/internal/builder 1.270s
ok github.com/novox/mesh-controller/internal/catalogue 3.767s
ok github.com/novox/mesh-controller/internal/conditions 1.964s
ok github.com/novox/mesh-controller/internal/envfile 1.021s
ok github.com/novox/mesh-controller/internal/facts 1.022s
ok github.com/novox/mesh-controller/internal/identity 6.295s
ok github.com/novox/mesh-controller/internal/inventory 122.603s
ok github.com/novox/mesh-controller/internal/lease 17.692s
ok github.com/novox/mesh-controller/internal/licences 5.317s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.011s
ok github.com/novox/mesh-controller/internal/link 52.979s
ok github.com/novox/mesh-controller/internal/lint 1.771s
ok github.com/novox/mesh-controller/internal/outward 1.038s
ok github.com/novox/mesh-controller/internal/overlay 1.023s
ok github.com/novox/mesh-controller/internal/secrets 1.378s
ok github.com/novox/mesh-controller/internal/store 3.791s
ok github.com/novox/mesh-controller/internal/testbus 1.170s
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 ace as build-1791447707009621435 (builds --log build-1791447707009621435).
--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 46 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-08T08:25:32Z 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-08T08:25:32Z
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.035s
ok github.com/novox/mesh-controller/cmd/mesh-controller 491.946s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.011s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.013s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.009s
ok github.com/novox/mesh-controller/examples/route-proxy 1.156s
ok github.com/novox/mesh-controller/internal/artifacts 1.081s
ok github.com/novox/mesh-controller/internal/broker 2.402s
ok github.com/novox/mesh-controller/internal/builder 1.355s
ok github.com/novox/mesh-controller/internal/catalogue 3.806s
ok github.com/novox/mesh-controller/internal/conditions 2.022s
ok github.com/novox/mesh-controller/internal/envfile 1.065s
ok github.com/novox/mesh-controller/internal/facts 1.105s
ok github.com/novox/mesh-controller/internal/identity 41.449s
ok github.com/novox/mesh-controller/internal/inventory 317.611s
ok github.com/novox/mesh-controller/internal/lease 17.734s
ok github.com/novox/mesh-controller/internal/licences 40.470s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.058s
ok github.com/novox/mesh-controller/internal/link 76.088s
ok github.com/novox/mesh-controller/internal/lint 1.845s
ok github.com/novox/mesh-controller/internal/outward 1.084s
ok github.com/novox/mesh-controller/internal/overlay 1.111s
ok github.com/novox/mesh-controller/internal/secrets 1.432s
ok github.com/novox/mesh-controller/internal/store 11.793s
ok github.com/novox/mesh-controller/internal/testbus 1.164s
ok github.com/novox/mesh-controller/internal/token 1.016s
**Merge check** at `85b2a185`
- `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-1791447707009621435` (`builds --log build-1791447707009621435`).
```
--- the gate: build-agent, mesh-controller, route-proxy
mesh-controller: ok, 46 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-08T08:25:32Z 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-08T08:25:32Z
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.035s
ok github.com/novox/mesh-controller/cmd/mesh-controller 491.946s
ok github.com/novox/mesh-controller/examples/objectstore-provisioner 1.011s
ok github.com/novox/mesh-controller/examples/postgres-provisioner 1.013s
ok github.com/novox/mesh-controller/examples/redis-provisioner 1.009s
ok github.com/novox/mesh-controller/examples/route-proxy 1.156s
ok github.com/novox/mesh-controller/internal/artifacts 1.081s
ok github.com/novox/mesh-controller/internal/broker 2.402s
ok github.com/novox/mesh-controller/internal/builder 1.355s
ok github.com/novox/mesh-controller/internal/catalogue 3.806s
ok github.com/novox/mesh-controller/internal/conditions 2.022s
ok github.com/novox/mesh-controller/internal/envfile 1.065s
ok github.com/novox/mesh-controller/internal/facts 1.105s
ok github.com/novox/mesh-controller/internal/identity 41.449s
ok github.com/novox/mesh-controller/internal/inventory 317.611s
ok github.com/novox/mesh-controller/internal/lease 17.734s
ok github.com/novox/mesh-controller/internal/licences 40.470s
ok github.com/novox/mesh-controller/internal/licences/adapters 1.058s
ok github.com/novox/mesh-controller/internal/link 76.088s
ok github.com/novox/mesh-controller/internal/lint 1.845s
ok github.com/novox/mesh-controller/internal/outward 1.084s
ok github.com/novox/mesh-controller/internal/overlay 1.111s
ok github.com/novox/mesh-controller/internal/secrets 1.432s
ok github.com/novox/mesh-controller/internal/store 11.793s
ok github.com/novox/mesh-controller/internal/testbus 1.164s
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.
novox/hq issue 306.
Why. Every controller check that landed on the control node ran past the suite's 30-minute timeout. Its store-free packages ran as fast as anywhere (catalogue 4.4 s vs 3.7 s, lease 17.7 s vs 17.7 s), but the store-bound ones ran 5-7x slower (identity 234-256 s vs 44-54 s, inventory 1744 s vs 230-285 s). The throwaway store flushes to a disk that the mesh's own store, bus and forge keep busy, and it wrote 16-20 GB per check. Separately, a holder recreated mid-check left its check's store and bus running when the redelivery went to another machine. Eleven such pairs were still running across the four machines.
What.
internal/builder: the throwaway store is raised with-c fsync=off -c synchronous_commit=off -c full_page_writes=off(StoreSettings). It is the same release; only crash safety is off, and the store lives for one check.internal/builder.RemoveLeftBehindand the holder's start (cmd/mesh-builder): before taking anything, a holder removes every container labelledmesh.build=build-<n>. Other ids are left alone:check-here-…and tests.Tests.
TestTheThrowawayStoreFlushesNothing: the settings, and withMESH_TEST_DOCKER=1a raised store reads them back asoff(run on the laptop: pass).TestAStartingHolderRemovesWhatEarlierHoldersLeftAndNothingElse: only ids of the seat's shape are removed.TestAHolderStartingRemovesWhatEarlierBuildsLeftHere: the holder's start sweeps through its runner, and an unreachable runtime does not stop it.Measured on the laptop (fast, idle disk): identity, licences, link, store and inventory wrote 604 MB instead of 2.07 GB and took 43 s instead of 47 s. The real proof is the next controller check that lands on the control node.
The rollout that ships this recreates every build agent, and that clears the existing strays.
Delivery
novox/mesh-controller@85b2a1855b83— delivered since 2026-10-08T09:02:19ZDelivery 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
85b2a185mesh/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-1791448621594897977(builds --log build-1791448621594897977).Merge check at
85b2a185mesh/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-1791447707009621435(builds --log build-1791447707009621435).