Take the node-engine's parser and validator from mesh-sdk and delete mesh-host's copies (design 47 R4b, issue 1392) #124

Merged
mesh-tools merged 5 commits from feat/r4b-sdk-users into main 2026-10-20 12:51:54 +00:00
Member

Design 47 release R4b, the node-engine's part (ADR 0453 §1-§2, ADR 0446 §4/§5). mesh-sdk's main holds the node-engine's declaration parser and validator as go/declaration and go/validate, copied from mesh-host 619e14aa; no commit has touched mesh-host's copies since. The node-engine now imports mesh-sdk's (pinned at mesh-sdk main ab0c16dd, v0.1.14-0.20261020085642-ab0c16ddad26) and deletes internal/declaration and validate/. The same parser reads the same declarations; the operator sees nothing.

  • 1392 AC1: go.mod pins mesh-sdk at a commit on its main.
  • AC2: no Go file imports internal/declaration or mesh-host/validate; both directories are gone (25 files).
  • AC3: gofmt clean, go vet with and without -tags integration, the unit suite with -race (9 s).
  • AC4: README's conformance run names mesh-sdk's go/declaration.
  • AC5 (live, after delivery): every node-engine reports the new version and applies its next declaration.

Opened after mesh-controller #405 reached the build node (delivered 2026-10-20 12:09 UTC), so the merge check no longer copies mesh-host's validator into its judge (issue 1391).
Checks before this pull request: try build-1792498416259007848 passed.

Reviewed-by: reviewer-r4b@shanks at 52600ec7bd

Issues: 1392

Design 47 release R4b, the node-engine's part (ADR 0453 §1-§2, ADR 0446 §4/§5). mesh-sdk's main holds the node-engine's declaration parser and validator as go/declaration and go/validate, copied from mesh-host 619e14aa; no commit has touched mesh-host's copies since. The node-engine now imports mesh-sdk's (pinned at mesh-sdk main ab0c16dd, v0.1.14-0.20261020085642-ab0c16ddad26) and deletes internal/declaration and validate/. The same parser reads the same declarations; the operator sees nothing. - 1392 AC1: go.mod pins mesh-sdk at a commit on its main. - AC2: no Go file imports internal/declaration or mesh-host/validate; both directories are gone (25 files). - AC3: gofmt clean, go vet with and without -tags integration, the unit suite with -race (9 s). - AC4: README's conformance run names mesh-sdk's go/declaration. - AC5 (live, after delivery): every node-engine reports the new version and applies its next declaration. Opened after mesh-controller #405 reached the build node (delivered 2026-10-20 12:09 UTC), so the merge check no longer copies mesh-host's validator into its judge (issue 1391). Checks before this pull request: try build-1792498416259007848 passed. Reviewed-by: reviewer-r4b@shanks at 52600ec7bd61ee271a5cc7f4136bcf0a2a8f00fc Issues: 1392
mesh-tools added 5 commits 2026-10-20 12:47:53 +00:00
Author
Member

Delivery novox/mesh-host@52600ec7bd61 — delivered since 2026-10-20T12:53:24Z

Delivery plan — builds mesh-host → ace, g14, novox, shanks; no bus step

  • tier 0: mesh-host
  • ace: receives mesh-host
  • g14: receives mesh-host
  • novox: receives mesh-host
  • shanks: receives mesh-host
  • grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before mesh-host is judged on its first machine

Machines

  • mesh-host on every machine running it: sent

Transitions

  • 2026-10-20 12:47 (new) → proposed (announced): novox/mesh-host#124's head announced
  • 2026-10-20 12:51 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
  • 2026-10-20 12:51 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
  • 2026-10-20 12:52 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
  • 2026-10-20 12:52 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path — not a failed walk that carried a later commit for it, after which it waits for a walk of its own commit
  • 2026-10-20 12:53 delivering → delivered (done): its walk is done, carrying its own commit: every machine of its deploy plan passed, or was left as its policy says

The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.

<!-- mesh-delivery:view --> **Delivery** `novox/mesh-host@52600ec7bd61` — **delivered** since 2026-10-20T12:53:24Z **Delivery plan** — builds mesh-host → ace, g14, novox, shanks; no bus step - tier 0: mesh-host - ace: receives mesh-host - g14: receives mesh-host - novox: receives mesh-host - shanks: receives mesh-host - grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before mesh-host is judged on its first machine **Machines** - mesh-host on every machine running it: sent **Transitions** - 2026-10-20 12:47 (new) → proposed (announced): novox/mesh-host#124's head announced - 2026-10-20 12:51 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit - 2026-10-20 12:51 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail - 2026-10-20 12:52 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move - 2026-10-20 12:52 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path — not a failed walk that carried a later commit for it, after which it waits for a walk of its own commit - 2026-10-20 12:53 delivering → delivered (done): its walk is done, carrying its own commit: every machine of its deploy plan passed, or was left as its policy says The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
Author
Member

Merge check at 52600ec7
Judged: head 52600ec7bd61 merged into trunk cdcba9ca7375; read beside it: mesh-catalog db32f8ac5632, mesh-controller b718d24f84b9, mesh-controller-main b718d24f84b9, mesh-tools 7412c5b6c9c5

  • mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-host)
  • mesh/repo-check: PASS — its merge-check.sh passed

Delivery plan — builds mesh-host → ace, g14, novox, shanks; no bus step

  • tier 0: mesh-host
  • ace: receives mesh-host
  • g14: receives mesh-host
  • novox: receives mesh-host
  • shanks: receives mesh-host
  • grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before mesh-host is judged on its first machine
  • read by no module's build: README.md, cmd/mesh-host/libraries_test.go, cmd/mesh-host/main_test.go, cmd/mesh-host/module_facts_test.go, cmd/mesh-host/network_test.go, cmd/mesh-host/probe_test.go, cmd/mesh-host/replay233_test.go, cmd/mesh-host/units_test.go, cmd/mesh-host/vaultbox_nats_test.go, examples/bundle_test.go, internal/accounts/accounts_test.go, internal/accounts/root_test.go, internal/apply/agent_home_guard_test.go, internal/apply/apply_test.go, internal/apply/busy_test.go, internal/apply/filled_apply_test.go, internal/apply/filled_library_test.go, internal/apply/filled_test.go, internal/apply/health_check_test.go, internal/apply/hold_test.go, internal/apply/identities_test.go, internal/apply/into_handover_test.go, internal/apply/into_test.go, internal/apply/left_out_test.go, internal/apply/library_test.go, internal/apply/logging_test.go, internal/apply/maintenance_window_test.go, internal/apply/mesh_dirs_test.go, internal/apply/mesh_names_test.go, internal/apply/module_results_test.go, internal/apply/opening_test.go, internal/apply/plan_test.go, internal/apply/process_test.go, internal/apply/reads_test.go, internal/apply/replay358_test.go, internal/apply/runonce_test.go, internal/apply/schedule_test.go, internal/apply/sealed_test.go, internal/apply/step_failed_test.go, internal/apply/store_away_test.go, internal/apply/takeover_test.go, internal/apply/vault_sealed_test.go, internal/apply/vocabulary_test.go, internal/bootstrap/adopt_in_place_test.go, internal/bootstrap/adopted.go, internal/bootstrap/adopted_test.go, internal/bootstrap/apply.go, internal/bootstrap/apply_test.go, internal/bootstrap/bus_adoption.go, internal/bootstrap/control.go, internal/bootstrap/genesis_handover_test.go, internal/bootstrap/inuse.go, internal/bootstrap/phase3.go, internal/bootstrap/phase3_test.go, internal/bootstrap/ports.go, internal/bootstrap/ports_test.go, internal/bootstrap/preflight.go, internal/bootstrap/preflight_test.go, internal/bootstrap/retire.go, internal/bootstrap/retire_test.go, internal/bootstrap/rewrite.go, internal/bootstrap/rewrite_test.go, internal/bootstrap/rootsecrets.go, internal/bootstrap/rootsecrets_test.go, internal/bootstrap/store_layout_test.go, internal/bootstrap/trust.go, internal/bootstrap/trust_test.go, internal/bootstrap/verify.go, internal/bootstrap/verify_test.go, internal/bundle/bundle_test.go, internal/declaration/adoption_test.go, internal/declaration/block_test.go, internal/declaration/cron_test.go, internal/declaration/declaration_test.go, internal/declaration/emitted_check_test.go, internal/declaration/health_test.go, internal/declaration/identity_test.go, internal/declaration/into_test.go, internal/declaration/module_test.go, internal/declaration/order_test.go, internal/declaration/ownership_test.go, internal/declaration/process_test.go, internal/declaration/provisioner_test.go, internal/declaration/replaces_test.go, internal/declaration/root_test.go, internal/declaration/schedule_declaration_test.go, internal/declaration/stateless_test.go, internal/declaration/trusted_test.go, internal/declaration/userscope_test.go, internal/filling/filling_test.go, internal/firewall/firewall_test.go, internal/liveness/liveness_test.go, internal/liveness/readiness_test.go, internal/liveness/replay_test.go, internal/liveness/waiting_test.go, internal/system/shapes_test.go, internal/system/system_test.go, internal/units/units_test.go, validate/validate.go, validate/validate_test.go

Run by the build seat on ace as build-1792500476653226231 (builds --log build-1792500476653226231).

--- the gate: mesh-host
mesh-host: ok
long-running resources without health: 0
files asking for a setting without saying whether it is trusted: 0
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-20T12:46:19Z says they run
composing every machine as the mesh is
HELD: the vault did not answer for the core's credentials on f35; sealed by the controller until the vault holds it: mesh-provisioner-client — own/f35/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on idt; sealed by the controller until the vault holds it: mesh-provisioner-client — own/idt/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on ygcyr; sealed by the controller until the vault holds it: mesh-provisioner, mesh-provisioner-client, nats — own/ygcyr/mesh-provisioner/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/nats/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
the bus's user list leaves out 6 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, ygcyr.mesh-mail.send, node.yvbpsm. Each is a user that cannot connect until one is issued
HELD: the vault did not answer for the core's credentials on yvbpsm; sealed by the controller until the vault holds it: mesh-provisioner-client — own/yvbpsm/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on f35; sealed by the controller until the vault holds it: mesh-provisioner-client — own/f35/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on idt; sealed by the controller until the vault holds it: mesh-provisioner-client — own/idt/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on ygcyr; sealed by the controller until the vault holds it: mesh-provisioner, mesh-provisioner-client, nats — own/ygcyr/mesh-provisioner/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/nats/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
the bus's user list leaves out 6 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, ygcyr.mesh-mail.send, node.yvbpsm. Each is a user that cannot connect until one is issued
HELD: the vault did not answer for the core's credentials on yvbpsm; sealed by the controller until the vault holds it: mesh-provisioner-client — own/yvbpsm/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
composing every machine with the change
HELD: the vault did not answer for the core's credentials on f35; sealed by the controller until the vault holds it: mesh-provisioner-client — own/f35/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on idt; sealed by the controller until the vault holds it: mesh-provisioner-client — own/idt/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on ygcyr; sealed by the controller until the vault holds it: mesh-provisioner, mesh-provisioner-client, nats — own/ygcyr/mesh-provisioner/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/nats/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
the bus's user list leaves out 6 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, ygcyr.mesh-mail.send, node.yvbpsm. Each is a user that cannot connect until one is issued
HELD: the vault did not answer for the core's credentials on yvbpsm; sealed by the controller until the vault holds it: mesh-provisioner-client — own/yvbpsm/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on f35; sealed by the controller until the vault holds it: mesh-provisioner-client — own/f35/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on idt; sealed by the controller until the vault holds it: mesh-provisioner-client — own/idt/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on ygcyr; sealed by the controller until the vault holds it: mesh-provisioner, mesh-provisioner-client, nats — own/ygcyr/mesh-provisioner/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/nats/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
the bus's user list leaves out 6 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, ygcyr.mesh-mail.send, node.yvbpsm. Each is a user that cannot connect until one is issued
HELD: the vault did not answer for the core's credentials on yvbpsm; sealed by the controller until the vault holds it: mesh-provisioner-client — own/yvbpsm/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-20T12:46:19Z

machines:
  - a machine (f35): composes
  - holds mesh-dns-resolver (idt): composes
  - holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-config, holds mesh-dns-resolver, holds mesh-provisioner, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
  - a machine (yvbpsm): composes

a merge would rebuild 1 module(s) in 1 tier(s): mesh-host

notes:
  - README.md, cmd/mesh-host/libraries_test.go, cmd/mesh-host/main_test.go, cmd/mesh-host/module_facts_test.go, cmd/mesh-host/network_test.go, cmd/mesh-host/probe_test.go, cmd/mesh-host/replay233_test.go, cmd/mesh-host/units_test.go, cmd/mesh-host/vaultbox_nats_test.go, examples/bundle_test.go, internal/accounts/accounts_test.go, internal/accounts/root_test.go, internal/apply/agent_home_guard_test.go, internal/apply/apply_test.go, internal/apply/busy_test.go, internal/apply/filled_apply_test.go, internal/apply/filled_library_test.go, internal/apply/filled_test.go, internal/apply/health_check_test.go, internal/apply/hold_test.go, internal/apply/identities_test.go, internal/apply/into_handover_test.go, internal/apply/into_test.go, internal/apply/left_out_test.go, internal/apply/library_test.go, internal/apply/logging_test.go, internal/apply/maintenance_window_test.go, internal/apply/mesh_dirs_test.go, internal/apply/mesh_names_test.go, internal/apply/module_results_test.go, internal/apply/opening_test.go, internal/apply/plan_test.go, internal/apply/process_test.go, internal/apply/reads_test.go, internal/apply/replay358_test.go, internal/apply/runonce_test.go, internal/apply/schedule_test.go, internal/apply/sealed_test.go, internal/apply/step_failed_test.go, internal/apply/store_away_test.go, internal/apply/takeover_test.go, internal/apply/vault_sealed_test.go, internal/apply/vocabulary_test.go, internal/bootstrap/adopt_in_place_test.go, internal/bootstrap/adopted.go, internal/bootstrap/adopted_test.go, internal/bootstrap/apply.go, internal/bootstrap/apply_test.go, internal/bootstrap/bus_adoption.go, internal/bootstrap/control.go, internal/bootstrap/genesis_handover_test.go, internal/bootstrap/inuse.go, internal/bootstrap/phase3.go, internal/bootstrap/phase3_test.go, internal/bootstrap/ports.go, internal/bootstrap/ports_test.go, internal/bootstrap/preflight.go, internal/bootstrap/preflight_test.go, internal/bootstrap/retire.go, internal/bootstrap/retire_test.go, internal/bootstrap/rewrite.go, internal/bootstrap/rewrite_test.go, internal/bootstrap/rootsecrets.go, internal/bootstrap/rootsecrets_test.go, internal/bootstrap/store_layout_test.go, internal/bootstrap/trust.go, internal/bootstrap/trust_test.go, internal/bootstrap/verify.go, internal/bootstrap/verify_test.go, internal/bundle/bundle_test.go, internal/declaration/adoption_test.go, internal/declaration/block_test.go, internal/declaration/cron_test.go, internal/declaration/declaration_test.go, internal/declaration/emitted_check_test.go, internal/declaration/health_test.go, internal/declaration/identity_test.go, internal/declaration/into_test.go, internal/declaration/module_test.go, internal/declaration/order_test.go, internal/declaration/ownership_test.go, internal/declaration/process_test.go, internal/declaration/provisioner_test.go, internal/declaration/replaces_test.go, internal/declaration/root_test.go, internal/declaration/schedule_declaration_test.go, internal/declaration/stateless_test.go, internal/declaration/trusted_test.go, internal/declaration/userscope_test.go, internal/filling/filling_test.go, internal/firewall/firewall_test.go, internal/liveness/liveness_test.go, internal/liveness/readiness_test.go, internal/liveness/replay_test.go, internal/liveness/waiting_test.go, internal/system/shapes_test.go, internal/system/system_test.go, internal/units/units_test.go, validate/validate.go and validate/validate_test.go read by no module's build, and rebuild nothing (issue 280)
--- its merge-check.sh (go toolchain)
go: downloading git.novox.be/novox/mesh-sdk/go v0.1.14-0.20261020085642-ab0c16ddad26
ok  	github.com/novox/mesh-host/cmd/mesh-bootstrap	1.012s
ok  	github.com/novox/mesh-host/cmd/mesh-host	6.153s
ok  	github.com/novox/mesh-host/examples	1.025s
ok  	github.com/novox/mesh-host/internal/accounts	1.442s
ok  	github.com/novox/mesh-host/internal/apply	5.350s
ok  	github.com/novox/mesh-host/internal/bootstrap	4.069s
ok  	github.com/novox/mesh-host/internal/bundle	1.021s
ok  	github.com/novox/mesh-host/internal/filling	1.742s
ok  	github.com/novox/mesh-host/internal/firewall	1.723s
ok  	github.com/novox/mesh-host/internal/identity	1.096s
ok  	github.com/novox/mesh-host/internal/image	1.021s
ok  	github.com/novox/mesh-host/internal/inventory	1.112s
ok  	github.com/novox/mesh-host/internal/link	10.982s
ok  	github.com/novox/mesh-host/internal/liveness	2.163s
ok  	github.com/novox/mesh-host/internal/meshcli	1.611s
ok  	github.com/novox/mesh-host/internal/network	1.102s
ok  	github.com/novox/mesh-host/internal/outward	1.087s
ok  	github.com/novox/mesh-host/internal/profile	1.824s
ok  	github.com/novox/mesh-host/internal/reachable	1.086s
ok  	github.com/novox/mesh-host/internal/store	1.268s
ok  	github.com/novox/mesh-host/internal/system	1.044s
ok  	github.com/novox/mesh-host/internal/tunnel	1.048s
ok  	github.com/novox/mesh-host/internal/units	1.041s
ok  	github.com/novox/mesh-host/internal/upgrade	1.167s
ok  	github.com/novox/mesh-host/internal/witness	4.754s
ok  	github.com/novox/mesh-host/packaging	1.037s
?   	github.com/novox/mesh-host/rootsearch	[no test files]
**Merge check** at `52600ec7` Judged: head `52600ec7bd61` merged into trunk `cdcba9ca7375`; read beside it: mesh-catalog `db32f8ac5632`, mesh-controller `b718d24f84b9`, mesh-controller-main `b718d24f84b9`, mesh-tools `7412c5b6c9c5` - `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-host) - `mesh/repo-check`: **PASS** — its merge-check.sh passed **Delivery plan** — builds mesh-host → ace, g14, novox, shanks; no bus step - tier 0: mesh-host - ace: receives mesh-host - g14: receives mesh-host - novox: receives mesh-host - shanks: receives mesh-host - grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before mesh-host is judged on its first machine - read by no module's build: README.md, cmd/mesh-host/libraries_test.go, cmd/mesh-host/main_test.go, cmd/mesh-host/module_facts_test.go, cmd/mesh-host/network_test.go, cmd/mesh-host/probe_test.go, cmd/mesh-host/replay233_test.go, cmd/mesh-host/units_test.go, cmd/mesh-host/vaultbox_nats_test.go, examples/bundle_test.go, internal/accounts/accounts_test.go, internal/accounts/root_test.go, internal/apply/agent_home_guard_test.go, internal/apply/apply_test.go, internal/apply/busy_test.go, internal/apply/filled_apply_test.go, internal/apply/filled_library_test.go, internal/apply/filled_test.go, internal/apply/health_check_test.go, internal/apply/hold_test.go, internal/apply/identities_test.go, internal/apply/into_handover_test.go, internal/apply/into_test.go, internal/apply/left_out_test.go, internal/apply/library_test.go, internal/apply/logging_test.go, internal/apply/maintenance_window_test.go, internal/apply/mesh_dirs_test.go, internal/apply/mesh_names_test.go, internal/apply/module_results_test.go, internal/apply/opening_test.go, internal/apply/plan_test.go, internal/apply/process_test.go, internal/apply/reads_test.go, internal/apply/replay358_test.go, internal/apply/runonce_test.go, internal/apply/schedule_test.go, internal/apply/sealed_test.go, internal/apply/step_failed_test.go, internal/apply/store_away_test.go, internal/apply/takeover_test.go, internal/apply/vault_sealed_test.go, internal/apply/vocabulary_test.go, internal/bootstrap/adopt_in_place_test.go, internal/bootstrap/adopted.go, internal/bootstrap/adopted_test.go, internal/bootstrap/apply.go, internal/bootstrap/apply_test.go, internal/bootstrap/bus_adoption.go, internal/bootstrap/control.go, internal/bootstrap/genesis_handover_test.go, internal/bootstrap/inuse.go, internal/bootstrap/phase3.go, internal/bootstrap/phase3_test.go, internal/bootstrap/ports.go, internal/bootstrap/ports_test.go, internal/bootstrap/preflight.go, internal/bootstrap/preflight_test.go, internal/bootstrap/retire.go, internal/bootstrap/retire_test.go, internal/bootstrap/rewrite.go, internal/bootstrap/rewrite_test.go, internal/bootstrap/rootsecrets.go, internal/bootstrap/rootsecrets_test.go, internal/bootstrap/store_layout_test.go, internal/bootstrap/trust.go, internal/bootstrap/trust_test.go, internal/bootstrap/verify.go, internal/bootstrap/verify_test.go, internal/bundle/bundle_test.go, internal/declaration/adoption_test.go, internal/declaration/block_test.go, internal/declaration/cron_test.go, internal/declaration/declaration_test.go, internal/declaration/emitted_check_test.go, internal/declaration/health_test.go, internal/declaration/identity_test.go, internal/declaration/into_test.go, internal/declaration/module_test.go, internal/declaration/order_test.go, internal/declaration/ownership_test.go, internal/declaration/process_test.go, internal/declaration/provisioner_test.go, internal/declaration/replaces_test.go, internal/declaration/root_test.go, internal/declaration/schedule_declaration_test.go, internal/declaration/stateless_test.go, internal/declaration/trusted_test.go, internal/declaration/userscope_test.go, internal/filling/filling_test.go, internal/firewall/firewall_test.go, internal/liveness/liveness_test.go, internal/liveness/readiness_test.go, internal/liveness/replay_test.go, internal/liveness/waiting_test.go, internal/system/shapes_test.go, internal/system/system_test.go, internal/units/units_test.go, validate/validate.go, validate/validate_test.go Run by the build seat on ace as `build-1792500476653226231` (`builds --log build-1792500476653226231`). ``` --- the gate: mesh-host mesh-host: ok long-running resources without health: 0 files asking for a setting without saying whether it is trusted: 0 1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here judging 0 module(s) changed against 4 machine(s), as the snapshot of 2026-10-20T12:46:19Z says they run composing every machine as the mesh is HELD: the vault did not answer for the core's credentials on f35; sealed by the controller until the vault holds it: mesh-provisioner-client — own/f35/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus HELD: the vault did not answer for the core's credentials on idt; sealed by the controller until the vault holds it: mesh-provisioner-client — own/idt/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus HELD: the vault did not answer for the core's credentials on ygcyr; sealed by the controller until the vault holds it: mesh-provisioner, mesh-provisioner-client, nats — own/ygcyr/mesh-provisioner/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/nats/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus the bus's user list leaves out 6 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, ygcyr.mesh-mail.send, node.yvbpsm. Each is a user that cannot connect until one is issued HELD: the vault did not answer for the core's credentials on yvbpsm; sealed by the controller until the vault holds it: mesh-provisioner-client — own/yvbpsm/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus HELD: the vault did not answer for the core's credentials on f35; sealed by the controller until the vault holds it: mesh-provisioner-client — own/f35/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus HELD: the vault did not answer for the core's credentials on idt; sealed by the controller until the vault holds it: mesh-provisioner-client — own/idt/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus HELD: the vault did not answer for the core's credentials on ygcyr; sealed by the controller until the vault holds it: mesh-provisioner, mesh-provisioner-client, nats — own/ygcyr/mesh-provisioner/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/nats/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus the bus's user list leaves out 6 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, ygcyr.mesh-mail.send, node.yvbpsm. Each is a user that cannot connect until one is issued HELD: the vault did not answer for the core's credentials on yvbpsm; sealed by the controller until the vault holds it: mesh-provisioner-client — own/yvbpsm/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus composing every machine with the change HELD: the vault did not answer for the core's credentials on f35; sealed by the controller until the vault holds it: mesh-provisioner-client — own/f35/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus HELD: the vault did not answer for the core's credentials on idt; sealed by the controller until the vault holds it: mesh-provisioner-client — own/idt/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus HELD: the vault did not answer for the core's credentials on ygcyr; sealed by the controller until the vault holds it: mesh-provisioner, mesh-provisioner-client, nats — own/ygcyr/mesh-provisioner/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/nats/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus the bus's user list leaves out 6 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, ygcyr.mesh-mail.send, node.yvbpsm. Each is a user that cannot connect until one is issued HELD: the vault did not answer for the core's credentials on yvbpsm; sealed by the controller until the vault holds it: mesh-provisioner-client — own/yvbpsm/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus HELD: the vault did not answer for the core's credentials on f35; sealed by the controller until the vault holds it: mesh-provisioner-client — own/f35/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus HELD: the vault did not answer for the core's credentials on idt; sealed by the controller until the vault holds it: mesh-provisioner-client — own/idt/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus HELD: the vault did not answer for the core's credentials on ygcyr; sealed by the controller until the vault holds it: mesh-provisioner, mesh-provisioner-client, nats — own/ygcyr/mesh-provisioner/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/nats/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus the bus's user list leaves out 6 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, ygcyr.mesh-mail.send, node.yvbpsm. Each is a user that cannot connect until one is issued HELD: the vault did not answer for the core's credentials on yvbpsm; sealed by the controller until the vault holds it: mesh-provisioner-client — own/yvbpsm/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose) judged by controller development build against the facts of 2026-10-20T12:46:19Z machines: - a machine (f35): composes - holds mesh-dns-resolver (idt): composes - holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-config, holds mesh-dns-resolver, holds mesh-provisioner, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes - a machine (yvbpsm): composes a merge would rebuild 1 module(s) in 1 tier(s): mesh-host notes: - README.md, cmd/mesh-host/libraries_test.go, cmd/mesh-host/main_test.go, cmd/mesh-host/module_facts_test.go, cmd/mesh-host/network_test.go, cmd/mesh-host/probe_test.go, cmd/mesh-host/replay233_test.go, cmd/mesh-host/units_test.go, cmd/mesh-host/vaultbox_nats_test.go, examples/bundle_test.go, internal/accounts/accounts_test.go, internal/accounts/root_test.go, internal/apply/agent_home_guard_test.go, internal/apply/apply_test.go, internal/apply/busy_test.go, internal/apply/filled_apply_test.go, internal/apply/filled_library_test.go, internal/apply/filled_test.go, internal/apply/health_check_test.go, internal/apply/hold_test.go, internal/apply/identities_test.go, internal/apply/into_handover_test.go, internal/apply/into_test.go, internal/apply/left_out_test.go, internal/apply/library_test.go, internal/apply/logging_test.go, internal/apply/maintenance_window_test.go, internal/apply/mesh_dirs_test.go, internal/apply/mesh_names_test.go, internal/apply/module_results_test.go, internal/apply/opening_test.go, internal/apply/plan_test.go, internal/apply/process_test.go, internal/apply/reads_test.go, internal/apply/replay358_test.go, internal/apply/runonce_test.go, internal/apply/schedule_test.go, internal/apply/sealed_test.go, internal/apply/step_failed_test.go, internal/apply/store_away_test.go, internal/apply/takeover_test.go, internal/apply/vault_sealed_test.go, internal/apply/vocabulary_test.go, internal/bootstrap/adopt_in_place_test.go, internal/bootstrap/adopted.go, internal/bootstrap/adopted_test.go, internal/bootstrap/apply.go, internal/bootstrap/apply_test.go, internal/bootstrap/bus_adoption.go, internal/bootstrap/control.go, internal/bootstrap/genesis_handover_test.go, internal/bootstrap/inuse.go, internal/bootstrap/phase3.go, internal/bootstrap/phase3_test.go, internal/bootstrap/ports.go, internal/bootstrap/ports_test.go, internal/bootstrap/preflight.go, internal/bootstrap/preflight_test.go, internal/bootstrap/retire.go, internal/bootstrap/retire_test.go, internal/bootstrap/rewrite.go, internal/bootstrap/rewrite_test.go, internal/bootstrap/rootsecrets.go, internal/bootstrap/rootsecrets_test.go, internal/bootstrap/store_layout_test.go, internal/bootstrap/trust.go, internal/bootstrap/trust_test.go, internal/bootstrap/verify.go, internal/bootstrap/verify_test.go, internal/bundle/bundle_test.go, internal/declaration/adoption_test.go, internal/declaration/block_test.go, internal/declaration/cron_test.go, internal/declaration/declaration_test.go, internal/declaration/emitted_check_test.go, internal/declaration/health_test.go, internal/declaration/identity_test.go, internal/declaration/into_test.go, internal/declaration/module_test.go, internal/declaration/order_test.go, internal/declaration/ownership_test.go, internal/declaration/process_test.go, internal/declaration/provisioner_test.go, internal/declaration/replaces_test.go, internal/declaration/root_test.go, internal/declaration/schedule_declaration_test.go, internal/declaration/stateless_test.go, internal/declaration/trusted_test.go, internal/declaration/userscope_test.go, internal/filling/filling_test.go, internal/firewall/firewall_test.go, internal/liveness/liveness_test.go, internal/liveness/readiness_test.go, internal/liveness/replay_test.go, internal/liveness/waiting_test.go, internal/system/shapes_test.go, internal/system/system_test.go, internal/units/units_test.go, validate/validate.go and validate/validate_test.go read by no module's build, and rebuild nothing (issue 280) --- its merge-check.sh (go toolchain) go: downloading git.novox.be/novox/mesh-sdk/go v0.1.14-0.20261020085642-ab0c16ddad26 ok github.com/novox/mesh-host/cmd/mesh-bootstrap 1.012s ok github.com/novox/mesh-host/cmd/mesh-host 6.153s ok github.com/novox/mesh-host/examples 1.025s ok github.com/novox/mesh-host/internal/accounts 1.442s ok github.com/novox/mesh-host/internal/apply 5.350s ok github.com/novox/mesh-host/internal/bootstrap 4.069s ok github.com/novox/mesh-host/internal/bundle 1.021s ok github.com/novox/mesh-host/internal/filling 1.742s ok github.com/novox/mesh-host/internal/firewall 1.723s ok github.com/novox/mesh-host/internal/identity 1.096s ok github.com/novox/mesh-host/internal/image 1.021s ok github.com/novox/mesh-host/internal/inventory 1.112s ok github.com/novox/mesh-host/internal/link 10.982s ok github.com/novox/mesh-host/internal/liveness 2.163s ok github.com/novox/mesh-host/internal/meshcli 1.611s ok github.com/novox/mesh-host/internal/network 1.102s ok github.com/novox/mesh-host/internal/outward 1.087s ok github.com/novox/mesh-host/internal/profile 1.824s ok github.com/novox/mesh-host/internal/reachable 1.086s ok github.com/novox/mesh-host/internal/store 1.268s ok github.com/novox/mesh-host/internal/system 1.044s ok github.com/novox/mesh-host/internal/tunnel 1.048s ok github.com/novox/mesh-host/internal/units 1.041s ok github.com/novox/mesh-host/internal/upgrade 1.167s ok github.com/novox/mesh-host/internal/witness 4.754s ok github.com/novox/mesh-host/packaging 1.037s ? github.com/novox/mesh-host/rootsearch [no test files] ```
mesh-tools merged commit ce1b97ad97 into main 2026-10-20 12:51:54 +00:00
mesh-tools deleted branch feat/r4b-sdk-users 2026-10-20 12:51:55 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-host#124