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.
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
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.
Deliverynovox/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`.
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.
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 vetandgo vet -tags integrationclean. The unit test count is unchanged.Controller research piece: none. This is the node-engine, not the controller.
Reviewed-by: rev-compose@shanks at
da0f8f1cfdDelivery
novox/mesh-host@da0f8f1cfdb4— merged since 2026-10-31T01:07:24ZSource — source.main moved to novox/mesh-host@bb8383b065. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.