disk-load watches the node-engine's data items instead of composing them, and each round says how far it got (ADR 0577) #584

Merged
mesh-tools merged 4 commits from feat/data-items into main 2026-11-01 00:03:14 +00:00
Member

Delivery group feat/data-items (mesh-sdk, mesh-host, mesh-catalog, mesh-delivery), one check, one Approve. Decision: ADR 0577 (the node-engine publishes each placed module's data items; disk-load watches them and composes nothing), changing ADR 0571 §5. Fixes issue 1955 in part: disk-load needed 30 to 45 minutes per round on ace, g14 and shanks, and went silent for 45 hours when its mesh-sdk refused a manifest.

Quick fix (a prefix filter in the states reader) not chosen: a fourth hand pin and more logic in mesh-sdk. Thorough fix chosen: one composer per node, disk-load event-driven.

This member: modules/disk-load watches mesh-host.data .*, measures on a changed key and on ADR 0233's schedule, writes each round to disk-load_rounds key (tool disk_round), never ends a round on a failed item, retires readings only on a key's delete or once after the watch is ready; one integration test starts disk-load whole against a bus. Pins mesh-sdk c28c645.

Reviewed-by: reviewer-577@shanks at 0c46f47ae5
Pushed-by: builder-577@shanks

https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL

Delivery group feat/data-items (mesh-sdk, mesh-host, mesh-catalog, mesh-delivery), one check, one Approve. Decision: ADR 0577 (the node-engine publishes each placed module's data items; disk-load watches them and composes nothing), changing ADR 0571 §5. Fixes issue 1955 in part: disk-load needed 30 to 45 minutes per round on ace, g14 and shanks, and went silent for 45 hours when its mesh-sdk refused a manifest. Quick fix (a prefix filter in the states reader) not chosen: a fourth hand pin and more logic in mesh-sdk. Thorough fix chosen: one composer per node, disk-load event-driven. This member: modules/disk-load watches mesh-host.data <node>.*, measures on a changed key and on ADR 0233's schedule, writes each round to disk-load_rounds key <node> (tool disk_round), never ends a round on a failed item, retires readings only on a key's delete or once after the watch is ready; one integration test starts disk-load whole against a bus. Pins mesh-sdk c28c645. Reviewed-by: reviewer-577@shanks at 0c46f47ae57ee37b9c2877e728d1be2ce3f0d292 Pushed-by: builder-577@shanks https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
mesh-tools added 4 commits 2026-10-31 23:46:32 +00:00
It watches its node's keys of mesh-host_data instead of composing every module's items from
about 370 resolved keys per round, so a round no longer takes 30 to 45 minutes across the tunnel
and a manifest its mesh-sdk cannot judge no longer silences it. A changed key measures its module
at once; each round writes how far it got to the per-node state rounds, said by disk_round.
Pins mesh-sdk feat/data-items.

Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
The ignore line `disk-load` matched the directory cmd/disk-load, so new files there were never
added; it now names the built binary alone.

Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
A round no longer retires readings missing from the watched set, which may be empty or partial;
a module's readings are retired when its key of mesh-host_data is deleted or names fewer items.
A round refused before the watch caught up runs once it has, not an hour later. disk_round reads
this machine's key alone, as its grant allows.

Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
disk-load retires the readings of a module whose key went while its watch was down (review round 2)
mesh/delivery merged: source.main moved to novox/mesh-catalog@4b16c193f0fb
mesh/delivery-group group feat/data-items merged: every member is merged
mesh/check pass 0c46f47ae57e on 444c2903af7b | unit 4510 run, 4259 kept, 49 skipped | integration 4589 run, 4361 kept, 51 skipped | over bound: unit, …
0c46f47ae5
A key deleted while disk-load was not watching (a restart, a reboot, a machine asleep) never
arrives as a delete. Once the watch has handed over every current key, the readings of modules
with no key are retired once; an empty set is skipped and said, since the engine has not written.

Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
Author
Member

Delivery novox/mesh-catalog@0c46f47ae57e — merged since 2026-11-01T00:03:15Z

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

Group feat/data-items: novox/mesh-catalog@0c46f47ae5, novox/mesh-delivery@ddadb75bf4, novox/mesh-host@e031758e4a, novox/mesh-sdk@c28c645ca4

  • composed together: pass — the checker's verdict at the members' heads (e2b935f1f425)

Transitions

  • 2026-10-31 23:46 (new) → proposed (announced): novox/mesh-catalog#584's head announced
  • 2026-10-31 23:46 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 00:03 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-catalog@0c46f47ae57e` — **merged** since 2026-11-01T00:03:15Z **Source** — source.main moved to novox/mesh-catalog@4b16c193f0fb. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Group** `feat/data-items`: novox/mesh-catalog@0c46f47ae57e, novox/mesh-delivery@ddadb75bf474, novox/mesh-host@e031758e4a37, novox/mesh-sdk@c28c645ca406 - composed together: pass — the checker's verdict at the members' heads (e2b935f1f425) **Transitions** - 2026-10-31 23:46 (new) → proposed (announced): novox/mesh-catalog#584's head announced - 2026-10-31 23:46 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 00:03 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 4b16c193f0 into main 2026-11-01 00:03:14 +00:00
mesh-tools deleted branch feat/data-items 2026-11-01 00:03:15 +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-catalog#584