Fetch a file the declaration names by digest from the bus's object bucket and verify it before writing, and run the integration tests in the merge check (issue 1695, ADR 0486 step 2)
#126
Merged
mesh-toolsmerged 5 commits from fix/1695-fetch-by-digest into main2026-10-21 13:33:55 +00:00
ADR 0486 (accepted), the lasting fix of issue 1689: files over 64 KiB travel by sha256 digest; mesh-sdk #59 is delivered, this is the node-engine, the controller follows (1696-1698) and sends references only to nodes reporting file-references.
apply.ResolveFileReferences, after the older-than and generation checks and before system.Check: each referenced file is fetched from bucket declaration-files by name (capped at its declared size), checked with File.Verify, and put back; a missing, altered or oversize object or no bus refuses the whole declaration and nothing is written. A file already on disk that verifies is used without a fetch (offline reconcile).
The hand-run apply and reconcile resolve references too, and applyFile refuses an unresolved reference, so no path writes one empty.
link.FileObject reads by name only, through calls that can be granted without listing the bucket: DIRECT.GET of the metadata subject and an ordered consumer bound to the stream on the chunk subject; the exact grant set is in its comment and on issue 1697.
The node reports capability file-references (declaration.FileReferencesCapability).
merge-check.sh now runs go test -tags integration (it never did): takes effect for the pull requests after this one.
The object-bucket test runs against the real bus (proved by a deliberate-failure try).
Try: build-1792587699078472888 passed at fdb59bcf4e (mesh-sdk pinned to #59's merge 863a981e).
ADR 0486 (accepted), the lasting fix of issue 1689: files over 64 KiB travel by sha256 digest; mesh-sdk #59 is delivered, this is the node-engine, the controller follows (1696-1698) and sends references only to nodes reporting file-references.
- apply.ResolveFileReferences, after the older-than and generation checks and before system.Check: each referenced file is fetched from bucket declaration-files by name (capped at its declared size), checked with File.Verify, and put back; a missing, altered or oversize object or no bus refuses the whole declaration and nothing is written. A file already on disk that verifies is used without a fetch (offline reconcile).
- The hand-run `apply` and `reconcile` resolve references too, and applyFile refuses an unresolved reference, so no path writes one empty.
- link.FileObject reads by name only, through calls that can be granted without listing the bucket: DIRECT.GET of the metadata subject and an ordered consumer bound to the stream on the chunk subject; the exact grant set is in its comment and on issue 1697.
- The node reports capability file-references (declaration.FileReferencesCapability).
- merge-check.sh now runs `go test -tags integration` (it never did): takes effect for the pull requests after this one.
- The object-bucket test runs against the real bus (proved by a deliberate-failure try).
Try: build-1792587699078472888 passed at fdb59bcf4eb79ff92a017009ed2ebb8b0dbe7426 (mesh-sdk pinned to #59's merge 863a981e).
For issue 1695.
Reviewed-by: reviewer-1695@shanks at fdb59bcf4eb79ff92a017009ed2ebb8b0dbe7426
mesh/merge-gate head fdb59bcf4eb7 merged into trunk c5c4caa2a4ab — pass: builds mesh-host → ace, g14, novox, shanks; no bus step; every machine composes wi…
mesh/repo-check head fdb59bcf4eb7 merged into trunk c5c4caa2a4ab — pass: THE CHANGE ALTERS ITS OWN CHECK (merge-check.sh): main's version judged it; the ch…
Deliverynovox/mesh-host@fdb59bcf4eb7 — delivered since 2026-10-21T14:21:13Z
Delivery plan — builds mesh-host → ace, g14, novox, shanks; no bus step
tier 0: mesh-host
ace: receives mesh-host
g14: receives mesh-host
novox: receives mesh-host
shanks: receives mesh-host
grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before mesh-host is judged on its first machine
Machines
mesh-host on every machine running it: sent
mesh-controller on every machine running it: sent
build-agent on every machine running it: sent
Transitions
2026-10-21 13:04 (new) → proposed (announced): novox/mesh-host#126's head announced
2026-10-21 13:19 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-21 13:19 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-21 14:06 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-21 14:06 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 — not a failed walk that carried a later commit for it, after which it waits for a walk of its own commit
2026-10-21 14:21 delivering → delivered (done): its walk is done, carrying its own commit: 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-host@fdb59bcf4eb7` — **delivered** since 2026-10-21T14:21:13Z
**Delivery plan** — builds mesh-host → ace, g14, novox, shanks; no bus step
- tier 0: mesh-host
- ace: receives mesh-host
- g14: receives mesh-host
- novox: receives mesh-host
- shanks: receives mesh-host
- grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before mesh-host is judged on its first machine
**Machines**
- mesh-host on every machine running it: sent
- mesh-controller on every machine running it: sent
- build-agent on every machine running it: sent
**Transitions**
- 2026-10-21 13:04 (new) → proposed (announced): novox/mesh-host#126's head announced
- 2026-10-21 13:19 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-21 13:19 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-21 14:06 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-21 14:06 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 — not a failed walk that carried a later commit for it, after which it waits for a walk of its own commit
- 2026-10-21 14:21 delivering → delivered (done): its walk is done, carrying its own commit: 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`.
Merge check at fdb59bcf
Judged: head fdb59bcf4eb7 merged into trunk c5c4caa2a4ab; read beside it: mesh-catalog 90ecba4e50a3, mesh-controller f10fbda1f619, mesh-controller-main f10fbda1f619, mesh-tools e0fadc43d9dd
mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-host)
mesh/repo-check: PASS — THE CHANGE ALTERS ITS OWN CHECK (merge-check.sh): main's version judged it; the change's judges the pull requests after it merges; its merge-check.sh passed
Delivery plan — builds mesh-host → ace, g14, novox, shanks; no bus step
tier 0: mesh-host
ace: receives mesh-host
g14: receives mesh-host
novox: receives mesh-host
shanks: receives mesh-host
grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before mesh-host is judged on its first machine
read by no module's build: cmd/mesh-host/file_references_test.go, internal/apply/references_test.go, internal/link/files_nats_test.go, internal/profile/file_references_test.go, merge-check.sh
Run by the build seat on shanks as build-1792587903610385288 (builds --log build-1792587903610385288).
--- the gate: mesh-host
mesh-host: ok
long-running resources without health: 0
files asking for a setting without saying whether it is trusted: 0
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-21T13:13:20Z says they run
composing every machine as the mesh is
HELD: the vault did not answer for the core's credentials on f35; sealed by the controller until the vault holds it: mesh-provisioner-client — own/f35/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on idt; sealed by the controller until the vault holds it: mesh-provisioner-client — own/idt/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on ygcyr; sealed by the controller until the vault holds it: mesh-provisioner, mesh-provisioner-client, nats — own/ygcyr/mesh-provisioner/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/nats/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
the bus's user list leaves out 7 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, ygcyr.mesh-mail.send, node.yvbpsm, yvbpsm.brother.device. Each is a user that cannot connect until one is issued
HELD: the vault did not answer for the core's credentials on yvbpsm; sealed by the controller until the vault holds it: mesh-provisioner-client — own/yvbpsm/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on f35; sealed by the controller until the vault holds it: mesh-provisioner-client — own/f35/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on idt; sealed by the controller until the vault holds it: mesh-provisioner-client — own/idt/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on ygcyr; sealed by the controller until the vault holds it: mesh-provisioner, mesh-provisioner-client, nats — own/ygcyr/mesh-provisioner/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/nats/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
the bus's user list leaves out 7 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, ygcyr.mesh-mail.send, node.yvbpsm, yvbpsm.brother.device. Each is a user that cannot connect until one is issued
HELD: the vault did not answer for the core's credentials on yvbpsm; sealed by the controller until the vault holds it: mesh-provisioner-client — own/yvbpsm/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
composing every machine with the change
HELD: the vault did not answer for the core's credentials on f35; sealed by the controller until the vault holds it: mesh-provisioner-client — own/f35/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on idt; sealed by the controller until the vault holds it: mesh-provisioner-client — own/idt/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on ygcyr; sealed by the controller until the vault holds it: mesh-provisioner, mesh-provisioner-client, nats — own/ygcyr/mesh-provisioner/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/nats/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
the bus's user list leaves out 7 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, ygcyr.mesh-mail.send, node.yvbpsm, yvbpsm.brother.device. Each is a user that cannot connect until one is issued
HELD: the vault did not answer for the core's credentials on yvbpsm; sealed by the controller until the vault holds it: mesh-provisioner-client — own/yvbpsm/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on f35; sealed by the controller until the vault holds it: mesh-provisioner-client — own/f35/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on idt; sealed by the controller until the vault holds it: mesh-provisioner-client — own/idt/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on ygcyr; sealed by the controller until the vault holds it: mesh-provisioner, mesh-provisioner-client, nats — own/ygcyr/mesh-provisioner/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/nats/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
the bus's user list leaves out 7 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, ygcyr.mesh-mail.send, node.yvbpsm, yvbpsm.brother.device. Each is a user that cannot connect until one is issued
HELD: the vault did not answer for the core's credentials on yvbpsm; sealed by the controller until the vault holds it: mesh-provisioner-client — own/yvbpsm/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
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-21T13:13:20Z
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-config, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-provisioner, 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): mesh-host
notes:
- cmd/mesh-host/file_references_test.go, internal/apply/references_test.go, internal/link/files_nats_test.go, internal/profile/file_references_test.go and merge-check.sh read by no module's build, and rebuild nothing (issue 280)
--- THE CHANGE ALTERS ITS OWN CHECK (merge-check.sh): main's version judged it; the change's judges the pull requests after it merges
--- its merge-check.sh (go toolchain)
go: downloading git.novox.be/novox/mesh-sdk/go v0.1.14-0.20261021124357-863a981e014e
ok github.com/novox/mesh-host/cmd/mesh-bootstrap 1.019s
ok github.com/novox/mesh-host/cmd/mesh-host 6.242s
ok github.com/novox/mesh-host/examples 1.032s
ok github.com/novox/mesh-host/internal/accounts 1.459s
ok github.com/novox/mesh-host/internal/apply 5.514s
ok github.com/novox/mesh-host/internal/bootstrap 4.483s
ok github.com/novox/mesh-host/internal/bundle 1.018s
ok github.com/novox/mesh-host/internal/filling 1.746s
ok github.com/novox/mesh-host/internal/firewall 1.870s
ok github.com/novox/mesh-host/internal/identity 1.129s
ok github.com/novox/mesh-host/internal/image 1.043s
ok github.com/novox/mesh-host/internal/inventory 1.074s
ok github.com/novox/mesh-host/internal/link 11.067s
ok github.com/novox/mesh-host/internal/liveness 2.162s
ok github.com/novox/mesh-host/internal/meshcli 1.577s
ok github.com/novox/mesh-host/internal/network 1.069s
ok github.com/novox/mesh-host/internal/outward 1.053s
ok github.com/novox/mesh-host/internal/profile 1.794s
ok github.com/novox/mesh-host/internal/reachable 1.048s
ok github.com/novox/mesh-host/internal/store 1.243s
ok github.com/novox/mesh-host/internal/system 1.040s
ok github.com/novox/mesh-host/internal/tunnel 1.042s
ok github.com/novox/mesh-host/internal/units 1.036s
ok github.com/novox/mesh-host/internal/upgrade 1.180s
ok github.com/novox/mesh-host/internal/witness 4.962s
ok github.com/novox/mesh-host/packaging 1.038s
? github.com/novox/mesh-host/rootsearch [no test files]
**Merge check** at `fdb59bcf`
Judged: head `fdb59bcf4eb7` merged into trunk `c5c4caa2a4ab`; read beside it: mesh-catalog `90ecba4e50a3`, mesh-controller `f10fbda1f619`, mesh-controller-main `f10fbda1f619`, mesh-tools `e0fadc43d9dd`
- `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-host)
- `mesh/repo-check`: **PASS** — THE CHANGE ALTERS ITS OWN CHECK (merge-check.sh): main's version judged it; the change's judges the pull requests after it merges; its merge-check.sh passed
**Delivery plan** — builds mesh-host → ace, g14, novox, shanks; no bus step
- tier 0: mesh-host
- ace: receives mesh-host
- g14: receives mesh-host
- novox: receives mesh-host
- shanks: receives mesh-host
- grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before mesh-host is judged on its first machine
- read by no module's build: cmd/mesh-host/file_references_test.go, internal/apply/references_test.go, internal/link/files_nats_test.go, internal/profile/file_references_test.go, merge-check.sh
Run by the build seat on shanks as `build-1792587903610385288` (`builds --log build-1792587903610385288`).
```
--- the gate: mesh-host
mesh-host: ok
long-running resources without health: 0
files asking for a setting without saying whether it is trusted: 0
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-21T13:13:20Z says they run
composing every machine as the mesh is
HELD: the vault did not answer for the core's credentials on f35; sealed by the controller until the vault holds it: mesh-provisioner-client — own/f35/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on idt; sealed by the controller until the vault holds it: mesh-provisioner-client — own/idt/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on ygcyr; sealed by the controller until the vault holds it: mesh-provisioner, mesh-provisioner-client, nats — own/ygcyr/mesh-provisioner/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/nats/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
the bus's user list leaves out 7 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, ygcyr.mesh-mail.send, node.yvbpsm, yvbpsm.brother.device. Each is a user that cannot connect until one is issued
HELD: the vault did not answer for the core's credentials on yvbpsm; sealed by the controller until the vault holds it: mesh-provisioner-client — own/yvbpsm/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on f35; sealed by the controller until the vault holds it: mesh-provisioner-client — own/f35/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on idt; sealed by the controller until the vault holds it: mesh-provisioner-client — own/idt/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on ygcyr; sealed by the controller until the vault holds it: mesh-provisioner, mesh-provisioner-client, nats — own/ygcyr/mesh-provisioner/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/nats/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
the bus's user list leaves out 7 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, ygcyr.mesh-mail.send, node.yvbpsm, yvbpsm.brother.device. Each is a user that cannot connect until one is issued
HELD: the vault did not answer for the core's credentials on yvbpsm; sealed by the controller until the vault holds it: mesh-provisioner-client — own/yvbpsm/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
composing every machine with the change
HELD: the vault did not answer for the core's credentials on f35; sealed by the controller until the vault holds it: mesh-provisioner-client — own/f35/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on idt; sealed by the controller until the vault holds it: mesh-provisioner-client — own/idt/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on ygcyr; sealed by the controller until the vault holds it: mesh-provisioner, mesh-provisioner-client, nats — own/ygcyr/mesh-provisioner/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/nats/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
the bus's user list leaves out 7 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, ygcyr.mesh-mail.send, node.yvbpsm, yvbpsm.brother.device. Each is a user that cannot connect until one is issued
HELD: the vault did not answer for the core's credentials on yvbpsm; sealed by the controller until the vault holds it: mesh-provisioner-client — own/yvbpsm/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on f35; sealed by the controller until the vault holds it: mesh-provisioner-client — own/f35/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on idt; sealed by the controller until the vault holds it: mesh-provisioner-client — own/idt/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on ygcyr; sealed by the controller until the vault holds it: mesh-provisioner, mesh-provisioner-client, nats — own/ygcyr/mesh-provisioner/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/nats/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
the bus's user list leaves out 7 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, ygcyr.mesh-mail.send, node.yvbpsm, yvbpsm.brother.device. Each is a user that cannot connect until one is issued
HELD: the vault did not answer for the core's credentials on yvbpsm; sealed by the controller until the vault holds it: mesh-provisioner-client — own/yvbpsm/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
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-21T13:13:20Z
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-config, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-provisioner, 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): mesh-host
notes:
- cmd/mesh-host/file_references_test.go, internal/apply/references_test.go, internal/link/files_nats_test.go, internal/profile/file_references_test.go and merge-check.sh read by no module's build, and rebuild nothing (issue 280)
--- THE CHANGE ALTERS ITS OWN CHECK (merge-check.sh): main's version judged it; the change's judges the pull requests after it merges
--- its merge-check.sh (go toolchain)
go: downloading git.novox.be/novox/mesh-sdk/go v0.1.14-0.20261021124357-863a981e014e
ok github.com/novox/mesh-host/cmd/mesh-bootstrap 1.019s
ok github.com/novox/mesh-host/cmd/mesh-host 6.242s
ok github.com/novox/mesh-host/examples 1.032s
ok github.com/novox/mesh-host/internal/accounts 1.459s
ok github.com/novox/mesh-host/internal/apply 5.514s
ok github.com/novox/mesh-host/internal/bootstrap 4.483s
ok github.com/novox/mesh-host/internal/bundle 1.018s
ok github.com/novox/mesh-host/internal/filling 1.746s
ok github.com/novox/mesh-host/internal/firewall 1.870s
ok github.com/novox/mesh-host/internal/identity 1.129s
ok github.com/novox/mesh-host/internal/image 1.043s
ok github.com/novox/mesh-host/internal/inventory 1.074s
ok github.com/novox/mesh-host/internal/link 11.067s
ok github.com/novox/mesh-host/internal/liveness 2.162s
ok github.com/novox/mesh-host/internal/meshcli 1.577s
ok github.com/novox/mesh-host/internal/network 1.069s
ok github.com/novox/mesh-host/internal/outward 1.053s
ok github.com/novox/mesh-host/internal/profile 1.794s
ok github.com/novox/mesh-host/internal/reachable 1.048s
ok github.com/novox/mesh-host/internal/store 1.243s
ok github.com/novox/mesh-host/internal/system 1.040s
ok github.com/novox/mesh-host/internal/tunnel 1.042s
ok github.com/novox/mesh-host/internal/units 1.036s
ok github.com/novox/mesh-host/internal/upgrade 1.180s
ok github.com/novox/mesh-host/internal/witness 4.962s
ok github.com/novox/mesh-host/packaging 1.038s
? github.com/novox/mesh-host/rootsearch [no test files]
```
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.
ADR 0486 (accepted), the lasting fix of issue 1689: files over 64 KiB travel by sha256 digest; mesh-sdk #59 is delivered, this is the node-engine, the controller follows (1696-1698) and sends references only to nodes reporting file-references.
applyandreconcileresolve references too, and applyFile refuses an unresolved reference, so no path writes one empty.go test -tags integration(it never did): takes effect for the pull requests after this one.Try: build-1792587699078472888 passed at
fdb59bcf4e(mesh-sdk pinned to #59's merge 863a981e).For issue 1695.
Reviewed-by: reviewer-1695@shanks at
fdb59bcf4eDelivery
novox/mesh-host@fdb59bcf4eb7— delivered since 2026-10-21T14:21:13ZDelivery plan — builds mesh-host → 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
fdb59bcfJudged: head
fdb59bcf4eb7merged into trunkc5c4caa2a4ab; read beside it: mesh-catalog90ecba4e50a3, mesh-controllerf10fbda1f619, mesh-controller-mainf10fbda1f619, mesh-toolse0fadc43d9ddmesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-host)mesh/repo-check: PASS — THE CHANGE ALTERS ITS OWN CHECK (merge-check.sh): main's version judged it; the change's judges the pull requests after it merges; its merge-check.sh passedDelivery plan — builds mesh-host → ace, g14, novox, shanks; no bus step
Run by the build seat on shanks as
build-1792587903610385288(builds --log build-1792587903610385288).