Recovery fix, member of the group fix/1966-views-page-time (mesh-sdk, mesh-tools, mesh-host), merged as one group.
Cause
See the mesh-sdk member: mesh-grants' first view of the assigner's wants took one bus request per key and timed out after 30 s, every minute since 00:42 UTC on 2026-11-09.
What changes
node-tools serves mesh/state.page beside get, keys and history (internal/runtime, internal/launch). Access is the same as get's.
StatePage checks access once and binds the bucket once; a per-node state binds each node's bucket once. It then reads the values in key order after after, up to max_bytes.
It stops at budget_ms (default 10 s), always after at least one value, with Next. Every bus request inside the loop has its own deadline, so the budget, not a deadline over the whole page, ends a slow page.
An unknown mesh/state.* verb answers code -32601.
Evidence
Rows in the renamed test TestAKeysHistoryAndAPageOfAStateAreServedToOwnerAndReaderAndRefusedToAModuleNotIssuedIt, among them a budget-cut row. The page rows fail without the verb.
The unit suite, go vet and go vet -tags integration pass.
Rules bent (rules-are-weighed)
The last finding (the per-node open on the listing's deadline) was a one-line fix made by fix-1965 after the third review round and confirmed by the same reviewer, instead of a fourth round.
Undo
Revert the group's merges.
Reviewed-by: mesh-code-reviewer@shanks (for fix-1965) at 2135fed6cf, three rounds and one confirmation.
Recovery fix, member of the group fix/1966-views-page-time (mesh-sdk, mesh-tools, mesh-host), merged as one group.
## Cause
See the mesh-sdk member: mesh-grants' first view of the assigner's wants took one bus request per key and timed out after 30 s, every minute since 00:42 UTC on 2026-11-09.
## What changes
- node-tools serves mesh/state.page beside get, keys and history (internal/runtime, internal/launch). Access is the same as get's.
- StatePage checks access once and binds the bucket once; a per-node state binds each node's bucket once. It then reads the values in key order after `after`, up to max_bytes.
- It stops at budget_ms (default 10 s), always after at least one value, with Next. Every bus request inside the loop has its own deadline, so the budget, not a deadline over the whole page, ends a slow page.
- An unknown mesh/state.* verb answers code -32601.
## Evidence
- Rows in the renamed test TestAKeysHistoryAndAPageOfAStateAreServedToOwnerAndReaderAndRefusedToAModuleNotIssuedIt, among them a budget-cut row. The page rows fail without the verb.
- The unit suite, go vet and go vet -tags integration pass.
## Rules bent (rules-are-weighed)
The last finding (the per-node open on the listing's deadline) was a one-line fix made by fix-1965 after the third review round and confirmed by the same reviewer, instead of a fourth round.
## Undo
Revert the group's merges.
Reviewed-by: mesh-code-reviewer@shanks (for fix-1965) at 2135fed6cf1f6b1e238c831695915fca7d3c8a35, three rounds and one confirmation.
https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
Deliverynovox/mesh-tools@2135fed6cf1f — merged since 2026-11-09T08:13:18Z
Source — source.main moved to novox/mesh-tools@164547645a. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
2026-11-09 08:12 (new) → proposed (announced): novox/mesh-tools#64's head announced
2026-11-09 08:12 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-09 08:13 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-tools@2135fed6cf1f` — **merged** since 2026-11-09T08:13:18Z
**Source** — source.main moved to novox/mesh-tools@164547645aed. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Group** `fix/1966-views-page-time`: novox/mesh-host@6bde46cb0084, novox/mesh-sdk@833cffdc9bdf, novox/mesh-tools@2135fed6cf1f
**Transitions**
- 2026-11-09 08:12 (new) → proposed (announced): novox/mesh-tools#64's head announced
- 2026-11-09 08:12 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-09 08:13 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.
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.
Recovery fix, member of the group fix/1966-views-page-time (mesh-sdk, mesh-tools, mesh-host), merged as one group.
Cause
See the mesh-sdk member: mesh-grants' first view of the assigner's wants took one bus request per key and timed out after 30 s, every minute since 00:42 UTC on 2026-11-09.
What changes
after, up to max_bytes.Evidence
Rules bent (rules-are-weighed)
The last finding (the per-node open on the listing's deadline) was a one-line fix made by fix-1965 after the third review round and confirmed by the same reviewer, instead of a fourth round.
Undo
Revert the group's merges.
Reviewed-by: mesh-code-reviewer@shanks (for fix-1965) at
2135fed6cf, three rounds and one confirmation.https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
Delivery
novox/mesh-tools@2135fed6cf1f— merged since 2026-11-09T08:13:18ZSource — source.main moved to novox/mesh-tools@164547645a. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Group
fix/1966-views-page-time: novox/mesh-host@6bde46cb00, novox/mesh-sdk@833cffdc9b, novox/mesh-tools@2135fed6cfTransitions
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.