The node composes again only when what it composes from changed (issue 774) #187

Merged
mesh-tools merged 1 commits from fix/compose-only-on-change into main 2026-10-31 01:07:23 +00:00
Member

Issue 774 (L3, the controller's hand-over). Every update to the node-engine composer's wants, placements, modules or laid values made a composition pass, even one that wrote back the value it held. Each pass asks the vault for the node's own secrets. The modules bucket is watched at >, so every take-in of any module started a pass on every node.

The shadow's change check (takeChanged/entry) moves onto the composer and gains the want, compared by its fingerprint, which is the only part of a want a composition reads. Both loops now make a pass only when what they compose from changed. A refused pass still comes again on its timer, and the compose verb still makes one.

Quick fix vs thorough fix: the quick fix was a fingerprint check in takeWant alone. The thorough fix was chosen because all four inputs had the same fault and the shared check already existed in the shadow.

Tests: new rows in TestTheNodeComposesItsWantsFromTheBus. Five writes that change nothing make no pass, and a want moved to another build and back makes one each. The rows fail without the fix (all five made a pass). Unit suite green; go vet and go vet -tags integration clean. The unit test count is unchanged.

Controller research piece: none. This is the node-engine, not the controller.

Reviewed-by: rev-compose@shanks at da0f8f1cfd

Issue 774 (L3, the controller's hand-over). Every update to the node-engine composer's wants, placements, modules or laid values made a composition pass, even one that wrote back the value it held. Each pass asks the vault for the node's own secrets. The modules bucket is watched at `>`, so every take-in of any module started a pass on every node. The shadow's change check (takeChanged/entry) moves onto the composer and gains the want, compared by its fingerprint, which is the only part of a want a composition reads. Both loops now make a pass only when what they compose from changed. A refused pass still comes again on its timer, and the compose verb still makes one. Quick fix vs thorough fix: the quick fix was a fingerprint check in takeWant alone. The thorough fix was chosen because all four inputs had the same fault and the shared check already existed in the shadow. Tests: new rows in TestTheNodeComposesItsWantsFromTheBus. Five writes that change nothing make no pass, and a want moved to another build and back makes one each. The rows fail without the fix (all five made a pass). Unit suite green; `go vet` and `go vet -tags integration` clean. The unit test count is unchanged. Controller research piece: none. This is the node-engine, not the controller. Reviewed-by: rev-compose@shanks at da0f8f1cfdb4612e9dbae8a909b03717ceab535f
mesh-tools added 1 commit 2026-10-31 01:02:43 +00:00
The node composes again only when what it composes from changed, so a want, placement, module or value written again asks the vault nothing (issue 774)
mesh/delivery merged: source.main moved to novox/mesh-host@bb8383b065a1
mesh/check being carried to da0f8f1cfdb4 on bb8383b065a1 | from 62b211bb6040
da0f8f1cfd
Every put under want.<node>.>, every module's take-in and every placement write
made a pass, and each pass asked the vault for the node's own secrets. The
shadow's change check moves onto the composer, gains the want (by its
fingerprint, the only part composed) and serves both loops.
Author
Member

Delivery novox/mesh-host@da0f8f1cfdb4 — merged since 2026-10-31T01:07:24Z

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

Transitions

  • 2026-10-31 01:02 (new) → proposed (announced): novox/mesh-host#187's head announced
  • 2026-10-31 01:02 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-31 01:07 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@da0f8f1cfdb4` — **merged** since 2026-10-31T01:07:24Z **Source** — source.main moved to novox/mesh-host@bb8383b065a1. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Transitions** - 2026-10-31 01:02 (new) → proposed (announced): novox/mesh-host#187's head announced - 2026-10-31 01:02 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-31 01:07 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 bb8383b065 into main 2026-10-31 01:07:23 +00:00
mesh-tools deleted branch fix/compose-only-on-change 2026-10-31 01:07:23 +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#187