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).
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.
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.
A module claiming a mesh-scoped seat was granted and issued the seat's subjects on every machine it runs on.
declaredForput every claimed seat intoHoldsper module, not per (machine, holder), so the second machine's postgres answeredmesh-store.databasesfrom its own databases.BusRecords now reads the recorded seat holdings. A mesh-scoped seat with a holder on record stays in
Holdsonly for that (node, module). Node-scoped seats and mesh seats with no holder on record are unchanged. Grants and memberships both come fromHolds, 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 exceptTestTheResolverIsToldEveryMachineOnTheNetworkAndToldAgainWhenOneLeaves, which already fails on main (resolver work, see #246).