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).
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
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.
Deliverynovox/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.
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`.
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-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-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-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.
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
c2a410bb6317478994): the have's user list carries Handed beside Follows and Key; a state that names readers is not Readable to a composer that knows no readers (review of the switch, issue 1945) af66adc180Delivery
novox/mesh-sdk@c2a410bb6376— merged since 2026-10-26T12:21:42ZSource — source.main moved to novox/mesh-sdk@b4cd95e7c4. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.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@c2a410bb63Transitions
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.
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-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.