mesh-delivery is the delivery's seat and the module holding it. The module answers the seat's verbs with tools of the same names. The console's discovery index keyed seat verbs and module tools in one namespace (<prefix>.<name>), so the module's mesh-delivery.deliveries took the key and the seat was listed with no verbs. Resolution then always took the seat first, so mesh-delivery.deliveries and novox/mesh-delivery.delivery_status were both refused with "the seat mesh-delivery has no verb …; it has". The controller's own seat record was fine: mesh-controller.tools lists its ten verbs.
Seat verbs are keyed seat:<seat>.<verb>, apart from module tools. The endpoint loop is now indexOfEndpoints, so it can be tested without a bus.
When a seat and a module share a name, the address goes to the module's tool in two cases: the seat lacks the verb, or a machine is named for a seat held once for the mesh. A verb-less seat says its holder announced none.
TestASeatAndAModuleOfOneNameAreEachReached launches no bundle, so merge-check.sh runs it even where the console package is otherwise skipped (no node or SDK in the toolchain).
Checked with mesh-controller check-here (mesh-controller#104) in the seat's environment: mesh/repo-check PASS. The gate shows 0 of 4 until mesh-controller#104 is rolled out (hq issue 285).
novox/hq issue 287 (renumbered from 284).
`mesh-delivery` is the delivery's seat and the module holding it. The module answers the seat's verbs with tools of the same names. The console's discovery index keyed seat verbs and module tools in one namespace (`<prefix>.<name>`), so the module's `mesh-delivery.deliveries` took the key and the seat was listed with **no verbs**. Resolution then always took the seat first, so `mesh-delivery.deliveries` and `novox/mesh-delivery.delivery_status` were both refused with "the seat mesh-delivery has no verb …; it has". The controller's own seat record was fine: `mesh-controller.tools` lists its ten verbs.
- Seat verbs are keyed `seat:<seat>.<verb>`, apart from module tools. The endpoint loop is now `indexOfEndpoints`, so it can be tested without a bus.
- When a seat and a module share a name, the address goes to the module's tool in two cases: the seat lacks the verb, or a machine is named for a seat held once for the mesh. A verb-less seat says its holder announced none.
- `TestASeatAndAModuleOfOneNameAreEachReached` launches no bundle, so `merge-check.sh` runs it even where the console package is otherwise skipped (no node or SDK in the toolchain).
Checked with `mesh-controller check-here` (mesh-controller#104) in the seat's environment: `mesh/repo-check` PASS. The gate shows 0 of 4 until mesh-controller#104 is rolled out (hq issue 285).
novox/hq issue 287 (renumbered from 284).
mesh/merge-gate pass: builds mesh-tools, node-tools → ace, g14, novox, shanks; no bus step; every machine composes with the change as it did without (0 of …
mesh-delivery is the delivery's seat and the module holding it, which answers the seat's verbs with
tools of the same names. Discovery keyed the seat's verbs and the module's tools in one namespace, so
the module's tool took the key and the seat was listed with no verb; and every address with the name
resolved to the seat, so neither the seat's verbs nor the module's tools could be called. The keys are
apart, and `<node>/<module>.<tool>` reaches the module when the module serves it (novox/hq issue 284).
Deliverynovox/mesh-tools@41911f7f1564 — delivered since 2026-10-07T00:34:26Z
Delivery plan — builds mesh-tools, node-tools → ace, g14, novox, shanks; no bus step
tier 0: mesh-tools, node-tools
ace: receives node-tools
g14: receives node-tools
novox: receives node-tools
shanks: receives node-tools
node-tools provides mcp-endpoint: its consumers are sent again after it
Machines
mesh-tools on every machine running it: sent
node-tools on ace: passed — healthy 3 times over 2m29s
node-tools on the rest running it: sent
Transitions
2026-10-07 00:07 (new) → proposed (announced): novox/mesh-tools#19's head announced
2026-10-07 00:11 proposed → checked (checked): the verdict names this commit
2026-10-07 00:11 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-07 00:28 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-07 00:28 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path
2026-10-07 00:34 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-tools@41911f7f1564` — **delivered** since 2026-10-07T00:34:26Z
**Delivery plan** — builds mesh-tools, node-tools → ace, g14, novox, shanks; no bus step
- tier 0: mesh-tools, node-tools
- ace: receives node-tools
- g14: receives node-tools
- novox: receives node-tools
- shanks: receives node-tools
- node-tools provides mcp-endpoint: its consumers are sent again after it
**Machines**
- mesh-tools on every machine running it: sent
- node-tools on ace: passed — healthy 3 times over 2m29s
- node-tools on the rest running it: sent
**Transitions**
- 2026-10-07 00:07 (new) → proposed (announced): novox/mesh-tools#19's head announced
- 2026-10-07 00:11 proposed → checked (checked): the verdict names this commit
- 2026-10-07 00:11 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-07 00:28 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-07 00:28 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path
- 2026-10-07 00:34 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/merge-gate: PASS — every machine composes with the change as it did without (0 of 4 compose) (modules: mesh-tools, node-tools)
mesh/repo-check: PASS — its merge-check.sh passed
Change plan — builds mesh-tools, node-tools → ace, g14, novox, shanks; no bus step
tier 0: mesh-tools, node-tools
ace: receives node-tools
g14: receives node-tools
novox: receives node-tools
shanks: receives node-tools
node-tools provides mcp-endpoint: its consumers are sent again after it
Run by the build seat on novox as build-1791330297667271498 (builds --log build-1791330297667271498).
--- the gate: mesh-tools, node-tools
mesh-tools: ok
node-tools: ok, invokes every tool
2 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-06T23:08:02Z says they run
composing every machine as the mesh is
composing every machine with the change
merge gate: PASS — every machine composes with the change as it did without (0 of 4 compose)
judged by controller development build against the facts of 2026-10-06T23:08:02Z
machines:
- a machine (f35): does not compose
- holds mesh-dns-resolver (idt): does not compose
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): does not compose
- a machine (yvbpsm): does not compose
a merge would rebuild 2 module(s) in 1 tier(s): mesh-tools, node-tools
notes:
- the mesh's settings of nzbget are not kept: refused: nzbget on the mesh cannot compose with the layer "the mesh" — nzbget has a file that says ${setting:username}, and nothing sets "username" for it — an operator's value is the assignment's, never the definition's (novox/hq ADR 0112): `settings set nzbget <file>` with {"username": …}; set today: pgid, puid
- the mesh's settings of qbittorrent are not kept: refused: qbittorrent on the mesh cannot compose with the layer "the mesh" — qbittorrent has a file that says ${setting:username}, and nothing sets "username" for it — an operator's value is the assignment's, never the definition's (novox/hq ADR 0112): `settings set qbittorrent <file>` with {"username": …}; set today: pgid, puid
- a machine (f35)'s given broker for fail2ban is not kept: fail2ban does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- a machine (f35)'s given broker for nftables is not kept: nftables does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s settings of plex are not kept: refused: plex on idt cannot compose with the layer "idt" — plex places the access "formula-1" at withheld, which is not an absolute path
- holds mesh-dns-resolver (idt)'s given broker for baserow is not kept: baserow does not declare "broker" as an own secret; it declares: admin — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for bazarr is not kept: bazarr does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for bookshelf is not kept: bookshelf does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for fail2ban is not kept: fail2ban does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for grafana is not kept: grafana does not declare "broker" as an own secret; it declares: admin — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for home-assistant is not kept: home-assistant does not declare "broker" as an own secret; it declares: token — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for icecast is not kept: icecast does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for influxdb is not kept: influxdb does not declare "broker" as an own secret; it declares: admin, admin-token — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for jackett is not kept: jackett does not declare "broker" as an own secret; it declares: api-key — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for kometa is not kept: kometa does not declare "broker" as an own secret; it declares: tmdb — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for letta is not kept: letta does not declare "broker" as an own secret; it declares: openai-api-key, server-password — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for lidarr is not kept: lidarr does not declare "broker" as an own secret; it declares: api-key — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for mosquitto is not kept: mosquitto does not declare "broker" as an own secret; it declares: admin — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for mssql is not kept: mssql does not declare "broker" as an own secret; it declares: reader, sa — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for nftables is not kept: nftables does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for nodered is not kept: nodered does not declare "broker" as an own secret; it declares: admin, api-token — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for nzbget is not kept: nzbget does not declare "broker" as an own secret; it declares: password — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for ombi is not kept: ombi does not declare "broker" as an own secret; it declares: api-key — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for plex is not kept: plex does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for postgres is not kept: postgres does not declare "broker" as an own secret; it declares: reader, superuser — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for qbittorrent is not kept: qbittorrent does not declare "broker" as an own secret; it declares: password — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for radarr is not kept: radarr does not declare "broker" as an own secret; it declares: api-key — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for redis is not kept: redis does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for searxng is not kept: searxng does not declare "broker" as an own secret; it declares: secret — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for sonarr is not kept: sonarr does not declare "broker" as an own secret; it declares: api-key — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for tautulli is not kept: tautulli does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for unifi is not kept: unifi does not declare "broker" as an own secret; it declares: controller — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for fail2ban is not kept: fail2ban does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for gitea is not kept: gitea does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for keycloak is not kept: keycloak does not declare "broker" as an own secret; it declares: admin — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for mailu is not kept: mailu does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for mesh-catalog is not kept: mesh-catalog does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for mesh-vault is not kept: mesh-vault does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for minio is not kept: minio does not declare "broker" as an own secret; it declares: root — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for mongodb is not kept: mongodb does not declare "broker" as an own secret; it declares: root — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for mssql is not kept: mssql does not declare "broker" as an own secret; it declares: reader, sa — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for nextcloud is not kept: nextcloud does not declare "broker" as an own secret; it declares: admin — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for nftables is not kept: nftables does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for postgres is not kept: postgres does not declare "broker" as an own secret; it declares: reader, superuser — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for records is not kept: records does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for umami is not kept: umami does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- a machine (yvbpsm)'s given broker for fail2ban is not kept: fail2ban does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- a machine (yvbpsm)'s given broker for lab is not kept: lab does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- a machine (yvbpsm)'s given broker for nftables is not kept: nftables does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- a machine (f35) composes on the mesh and not as the snapshot raised it: build-agent on f35 has no bus credential: nothing was issued for f35.build-agent, and a push would seal a placeholder its process cannot read (novox/hq issue 203). `module issue build-agent --node f35`, then push again — judged by what the change adds
- holds mesh-dns-resolver (idt) composes on the mesh and not as the snapshot raised it: route-proxy on idt has no bus credential: nothing was issued for idt.route-proxy, and a push would seal a placeholder its process cannot read (novox/hq issue 203). `module issue route-proxy --node idt`, then push again — judged by what the change adds
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr) composes on the mesh and not as the snapshot raised it: distribution on ygcyr has no bus credential: nothing was issued for ygcyr.distribution, and a push would seal a placeholder its process cannot read (novox/hq issue 203). `module issue distribution --node ygcyr`, then push again — judged by what the change adds
- a machine (yvbpsm) composes on the mesh and not as the snapshot raised it: build-agent on yvbpsm has no bus credential: nothing was issued for yvbpsm.build-agent, and a push would seal a placeholder its process cannot read (novox/hq issue 203). `module issue build-agent --node yvbpsm`, then push again — judged by what the change adds
--- its merge-check.sh (go toolchain)
go: downloading github.com/nats-io/nats-server/v2 v2.11.17
go: downloading golang.org/x/time v0.15.0
go: downloading github.com/minio/highwayhash v1.0.4
go: downloading github.com/antithesishq/antithesis-sdk-go v0.7.0-default-no-op
go: downloading github.com/nats-io/jwt/v2 v2.8.1
NOT TESTED HERE: internal/runtime and internal/console launch bundles that need node and @novox/mesh-sdk
? github.com/novox/mesh-tools/node-tools/cmd/node-tools [no test files]
ok github.com/novox/mesh-tools/node-tools/internal/alive 1.189s
ok github.com/novox/mesh-tools/node-tools/internal/announce 4.369s
ok github.com/novox/mesh-tools/node-tools/internal/bus 1.320s
ok github.com/novox/mesh-tools/node-tools/internal/launch 1.068s
ok github.com/novox/mesh-tools/node-tools/internal/meshtest 1.135s
? github.com/novox/mesh-tools/node-tools/internal/wire [no test files]
ok github.com/novox/mesh-tools/node-tools/internal/console 0.004s
NOT TESTED HERE: node-tools/src (TypeScript) needs @novox/mesh-sdk from the package registry
**Merge check** at `dac4d423`
- `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (0 of 4 compose) (modules: mesh-tools, node-tools)
- `mesh/repo-check`: **PASS** — its merge-check.sh passed
**Change plan** — builds mesh-tools, node-tools → ace, g14, novox, shanks; no bus step
- tier 0: mesh-tools, node-tools
- ace: receives node-tools
- g14: receives node-tools
- novox: receives node-tools
- shanks: receives node-tools
- node-tools provides mcp-endpoint: its consumers are sent again after it
Run by the build seat on novox as `build-1791330297667271498` (`builds --log build-1791330297667271498`).
```
--- the gate: mesh-tools, node-tools
mesh-tools: ok
node-tools: ok, invokes every tool
2 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-06T23:08:02Z says they run
composing every machine as the mesh is
composing every machine with the change
merge gate: PASS — every machine composes with the change as it did without (0 of 4 compose)
judged by controller development build against the facts of 2026-10-06T23:08:02Z
machines:
- a machine (f35): does not compose
- holds mesh-dns-resolver (idt): does not compose
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): does not compose
- a machine (yvbpsm): does not compose
a merge would rebuild 2 module(s) in 1 tier(s): mesh-tools, node-tools
notes:
- the mesh's settings of nzbget are not kept: refused: nzbget on the mesh cannot compose with the layer "the mesh" — nzbget has a file that says ${setting:username}, and nothing sets "username" for it — an operator's value is the assignment's, never the definition's (novox/hq ADR 0112): `settings set nzbget <file>` with {"username": …}; set today: pgid, puid
- the mesh's settings of qbittorrent are not kept: refused: qbittorrent on the mesh cannot compose with the layer "the mesh" — qbittorrent has a file that says ${setting:username}, and nothing sets "username" for it — an operator's value is the assignment's, never the definition's (novox/hq ADR 0112): `settings set qbittorrent <file>` with {"username": …}; set today: pgid, puid
- a machine (f35)'s given broker for fail2ban is not kept: fail2ban does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- a machine (f35)'s given broker for nftables is not kept: nftables does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s settings of plex are not kept: refused: plex on idt cannot compose with the layer "idt" — plex places the access "formula-1" at withheld, which is not an absolute path
- holds mesh-dns-resolver (idt)'s given broker for baserow is not kept: baserow does not declare "broker" as an own secret; it declares: admin — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for bazarr is not kept: bazarr does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for bookshelf is not kept: bookshelf does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for fail2ban is not kept: fail2ban does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for grafana is not kept: grafana does not declare "broker" as an own secret; it declares: admin — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for home-assistant is not kept: home-assistant does not declare "broker" as an own secret; it declares: token — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for icecast is not kept: icecast does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for influxdb is not kept: influxdb does not declare "broker" as an own secret; it declares: admin, admin-token — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for jackett is not kept: jackett does not declare "broker" as an own secret; it declares: api-key — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for kometa is not kept: kometa does not declare "broker" as an own secret; it declares: tmdb — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for letta is not kept: letta does not declare "broker" as an own secret; it declares: openai-api-key, server-password — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for lidarr is not kept: lidarr does not declare "broker" as an own secret; it declares: api-key — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for mosquitto is not kept: mosquitto does not declare "broker" as an own secret; it declares: admin — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for mssql is not kept: mssql does not declare "broker" as an own secret; it declares: reader, sa — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for nftables is not kept: nftables does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for nodered is not kept: nodered does not declare "broker" as an own secret; it declares: admin, api-token — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for nzbget is not kept: nzbget does not declare "broker" as an own secret; it declares: password — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for ombi is not kept: ombi does not declare "broker" as an own secret; it declares: api-key — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for plex is not kept: plex does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for postgres is not kept: postgres does not declare "broker" as an own secret; it declares: reader, superuser — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for qbittorrent is not kept: qbittorrent does not declare "broker" as an own secret; it declares: password — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for radarr is not kept: radarr does not declare "broker" as an own secret; it declares: api-key — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for redis is not kept: redis does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for searxng is not kept: searxng does not declare "broker" as an own secret; it declares: secret — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for sonarr is not kept: sonarr does not declare "broker" as an own secret; it declares: api-key — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for tautulli is not kept: tautulli does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for unifi is not kept: unifi does not declare "broker" as an own secret; it declares: controller — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for fail2ban is not kept: fail2ban does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for gitea is not kept: gitea does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for keycloak is not kept: keycloak does not declare "broker" as an own secret; it declares: admin — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for mailu is not kept: mailu does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for mesh-catalog is not kept: mesh-catalog does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for mesh-vault is not kept: mesh-vault does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for minio is not kept: minio does not declare "broker" as an own secret; it declares: root — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for mongodb is not kept: mongodb does not declare "broker" as an own secret; it declares: root — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for mssql is not kept: mssql does not declare "broker" as an own secret; it declares: reader, sa — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for nextcloud is not kept: nextcloud does not declare "broker" as an own secret; it declares: admin — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for nftables is not kept: nftables does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for postgres is not kept: postgres does not declare "broker" as an own secret; it declares: reader, superuser — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for records is not kept: records does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for umami is not kept: umami does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- a machine (yvbpsm)'s given broker for fail2ban is not kept: fail2ban does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- a machine (yvbpsm)'s given broker for lab is not kept: lab does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- a machine (yvbpsm)'s given broker for nftables is not kept: nftables does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- a machine (f35) composes on the mesh and not as the snapshot raised it: build-agent on f35 has no bus credential: nothing was issued for f35.build-agent, and a push would seal a placeholder its process cannot read (novox/hq issue 203). `module issue build-agent --node f35`, then push again — judged by what the change adds
- holds mesh-dns-resolver (idt) composes on the mesh and not as the snapshot raised it: route-proxy on idt has no bus credential: nothing was issued for idt.route-proxy, and a push would seal a placeholder its process cannot read (novox/hq issue 203). `module issue route-proxy --node idt`, then push again — judged by what the change adds
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr) composes on the mesh and not as the snapshot raised it: distribution on ygcyr has no bus credential: nothing was issued for ygcyr.distribution, and a push would seal a placeholder its process cannot read (novox/hq issue 203). `module issue distribution --node ygcyr`, then push again — judged by what the change adds
- a machine (yvbpsm) composes on the mesh and not as the snapshot raised it: build-agent on yvbpsm has no bus credential: nothing was issued for yvbpsm.build-agent, and a push would seal a placeholder its process cannot read (novox/hq issue 203). `module issue build-agent --node yvbpsm`, then push again — judged by what the change adds
--- its merge-check.sh (go toolchain)
go: downloading github.com/nats-io/nats-server/v2 v2.11.17
go: downloading golang.org/x/time v0.15.0
go: downloading github.com/minio/highwayhash v1.0.4
go: downloading github.com/antithesishq/antithesis-sdk-go v0.7.0-default-no-op
go: downloading github.com/nats-io/jwt/v2 v2.8.1
NOT TESTED HERE: internal/runtime and internal/console launch bundles that need node and @novox/mesh-sdk
? github.com/novox/mesh-tools/node-tools/cmd/node-tools [no test files]
ok github.com/novox/mesh-tools/node-tools/internal/alive 1.189s
ok github.com/novox/mesh-tools/node-tools/internal/announce 4.369s
ok github.com/novox/mesh-tools/node-tools/internal/bus 1.320s
ok github.com/novox/mesh-tools/node-tools/internal/launch 1.068s
ok github.com/novox/mesh-tools/node-tools/internal/meshtest 1.135s
? github.com/novox/mesh-tools/node-tools/internal/wire [no test files]
ok github.com/novox/mesh-tools/node-tools/internal/console 0.004s
NOT TESTED HERE: node-tools/src (TypeScript) needs @novox/mesh-sdk from the package registry
```
mesh/merge-gate pass: builds mesh-tools, node-tools → ace, g14, novox, shanks; no bus step; every machine composes with the change as it did without (0 of …
mesh/merge-gate: PASS — every machine composes with the change as it did without (0 of 4 compose) (modules: mesh-tools, node-tools)
mesh/repo-check: PASS — its merge-check.sh passed
Change plan — builds mesh-tools, node-tools → ace, g14, novox, shanks; no bus step
tier 0: mesh-tools, node-tools
ace: receives node-tools
g14: receives node-tools
novox: receives node-tools
shanks: receives node-tools
node-tools provides mcp-endpoint: its consumers are sent again after it
Run by the build seat on shanks as build-1791331238396298871 (builds --log build-1791331238396298871).
--- the gate: mesh-tools, node-tools
mesh-tools: ok
node-tools: ok, invokes every tool
2 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-06T23:48:02Z says they run
composing every machine as the mesh is
composing every machine with the change
merge gate: PASS — every machine composes with the change as it did without (0 of 4 compose)
judged by controller development build against the facts of 2026-10-06T23:48:02Z
machines:
- a machine (f35): does not compose
- holds mesh-dns-resolver (idt): does not compose
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): does not compose
- a machine (yvbpsm): does not compose
a merge would rebuild 2 module(s) in 1 tier(s): mesh-tools, node-tools
notes:
- the mesh's settings of nzbget are not kept: refused: nzbget on the mesh cannot compose with the layer "the mesh" — nzbget has a file that says ${setting:username}, and nothing sets "username" for it — an operator's value is the assignment's, never the definition's (novox/hq ADR 0112): `settings set nzbget <file>` with {"username": …}; set today: pgid, puid
- the mesh's settings of qbittorrent are not kept: refused: qbittorrent on the mesh cannot compose with the layer "the mesh" — qbittorrent has a file that says ${setting:username}, and nothing sets "username" for it — an operator's value is the assignment's, never the definition's (novox/hq ADR 0112): `settings set qbittorrent <file>` with {"username": …}; set today: pgid, puid
- a machine (f35)'s given broker for fail2ban is not kept: fail2ban does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- a machine (f35)'s given broker for nftables is not kept: nftables does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s settings of plex are not kept: refused: plex on idt cannot compose with the layer "idt" — plex places the access "formula-1" at withheld, which is not an absolute path
- holds mesh-dns-resolver (idt)'s given broker for baserow is not kept: baserow does not declare "broker" as an own secret; it declares: admin — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for bazarr is not kept: bazarr does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for bookshelf is not kept: bookshelf does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for fail2ban is not kept: fail2ban does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for grafana is not kept: grafana does not declare "broker" as an own secret; it declares: admin — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for home-assistant is not kept: home-assistant does not declare "broker" as an own secret; it declares: token — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for icecast is not kept: icecast does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for influxdb is not kept: influxdb does not declare "broker" as an own secret; it declares: admin, admin-token — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for jackett is not kept: jackett does not declare "broker" as an own secret; it declares: api-key — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for kometa is not kept: kometa does not declare "broker" as an own secret; it declares: tmdb — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for letta is not kept: letta does not declare "broker" as an own secret; it declares: openai-api-key, server-password — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for lidarr is not kept: lidarr does not declare "broker" as an own secret; it declares: api-key — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for mosquitto is not kept: mosquitto does not declare "broker" as an own secret; it declares: admin — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for mssql is not kept: mssql does not declare "broker" as an own secret; it declares: reader, sa — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for nftables is not kept: nftables does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for nodered is not kept: nodered does not declare "broker" as an own secret; it declares: admin, api-token — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for nzbget is not kept: nzbget does not declare "broker" as an own secret; it declares: password — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for ombi is not kept: ombi does not declare "broker" as an own secret; it declares: api-key — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for plex is not kept: plex does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for postgres is not kept: postgres does not declare "broker" as an own secret; it declares: reader, superuser — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for qbittorrent is not kept: qbittorrent does not declare "broker" as an own secret; it declares: password — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for radarr is not kept: radarr does not declare "broker" as an own secret; it declares: api-key — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for redis is not kept: redis does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for searxng is not kept: searxng does not declare "broker" as an own secret; it declares: secret — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for sonarr is not kept: sonarr does not declare "broker" as an own secret; it declares: api-key — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for tautulli is not kept: tautulli does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for unifi is not kept: unifi does not declare "broker" as an own secret; it declares: controller — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for fail2ban is not kept: fail2ban does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for gitea is not kept: gitea does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for keycloak is not kept: keycloak does not declare "broker" as an own secret; it declares: admin — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for mailu is not kept: mailu does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for mesh-catalog is not kept: mesh-catalog does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for mesh-vault is not kept: mesh-vault does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for minio is not kept: minio does not declare "broker" as an own secret; it declares: root — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for mongodb is not kept: mongodb does not declare "broker" as an own secret; it declares: root — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for mssql is not kept: mssql does not declare "broker" as an own secret; it declares: reader, sa — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for nextcloud is not kept: nextcloud does not declare "broker" as an own secret; it declares: admin — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for nftables is not kept: nftables does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for postgres is not kept: postgres does not declare "broker" as an own secret; it declares: reader, superuser — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for records is not kept: records does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for umami is not kept: umami does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- a machine (yvbpsm)'s given broker for fail2ban is not kept: fail2ban does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- a machine (yvbpsm)'s given broker for lab is not kept: lab does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- a machine (yvbpsm)'s given broker for nftables is not kept: nftables does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- a machine (f35) composes on the mesh and not as the snapshot raised it: build-agent on f35 has no bus credential: nothing was issued for f35.build-agent, and a push would seal a placeholder its process cannot read (novox/hq issue 203). `module issue build-agent --node f35`, then push again — judged by what the change adds
- holds mesh-dns-resolver (idt) composes on the mesh and not as the snapshot raised it: route-proxy on idt has no bus credential: nothing was issued for idt.route-proxy, and a push would seal a placeholder its process cannot read (novox/hq issue 203). `module issue route-proxy --node idt`, then push again — judged by what the change adds
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr) composes on the mesh and not as the snapshot raised it: distribution on ygcyr has no bus credential: nothing was issued for ygcyr.distribution, and a push would seal a placeholder its process cannot read (novox/hq issue 203). `module issue distribution --node ygcyr`, then push again — judged by what the change adds
- a machine (yvbpsm) composes on the mesh and not as the snapshot raised it: build-agent on yvbpsm has no bus credential: nothing was issued for yvbpsm.build-agent, and a push would seal a placeholder its process cannot read (novox/hq issue 203). `module issue build-agent --node yvbpsm`, then push again — judged by what the change adds
--- its merge-check.sh (go toolchain)
go: downloading github.com/nats-io/nats.go v1.54.0
go: downloading golang.org/x/sys v0.48.0
go: downloading github.com/nats-io/nats-server/v2 v2.11.17
go: downloading github.com/nats-io/nuid v1.0.1
go: downloading github.com/nats-io/nkeys v0.4.16
go: downloading github.com/klauspost/compress v1.20.0
go: downloading golang.org/x/crypto v0.57.0
go: downloading golang.org/x/time v0.15.0
go: downloading github.com/nats-io/jwt/v2 v2.8.1
go: downloading github.com/antithesishq/antithesis-sdk-go v0.7.0-default-no-op
go: downloading github.com/minio/highwayhash v1.0.4
NOT TESTED HERE: internal/runtime and internal/console launch bundles that need node and @novox/mesh-sdk
? github.com/novox/mesh-tools/node-tools/cmd/node-tools [no test files]
ok github.com/novox/mesh-tools/node-tools/internal/alive 1.188s
ok github.com/novox/mesh-tools/node-tools/internal/announce 4.370s
ok github.com/novox/mesh-tools/node-tools/internal/bus 1.321s
ok github.com/novox/mesh-tools/node-tools/internal/launch 1.028s
ok github.com/novox/mesh-tools/node-tools/internal/meshtest 1.131s
? github.com/novox/mesh-tools/node-tools/internal/wire [no test files]
ok github.com/novox/mesh-tools/node-tools/internal/console 0.003s
NOT TESTED HERE: node-tools/src (TypeScript) needs @novox/mesh-sdk from the package registry
**Merge check** at `0a5dbc7e`
- `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (0 of 4 compose) (modules: mesh-tools, node-tools)
- `mesh/repo-check`: **PASS** — its merge-check.sh passed
**Change plan** — builds mesh-tools, node-tools → ace, g14, novox, shanks; no bus step
- tier 0: mesh-tools, node-tools
- ace: receives node-tools
- g14: receives node-tools
- novox: receives node-tools
- shanks: receives node-tools
- node-tools provides mcp-endpoint: its consumers are sent again after it
Run by the build seat on shanks as `build-1791331238396298871` (`builds --log build-1791331238396298871`).
```
--- the gate: mesh-tools, node-tools
mesh-tools: ok
node-tools: ok, invokes every tool
2 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-06T23:48:02Z says they run
composing every machine as the mesh is
composing every machine with the change
merge gate: PASS — every machine composes with the change as it did without (0 of 4 compose)
judged by controller development build against the facts of 2026-10-06T23:48:02Z
machines:
- a machine (f35): does not compose
- holds mesh-dns-resolver (idt): does not compose
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): does not compose
- a machine (yvbpsm): does not compose
a merge would rebuild 2 module(s) in 1 tier(s): mesh-tools, node-tools
notes:
- the mesh's settings of nzbget are not kept: refused: nzbget on the mesh cannot compose with the layer "the mesh" — nzbget has a file that says ${setting:username}, and nothing sets "username" for it — an operator's value is the assignment's, never the definition's (novox/hq ADR 0112): `settings set nzbget <file>` with {"username": …}; set today: pgid, puid
- the mesh's settings of qbittorrent are not kept: refused: qbittorrent on the mesh cannot compose with the layer "the mesh" — qbittorrent has a file that says ${setting:username}, and nothing sets "username" for it — an operator's value is the assignment's, never the definition's (novox/hq ADR 0112): `settings set qbittorrent <file>` with {"username": …}; set today: pgid, puid
- a machine (f35)'s given broker for fail2ban is not kept: fail2ban does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- a machine (f35)'s given broker for nftables is not kept: nftables does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s settings of plex are not kept: refused: plex on idt cannot compose with the layer "idt" — plex places the access "formula-1" at withheld, which is not an absolute path
- holds mesh-dns-resolver (idt)'s given broker for baserow is not kept: baserow does not declare "broker" as an own secret; it declares: admin — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for bazarr is not kept: bazarr does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for bookshelf is not kept: bookshelf does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for fail2ban is not kept: fail2ban does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for grafana is not kept: grafana does not declare "broker" as an own secret; it declares: admin — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for home-assistant is not kept: home-assistant does not declare "broker" as an own secret; it declares: token — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for icecast is not kept: icecast does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for influxdb is not kept: influxdb does not declare "broker" as an own secret; it declares: admin, admin-token — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for jackett is not kept: jackett does not declare "broker" as an own secret; it declares: api-key — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for kometa is not kept: kometa does not declare "broker" as an own secret; it declares: tmdb — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for letta is not kept: letta does not declare "broker" as an own secret; it declares: openai-api-key, server-password — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for lidarr is not kept: lidarr does not declare "broker" as an own secret; it declares: api-key — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for mosquitto is not kept: mosquitto does not declare "broker" as an own secret; it declares: admin — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for mssql is not kept: mssql does not declare "broker" as an own secret; it declares: reader, sa — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for nftables is not kept: nftables does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for nodered is not kept: nodered does not declare "broker" as an own secret; it declares: admin, api-token — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for nzbget is not kept: nzbget does not declare "broker" as an own secret; it declares: password — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for ombi is not kept: ombi does not declare "broker" as an own secret; it declares: api-key — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for plex is not kept: plex does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for postgres is not kept: postgres does not declare "broker" as an own secret; it declares: reader, superuser — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for qbittorrent is not kept: qbittorrent does not declare "broker" as an own secret; it declares: password — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for radarr is not kept: radarr does not declare "broker" as an own secret; it declares: api-key — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for redis is not kept: redis does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for searxng is not kept: searxng does not declare "broker" as an own secret; it declares: secret — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for sonarr is not kept: sonarr does not declare "broker" as an own secret; it declares: api-key — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for tautulli is not kept: tautulli does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds mesh-dns-resolver (idt)'s given broker for unifi is not kept: unifi does not declare "broker" as an own secret; it declares: controller — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for fail2ban is not kept: fail2ban does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for gitea is not kept: gitea does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for keycloak is not kept: keycloak does not declare "broker" as an own secret; it declares: admin — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for mailu is not kept: mailu does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for mesh-catalog is not kept: mesh-catalog does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for mesh-vault is not kept: mesh-vault does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for minio is not kept: minio does not declare "broker" as an own secret; it declares: root — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for mongodb is not kept: mongodb does not declare "broker" as an own secret; it declares: root — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for mssql is not kept: mssql does not declare "broker" as an own secret; it declares: reader, sa — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for nextcloud is not kept: nextcloud does not declare "broker" as an own secret; it declares: admin — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for nftables is not kept: nftables does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for postgres is not kept: postgres does not declare "broker" as an own secret; it declares: reader, superuser — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for records is not kept: records does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr)'s given broker for umami is not kept: umami does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- a machine (yvbpsm)'s given broker for fail2ban is not kept: fail2ban does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- a machine (yvbpsm)'s given broker for lab is not kept: lab does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- a machine (yvbpsm)'s given broker for nftables is not kept: nftables does not declare "broker" as an own secret; it declares no own secrets — a secret it requires from a provider is accepted with `--provider <node> [--local <name>]`, the value the running service already uses (novox/hq ADR 0163)
- a machine (f35) composes on the mesh and not as the snapshot raised it: build-agent on f35 has no bus credential: nothing was issued for f35.build-agent, and a push would seal a placeholder its process cannot read (novox/hq issue 203). `module issue build-agent --node f35`, then push again — judged by what the change adds
- holds mesh-dns-resolver (idt) composes on the mesh and not as the snapshot raised it: route-proxy on idt has no bus credential: nothing was issued for idt.route-proxy, and a push would seal a placeholder its process cannot read (novox/hq issue 203). `module issue route-proxy --node idt`, then push again — judged by what the change adds
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr) composes on the mesh and not as the snapshot raised it: distribution on ygcyr has no bus credential: nothing was issued for ygcyr.distribution, and a push would seal a placeholder its process cannot read (novox/hq issue 203). `module issue distribution --node ygcyr`, then push again — judged by what the change adds
- a machine (yvbpsm) composes on the mesh and not as the snapshot raised it: build-agent on yvbpsm has no bus credential: nothing was issued for yvbpsm.build-agent, and a push would seal a placeholder its process cannot read (novox/hq issue 203). `module issue build-agent --node yvbpsm`, then push again — judged by what the change adds
--- its merge-check.sh (go toolchain)
go: downloading github.com/nats-io/nats.go v1.54.0
go: downloading golang.org/x/sys v0.48.0
go: downloading github.com/nats-io/nats-server/v2 v2.11.17
go: downloading github.com/nats-io/nuid v1.0.1
go: downloading github.com/nats-io/nkeys v0.4.16
go: downloading github.com/klauspost/compress v1.20.0
go: downloading golang.org/x/crypto v0.57.0
go: downloading golang.org/x/time v0.15.0
go: downloading github.com/nats-io/jwt/v2 v2.8.1
go: downloading github.com/antithesishq/antithesis-sdk-go v0.7.0-default-no-op
go: downloading github.com/minio/highwayhash v1.0.4
NOT TESTED HERE: internal/runtime and internal/console launch bundles that need node and @novox/mesh-sdk
? github.com/novox/mesh-tools/node-tools/cmd/node-tools [no test files]
ok github.com/novox/mesh-tools/node-tools/internal/alive 1.188s
ok github.com/novox/mesh-tools/node-tools/internal/announce 4.370s
ok github.com/novox/mesh-tools/node-tools/internal/bus 1.321s
ok github.com/novox/mesh-tools/node-tools/internal/launch 1.028s
ok github.com/novox/mesh-tools/node-tools/internal/meshtest 1.131s
? github.com/novox/mesh-tools/node-tools/internal/wire [no test files]
ok github.com/novox/mesh-tools/node-tools/internal/console 0.003s
NOT TESTED HERE: node-tools/src (TypeScript) needs @novox/mesh-sdk from the package registry
```
mesh-admin
changed title from Console: a seat and a module of one name are each reached (hq issue 284) to Console: a seat and a module of one name are each reached (hq issue 287)2026-10-07 00:05:19 +00:00
mesh/merge-gate pass: builds mesh-tools, node-tools → ace, g14, novox, shanks; no bus step; 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: mesh-tools, node-tools)
mesh/repo-check: PASS — its merge-check.sh passed
Change plan — builds mesh-tools, node-tools → ace, g14, novox, shanks; no bus step
tier 0: mesh-tools, node-tools
ace: receives node-tools
g14: receives node-tools
novox: receives node-tools
shanks: receives node-tools
node-tools provides mcp-endpoint: its consumers are sent again after it
Run by the build seat on shanks as build-1791331634165911702 (builds --log build-1791331634165911702).
--- the gate: mesh-tools, node-tools
mesh-tools: ok
node-tools: ok, invokes every tool
2 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-07T00:02:01Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-07T00:02:01Z
machines:
- a machine (f35): composes
- holds mesh-dns-resolver (idt): composes
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
- a machine (yvbpsm): composes
a merge would rebuild 2 module(s) in 1 tier(s): mesh-tools, node-tools
--- its merge-check.sh (go toolchain)
NOT TESTED HERE: internal/runtime and internal/console launch bundles that need node and @novox/mesh-sdk
? github.com/novox/mesh-tools/node-tools/cmd/node-tools [no test files]
ok github.com/novox/mesh-tools/node-tools/internal/alive 1.190s
ok github.com/novox/mesh-tools/node-tools/internal/announce 4.368s
ok github.com/novox/mesh-tools/node-tools/internal/bus 1.318s
ok github.com/novox/mesh-tools/node-tools/internal/launch 1.067s
ok github.com/novox/mesh-tools/node-tools/internal/meshtest 1.126s
? github.com/novox/mesh-tools/node-tools/internal/wire [no test files]
ok github.com/novox/mesh-tools/node-tools/internal/console 0.004s
NOT TESTED HERE: node-tools/src (TypeScript) needs @novox/mesh-sdk from the package registry
**Merge check** at `41911f7f`
- `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-tools, node-tools)
- `mesh/repo-check`: **PASS** — its merge-check.sh passed
**Change plan** — builds mesh-tools, node-tools → ace, g14, novox, shanks; no bus step
- tier 0: mesh-tools, node-tools
- ace: receives node-tools
- g14: receives node-tools
- novox: receives node-tools
- shanks: receives node-tools
- node-tools provides mcp-endpoint: its consumers are sent again after it
Run by the build seat on shanks as `build-1791331634165911702` (`builds --log build-1791331634165911702`).
```
--- the gate: mesh-tools, node-tools
mesh-tools: ok
node-tools: ok, invokes every tool
2 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-07T00:02:01Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-07T00:02:01Z
machines:
- a machine (f35): composes
- holds mesh-dns-resolver (idt): composes
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
- a machine (yvbpsm): composes
a merge would rebuild 2 module(s) in 1 tier(s): mesh-tools, node-tools
--- its merge-check.sh (go toolchain)
NOT TESTED HERE: internal/runtime and internal/console launch bundles that need node and @novox/mesh-sdk
? github.com/novox/mesh-tools/node-tools/cmd/node-tools [no test files]
ok github.com/novox/mesh-tools/node-tools/internal/alive 1.190s
ok github.com/novox/mesh-tools/node-tools/internal/announce 4.368s
ok github.com/novox/mesh-tools/node-tools/internal/bus 1.318s
ok github.com/novox/mesh-tools/node-tools/internal/launch 1.067s
ok github.com/novox/mesh-tools/node-tools/internal/meshtest 1.126s
? github.com/novox/mesh-tools/node-tools/internal/wire [no test files]
ok github.com/novox/mesh-tools/node-tools/internal/console 0.004s
NOT TESTED HERE: node-tools/src (TypeScript) needs @novox/mesh-sdk from the package registry
```
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.
mesh-deliveryis the delivery's seat and the module holding it. The module answers the seat's verbs with tools of the same names. The console's discovery index keyed seat verbs and module tools in one namespace (<prefix>.<name>), so the module'smesh-delivery.deliveriestook the key and the seat was listed with no verbs. Resolution then always took the seat first, somesh-delivery.deliveriesandnovox/mesh-delivery.delivery_statuswere both refused with "the seat mesh-delivery has no verb …; it has". The controller's own seat record was fine:mesh-controller.toolslists its ten verbs.seat:<seat>.<verb>, apart from module tools. The endpoint loop is nowindexOfEndpoints, so it can be tested without a bus.TestASeatAndAModuleOfOneNameAreEachReachedlaunches no bundle, somerge-check.shruns it even where the console package is otherwise skipped (no node or SDK in the toolchain).Checked with
mesh-controller check-here(mesh-controller#104) in the seat's environment:mesh/repo-checkPASS. The gate shows 0 of 4 until mesh-controller#104 is rolled out (hq issue 285).novox/hq issue 287 (renumbered from 284).
Delivery
novox/mesh-tools@41911f7f1564— delivered since 2026-10-07T00:34:26ZDelivery plan — builds mesh-tools, node-tools → 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
dac4d423mesh/merge-gate: PASS — every machine composes with the change as it did without (0 of 4 compose) (modules: mesh-tools, node-tools)mesh/repo-check: PASS — its merge-check.sh passedChange plan — builds mesh-tools, node-tools → ace, g14, novox, shanks; no bus step
Run by the build seat on novox as
build-1791330297667271498(builds --log build-1791330297667271498).Merge check at
0a5dbc7emesh/merge-gate: PASS — every machine composes with the change as it did without (0 of 4 compose) (modules: mesh-tools, node-tools)mesh/repo-check: PASS — its merge-check.sh passedChange plan — builds mesh-tools, node-tools → ace, g14, novox, shanks; no bus step
Run by the build seat on shanks as
build-1791331238396298871(builds --log build-1791331238396298871).Console: a seat and a module of one name are each reached (hq issue 284)to Console: a seat and a module of one name are each reached (hq issue 287)Merge check at
41911f7fmesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-tools, node-tools)mesh/repo-check: PASS — its merge-check.sh passedChange plan — builds mesh-tools, node-tools → ace, g14, novox, shanks; no bus step
Run by the build seat on shanks as
build-1791331634165911702(builds --log build-1791331634165911702).