What it does: (1) each node's engine writes its own declared packages (bucket mesh-host_packages, key ) only when a composition changes them, and the node seat answers packages beside the controller mirror and their difference; pacman reads it and names its source (the last unkept controller read before the lease write, per mesh-grants.grants_lease_check). Deviation said: the read is named mesh-host.packages (the engine's module bucket, as disk-load reads mesh-host.data), not node-engine.packages. (2) mesh-provisioner composes a node once over one read with a bounded take-in cache and reads its own states from the watched copy with write-through; per-phase timings in provisioner_compose. Measured on captured novox inputs: 11.7 s -> 0.49 s per compose, identical plans over nine runs. (3) pacman keeps one mirror list for the mesh on the bus, ranked inside the write that opens a weekly round; each node writes /etc/pacman.d/mirrorlist from it through the root helper, and a round's run starts only once the file holds the round's list; reflector's timer is disabled.
Quick vs thorough: thorough for all three (the slow reader's third instance; the decided per-node packages; the decided mirror list). Test counts unchanged in every repository. Local reproduction: unit and integration of every changed module, go vet -tags integration of all 134 go.mod files, offline build with -mod=readonly. Review: reviewerP@shanks, two rounds (round 1: the opener upgraded before its file was written; round 2: a committed binary removed).
This member: delivery.DeclaredPackagesOf / DiffDeclaredPackages and the engine's grant on its own key; compose.Composing resolves each machine once per composition; frombus.PlansHeldTwice with per-phase timings; a bounded take-in cache in StatesReader; watched.go Wrote/Removed (write-through ordered by revision).
Reviewed-by: reviewerP@shanks at b2a27ed5ce
Pushed-by: lead-47@shanks
Delivery group feat/node-packages (mesh-sdk, mesh-host, mesh-catalog, mesh-delivery), one check, one Approve. Issues 1953 (design 47 L5), 1954 (L6), 1876. Decisions: ADR 0565 clauses 1, 6, 14, 15; ADR 0570; ADR 0580; ADR 0585.
What it does: (1) each node's engine writes its own declared packages (bucket mesh-host_packages, key <node>) only when a composition changes them, and the node seat answers `packages` beside the controller mirror and their difference; pacman reads it and names its source (the last unkept controller read before the lease write, per mesh-grants.grants_lease_check). Deviation said: the read is named mesh-host.packages (the engine's module bucket, as disk-load reads mesh-host.data), not node-engine.packages. (2) mesh-provisioner composes a node once over one read with a bounded take-in cache and reads its own states from the watched copy with write-through; per-phase timings in provisioner_compose. Measured on captured novox inputs: 11.7 s -> 0.49 s per compose, identical plans over nine runs. (3) pacman keeps one mirror list for the mesh on the bus, ranked inside the write that opens a weekly round; each node writes /etc/pacman.d/mirrorlist from it through the root helper, and a round's run starts only once the file holds the round's list; reflector's timer is disabled.
Quick vs thorough: thorough for all three (the slow reader's third instance; the decided per-node packages; the decided mirror list). Test counts unchanged in every repository. Local reproduction: unit and integration of every changed module, go vet -tags integration of all 134 go.mod files, offline build with -mod=readonly. Review: reviewerP@shanks, two rounds (round 1: the opener upgraded before its file was written; round 2: a committed binary removed).
This member: delivery.DeclaredPackagesOf / DiffDeclaredPackages and the engine's grant on its own key; compose.Composing resolves each machine once per composition; frombus.PlansHeldTwice with per-phase timings; a bounded take-in cache in StatesReader; watched.go Wrote/Removed (write-through ordered by revision).
Reviewed-by: reviewerP@shanks at b2a27ed5cec466e4ad9913a152432bae8576b9c2
Pushed-by: lead-47@shanks
https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
The engine composes its node's wants itself, so the derivation the controller keeps
privately moves beside the layout: DeclaredPackagesOf gives the mirror's bytes from the
compositions, DiffDeclaredPackages what the node seat's verb packages compares until the
lease write, and EnginePackagesRead names the state as readers declare it (mesh-host.packages,
as mesh-host.data). Each engine may read the controller mirror's key of its own node alone.
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
A node's plans took 2.6-13.6 s of CPU on the provisioner: one composition
resolved every machine of the mesh some two hundred times (who is on the
private network, and the rest of the mesh, worked out again on every
look), three compositions did so again each, and the holder composed
twice. A composer now works each out once over its unchanging Input;
Composing gives Resolve, Render and Generators one composer;
PlansHeldTwice composes the wanted and the newest builds over one read of
the bus, says where the time went by phase, and the states reader keeps a
build's take-in by its content. WatchedStates takes a process's own
writes into the copy at once, so a holder reads its own states from it.
Measured on a captured novox mesh: 11.7 s to 0.49 s per composition of an
unchanged node, plans and provisions identical on all four nodes.
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
Deliverynovox/mesh-sdk@b2a27ed5cec4 — merged since 2026-11-01T17:02:25Z
Source — source.main moved to novox/mesh-sdk@ea8c50136c. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
composed together: pass — the checker's verdict at the members' heads (0388ac1f351b)
Transitions
2026-11-01 15:33 (new) → proposed (announced): novox/mesh-sdk#155's head announced
2026-11-01 15:33 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-11-01 17:02 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@b2a27ed5cec4` — **merged** since 2026-11-01T17:02:25Z
**Source** — source.main moved to novox/mesh-sdk@ea8c50136cc7. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Group** `feat/node-packages`: novox/mesh-catalog@5ccce4967a98, novox/mesh-delivery@b18c62f671e1, novox/mesh-host@74ecda8ea2cf, novox/mesh-sdk@b2a27ed5cec4
- composed together: pass — the checker's verdict at the members' heads (0388ac1f351b)
**Transitions**
- 2026-11-01 15:33 (new) → proposed (announced): novox/mesh-sdk#155's head announced
- 2026-11-01 15:33 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-11-01 17:02 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.
Delivery group feat/node-packages (mesh-sdk, mesh-host, mesh-catalog, mesh-delivery), one check, one Approve. Issues 1953 (design 47 L5), 1954 (L6), 1876. Decisions: ADR 0565 clauses 1, 6, 14, 15; ADR 0570; ADR 0580; ADR 0585.
What it does: (1) each node's engine writes its own declared packages (bucket mesh-host_packages, key ) only when a composition changes them, and the node seat answers
packagesbeside the controller mirror and their difference; pacman reads it and names its source (the last unkept controller read before the lease write, per mesh-grants.grants_lease_check). Deviation said: the read is named mesh-host.packages (the engine's module bucket, as disk-load reads mesh-host.data), not node-engine.packages. (2) mesh-provisioner composes a node once over one read with a bounded take-in cache and reads its own states from the watched copy with write-through; per-phase timings in provisioner_compose. Measured on captured novox inputs: 11.7 s -> 0.49 s per compose, identical plans over nine runs. (3) pacman keeps one mirror list for the mesh on the bus, ranked inside the write that opens a weekly round; each node writes /etc/pacman.d/mirrorlist from it through the root helper, and a round's run starts only once the file holds the round's list; reflector's timer is disabled.Quick vs thorough: thorough for all three (the slow reader's third instance; the decided per-node packages; the decided mirror list). Test counts unchanged in every repository. Local reproduction: unit and integration of every changed module, go vet -tags integration of all 134 go.mod files, offline build with -mod=readonly. Review: reviewerP@shanks, two rounds (round 1: the opener upgraded before its file was written; round 2: a committed binary removed).
This member: delivery.DeclaredPackagesOf / DiffDeclaredPackages and the engine's grant on its own key; compose.Composing resolves each machine once per composition; frombus.PlansHeldTwice with per-phase timings; a bounded take-in cache in StatesReader; watched.go Wrote/Removed (write-through ordered by revision).
Reviewed-by: reviewerP@shanks at
b2a27ed5cePushed-by: lead-47@shanks
https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
Delivery
novox/mesh-sdk@b2a27ed5cec4— merged since 2026-11-01T17:02:25ZSource — source.main moved to novox/mesh-sdk@ea8c50136c. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Group
feat/node-packages: novox/mesh-catalog@5ccce4967a, novox/mesh-delivery@b18c62f671, novox/mesh-host@74ecda8ea2, novox/mesh-sdk@b2a27ed5ceTransitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.