Compose mesh-enrolment's grants: its bucket written by it alone, the vault's enrolment verbs called by it alone
ADR 0587 §1-§3 (changing ADR 0561 §5) make mesh-enrolment the only caller of the vault's enrolment-token and node-account and a caller of sign, and §2 its bucket enrolments read by it and by the grants part as a named reader. The holder calls the vault through its manifest's invokes, in its own name, as any caller does; while the vault serves either enrolment verb every other principal is denied both, however wide its grant (a runtime's or an agent's `*`), as ControllerOnly denies the desk's prompt. The writers table gains the open enrolments (mesh-enrolment) and the node-logins (the vault), each one writer; NamedReaders names the grants part for enrolments. Golden lists unchanged. Tested as a subtest of TestTheCopiedComposerComposesAsTheControllers, no new test function. (issue 774, 774/S41) Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
This commit is contained in:
@@ -301,6 +301,13 @@ func Users(r Records) ([]Principal, error) {
|
||||
out = append(out, p)
|
||||
}
|
||||
|
||||
// The vault's enrolment verbs are mesh-enrolment's alone, however wide another's grant (novox/hq ADR 0587 §1).
|
||||
if slices.ContainsFunc(VerbsTheEnrolmentAsksTheVault, func(v SeatVerb) bool { return servesVerb(r, v) }) {
|
||||
for i := range out {
|
||||
out[i].VaultEnrols = true
|
||||
}
|
||||
}
|
||||
|
||||
// The grants part creates the durable consumers the accounts need (novox/hq ADR 0561 §6), by stream and name.
|
||||
if grants >= 0 {
|
||||
out[grants].CreatesConsumers = AccountConsumers(out)
|
||||
|
||||
Reference in New Issue
Block a user