Design 47, release 1-2, cut B: one delivery group with mesh-controller's feat/delivery-have.
Issue 1132 (ADR 0429 §4, §7 release 1): the node-engine reads each resource's module and the declaration's builds when the controller sends them (only to a node whose report says reads_modules), groups the apply's outcome per module, and writes node-engine_have<node>.<module> (phase, health, build, detail) and <node>.node (windows, busy, strays, filters, profile), only when a value differs, by compare-and-set, on the node's own credential; the bucket is bound once per pass under the queue's timeout and a refused write is logged and never holds the report. Nothing of today's report is deleted; the alive message stays (release 2).
Issue 1142 (its tests half): the bootstrap tests read build-agent's manifest from mesh-controller beside the check, where it lives since issue 1019; mesh-host's main failed its own check without it. The genesis half is issue 1152.
Tests: 1132/AC1-AC8 (AC8 integration), 1142/AC1. Try build-1792344579242916461 passed in 59 s.
Delivery: the node-engine to ace, g14, novox and shanks, with the controller of this group.
Design 47, release 1-2, cut B: one delivery group with mesh-controller's feat/delivery-have.
- Issue 1132 (ADR 0429 §4, §7 release 1): the node-engine reads each resource's `module` and the declaration's `builds` when the controller sends them (only to a node whose report says `reads_modules`), groups the apply's outcome per module, and writes `node-engine_have` `<node>.<module>` (phase, health, build, detail) and `<node>.node` (windows, busy, strays, filters, profile), only when a value differs, by compare-and-set, on the node's own credential; the bucket is bound once per pass under the queue's timeout and a refused write is logged and never holds the report. Nothing of today's report is deleted; the alive message stays (release 2).
- Issue 1142 (its tests half): the bootstrap tests read build-agent's manifest from mesh-controller beside the check, where it lives since issue 1019; mesh-host's main failed its own check without it. The genesis half is issue 1152.
Tests: 1132/AC1-AC8 (AC8 integration), 1142/AC1. Try build-1792344579242916461 passed in 59 s.
Delivery: the node-engine to ace, g14, novox and shanks, with the controller of this group.
Reviewed-by: reviewer-r12@shanks at aab65b81f65c3a2984e0c3b8dd7af1219d2650e5
The node-engine reads a resource's module and a declaration's builds, says it does in every report (reads_modules), groups the apply's outcome per module with every failing resource named, and writes have.<node>.<module> and have.<node>.node to the bucket only when a value differs, never ahead of or in place of the report (novox/hq ADR 0429 section 4).
mesh/merge-gate head aab65b81f65c merged into trunk 6469e8238443 — pass: group feat/delivery-have composed: every machine composes with the change as it di…
Deliverynovox/mesh-host@aab65b81f65c — delivered since 2026-10-18T21:45:42Z
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
composed together: pass — every machine composes with the change as it did without (4 of 4 compose)
Machines
mesh-host on every machine running it: sent
route-proxy on every machine running it: sent
mesh-controller on every machine running it: sent
build-agent on every machine running it: sent
Transitions
2026-10-18 17:34 (new) → proposed (announced): novox/mesh-host#118's head announced
2026-10-18 17:37 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-18 17:37 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-18 18:37 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-18 18:37 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-18 21:45 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@aab65b81f65c` — **delivered** since 2026-10-18T21:45:42Z
**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
**Group** `feat/delivery-have`: novox/mesh-controller@06bf8cb2fb7a, novox/mesh-host@aab65b81f65c
- composed together: pass — every machine composes with the change as it did without (4 of 4 compose)
**Machines**
- mesh-host on every machine running it: sent
- route-proxy on every machine running it: sent
- mesh-controller on every machine running it: sent
- build-agent on every machine running it: sent
**Transitions**
- 2026-10-18 17:34 (new) → proposed (announced): novox/mesh-host#118's head announced
- 2026-10-18 17:37 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-18 17:37 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-18 18:37 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-18 18:37 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-18 21:45 delivering → delivered (done): its walk is done, carrying its own commit: every machine of its deploy plan passed, or was left as its policy says
The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
Merge check at aab65b81
Judged: head aab65b81f65c merged into trunk 6469e8238443; read beside it: mesh-catalog a6295d6b98d5, mesh-controller 48e9656c670b, mesh-controller-main 48e9656c670b, 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: cmd/mesh-host/module_facts_test.go, internal/apply/module_results_test.go, internal/bootstrap/builder_test.go, internal/declaration/module_test.go, internal/link/have_nats_integration_test.go, internal/link/have_test.go, internal/link/queue_test.go
Run by the build seat on ace as build-1792344859720760949 (builds --log build-1792344859720760949).
--- 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-18T17:23:47Z 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 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
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 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
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 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
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 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
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-18T17:23:47Z
machines:
- a machine (f35): composes
- holds mesh-dns-resolver (idt): composes
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-config, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-provisioner, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
- a machine (yvbpsm): composes
a merge would rebuild 1 module(s) in 1 tier(s): mesh-host
notes:
- cmd/mesh-host/module_facts_test.go, internal/apply/module_results_test.go, internal/bootstrap/builder_test.go, internal/declaration/module_test.go, internal/link/have_nats_integration_test.go, internal/link/have_test.go and internal/link/queue_test.go read by no module's build, and rebuild nothing (issue 280)
--- its merge-check.sh (go toolchain)
ok github.com/novox/mesh-host/cmd/mesh-bootstrap 1.014s
ok github.com/novox/mesh-host/cmd/mesh-host 6.107s
ok github.com/novox/mesh-host/examples 1.027s
ok github.com/novox/mesh-host/internal/accounts 1.496s
ok github.com/novox/mesh-host/internal/apply 5.122s
ok github.com/novox/mesh-host/internal/bootstrap 3.949s
ok github.com/novox/mesh-host/internal/bundle 1.034s
ok github.com/novox/mesh-host/internal/declaration 1.073s
ok github.com/novox/mesh-host/internal/filling 1.754s
ok github.com/novox/mesh-host/internal/firewall 1.767s
ok github.com/novox/mesh-host/internal/identity 1.107s
ok github.com/novox/mesh-host/internal/image 1.032s
ok github.com/novox/mesh-host/internal/inventory 1.061s
ok github.com/novox/mesh-host/internal/link 10.619s
ok github.com/novox/mesh-host/internal/liveness 2.122s
ok github.com/novox/mesh-host/internal/meshcli 1.581s
ok github.com/novox/mesh-host/internal/network 1.052s
ok github.com/novox/mesh-host/internal/outward 1.039s
ok github.com/novox/mesh-host/internal/profile 1.646s
ok github.com/novox/mesh-host/internal/reachable 1.037s
ok github.com/novox/mesh-host/internal/store 1.229s
ok github.com/novox/mesh-host/internal/system 1.049s
ok github.com/novox/mesh-host/internal/tunnel 1.050s
ok github.com/novox/mesh-host/internal/units 1.032s
ok github.com/novox/mesh-host/internal/upgrade 1.157s
ok github.com/novox/mesh-host/internal/witness 4.568s
ok github.com/novox/mesh-host/packaging 1.020s
? github.com/novox/mesh-host/rootsearch [no test files]
ok github.com/novox/mesh-host/validate 1.012s
**Merge check** at `aab65b81`
Judged: head `aab65b81f65c` merged into trunk `6469e8238443`; read beside it: mesh-catalog `a6295d6b98d5`, mesh-controller `48e9656c670b`, mesh-controller-main `48e9656c670b`, 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: cmd/mesh-host/module_facts_test.go, internal/apply/module_results_test.go, internal/bootstrap/builder_test.go, internal/declaration/module_test.go, internal/link/have_nats_integration_test.go, internal/link/have_test.go, internal/link/queue_test.go
Run by the build seat on ace as `build-1792344859720760949` (`builds --log build-1792344859720760949`).
```
--- 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-18T17:23:47Z 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 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
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 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
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 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
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 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
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-18T17:23:47Z
machines:
- a machine (f35): composes
- holds mesh-dns-resolver (idt): composes
- holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-config, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-provisioner, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
- a machine (yvbpsm): composes
a merge would rebuild 1 module(s) in 1 tier(s): mesh-host
notes:
- cmd/mesh-host/module_facts_test.go, internal/apply/module_results_test.go, internal/bootstrap/builder_test.go, internal/declaration/module_test.go, internal/link/have_nats_integration_test.go, internal/link/have_test.go and internal/link/queue_test.go read by no module's build, and rebuild nothing (issue 280)
--- its merge-check.sh (go toolchain)
ok github.com/novox/mesh-host/cmd/mesh-bootstrap 1.014s
ok github.com/novox/mesh-host/cmd/mesh-host 6.107s
ok github.com/novox/mesh-host/examples 1.027s
ok github.com/novox/mesh-host/internal/accounts 1.496s
ok github.com/novox/mesh-host/internal/apply 5.122s
ok github.com/novox/mesh-host/internal/bootstrap 3.949s
ok github.com/novox/mesh-host/internal/bundle 1.034s
ok github.com/novox/mesh-host/internal/declaration 1.073s
ok github.com/novox/mesh-host/internal/filling 1.754s
ok github.com/novox/mesh-host/internal/firewall 1.767s
ok github.com/novox/mesh-host/internal/identity 1.107s
ok github.com/novox/mesh-host/internal/image 1.032s
ok github.com/novox/mesh-host/internal/inventory 1.061s
ok github.com/novox/mesh-host/internal/link 10.619s
ok github.com/novox/mesh-host/internal/liveness 2.122s
ok github.com/novox/mesh-host/internal/meshcli 1.581s
ok github.com/novox/mesh-host/internal/network 1.052s
ok github.com/novox/mesh-host/internal/outward 1.039s
ok github.com/novox/mesh-host/internal/profile 1.646s
ok github.com/novox/mesh-host/internal/reachable 1.037s
ok github.com/novox/mesh-host/internal/store 1.229s
ok github.com/novox/mesh-host/internal/system 1.049s
ok github.com/novox/mesh-host/internal/tunnel 1.050s
ok github.com/novox/mesh-host/internal/units 1.032s
ok github.com/novox/mesh-host/internal/upgrade 1.157s
ok github.com/novox/mesh-host/internal/witness 4.568s
ok github.com/novox/mesh-host/packaging 1.020s
? github.com/novox/mesh-host/rootsearch [no test files]
ok github.com/novox/mesh-host/validate 1.012s
```
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.
Design 47, release 1-2, cut B: one delivery group with mesh-controller's feat/delivery-have.
moduleand the declaration'sbuildswhen the controller sends them (only to a node whose report saysreads_modules), groups the apply's outcome per module, and writesnode-engine_have<node>.<module>(phase, health, build, detail) and<node>.node(windows, busy, strays, filters, profile), only when a value differs, by compare-and-set, on the node's own credential; the bucket is bound once per pass under the queue's timeout and a refused write is logged and never holds the report. Nothing of today's report is deleted; the alive message stays (release 2).Tests: 1132/AC1-AC8 (AC8 integration), 1142/AC1. Try build-1792344579242916461 passed in 59 s.
Delivery: the node-engine to ace, g14, novox and shanks, with the controller of this group.
Reviewed-by: reviewer-r12@shanks at
aab65b81f6Delivery
novox/mesh-host@aab65b81f65c— delivered since 2026-10-18T21:45:42ZDelivery plan — builds mesh-host → ace, g14, novox, shanks; no bus step
Group
feat/delivery-have: novox/mesh-controller@06bf8cb2fb, novox/mesh-host@aab65b81f6Machines
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.Merge check at
aab65b81Judged: head
aab65b81f65cmerged into trunk6469e8238443; read beside it: mesh-cataloga6295d6b98d5, mesh-controller48e9656c670b, mesh-controller-main48e9656c670b, mesh-tools7412c5b6c9c5mesh/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 passedDelivery plan — builds mesh-host → ace, g14, novox, shanks; no bus step
Run by the build seat on ace as
build-1792344859720760949(builds --log build-1792344859720760949).