diff --git a/go/buscompose/buscompose_test.go b/go/buscompose/buscompose_test.go index d02c957..0f6b29f 100644 --- a/go/buscompose/buscompose_test.go +++ b/go/buscompose/buscompose_test.go @@ -585,7 +585,7 @@ func healthChecks(t *testing.T) { may bool }{ {"mesh-conditions", ControllerLease, true}, {"mesh-healers", ControllerLease, true}, {WatchmanModule, ControllerLease, true}, - {"mesh-self-check", ControllerLease, false}, {"messenger", ControllerLease, false}, + {"mesh-self-check", ControllerLease, false}, {"messenger", ControllerLease, false}, {ArtifactStoreTools, ControllerLease, true}, {"mesh-conditions", ControllerConditions, true}, {"mesh-healers", ControllerConditions, false}, {"messenger", ControllerConditions, false}, {"mesh-healers", ControllerHandActs, true}, {"mesh-conditions", ControllerHandActs, false}, // ADR 0565 clauses 10, 11 (issue 1953 L5-S4): mesh-hand-acts reads the controller's log beside its own. diff --git a/go/buscompose/userlist_switch.go b/go/buscompose/userlist_switch.go index bae9341..1bc1303 100644 --- a/go/buscompose/userlist_switch.go +++ b/go/buscompose/userlist_switch.go @@ -79,6 +79,9 @@ func grantsOwnObjects(p Principal, pattern string) bool { // readers too (announce.State.Readers); both are honoured. const VaultBusAccounts = "mesh-vault.bus-accounts" +// ArtifactStoreTools is the module holding the seat artifact-store (novox/hq ADR 0571 clause 2). +const ArtifactStoreTools = "artifact-store-tools" + // NamedReaders are the states only the modules named may read, by `.`: the grants part's wanted accounts // are read by the vault alone (novox/hq ADR 0561 §2). // The controller's lease is read by the parts that turn on at its write (ADR 0561 §3, §6), and by the assigner, which @@ -88,7 +91,9 @@ const VaultBusAccounts = "mesh-vault.bus-accounts" // watchman read the lease; the keeper alone the controller's conditions; mesh-healers and mesh-hand-acts its hand-act log // (ADR 0565 clauses 10, 11: every reader of acts reads both logs); and nobody the healers' `would` (health_grants.go). var NamedReaders = map[string][]string{VaultBusAccounts: {GrantsModule}, GrantsAccounts: {VaultSeat}, - ControllerLease: {VaultSeat, GrantsModule, delivery.AssignerModule, health.KeeperModule, health.HealersModule, WatchmanModule}, + ControllerLease: {VaultSeat, GrantsModule, delivery.AssignerModule, health.KeeperModule, health.HealersModule, WatchmanModule, + // ADR 0571 clause 2: the artifact store's seat sweeps only once the lease names no controller. + ArtifactStoreTools}, ControllerConditions: {health.KeeperModule}, ControllerHandActs: {health.HealersModule, handacts.Module}, HealersWould: {}} // ReaderMay says whether module may read the state read (`.`) by the named readers: always, for a state