Take-over of the bus's user list by the grants part: sealed list layout, followed-list have, handed hashes, named readers (issue 1945) #89

Merged
mesh-tools merged 5 commits from feat/1945-user-list-switch into main 2026-10-26 12:21:40 +00:00
Member

Group feat/1945-user-list-switch (mesh-sdk, mesh-host, mesh-delivery, mesh-catalog, mesh-controller), one Approve. ADR 0547 clauses 7-9, ADR 0550 clause 4 (both approved by the operator). This member: delivery.GrantsUserList (the grants part's key user-list.sealed), UserListWritten gains Follows, Key, Unwatched and Handed (the bus node hands the vault the loaded hashes, sealed); announce.State Readers/ReadableBy and the bus composer's named readers (mesh-vault.bus-accounts readable by mesh-grants alone); the composer grants the bus node the read of the grants part's key and objects by name, and mesh-grants the write of its object bucket. Try try-1793014322986188194 passed. Reviewed in three rounds with the group (review-switch@shanks).

Reviewed-by: review-switch@shanks at c2a410bb63

Group feat/1945-user-list-switch (mesh-sdk, mesh-host, mesh-delivery, mesh-catalog, mesh-controller), one Approve. ADR 0547 clauses 7-9, ADR 0550 clause 4 (both approved by the operator). This member: delivery.GrantsUserList (the grants part's key user-list.sealed), UserListWritten gains Follows, Key, Unwatched and Handed (the bus node hands the vault the loaded hashes, sealed); announce.State Readers/ReadableBy and the bus composer's named readers (mesh-vault.bus-accounts readable by mesh-grants alone); the composer grants the bus node the read of the grants part's key and objects by name, and mesh-grants the write of its object bucket. Try try-1793014322986188194 passed. Reviewed in three rounds with the group (review-switch@shanks). Reviewed-by: review-switch@shanks at c2a410bb63765d4c1dca0da5cc74e24aca4debf5
mesh-tools added 5 commits 2026-10-26 12:18:29 +00:00
The vault holds no value for the controller's own account, the node accounts and the enrolled devices, so it cannot
hash them; the one part that has their hashes is the node-engine of the bus node, in the list the bus loaded. The have
of the bus module now carries that list's hashes sealed to the vault's key (UserListWritten.Handed), which every reader
of the have bucket sees as a count, a list digest and a key fingerprint, and only the vault opens. HandedAccountsOf
reads them from a composed list, HandAccounts seals, OpenHanded opens and refuses a box sealed to another key.
The grants part writes its list as an object of its own bucket, sealed to the bus node's key, and names it in
user-list.sealed; the node-engine of the node holding mesh-broker is granted that one key and an object by name, the
grants part its bucket (the controller's copy carries the same grants, byte for byte, golden regenerated there).
A state may name its readers (announce, NamedReaders): mesh-vault.bus-accounts is read by mesh-grants alone.
The have's user list says why the bus node does not watch the grants part's key (review of the switch, issue 1945)
mesh/delivery merged: source.main moved to novox/mesh-sdk@b4cd95e7c4a4
mesh/delivery-group group feat/1945-user-list-switch merged: every member is merged
mesh/check checking c2a410bb6376 on 89c5838176b2 | novox/mesh-sdk#89 in group feat/1945-user-list-switch
c2a410bb63
Author
Member

Delivery novox/mesh-sdk@c2a410bb6376 — merged since 2026-10-26T12:21:42Z

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

Group feat/1945-user-list-switch: novox/mesh-catalog@c9414b1c98, novox/mesh-controller@09d2cc5056, novox/mesh-delivery@5c76c9d3ac, novox/mesh-host@e88ddab241, novox/mesh-sdk@c2a410bb63

Transitions

  • 2026-10-26 12:18 (new) → proposed (announced): novox/mesh-sdk#89's head announced
  • 2026-10-26 12:18 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 12:21 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@c2a410bb6376` — **merged** since 2026-10-26T12:21:42Z **Source** — source.main moved to novox/mesh-sdk@b4cd95e7c4a4. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Group** `feat/1945-user-list-switch`: novox/mesh-catalog@c9414b1c9856, novox/mesh-controller@09d2cc5056ef, novox/mesh-delivery@5c76c9d3ac84, novox/mesh-host@e88ddab24170, novox/mesh-sdk@c2a410bb6376 **Transitions** - 2026-10-26 12:18 (new) → proposed (announced): novox/mesh-sdk#89's head announced - 2026-10-26 12:18 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 12:21 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`.
Author
Member

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.
Author
Member

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.
Author
Member

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.
Author
Member

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-tools merged commit b4cd95e7c4 into main 2026-10-26 12:21:40 +00:00
mesh-tools deleted branch feat/1945-user-list-switch 2026-10-26 12:21:40 +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#89