Follow-up to the review of #136, point 4 (non-blocking). Not to be merged before review.
Why: the look below a share for a backup repository is believed for an hour (LookKept), so a repository that the backup seat starts keeping under a share inside that hour would be exported until the next look.
What:
Every five minutes the tools (which reach the bus; the root process does not) ask seat:mesh-controller.seats which module holds node-backup on this machine, and seat:mesh-controller.data (with this machine) every path that module keeps data in. On the home server that is the restic repository and its state.
They leave it in /var/lib/nfs-server/from-bus/backup.json. A failed ask keeps the last paths and records why.
Every pass refuses a share that is at, inside, or holding one of those paths. Nothing is kept between passes.
Until a list has been learnt, what is exported stays exported and the status says the list is not known. A slow bus is no reason to unexport the library, and the walk below still guards.
invokes gains the two controller verbs.
The parser is a small copy of the mounts module's approach. Shared code belongs in mesh-sdk and moves there when a third module needs it.
Tests (seen failing first, in backup_test.go):
A share holding the repository is refused on the next pass, inside the kept hour.
A share inside the repository is refused.
A share beside it is not refused.
Without the list, the exports stay and the status says so.
Parsing: an unheld seat and a missing data list are errors.
A failed ask keeps the last paths.
Checks run locally:
go vet is clean, and go test -race passes both as a normal user and under unshare -r (uid 0).
merge-check.sh passes with MESH_GATE set to a controller built from main. The module check says ok and lists the invokes.
Nothing assigned.
Follow-up to the review of #136, point 4 (non-blocking). **Not to be merged before review.**
**Why:** the look below a share for a backup repository is believed for an hour (`LookKept`), so a repository that the backup seat starts keeping under a share inside that hour would be exported until the next look.
**What:**
- Every five minutes the tools (which reach the bus; the root process does not) ask `seat:mesh-controller.seats` which module holds `node-backup` on this machine, and `seat:mesh-controller.data` (with this machine) every path that module keeps data in. On the home server that is the restic repository and its state.
- They leave it in `/var/lib/nfs-server/from-bus/backup.json`. A failed ask keeps the last paths and records why.
- Every pass refuses a share that is at, inside, or holding one of those paths. Nothing is kept between passes.
- Until a list has been learnt, what is exported stays exported and the status says the list is not known. A slow bus is no reason to unexport the library, and the walk below still guards.
- `invokes` gains the two controller verbs.
- The parser is a small copy of the mounts module's approach. Shared code belongs in mesh-sdk and moves there when a third module needs it.
**Tests** (seen failing first, in `backup_test.go`):
- A share holding the repository is refused on the next pass, inside the kept hour.
- A share inside the repository is refused.
- A share beside it is not refused.
- Without the list, the exports stay and the status says so.
- Parsing: an unheld seat and a missing data list are errors.
- A failed ask keeps the last paths.
**Checks run locally:**
- `go vet` is clean, and `go test -race` passes both as a normal user and under `unshare -r` (uid 0).
- `merge-check.sh` passes with `MESH_GATE` set to a controller built from main. The module check says ok and lists the invokes.
Nothing assigned.
Deliverynovox/mesh-catalog@26f9c6e10deb — superseded since 2026-10-09T12:56:05Z
Covered: delivered after its walk was superseded: the walk plan-1791550565943086936, which took its walk plan-1791550565168314297 over, ended done
Delivery plan — builds nfs-server, sent nowhere; no bus step; 1 wait(s) for a person
tier 0: nfs-server
ace: waits for a person: nfs-server
nfs-server waits for a person: its policy records (module)
nfs-server provides nfs-share: its consumers are sent again after it
nfs-server keeps data (ADR 0233): what it holds is backed up before it moves
Machines
build-agent on ace: passed — carried by plan-1791552345700677791
route-proxy on ace: passed — carried by plan-1791552345700677791
Transitions
2026-10-09 12:45 (new) → proposed (announced): novox/mesh-catalog#142's head announced
2026-10-09 12:46 proposed → checked (checked): the verdict names this commit
2026-10-09 12:46 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-09 12:56 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-09 12:56 published → superseded (superseded): a newer delivery to the same trunk took over its walk
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-catalog@26f9c6e10deb` — **superseded** since 2026-10-09T12:56:05Z
**Covered**: delivered after its walk was superseded: the walk plan-1791550565943086936, which took its walk plan-1791550565168314297 over, ended done
**Delivery plan** — builds nfs-server, sent nowhere; no bus step; 1 wait(s) for a person
- tier 0: nfs-server
- ace: waits for a person: nfs-server
- nfs-server waits for a person: its policy records (module)
- nfs-server provides nfs-share: its consumers are sent again after it
- nfs-server keeps data (ADR 0233): what it holds is backed up before it moves
**Machines**
- build-agent on ace: passed — carried by plan-1791552345700677791
- route-proxy on ace: passed — carried by plan-1791552345700677791
**Transitions**
- 2026-10-09 12:45 (new) → proposed (announced): novox/mesh-catalog#142's head announced
- 2026-10-09 12:46 proposed → checked (checked): the verdict names this commit
- 2026-10-09 12:46 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-09 12:56 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-09 12:56 published → superseded (superseded): a newer delivery to the same trunk took over its walk
The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: nfs-server)
mesh/repo-check: PASS — its merge-check.sh passed
Delivery plan — builds nfs-server, sent nowhere; no bus step
tier 0: nfs-server
Run by the build seat on novox as build-1791486987691679681 (builds --log build-1791486987691679681).
--- the gate: nfs-server
nfs-server: ok, 1 tool(s), invokes seat:mesh-controller.seats, seat:mesh-controller.data, keeps state exports, reads mounts.shares, ready: server by unit every 30s; exports by its tool nfs_health every 1m0s
long-running resources without health: 0
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-08T19:18:42Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-08T19:18:42Z
modules the change moves:
- nfs-server (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 1 module(s) in 1 tier(s): nfs-server
--- its merge-check.sh (go toolchain)
ok git.novox.be/novox/mesh-catalog/checks/words 0.002s
words: 12 retired words, none in the 32531 strings of 585 files
ok git.novox.be/novox/mesh-catalog/checks/paths 0.006s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 70, as kept
testing modules/nfs-server
ok nfsserver/cmd/nfs-server 1.114s
**Merge check** at `f48a3355`
- `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: nfs-server)
- `mesh/repo-check`: **PASS** — its merge-check.sh passed
**Delivery plan** — builds nfs-server, sent nowhere; no bus step
- tier 0: nfs-server
Run by the build seat on novox as `build-1791486987691679681` (`builds --log build-1791486987691679681`).
```
--- the gate: nfs-server
nfs-server: ok, 1 tool(s), invokes seat:mesh-controller.seats, seat:mesh-controller.data, keeps state exports, reads mounts.shares, ready: server by unit every 30s; exports by its tool nfs_health every 1m0s
long-running resources without health: 0
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-08T19:18:42Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-08T19:18:42Z
modules the change moves:
- nfs-server (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 1 module(s) in 1 tier(s): nfs-server
--- its merge-check.sh (go toolchain)
ok git.novox.be/novox/mesh-catalog/checks/words 0.002s
words: 12 retired words, none in the 32531 strings of 585 files
ok git.novox.be/novox/mesh-catalog/checks/paths 0.006s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 70, as kept
testing modules/nfs-server
ok nfsserver/cmd/nfs-server 1.114s
```
mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: nfs-server)
mesh/repo-check: PASS — its merge-check.sh passed
Delivery plan — builds nfs-server, sent nowhere; no bus step
tier 0: nfs-server
Run by the build seat on ace as build-1791487413864748045 (builds --log build-1791487413864748045).
--- the gate: nfs-server
nfs-server: ok, 1 tool(s), invokes seat:mesh-controller.seats, seat:mesh-controller.data, keeps state exports, reads mounts.shares, ready: server by unit every 30s; exports by its tool nfs_health every 1m0s
long-running resources without health: 0
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-08T19:18:42Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-08T19:18:42Z
modules the change moves:
- nfs-server (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 1 module(s) in 1 tier(s): nfs-server
--- its merge-check.sh (go toolchain)
ok git.novox.be/novox/mesh-catalog/checks/words 0.002s
words: 12 retired words, none in the 32541 strings of 585 files
ok git.novox.be/novox/mesh-catalog/checks/paths 0.005s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 70, as kept
testing modules/nfs-server
ok nfsserver/cmd/nfs-server 1.378s
**Merge check** at `68b158d5`
- `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: nfs-server)
- `mesh/repo-check`: **PASS** — its merge-check.sh passed
**Delivery plan** — builds nfs-server, sent nowhere; no bus step
- tier 0: nfs-server
Run by the build seat on ace as `build-1791487413864748045` (`builds --log build-1791487413864748045`).
```
--- the gate: nfs-server
nfs-server: ok, 1 tool(s), invokes seat:mesh-controller.seats, seat:mesh-controller.data, keeps state exports, reads mounts.shares, ready: server by unit every 30s; exports by its tool nfs_health every 1m0s
long-running resources without health: 0
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-08T19:18:42Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-08T19:18:42Z
modules the change moves:
- nfs-server (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 1 module(s) in 1 tier(s): nfs-server
--- its merge-check.sh (go toolchain)
ok git.novox.be/novox/mesh-catalog/checks/words 0.002s
words: 12 retired words, none in the 32541 strings of 585 files
ok git.novox.be/novox/mesh-catalog/checks/paths 0.005s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 70, as kept
testing modules/nfs-server
ok nfsserver/cmd/nfs-server 1.378s
```
mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: nfs-server)
mesh/repo-check: PASS — its merge-check.sh passed
Delivery plan — builds nfs-server, sent nowhere; no bus step
tier 0: nfs-server
Run by the build seat on g14 as build-1791488388515673810 (builds --log build-1791488388515673810).
--- the gate: nfs-server
nfs-server: ok, 1 tool(s), invokes seat:mesh-controller.seats, seat:mesh-controller.data, keeps state exports, reads mounts.shares, ready: server by unit every 30s; exports by its tool nfs_health every 1m0s
long-running resources without health: 0
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-08T19:34:11Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-08T19:34:11Z
modules the change moves:
- nfs-server (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 1 module(s) in 1 tier(s): nfs-server
--- its merge-check.sh (go toolchain)
ok git.novox.be/novox/mesh-catalog/checks/words 0.003s
words: 12 retired words, none in the 32566 strings of 585 files
ok git.novox.be/novox/mesh-catalog/checks/paths 0.005s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 70, as kept
testing modules/nfs-server
ok nfsserver/cmd/nfs-server 1.386s
**Merge check** at `7996d75e`
- `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: nfs-server)
- `mesh/repo-check`: **PASS** — its merge-check.sh passed
**Delivery plan** — builds nfs-server, sent nowhere; no bus step
- tier 0: nfs-server
Run by the build seat on g14 as `build-1791488388515673810` (`builds --log build-1791488388515673810`).
```
--- the gate: nfs-server
nfs-server: ok, 1 tool(s), invokes seat:mesh-controller.seats, seat:mesh-controller.data, keeps state exports, reads mounts.shares, ready: server by unit every 30s; exports by its tool nfs_health every 1m0s
long-running resources without health: 0
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-08T19:34:11Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-08T19:34:11Z
modules the change moves:
- nfs-server (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 1 module(s) in 1 tier(s): nfs-server
--- its merge-check.sh (go toolchain)
ok git.novox.be/novox/mesh-catalog/checks/words 0.003s
words: 12 retired words, none in the 32566 strings of 585 files
ok git.novox.be/novox/mesh-catalog/checks/paths 0.005s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 70, as kept
testing modules/nfs-server
ok nfsserver/cmd/nfs-server 1.386s
```
mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: nfs-server)
mesh/repo-check: PASS — THE CHANGE ALTERS ITS OWN CHECK (merge-check.sh, merge-check-typescript.sh): main's version judged it; the change's judges the pull requests after it merges; its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)
Delivery plan — builds nfs-server, sent nowhere; no bus step; 1 wait(s) for a person
tier 0: nfs-server
ace: waits for a person: nfs-server
nfs-server waits for a person: its policy records (module)
nfs-server provides nfs-share: its consumers are sent again after it
nfs-server keeps data (ADR 0233): what it holds is backed up before it moves
Run by the build seat on ace as build-1791548933958064164 (builds --log build-1791548933958064164).
--- the gate: nfs-server
nfs-server: ok, 1 tool(s), invokes seat:mesh-controller.seats, seat:mesh-controller.data, keeps state exports, reads mounts.shares, ready: server by unit every 30s; exports by its tool nfs_health every 1m0s; WARNING: config ask(s) for a setting and do(es) not say whether it is trusted, so it counts as trusted: set at the terminal alone; say "trusted" false where nothing trusts it (novox/hq issue 339)
long-running resources without health: 0
files asking for a setting without saying whether it is trusted: 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-09T12:24: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-09T12:24:01Z
modules the change moves:
- nfs-server (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 1 module(s) in 1 tier(s): nfs-server
--- THE CHANGE ALTERS ITS OWN CHECK (merge-check.sh, merge-check-typescript.sh): main's version judged it; the change's judges the pull requests after it merges
--- its merge-check.sh (go toolchain)
ok git.novox.be/novox/mesh-catalog/checks/words 0.002s
words: 12 retired words, none in the 32566 strings of 585 files
ok git.novox.be/novox/mesh-catalog/checks/paths 0.006s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 70, as kept
testing modules/nfs-server
ok nfsserver/cmd/nfs-server 1.403s
--- its merge-check-typescript.sh (typescript toolchain)
**Merge check** at `7996d75e`
- `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: nfs-server)
- `mesh/repo-check`: **PASS** — THE CHANGE ALTERS ITS OWN CHECK (merge-check.sh, merge-check-typescript.sh): main's version judged it; the change's judges the pull requests after it merges; its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)
**Delivery plan** — builds nfs-server, sent nowhere; no bus step; 1 wait(s) for a person
- tier 0: nfs-server
- ace: waits for a person: nfs-server
- nfs-server waits for a person: its policy records (module)
- nfs-server provides nfs-share: its consumers are sent again after it
- nfs-server keeps data (ADR 0233): what it holds is backed up before it moves
Run by the build seat on ace as `build-1791548933958064164` (`builds --log build-1791548933958064164`).
```
--- the gate: nfs-server
nfs-server: ok, 1 tool(s), invokes seat:mesh-controller.seats, seat:mesh-controller.data, keeps state exports, reads mounts.shares, ready: server by unit every 30s; exports by its tool nfs_health every 1m0s; WARNING: config ask(s) for a setting and do(es) not say whether it is trusted, so it counts as trusted: set at the terminal alone; say "trusted" false where nothing trusts it (novox/hq issue 339)
long-running resources without health: 0
files asking for a setting without saying whether it is trusted: 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-09T12:24: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-09T12:24:01Z
modules the change moves:
- nfs-server (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 1 module(s) in 1 tier(s): nfs-server
--- THE CHANGE ALTERS ITS OWN CHECK (merge-check.sh, merge-check-typescript.sh): main's version judged it; the change's judges the pull requests after it merges
--- its merge-check.sh (go toolchain)
ok git.novox.be/novox/mesh-catalog/checks/words 0.002s
words: 12 retired words, none in the 32566 strings of 585 files
ok git.novox.be/novox/mesh-catalog/checks/paths 0.006s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 70, as kept
testing modules/nfs-server
ok nfsserver/cmd/nfs-server 1.403s
--- its merge-check-typescript.sh (typescript toolchain)
```
mesh/merge-gate pass: builds nfs-server, sent nowhere; no bus step; 1 wait(s) for a person; every machine composes with the change as it did without (4 of …
mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: nfs-server)
mesh/repo-check: PASS — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)
Delivery plan — builds nfs-server, sent nowhere; no bus step; 1 wait(s) for a person
tier 0: nfs-server
ace: waits for a person: nfs-server
nfs-server waits for a person: its policy records (module)
nfs-server provides nfs-share: its consumers are sent again after it
nfs-server keeps data (ADR 0233): what it holds is backed up before it moves
Run by the build seat on ace as build-1791549911715342467 (builds --log build-1791549911715342467).
--- the gate: nfs-server
nfs-server: ok, 1 tool(s), invokes seat:mesh-controller.seats, seat:mesh-controller.data, keeps state exports, reads mounts.shares, ready: server by unit every 30s; exports by its tool nfs_health every 1m0s; WARNING: config ask(s) for a setting and do(es) not say whether it is trusted, so it counts as trusted: set at the terminal alone; say "trusted" false where nothing trusts it (novox/hq issue 339)
long-running resources without health: 0
files asking for a setting without saying whether it is trusted: 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-09T12:43:20Z 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-09T12:43:20Z
modules the change moves:
- nfs-server (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 1 module(s) in 1 tier(s): nfs-server
--- its merge-check.sh (go toolchain)
ok git.novox.be/novox/mesh-catalog/checks/words 0.002s
words: 12 retired words, none in the 35240 strings of 615 files
ok git.novox.be/novox/mesh-catalog/checks/paths 0.006s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 70, as kept
testing modules/nfs-server
ok nfsserver/cmd/nfs-server 1.401s
--- its merge-check-typescript.sh (typescript toolchain)
**Merge check** at `26f9c6e1`
- `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: nfs-server)
- `mesh/repo-check`: **PASS** — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)
**Delivery plan** — builds nfs-server, sent nowhere; no bus step; 1 wait(s) for a person
- tier 0: nfs-server
- ace: waits for a person: nfs-server
- nfs-server waits for a person: its policy records (module)
- nfs-server provides nfs-share: its consumers are sent again after it
- nfs-server keeps data (ADR 0233): what it holds is backed up before it moves
Run by the build seat on ace as `build-1791549911715342467` (`builds --log build-1791549911715342467`).
```
--- the gate: nfs-server
nfs-server: ok, 1 tool(s), invokes seat:mesh-controller.seats, seat:mesh-controller.data, keeps state exports, reads mounts.shares, ready: server by unit every 30s; exports by its tool nfs_health every 1m0s; WARNING: config ask(s) for a setting and do(es) not say whether it is trusted, so it counts as trusted: set at the terminal alone; say "trusted" false where nothing trusts it (novox/hq issue 339)
long-running resources without health: 0
files asking for a setting without saying whether it is trusted: 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-09T12:43:20Z 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-09T12:43:20Z
modules the change moves:
- nfs-server (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 1 module(s) in 1 tier(s): nfs-server
--- its merge-check.sh (go toolchain)
ok git.novox.be/novox/mesh-catalog/checks/words 0.002s
words: 12 retired words, none in the 35240 strings of 615 files
ok git.novox.be/novox/mesh-catalog/checks/paths 0.006s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 70, as kept
testing modules/nfs-server
ok nfsserver/cmd/nfs-server 1.401s
--- its merge-check-typescript.sh (typescript toolchain)
```
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.
Follow-up to the review of #136, point 4 (non-blocking). Not to be merged before review.
Why: the look below a share for a backup repository is believed for an hour (
LookKept), so a repository that the backup seat starts keeping under a share inside that hour would be exported until the next look.What:
seat:mesh-controller.seatswhich module holdsnode-backupon this machine, andseat:mesh-controller.data(with this machine) every path that module keeps data in. On the home server that is the restic repository and its state./var/lib/nfs-server/from-bus/backup.json. A failed ask keeps the last paths and records why.invokesgains the two controller verbs.Tests (seen failing first, in
backup_test.go):Checks run locally:
go vetis clean, andgo test -racepasses both as a normal user and underunshare -r(uid 0).merge-check.shpasses withMESH_GATEset to a controller built from main. The module check says ok and lists the invokes.Nothing assigned.
Delivery
novox/mesh-catalog@26f9c6e10deb— superseded since 2026-10-09T12:56:05ZCovered: delivered after its walk was superseded: the walk plan-1791550565943086936, which took its walk plan-1791550565168314297 over, ended done
Delivery plan — builds nfs-server, sent nowhere; no bus step; 1 wait(s) for a person
Machines
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.Merge check at
f48a3355mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: nfs-server)mesh/repo-check: PASS — its merge-check.sh passedDelivery plan — builds nfs-server, sent nowhere; no bus step
Run by the build seat on novox as
build-1791486987691679681(builds --log build-1791486987691679681).Merge check at
68b158d5mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: nfs-server)mesh/repo-check: PASS — its merge-check.sh passedDelivery plan — builds nfs-server, sent nowhere; no bus step
Run by the build seat on ace as
build-1791487413864748045(builds --log build-1791487413864748045).Merge check at
7996d75emesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: nfs-server)mesh/repo-check: PASS — its merge-check.sh passedDelivery plan — builds nfs-server, sent nowhere; no bus step
Run by the build seat on g14 as
build-1791488388515673810(builds --log build-1791488388515673810).Merge check at
7996d75emesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: nfs-server)mesh/repo-check: PASS — THE CHANGE ALTERS ITS OWN CHECK (merge-check.sh, merge-check-typescript.sh): main's version judged it; the change's judges the pull requests after it merges; its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)Delivery plan — builds nfs-server, sent nowhere; no bus step; 1 wait(s) for a person
Run by the build seat on ace as
build-1791548933958064164(builds --log build-1791548933958064164).7996d75e57to26f9c6e10dMerge check at
26f9c6e1mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: nfs-server)mesh/repo-check: PASS — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)Delivery plan — builds nfs-server, sent nowhere; no bus step; 1 wait(s) for a person
Run by the build seat on ace as
build-1791549911715342467(builds --log build-1791549911715342467).