Issue only the recorded holder a seat held once for the mesh (hq issue 218) #248

Merged
mesh-admin merged 1 commits from fix/issue-218-only-the-holder-serves-a-mesh-seat into main 2026-10-03 21:30:51 +00:00
Contributor

A module claiming a mesh-scoped seat was granted and issued the seat's subjects on every machine it runs on. declaredFor put every claimed seat into Holds per module, not per (machine, holder), so the second machine's postgres answered mesh-store.databases from its own databases.

BusRecords now reads the recorded seat holdings. A mesh-scoped seat with a holder on record stays in Holds only for that (node, module). Node-scoped seats and mesh seats with no holder on record are unchanged. Grants and memberships both come from Holds, so both are fixed together, and the runtime is never handed a subscription the grants would refuse.

The module's own tools are untouched: the seat's verbs are a separate implementation registered under the seat's name (ADR 0159/0160), and only that is withdrawn where the module does not hold the seat.

Tests: TestOnlyTheRecordedHolderHoldsAMeshSeat. The full suite passes with the store except TestTheResolverIsToldEveryMachineOnTheNetworkAndToldAgainWhenOneLeaves, which already fails on main (resolver work, see #246).

A module claiming a mesh-scoped seat was granted and issued the seat's subjects on every machine it runs on. `declaredFor` put every claimed seat into `Holds` per module, not per (machine, holder), so the second machine's postgres answered `mesh-store.databases` from its own databases. BusRecords now reads the recorded seat holdings. A mesh-scoped seat with a holder on record stays in `Holds` only for that (node, module). Node-scoped seats and mesh seats with no holder on record are unchanged. Grants and memberships both come from `Holds`, so both are fixed together, and the runtime is never handed a subscription the grants would refuse. The module's own tools are untouched: the seat's verbs are a separate implementation registered under the seat's name (ADR 0159/0160), and only that is withdrawn where the module does not hold the seat. Tests: `TestOnlyTheRecordedHolderHoldsAMeshSeat`. The full suite passes with the store except `TestTheResolverIsToldEveryMachineOnTheNetworkAndToldAgainWhenOneLeaves`, which already fails on main (resolver work, see #246).
mesh-admin added 1 commit 2026-10-03 21:30:38 +00:00
A module claiming a mesh-scoped seat was granted and issued the seat's subjects on every machine
it runs on, so the store's verbs answered from whichever postgres replied first. Where the mesh
records the seat's holder, only that (node, module) is now issued it; the module's own tools are
untouched everywhere.
mesh-admin merged commit c1449fffe9 into main 2026-10-03 21:30:51 +00:00
mesh-admin deleted branch fix/issue-218-only-the-holder-serves-a-mesh-seat 2026-10-03 21:30:51 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-controller#248