The composer gives build modules the node's share: idle, capped builds (issue 1806, ADR 0553/0554, change B) #95

Merged
mesh-tools merged 2 commits from fix/build-cpu-yields-compose into main 2026-10-26 14:31:14 +00:00
Member

Issue 1806, ADR 0553 (accepted, operator) and ADR 0554 (accepted). Change B: merged only after change A's mesh-host runs on every node (ADR 0553 §5). Change A (mesh-sdk #94, mesh-host #148, mesh-catalog #499) was delivered: mesh-host src2:0957a705 runs healthy on ace, g14, novox and shanks since 15:29:39 local, with the yields decoder.

catalogue/yields.go: each yielding module's runtime gets yields {priority: idle, cpu-share} and the word MESH_BUILD_CPU_SHARE, the node's share from mesh-host's config build-cpu-share (a value out of range falls back to 50, never refusing the composition). The engine then runs the build runtimes in meshyield.slice (idle, CPUQuota = share × processors) and each step uses share ÷ its own capacity threads (shanks: 4).

What the operator will see after delivery: the three build runtimes on each node restart once; on shanks all builds together take at most 12 of 24 processors, at idle priority. Right after B's delivery, ace's node layer for mesh-host's build-cpu-share is set to 75 (the operator's choice, ADR 0554 §2) through the settings verb, never on disk; each later share change restarts that node's build runtimes once.

Tests and vet clean. Try try-1793023288418424605 passed.

Reviewed-by: review-buildcpu@shanks at 4ef49d0391

Issue 1806, ADR 0553 (accepted, operator) and ADR 0554 (accepted). Change B: merged only after change A's mesh-host runs on every node (ADR 0553 §5). Change A (mesh-sdk #94, mesh-host #148, mesh-catalog #499) was delivered: mesh-host src2:0957a705 runs healthy on ace, g14, novox and shanks since 15:29:39 local, with the yields decoder. `catalogue/yields.go`: each yielding module's runtime gets `yields {priority: idle, cpu-share}` and the word MESH_BUILD_CPU_SHARE, the node's share from mesh-host's config `build-cpu-share` (a value out of range falls back to 50, never refusing the composition). The engine then runs the build runtimes in meshyield.slice (idle, CPUQuota = share × processors) and each step uses share ÷ its own capacity threads (shanks: 4). What the operator will see after delivery: the three build runtimes on each node restart once; on shanks all builds together take at most 12 of 24 processors, at idle priority. Right after B's delivery, ace's node layer for mesh-host's `build-cpu-share` is set to 75 (the operator's choice, ADR 0554 §2) through the settings verb, never on disk; each later share change restarts that node's build runtimes once. Tests and vet clean. Try try-1793023288418424605 passed. Reviewed-by: review-buildcpu@shanks at 4ef49d03919526c71f565499cbc725526cf2978d
mesh-tools added 2 commits 2026-10-26 14:30:03 +00:00
The second half of ADR 0553, merged only once the node-engine that decodes
yields runs on every node (§5). The share is the node-engine's own config as
the node's layers give it; each step divides it by its own module's capacity.
A share out of range bounds builds at the default and never refuses the
node's composition. A change of the share recomposes the build runtimes, which
restart once.
Merge fix/build-cpu-yields into the composer half
mesh/delivery merged: source.main moved to novox/mesh-sdk@960d6c34d25e
mesh/check checking 4ef49d039195 on 960d6c34d25e
4ef49d0391
Author
Member

Delivery novox/mesh-sdk@4ef49d039195 — merged since 2026-10-26T14:31:16Z

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

Transitions

  • 2026-10-26 14:30 (new) → proposed (announced): novox/mesh-sdk#95's head announced
  • 2026-10-26 14:30 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-26 14:31 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@4ef49d039195` — **merged** since 2026-10-26T14:31:16Z **Source** — source.main moved to novox/mesh-sdk@960d6c34d25e. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Transitions** - 2026-10-26 14:30 (new) → proposed (announced): novox/mesh-sdk#95's head announced - 2026-10-26 14:30 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-26 14:31 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 960d6c34d2 into main 2026-10-26 14:31:14 +00:00
mesh-tools deleted branch fix/build-cpu-yields-compose 2026-10-26 14:31:14 +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-sdk#95