The node agent folds what it runs at no new-form build into its own composition, judged from its haves, so the first composition after a restart keeps the bus (issue 1126) #152

Merged
mesh-tools merged 2 commits from fix/1126-fold into main 2026-10-27 08:09:07 +00:00
Member

Issue 1126, notes 22-23. Delivery group fix/1126-fold; pins mesh-sdk 05b67831 exactly.

  • The self-composer and the shadow fold every placed module whose have on this node is not removed and names no src2 fingerprint (nats, mesh-wireguard and the other seven today: all have such a have, read live by the reviewer). Haves outlast an agent or node-engine restart, so the first composition after the seed's switch keeps nats (review round 1: inOwn taken from what the agent applied was empty on a fresh agent).
  • The composer watches every have ('>'); a module have recomposes only when that set changes. shadowBuilds gives folded modules no trunk build.
  • Why not 'every placed module': it would fold a module whose want was removed and a new-form module whose want is still on the way; the controller folds only modules registered at no new-form build.

Safety: selfComposer runs only once the node's placement key exists (none today), so this changes nothing a node runs before the seed.
Tests: TestTheNodeComposesItsWantsFromTheBus row: a placed module with no want and an old-form have is in the first node composition (fails without); the removed-want case still passes; whole suite + integration vet pass; no new test functions.
Notes kept for later (review): a have that cannot be decoded counts as not folded (keep the last value instead); folded modules' haves never update their health in agent mode.

Reviewed-by: review-fold@shanks at 69b845c0f7

Issue 1126, notes 22-23. Delivery group fix/1126-fold; pins mesh-sdk 05b67831 exactly. - The self-composer and the shadow fold every placed module whose have on this node is not removed and names no src2 fingerprint (nats, mesh-wireguard and the other seven today: all have such a have, read live by the reviewer). Haves outlast an agent or node-engine restart, so the first composition after the seed's switch keeps nats (review round 1: inOwn taken from what the agent applied was empty on a fresh agent). - The composer watches every have ('>'); a module have recomposes only when that set changes. shadowBuilds gives folded modules no trunk build. - Why not 'every placed module': it would fold a module whose want was removed and a new-form module whose want is still on the way; the controller folds only modules registered at no new-form build. Safety: selfComposer runs only once the node's placement key exists (none today), so this changes nothing a node runs before the seed. Tests: TestTheNodeComposesItsWantsFromTheBus row: a placed module with no want and an old-form have is in the first node composition (fails without); the removed-want case still passes; whole suite + integration vet pass; no new test functions. Notes kept for later (review): a have that cannot be decoded counts as not folded (keep the last value instead); folded modules' haves never update their health in agent mode. Reviewed-by: review-fold@shanks at 69b845c0f7b2de782da35d7b81d60d5b7a6df7bf
mesh-tools added 2 commits 2026-10-27 08:06:45 +00:00
Pins mesh-sdk 05b67831, whose compositions fold a module no new-form build
names into the node's own. The shadow composed a placed module it runs inside
its own composition (nats, photos) at the trunk's build, as if the candidate
added it; shadowBuilds now leaves those to the fold, and both paths pass
frombus.InOwn of what runs.
Read what a node runs inside its own composition from its haves, not from what the agent applied, so a restarted agent's first composition keeps the bus (issue 1126, review of the fold round 1)
mesh/delivery merged: source.main moved to novox/mesh-host@50c229f90568
mesh/delivery-group group fix/1126-fold merged: every member is merged
mesh/check checking 69b845c0f7b2 on 0d22776b20ef | novox/mesh-host#152 in group fix/1126-fold
69b845c0f7
A fresh agent composes before it has applied anything (Running empty), so
InOwn of Running folded only mesh-wireguard and the switch would drop nats.
The composer now watches the node's haves: a placed module whose have names no
new-form fingerprint is folded; one with a new-form have whose want is removed
is not folded. The shadow uses the same set, over the candidate's placement.
Author
Member

Delivery novox/mesh-host@69b845c0f7b2 — merged since 2026-10-27T08:09:08Z

Source — source.main moved to novox/mesh-host@50c229f905. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.

Group fix/1126-fold: novox/mesh-host@69b845c0f7, novox/mesh-sdk@05b6783103

Transitions

  • 2026-10-27 08:06 (new) → proposed (announced): novox/mesh-host#152's head announced
  • 2026-10-27 08:06 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
  • 2026-10-27 08:09 ready → merged (merged): on the trunk its modules follow: merged there

The commit's note under refs/notes/mesh-plan keeps every transition of this change up to its merge: git log --notes=mesh-plan.

<!-- mesh-delivery:view --> **Delivery** `novox/mesh-host@69b845c0f7b2` — **merged** since 2026-10-27T08:09:08Z **Source** — source.main moved to novox/mesh-host@50c229f90568. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Group** `fix/1126-fold`: novox/mesh-host@69b845c0f7b2, novox/mesh-sdk@05b678310366 **Transitions** - 2026-10-27 08:06 (new) → proposed (announced): novox/mesh-host#152's head announced - 2026-10-27 08:06 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false) - 2026-10-27 08:09 ready → merged (merged): on the trunk its modules follow: merged there The commit's note under `refs/notes/mesh-plan` keeps every transition of this change up to its merge: `git log --notes=mesh-plan`.
mesh-tools merged commit 50c229f905 into main 2026-10-27 08:09:07 +00:00
mesh-tools deleted branch fix/1126-fold 2026-10-27 08:09:07 +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#152