frombus: a node composing itself takes its modules from their builds and reads what providers elsewhere serve (issue 1126, group fix/1126-node-creds)
#109
Merged
mesh-toolsmerged 3 commits from fix/1126-node-creds into main2026-10-27 20:32:30 +00:00
Delivery group fix/1126-node-creds with mesh-host and mesh-delivery (merge order: one pass for all).
A node that composes its own modules (ADR 0549) must hand a moved module its credentials and settle a served operator setting (${config:domain}) as the controller does. frombus now composes each module from its build key (waiting, in the controller's words, on a done key whose artifact names no reference), reads served keys of providers on other nodes, and leaves a module the node runs inside its own composition to its manifest (fold guard, with a row).
Nothing live changes yet: no node composes itself until the placement seed returns.
Tests: rows in frombus TestInput (reference wait, fold guard), each failing without its fix; the bus permission is proven in mesh-host's H8 under the real per-node user (ADR 0560).
Quick or thorough: thorough (one composition path in the sdk for controller and node, not a node-only patch).
Delivery group fix/1126-node-creds with mesh-host and mesh-delivery (merge order: one pass for all).
A node that composes its own modules (ADR 0549) must hand a moved module its credentials and settle a served operator setting (`${config:domain}`) as the controller does. frombus now composes each module from its build key (waiting, in the controller's words, on a done key whose artifact names no reference), reads served keys of providers on other nodes, and leaves a module the node runs inside its own composition to its manifest (fold guard, with a row).
Nothing live changes yet: no node composes itself until the placement seed returns.
Tests: rows in frombus TestInput (reference wait, fold guard), each failing without its fix; the bus permission is proven in mesh-host's H8 under the real per-node user (ADR 0560).
Quick or thorough: thorough (one composition path in the sdk for controller and node, not a node-only patch).
Reviewed-by: review-1126d@shanks at 7a8e9f9706486669e97705f1cdb6b2f6002e24f5
frombus composed every module from the indexer's raw manifest: no moved module
was handed, so the node stood in for own secrets the vault leaves to the
provisioner (the seed's refusals on all four nodes), and a provider elsewhere
had no config values, so mailu's served domain refused shanks.
- takein: the controller's take-in of a done key (artifacts, launchers, the
templates archive's texts, Resolve) as one SDK rule; catalogue.Launchers holds
the launcher rule buildstep now delegates to.
- frombus: each module placed on the composing node, and each kept at another
build (Scope.KeptAt, a fingerprint), composes from its built manifest; another
node's modules give the keys their served values fill (Reader.Served).
- buscompose: Declared.Served and Principal.ServedReads grant every node the read
of exactly those keys of mesh-config_resolved.
- compose.ArtifactStoreAddress: the store as the node's composition routes to it.
Deliverynovox/mesh-sdk@7a8e9f970648 — merged since 2026-10-27T20:32:31Z
Source — source.main moved to novox/mesh-sdk@d48365aed0. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
2026-10-27 20:31 (new) → proposed (announced): novox/mesh-sdk#109's head announced
2026-10-27 20:31 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 20:32 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-sdk@7a8e9f970648` — **merged** since 2026-10-27T20:32:31Z
**Source** — source.main moved to novox/mesh-sdk@d48365aed010. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Group** `fix/1126-node-creds`: novox/mesh-delivery@bb7f2ff365c7, novox/mesh-host@6a4718b712b2, novox/mesh-sdk@7a8e9f970648
**Transitions**
- 2026-10-27 20:31 (new) → proposed (announced): novox/mesh-sdk#109's head announced
- 2026-10-27 20:31 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 20:32 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: the operator's Approve of this pull request's merge into main is ended: a head it covers moved on: the heads it covers are no longer the group's heads. Nothing is merged on it. The operator is asked again once the checks pass at the new head.
mesh-delivery: the operator's Approve of this pull request's merge into main is ended: a head it covers moved on: the heads it covers are no longer the group's heads. Nothing is merged on it. The operator is asked again once the checks pass at the new head.
mesh-delivery: the operator's Approve of this pull request's merge into main is ended: a head it covers moved on: the heads it covers are no longer the group's heads. Nothing is merged on it. The operator is asked again once the checks pass at the new head.
mesh-delivery: the operator's Approve of this pull request's merge into main is ended: a head it covers moved on: the heads it covers are no longer the group's heads. Nothing is merged on it. The operator is asked again once the checks pass at the new head.
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.
Delivery group fix/1126-node-creds with mesh-host and mesh-delivery (merge order: one pass for all).
A node that composes its own modules (ADR 0549) must hand a moved module its credentials and settle a served operator setting (
${config:domain}) as the controller does. frombus now composes each module from its build key (waiting, in the controller's words, on a done key whose artifact names no reference), reads served keys of providers on other nodes, and leaves a module the node runs inside its own composition to its manifest (fold guard, with a row).Nothing live changes yet: no node composes itself until the placement seed returns.
Tests: rows in frombus TestInput (reference wait, fold guard), each failing without its fix; the bus permission is proven in mesh-host's H8 under the real per-node user (ADR 0560).
Quick or thorough: thorough (one composition path in the sdk for controller and node, not a node-only patch).
Reviewed-by: review-1126d@shanks at
7a8e9f9706Delivery
novox/mesh-sdk@7a8e9f970648— merged since 2026-10-27T20:32:31ZSource — source.main moved to novox/mesh-sdk@d48365aed0. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Group
fix/1126-node-creds: novox/mesh-delivery@bb7f2ff365, novox/mesh-host@6a4718b712, novox/mesh-sdk@7a8e9f9706Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.mesh-delivery: the operator's Approve of this pull request's merge into main is ended: a head it covers moved on: the heads it covers are no longer the group's heads. Nothing is merged on it. The operator is asked again once the checks pass at the new head.
mesh-delivery: the operator's Approve of this pull request's merge into main is ended: a head it covers moved on: the heads it covers are no longer the group's heads. Nothing is merged on it. The operator is asked again once the checks pass at the new head.