Count the home of an account a declaration makes for its own .ssh, never taking over another account's home (issue 1542) #125

Merged
mesh-tools merged 2 commits from fix/1542-declared-account-is-a-home into main 2026-10-20 23:37:59 +00:00
Member

Fixes issue 1542 (design 47 R4c-3, ADR 0466 §1-§2). On 2026-10-21 01:16 shanks refused mesh-build-go's ${dir:state}/.ssh ('a .ssh directory is placed only below its account's home, as that account's'): the placement guard knew homes only from passwd accounts with uid >= 1000 or a home under /home, so a system account the same declaration makes never had one, and the module could never be placed.

  • internal/apply/placement_guard.go: declaredHomes counts a declared user's home for a path with a .ssh part only, and only when passwd has no account of that name or has it with exactly the declared home (so the next apply judges the same), and the home is not at or below another account's home (any uid) nor at or above a protected root; it never overwrites a machine home; a declared account is matched by name alone (owner -1, numbers refused).
  • internal/apply/mesh_dirs.go: the read-only JudgeDirectories judges the same way.
  • Tests in internal/apply/declared_home_test.go (1542/AC1-AC3, the take-over cases evil/postgres/root over a person's home, an existing name with another home, owners -1/-1:0/0/1001, the second apply); each failing case fails on the code before it.

Checked: unit suite passes (TMPDIR under /tmp); try build-1792539158716906260 PASSED at 5a2bc039 (36 s). Review round 1 found the take-over and -1 holes (B1, B2), fixed in the second commit; round 2 approved. Follow-up opened: issue 1550 (an unreadable user database fails open, as on main).

Reviewed-by: review-1542@shanks at 5a2bc03910

Fixes issue 1542 (design 47 R4c-3, ADR 0466 §1-§2). On 2026-10-21 01:16 shanks refused mesh-build-go's ${dir:state}/.ssh ('a .ssh directory is placed only below its account's home, as that account's'): the placement guard knew homes only from passwd accounts with uid >= 1000 or a home under /home, so a system account the same declaration makes never had one, and the module could never be placed. - internal/apply/placement_guard.go: declaredHomes counts a declared user's home for a path with a .ssh part only, and only when passwd has no account of that name or has it with exactly the declared home (so the next apply judges the same), and the home is not at or below another account's home (any uid) nor at or above a protected root; it never overwrites a machine home; a declared account is matched by name alone (owner -1, numbers refused). - internal/apply/mesh_dirs.go: the read-only JudgeDirectories judges the same way. - Tests in internal/apply/declared_home_test.go (1542/AC1-AC3, the take-over cases evil/postgres/root over a person's home, an existing name with another home, owners -1/-1:0/0/1001, the second apply); each failing case fails on the code before it. Checked: unit suite passes (TMPDIR under /tmp); try build-1792539158716906260 PASSED at 5a2bc039 (36 s). Review round 1 found the take-over and -1 holes (B1, B2), fixed in the second commit; round 2 approved. Follow-up opened: issue 1550 (an unreadable user database fails open, as on main). Reviewed-by: review-1542@shanks at 5a2bc0391054fa5d9891a408f969b1bff664ff31
mesh-tools added 2 commits 2026-10-20 23:33:54 +00:00
Let a declared account only add a home, never take one over, and match it by name alone, so no declaration hands another account's .ssh away (issue 1542, review round 1)
mesh/merge-gate head 5a2bc0391054 merged into trunk ce1b97ad973d — pass: builds mesh-host → ace, g14, novox, shanks; no bus step; every machine composes wi…
mesh/repo-check head 5a2bc0391054 merged into trunk ce1b97ad973d — pass: its merge-check.sh passed
mesh/delivery delivered
5a2bc03910
Author
Member

Delivery novox/mesh-host@5a2bc0391054 — delivered since 2026-10-20T23:40:04Z

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 23:33 (new) → proposed (announced): novox/mesh-host#125's head announced
  • 2026-10-20 23:37 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
  • 2026-10-20 23:37 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
  • 2026-10-20 23:38 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 23:38 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 23:40 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@5a2bc0391054` — **delivered** since 2026-10-20T23:40:04Z **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 23:33 (new) → proposed (announced): novox/mesh-host#125's head announced - 2026-10-20 23:37 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit - 2026-10-20 23:37 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail - 2026-10-20 23:38 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 23:38 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 23:40 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 5a2bc039
Judged: head 5a2bc0391054 merged into trunk ce1b97ad973d; read beside it: mesh-catalog 6c6d5f681c30, mesh-controller f4584e6fa285, mesh-controller-main f4584e6fa285, mesh-tools e0fadc43d9dd

  • mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-host)
  • mesh/repo-check: PASS — 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: internal/apply/declared_home_test.go

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

--- 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-20T23:27:28Z says they run
composing every machine as the mesh is
HELD: the vault did not answer for the core's credentials on f35; sealed by the controller until the vault holds it: mesh-provisioner-client — own/f35/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on idt; sealed by the controller until the vault holds it: mesh-provisioner-client — own/idt/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on ygcyr; sealed by the controller until the vault holds it: mesh-provisioner, mesh-provisioner-client, nats — own/ygcyr/mesh-provisioner/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/nats/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
the bus's user list leaves out 7 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, ygcyr.mesh-mail.send, node.yvbpsm, yvbpsm.brother.device. Each is a user that cannot connect until one is issued
HELD: the vault did not answer for the core's credentials on yvbpsm; sealed by the controller until the vault holds it: mesh-provisioner-client — own/yvbpsm/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on f35; sealed by the controller until the vault holds it: mesh-provisioner-client — own/f35/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on idt; sealed by the controller until the vault holds it: mesh-provisioner-client — own/idt/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on ygcyr; sealed by the controller until the vault holds it: mesh-provisioner, mesh-provisioner-client, nats — own/ygcyr/mesh-provisioner/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/nats/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
the bus's user list leaves out 7 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, ygcyr.mesh-mail.send, node.yvbpsm, yvbpsm.brother.device. Each is a user that cannot connect until one is issued
HELD: the vault did not answer for the core's credentials on yvbpsm; sealed by the controller until the vault holds it: mesh-provisioner-client — own/yvbpsm/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
composing every machine with the change
HELD: the vault did not answer for the core's credentials on f35; sealed by the controller until the vault holds it: mesh-provisioner-client — own/f35/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on idt; sealed by the controller until the vault holds it: mesh-provisioner-client — own/idt/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on ygcyr; sealed by the controller until the vault holds it: mesh-provisioner, mesh-provisioner-client, nats — own/ygcyr/mesh-provisioner/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/nats/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
the bus's user list leaves out 7 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, ygcyr.mesh-mail.send, node.yvbpsm, yvbpsm.brother.device. Each is a user that cannot connect until one is issued
HELD: the vault did not answer for the core's credentials on yvbpsm; sealed by the controller until the vault holds it: mesh-provisioner-client — own/yvbpsm/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on f35; sealed by the controller until the vault holds it: mesh-provisioner-client — own/f35/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on idt; sealed by the controller until the vault holds it: mesh-provisioner-client — own/idt/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
HELD: the vault did not answer for the core's credentials on ygcyr; sealed by the controller until the vault holds it: mesh-provisioner, mesh-provisioner-client, nats — own/ygcyr/mesh-provisioner/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/nats/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
the bus's user list leaves out 7 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, ygcyr.mesh-mail.send, node.yvbpsm, yvbpsm.brother.device. Each is a user that cannot connect until one is issued
HELD: the vault did not answer for the core's credentials on yvbpsm; sealed by the controller until the vault holds it: mesh-provisioner-client — own/yvbpsm/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-20T23:27:28Z

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:
  - internal/apply/declared_home_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.013s
ok  	github.com/novox/mesh-host/cmd/mesh-host	6.096s
ok  	github.com/novox/mesh-host/examples	1.025s
ok  	github.com/novox/mesh-host/internal/accounts	1.515s
ok  	github.com/novox/mesh-host/internal/apply	5.159s
ok  	github.com/novox/mesh-host/internal/bootstrap	3.828s
ok  	github.com/novox/mesh-host/internal/bundle	1.011s
ok  	github.com/novox/mesh-host/internal/filling	1.728s
ok  	github.com/novox/mesh-host/internal/firewall	1.644s
ok  	github.com/novox/mesh-host/internal/identity	1.141s
ok  	github.com/novox/mesh-host/internal/image	1.060s
ok  	github.com/novox/mesh-host/internal/inventory	1.088s
ok  	github.com/novox/mesh-host/internal/link	10.914s
ok  	github.com/novox/mesh-host/internal/liveness	2.148s
ok  	github.com/novox/mesh-host/internal/meshcli	1.592s
ok  	github.com/novox/mesh-host/internal/network	1.079s
ok  	github.com/novox/mesh-host/internal/outward	1.067s
ok  	github.com/novox/mesh-host/internal/profile	1.781s
ok  	github.com/novox/mesh-host/internal/reachable	1.061s
ok  	github.com/novox/mesh-host/internal/store	1.242s
ok  	github.com/novox/mesh-host/internal/system	1.065s
ok  	github.com/novox/mesh-host/internal/tunnel	1.065s
ok  	github.com/novox/mesh-host/internal/units	1.063s
ok  	github.com/novox/mesh-host/internal/upgrade	1.152s
ok  	github.com/novox/mesh-host/internal/witness	4.434s
ok  	github.com/novox/mesh-host/packaging	1.010s
?   	github.com/novox/mesh-host/rootsearch	[no test files]
**Merge check** at `5a2bc039` Judged: head `5a2bc0391054` merged into trunk `ce1b97ad973d`; read beside it: mesh-catalog `6c6d5f681c30`, mesh-controller `f4584e6fa285`, mesh-controller-main `f4584e6fa285`, mesh-tools `e0fadc43d9dd` - `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: mesh-host) - `mesh/repo-check`: **PASS** — 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: internal/apply/declared_home_test.go Run by the build seat on ace as `build-1792539236721726372` (`builds --log build-1792539236721726372`). ``` --- 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-20T23:27:28Z says they run composing every machine as the mesh is HELD: the vault did not answer for the core's credentials on f35; sealed by the controller until the vault holds it: mesh-provisioner-client — own/f35/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus HELD: the vault did not answer for the core's credentials on idt; sealed by the controller until the vault holds it: mesh-provisioner-client — own/idt/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus HELD: the vault did not answer for the core's credentials on ygcyr; sealed by the controller until the vault holds it: mesh-provisioner, mesh-provisioner-client, nats — own/ygcyr/mesh-provisioner/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/nats/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus the bus's user list leaves out 7 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, ygcyr.mesh-mail.send, node.yvbpsm, yvbpsm.brother.device. Each is a user that cannot connect until one is issued HELD: the vault did not answer for the core's credentials on yvbpsm; sealed by the controller until the vault holds it: mesh-provisioner-client — own/yvbpsm/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus HELD: the vault did not answer for the core's credentials on f35; sealed by the controller until the vault holds it: mesh-provisioner-client — own/f35/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus HELD: the vault did not answer for the core's credentials on idt; sealed by the controller until the vault holds it: mesh-provisioner-client — own/idt/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus HELD: the vault did not answer for the core's credentials on ygcyr; sealed by the controller until the vault holds it: mesh-provisioner, mesh-provisioner-client, nats — own/ygcyr/mesh-provisioner/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/nats/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus the bus's user list leaves out 7 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, ygcyr.mesh-mail.send, node.yvbpsm, yvbpsm.brother.device. Each is a user that cannot connect until one is issued HELD: the vault did not answer for the core's credentials on yvbpsm; sealed by the controller until the vault holds it: mesh-provisioner-client — own/yvbpsm/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus composing every machine with the change HELD: the vault did not answer for the core's credentials on f35; sealed by the controller until the vault holds it: mesh-provisioner-client — own/f35/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus HELD: the vault did not answer for the core's credentials on idt; sealed by the controller until the vault holds it: mesh-provisioner-client — own/idt/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus HELD: the vault did not answer for the core's credentials on ygcyr; sealed by the controller until the vault holds it: mesh-provisioner, mesh-provisioner-client, nats — own/ygcyr/mesh-provisioner/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/nats/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus the bus's user list leaves out 7 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, ygcyr.mesh-mail.send, node.yvbpsm, yvbpsm.brother.device. Each is a user that cannot connect until one is issued HELD: the vault did not answer for the core's credentials on yvbpsm; sealed by the controller until the vault holds it: mesh-provisioner-client — own/yvbpsm/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus HELD: the vault did not answer for the core's credentials on f35; sealed by the controller until the vault holds it: mesh-provisioner-client — own/f35/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus HELD: the vault did not answer for the core's credentials on idt; sealed by the controller until the vault holds it: mesh-provisioner-client — own/idt/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus HELD: the vault did not answer for the core's credentials on ygcyr; sealed by the controller until the vault holds it: mesh-provisioner, mesh-provisioner-client, nats — own/ygcyr/mesh-provisioner/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus; own/ygcyr/nats/broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus the bus's user list leaves out 7 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, ygcyr.mesh-mail.send, node.yvbpsm, yvbpsm.brother.device. Each is a user that cannot connect until one is issued HELD: the vault did not answer for the core's credentials on yvbpsm; sealed by the controller until the vault holds it: mesh-provisioner-client — own/yvbpsm/mesh-provisioner-client/provisioner-broker: this control plane has no MESH_BUS_NATS, so it cannot reach the mesh's bus merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose) judged by controller development build against the facts of 2026-10-20T23:27:28Z 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: - internal/apply/declared_home_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.013s ok github.com/novox/mesh-host/cmd/mesh-host 6.096s ok github.com/novox/mesh-host/examples 1.025s ok github.com/novox/mesh-host/internal/accounts 1.515s ok github.com/novox/mesh-host/internal/apply 5.159s ok github.com/novox/mesh-host/internal/bootstrap 3.828s ok github.com/novox/mesh-host/internal/bundle 1.011s ok github.com/novox/mesh-host/internal/filling 1.728s ok github.com/novox/mesh-host/internal/firewall 1.644s ok github.com/novox/mesh-host/internal/identity 1.141s ok github.com/novox/mesh-host/internal/image 1.060s ok github.com/novox/mesh-host/internal/inventory 1.088s ok github.com/novox/mesh-host/internal/link 10.914s ok github.com/novox/mesh-host/internal/liveness 2.148s ok github.com/novox/mesh-host/internal/meshcli 1.592s ok github.com/novox/mesh-host/internal/network 1.079s ok github.com/novox/mesh-host/internal/outward 1.067s ok github.com/novox/mesh-host/internal/profile 1.781s ok github.com/novox/mesh-host/internal/reachable 1.061s ok github.com/novox/mesh-host/internal/store 1.242s ok github.com/novox/mesh-host/internal/system 1.065s ok github.com/novox/mesh-host/internal/tunnel 1.065s ok github.com/novox/mesh-host/internal/units 1.063s ok github.com/novox/mesh-host/internal/upgrade 1.152s ok github.com/novox/mesh-host/internal/witness 4.434s ok github.com/novox/mesh-host/packaging 1.010s ? github.com/novox/mesh-host/rootsearch [no test files] ```
mesh-tools merged commit c5c4caa2a4 into main 2026-10-20 23:37:59 +00:00
mesh-tools deleted branch fix/1542-declared-account-is-a-home 2026-10-20 23:37:59 +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#125