diff --git a/go/seatdef/seatdef.go b/go/seatdef/seatdef.go index 37626d4..1e4fc41 100644 --- a/go/seatdef/seatdef.go +++ b/go/seatdef/seatdef.go @@ -17,6 +17,7 @@ import ( "errors" "fmt" "regexp" + "slices" "sort" "strings" ) @@ -41,6 +42,10 @@ const ( ScopeNode = "node" ) +// Domains are the glossary's domains that own a seat, by their headings (hq 00-META/glossary.md, ADR 0244). +var Domains = []string{"Module", "Config", "Core", "Placement", "Provisioning", "Identity and access", "Delivery", + "Health and repair", "Data", "Connectivity", "Operator and conversation"} + // Definition is one seat's contract. type Definition struct { Format int `json:"format"` @@ -49,6 +54,9 @@ type Definition struct { Grain string `json:"grain"` // Decision is the record that made it a seat. Decision string `json:"decision"` + // Domain is the glossary domain the seat belongs to, by its heading (ADR 0636 §5): the indexer takes a seat of the + // mesh's own contracts only from that domain's contracts module. + Domain string `json:"domain"` // Description says the role in one paragraph, for a person reading the definition. Description string `json:"description,omitempty"` // HolderDeclares says the seat is not in the mesh's compiled seat list: its holder's manifest declares it as a @@ -398,6 +406,12 @@ func (d Definition) check() Problems { if d.Decision == "" { ps = append(ps, Problem{"decision", "missing"}) } + switch { + case d.Domain == "": + ps = append(ps, Problem{"domain", "missing"}) + case !slices.Contains(Domains, d.Domain): + ps = append(ps, Problem{"domain", fmt.Sprintf("%q is not a domain of the glossary (%s)", d.Domain, strings.Join(Domains, ", "))}) + } whole := d.Grain == Whole if !whole && (len(d.Includes) > 0 || d.Family != nil || len(d.HolderEvents) > 0 || len(d.States) > 0 || len(d.Provisions) > 0 || len(d.Defs) > 0) { diff --git a/go/seatdef/seatdef_test.go b/go/seatdef/seatdef_test.go index 43881f4..e9a9cad 100644 --- a/go/seatdef/seatdef_test.go +++ b/go/seatdef/seatdef_test.go @@ -9,9 +9,9 @@ import ( // TestADefinitionIsReadStrictlyNamingWhatIsWrong is the format's own table (design 26: a valid definition parses; // each missing required field is refused naming it; one over 256 KiB is refused), with the parts and fixtures beside. func TestADefinitionIsReadStrictlyNamingWhatIsWrong(t *testing.T) { - const listGrain = `{"format":1,"seat":"node-hostname","scope":"node","grain":"seat-list","decision":"ADR 1", + const listGrain = `{"format":1,"seat":"node-hostname","scope":"node","grain":"seat-list","domain":"Core","decision":"ADR 1", "verbs":[{"name":"add","input":{"type":"object"}}]}` - const whole = `{"format":1,"seat":"mesh-broker","scope":"mesh","grain":"whole","decision":"ADR 1", + const whole = `{"format":1,"seat":"mesh-broker","scope":"mesh","grain":"whole","domain":"Core","decision":"ADR 1", "verbs":[{"name":"list","input":{"type":"object"},"answer":{"type":"object"}}], "events":[{"name":"created","body":{"type":"object"}}],"family":{"name":"broker.events","max-age-days":7}}` cases := []struct { @@ -20,14 +20,16 @@ func TestADefinitionIsReadStrictlyNamingWhatIsWrong(t *testing.T) { }{ {"the seat list's grain parses", listGrain, ""}, {"a whole definition parses", whole, ""}, - {"no format", `{"seat":"a-b","scope":"mesh","grain":"seat-list","decision":"x"}`, "format: missing"}, - {"a later format", `{"format":2,"seat":"a-b","scope":"mesh","grain":"seat-list","decision":"x"}`, "format 2"}, - {"no seat", `{"format":1,"scope":"mesh","grain":"seat-list","decision":"x"}`, "seat: missing"}, - {"no scope", `{"format":1,"seat":"a-b","grain":"seat-list","decision":"x"}`, "scope: missing"}, - {"another scope", `{"format":1,"seat":"a-b","scope":"room","grain":"seat-list","decision":"x"}`, "scope"}, - {"no grain", `{"format":1,"seat":"a-b","scope":"mesh","decision":"x"}`, "grain: missing"}, + {"no format", `{"seat":"a-b","scope":"mesh","grain":"seat-list","domain":"Core","decision":"x"}`, "format: missing"}, + {"a later format", `{"format":2,"seat":"a-b","scope":"mesh","grain":"seat-list","domain":"Core","decision":"x"}`, "format 2"}, + {"no seat", `{"format":1,"scope":"mesh","grain":"seat-list","domain":"Core","decision":"x"}`, "seat: missing"}, + {"no scope", `{"format":1,"seat":"a-b","grain":"seat-list","domain":"Core","decision":"x"}`, "scope: missing"}, + {"another scope", `{"format":1,"seat":"a-b","scope":"room","grain":"seat-list","domain":"Core","decision":"x"}`, "scope"}, + {"no grain", `{"format":1,"seat":"a-b","scope":"mesh","domain":"Core","decision":"x"}`, "grain: missing"}, {"no decision", `{"format":1,"seat":"a-b","scope":"mesh","grain":"seat-list"}`, "decision: missing"}, - {"an unknown field", `{"format":1,"seat":"a-b","scope":"mesh","grain":"seat-list","decision":"x","sevres":[]}`, + {"no domain", `{"format":1,"seat":"a-b","scope":"mesh","grain":"seat-list","decision":"x"}`, "domain: missing"}, + {"a domain the glossary lacks", `{"format":1,"seat":"a-b","scope":"mesh","grain":"seat-list","domain":"Weather","decision":"x"}`, "domain"}, + {"an unknown field", `{"format":1,"seat":"a-b","scope":"mesh","grain":"seat-list","domain":"Core","decision":"x","sevres":[]}`, "sevres: a field the format does not know"}, {"a whole verb with no answer", strings.Replace(whole, `,"answer":{"type":"object"}`, "", 1), "verbs[0].answer: missing"}, @@ -50,10 +52,10 @@ func TestADefinitionIsReadStrictlyNamingWhatIsWrong(t *testing.T) { {"a holder's event on a subject of no module", strings.Replace(whole, `"family":`, `"holder-events":[{"name":"verdict",`+ `"subject":"mesh.event.verdict"}],"family":`, 1), "holder-events[0].subject: not mesh.mod..event.verdict"}, {"a verb twice", strings.Replace(listGrain, `]}`, `,{"name":"add"}]}`, 1), `"add" twice`}, - {"states at the seat list's grain", strings.Replace(listGrain, `"decision":"ADR 1",`, - `"decision":"ADR 1","states":[{"name":"asks"}],`, 1), "grain: seat-list holds"}, - {"the old records field is gone", strings.Replace(whole, `"decision":"ADR 1",`, - `"decision":"ADR 1","records":[{"name":"asks"}],`, 1), "records: a field the format does not know"}, + {"states at the seat list's grain", strings.Replace(listGrain, `"domain":"Core","decision":"ADR 1",`, + `"domain":"Core","decision":"ADR 1","states":[{"name":"asks"}],`, 1), "grain: seat-list holds"}, + {"the old records field is gone", strings.Replace(whole, `"domain":"Core","decision":"ADR 1",`, + `"domain":"Core","decision":"ADR 1","records":[{"name":"asks"}],`, 1), "records: a field the format does not know"}, {"a state with a key form and a value", withState(whole, `{"name":"asks","template":"state","writer":"caller", "history":3,"key-forms":[{"key":".","value":{"type":"object"}}]}`), ""}, {"a stream state with an age", withState(whole, `{"name":"placement","template":"events","max-age-days":7, @@ -98,7 +100,7 @@ func TestADefinitionIsReadStrictlyNamingWhatIsWrong(t *testing.T) { if err != nil { t.Fatal(err) } - d, err := Parse([]byte(strings.Replace(whole, `"decision":"ADR 1",`, `"decision":"ADR 1","includes":["registry"],`, 1))) + d, err := Parse([]byte(strings.Replace(whole, `"domain":"Core","decision":"ADR 1",`, `"domain":"Core","decision":"ADR 1","includes":["registry"],`, 1))) if err != nil { t.Fatal(err) } @@ -145,5 +147,5 @@ func withState(def, state string) string { if strings.Contains(def, `"states":[`) { return strings.Replace(def, `"states":[`, `"states":[`+state+`,`, 1) } - return strings.Replace(def, `"decision":"ADR 1",`, `"decision":"ADR 1","states":[`+state+`],`, 1) + return strings.Replace(def, `"domain":"Core","decision":"ADR 1",`, `"domain":"Core","decision":"ADR 1","states":[`+state+`],`, 1) } diff --git a/go/seatlist/bootstrap/mesh-broker.json b/go/seatlist/bootstrap/mesh-broker.json index f0ebf4a..6fc5d4e 100644 --- a/go/seatlist/bootstrap/mesh-broker.json +++ b/go/seatlist/bootstrap/mesh-broker.json @@ -3,6 +3,7 @@ "seat": "mesh-broker", "scope": "mesh", "grain": "whole", + "domain": "Core", "decision": "novox/hq ADR 0079", "delivers": "mesh-bus", "description": "The mesh's bus, and the bus state modules ask of it in requires (design 25 § 12). create, apply, recreate and drop are granted to the bus module's own credential alone.", diff --git a/go/seatlist/bootstrap/mesh-catalog.json b/go/seatlist/bootstrap/mesh-catalog.json index f44644f..e78353a 100644 --- a/go/seatlist/bootstrap/mesh-catalog.json +++ b/go/seatlist/bootstrap/mesh-catalog.json @@ -3,6 +3,7 @@ "seat": "mesh-catalog", "scope": "mesh", "grain": "seat-list", + "domain": "Delivery", "decision": "novox/hq ADR 0636", "verbs": [ { diff --git a/go/seatlist/bootstrap/mesh-conditions.json b/go/seatlist/bootstrap/mesh-conditions.json index ee5b697..76f464c 100644 --- a/go/seatlist/bootstrap/mesh-conditions.json +++ b/go/seatlist/bootstrap/mesh-conditions.json @@ -3,6 +3,7 @@ "seat": "mesh-conditions", "scope": "mesh", "grain": "whole", + "domain": "Health and repair", "decision": "novox/hq ADR 0564, ADR 0634, ADR 0635", "description": "What is wrong with the mesh now (ADR 0564): the open conditions raised from the observers' findings and cleared when a finding goes.", "verbs": [ diff --git a/go/seatlist/bootstrap/mesh-config.json b/go/seatlist/bootstrap/mesh-config.json index 640ccbb..83c63f3 100644 --- a/go/seatlist/bootstrap/mesh-config.json +++ b/go/seatlist/bootstrap/mesh-config.json @@ -3,6 +3,7 @@ "seat": "mesh-config", "scope": "mesh", "grain": "whole", + "domain": "Config", "decision": "novox/hq ADR 0348, ADR 0565", "verbs": [ { diff --git a/go/seatlist/bootstrap/mesh-delivery-checker.json b/go/seatlist/bootstrap/mesh-delivery-checker.json index 7b56ab5..808b3e9 100644 --- a/go/seatlist/bootstrap/mesh-delivery-checker.json +++ b/go/seatlist/bootstrap/mesh-delivery-checker.json @@ -3,6 +3,7 @@ "seat": "mesh-delivery-checker", "scope": "mesh", "grain": "whole", + "domain": "Delivery", "decision": "novox/hq ADR 0547", "verbs": [ { diff --git a/go/seatlist/bootstrap/mesh-hand-acts.json b/go/seatlist/bootstrap/mesh-hand-acts.json index e635d7a..a075cfc 100644 --- a/go/seatlist/bootstrap/mesh-hand-acts.json +++ b/go/seatlist/bootstrap/mesh-hand-acts.json @@ -3,6 +3,7 @@ "seat": "mesh-hand-acts", "scope": "mesh", "grain": "whole", + "domain": "Health and repair", "decision": "novox/hq ADR 0565, ADR 0634, ADR 0635", "description": "Acts done by hand, recorded with who, why and cause (ADR 0565): the log every module records through.", "verbs": [ diff --git a/go/seatlist/bootstrap/mesh-watchdogs.json b/go/seatlist/bootstrap/mesh-watchdogs.json index ecf09a3..35a4341 100644 --- a/go/seatlist/bootstrap/mesh-watchdogs.json +++ b/go/seatlist/bootstrap/mesh-watchdogs.json @@ -3,6 +3,7 @@ "seat": "mesh-watchdogs", "scope": "mesh", "grain": "whole", + "domain": "Health and repair", "decision": "novox/hq ADR 0564, ADR 0634, ADR 0635", "description": "The watchman's seat (ADR 0564, ADR 0433): signals that expire unless renewed, what stopped moving, who is present, the dead letters.", "verbs": [ diff --git a/go/seatlist/bootstrap/node-backup.json b/go/seatlist/bootstrap/node-backup.json index 465f68f..f5c59d2 100644 --- a/go/seatlist/bootstrap/node-backup.json +++ b/go/seatlist/bootstrap/node-backup.json @@ -3,6 +3,7 @@ "seat": "node-backup", "scope": "node", "grain": "seat-list", + "domain": "Data", "decision": "novox/hq ADR 0214", "verbs": [ { diff --git a/go/seatlist/bootstrap/node-engine.json b/go/seatlist/bootstrap/node-engine.json index 0987936..20ed8a1 100644 --- a/go/seatlist/bootstrap/node-engine.json +++ b/go/seatlist/bootstrap/node-engine.json @@ -3,6 +3,7 @@ "seat": "node-engine", "scope": "node", "grain": "whole", + "domain": "Core", "decision": "novox/hq ADR 0563", "description": "The node seat every node's engine holds (novox/hq ADR 0563, ADR 0618 §3, §4): its hand acts on the operator's warrant, its read-only judgements, its compositions and what it reads of a manifest. Each verb is answered on this node's subject, mesh.seat.node-engine.tool.., and each event is published on mesh.seat.node-engine.event.., the node's name its last token.", "held-by-the-engine": true, diff --git a/go/seatlist/bootstrap/operator-channel.json b/go/seatlist/bootstrap/operator-channel.json index 9770349..0bd8c21 100644 --- a/go/seatlist/bootstrap/operator-channel.json +++ b/go/seatlist/bootstrap/operator-channel.json @@ -3,6 +3,7 @@ "seat": "operator-channel", "scope": "mesh", "grain": "whole", + "domain": "Operator and conversation", "decision": "novox/hq ADR 0259", "holder-declares": true, "description": "Asking a person and answering on a channel (ADR 0259): held by the router, the messenger module, whose manifest declares the seat; written from that seat entry (design 26).", diff --git a/go/seatlist/seatlist_integration_test.go b/go/seatlist/seatlist_integration_test.go index ed2841a..236fe7a 100644 --- a/go/seatlist/seatlist_integration_test.go +++ b/go/seatlist/seatlist_integration_test.go @@ -58,7 +58,7 @@ func TestAReaderStartsFromTheBootstrapAndReadsTheSeatOnceItAnswers(t *testing.T) t.Fatalf("with the seat silent: %+v, may act on node-files: %v", st, r.MayAct("node-files")) } - table := map[string]string{"node-files": `{"format":1,"seat":"node-files","scope":"node","grain":"seat-list","decision":"ADR 1",` + + table := map[string]string{"node-files": `{"format":1,"seat":"node-files","scope":"node","grain":"seat-list","domain": "Core", "decision": "ADR 1",` + `"verbs":[{"name":"read","input":{"type":"object"}}]}`} serve := func(m *nats.Msg) { var q struct { diff --git a/go/seatlist/seatlist_test.go b/go/seatlist/seatlist_test.go index f845b66..0f87205 100644 --- a/go/seatlist/seatlist_test.go +++ b/go/seatlist/seatlist_test.go @@ -57,7 +57,7 @@ func (f *fakeOwner) say(event, seat, source string) error { } func def(seat, scope, verb string) string { - return `{"format":1,"seat":"` + seat + `","scope":"` + scope + `","grain":"seat-list","decision":"ADR 1",` + + return `{"format":1,"seat":"` + seat + `","scope":"` + scope + `","grain":"seat-list","domain": "Core", "decision": "ADR 1",` + `"verbs":[{"name":"` + verb + `","input":{"type":"object"}}]}` } diff --git a/go/seatlist/seatlisttest/seats/container-image-registry.json b/go/seatlist/seatlisttest/seats/container-image-registry.json index b1a595f..3de19d8 100644 --- a/go/seatlist/seatlisttest/seats/container-image-registry.json +++ b/go/seatlist/seatlisttest/seats/container-image-registry.json @@ -3,6 +3,7 @@ "seat": "container-image-registry", "scope": "mesh", "grain": "whole", + "domain": "Delivery", "decision": "novox/hq ADR 0605", "description": "The mesh's container images, in the one artifact store: the OCI distribution protocol's read side, an image's tags and mirroring an outside image.", "includes": [ diff --git a/go/seatlist/seatlisttest/seats/git.json b/go/seatlist/seatlisttest/seats/git.json index 836285a..b7c55a1 100644 --- a/go/seatlist/seatlisttest/seats/git.json +++ b/go/seatlist/seatlisttest/seats/git.json @@ -3,6 +3,7 @@ "seat": "git", "scope": "mesh", "grain": "seat-list", + "domain": "Delivery", "decision": "novox/hq ADR 0111", "delivers": "git" } diff --git a/go/seatlist/seatlisttest/seats/go-package-registry.json b/go/seatlist/seatlisttest/seats/go-package-registry.json index edf3998..9d42636 100644 --- a/go/seatlist/seatlisttest/seats/go-package-registry.json +++ b/go/seatlist/seatlisttest/seats/go-package-registry.json @@ -3,6 +3,7 @@ "seat": "go-package-registry", "scope": "mesh", "grain": "whole", + "domain": "Delivery", "decision": "novox/hq ADR 0605", "description": "The mesh's Go modules: Go's module proxy protocol's read side, and publishing over the bus.", "delivers": "go-package-registry", diff --git a/go/seatlist/seatlisttest/seats/mesh-artifact-store.json b/go/seatlist/seatlisttest/seats/mesh-artifact-store.json index 84c8a57..d82ab33 100644 --- a/go/seatlist/seatlisttest/seats/mesh-artifact-store.json +++ b/go/seatlist/seatlisttest/seats/mesh-artifact-store.json @@ -3,5 +3,6 @@ "seat": "mesh-artifact-store", "scope": "mesh", "grain": "seat-list", + "domain": "Delivery", "decision": "novox/hq ADR 0075" } diff --git a/go/seatlist/seatlisttest/seats/mesh-artifact-sweep.json b/go/seatlist/seatlisttest/seats/mesh-artifact-sweep.json index 602a5f8..2e5b673 100644 --- a/go/seatlist/seatlisttest/seats/mesh-artifact-sweep.json +++ b/go/seatlist/seatlisttest/seats/mesh-artifact-sweep.json @@ -3,6 +3,7 @@ "seat": "mesh-artifact-sweep", "scope": "mesh", "grain": "seat-list", + "domain": "Delivery", "decision": "novox/hq ADR 0571", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/mesh-broker.json b/go/seatlist/seatlisttest/seats/mesh-broker.json index f0ebf4a..6fc5d4e 100644 --- a/go/seatlist/seatlisttest/seats/mesh-broker.json +++ b/go/seatlist/seatlisttest/seats/mesh-broker.json @@ -3,6 +3,7 @@ "seat": "mesh-broker", "scope": "mesh", "grain": "whole", + "domain": "Core", "decision": "novox/hq ADR 0079", "delivers": "mesh-bus", "description": "The mesh's bus, and the bus state modules ask of it in requires (design 25 § 12). create, apply, recreate and drop are granted to the bus module's own credential alone.", diff --git a/go/seatlist/seatlisttest/seats/mesh-catalog.json b/go/seatlist/seatlisttest/seats/mesh-catalog.json index 40b6618..5f71e23 100644 --- a/go/seatlist/seatlisttest/seats/mesh-catalog.json +++ b/go/seatlist/seatlisttest/seats/mesh-catalog.json @@ -3,6 +3,7 @@ "seat": "mesh-catalog", "scope": "mesh", "grain": "seat-list", + "domain": "Delivery", "decision": "novox/hq ADR 0604", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/mesh-conditions.json b/go/seatlist/seatlisttest/seats/mesh-conditions.json index 5513eba..b48b098 100644 --- a/go/seatlist/seatlisttest/seats/mesh-conditions.json +++ b/go/seatlist/seatlisttest/seats/mesh-conditions.json @@ -3,6 +3,7 @@ "seat": "mesh-conditions", "scope": "mesh", "grain": "seat-list", + "domain": "Health and repair", "decision": "novox/hq ADR 0564", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/mesh-config.json b/go/seatlist/seatlisttest/seats/mesh-config.json index d095825..0a5e0e1 100644 --- a/go/seatlist/seatlisttest/seats/mesh-config.json +++ b/go/seatlist/seatlisttest/seats/mesh-config.json @@ -3,6 +3,7 @@ "seat": "mesh-config", "scope": "mesh", "grain": "whole", + "domain": "Config", "decision": "novox/hq ADR 0348, ADR 0565", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/mesh-delivery-checker.json b/go/seatlist/seatlisttest/seats/mesh-delivery-checker.json index 7b56ab5..808b3e9 100644 --- a/go/seatlist/seatlisttest/seats/mesh-delivery-checker.json +++ b/go/seatlist/seatlisttest/seats/mesh-delivery-checker.json @@ -3,6 +3,7 @@ "seat": "mesh-delivery-checker", "scope": "mesh", "grain": "whole", + "domain": "Delivery", "decision": "novox/hq ADR 0547", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/mesh-delivery.json b/go/seatlist/seatlisttest/seats/mesh-delivery.json index bafd85c..43ba193 100644 --- a/go/seatlist/seatlisttest/seats/mesh-delivery.json +++ b/go/seatlist/seatlisttest/seats/mesh-delivery.json @@ -3,6 +3,7 @@ "seat": "mesh-delivery", "scope": "mesh", "grain": "seat-list", + "domain": "Delivery", "decision": "novox/hq ADR 0239", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/mesh-dns-resolver.json b/go/seatlist/seatlisttest/seats/mesh-dns-resolver.json index 14480ac..0868271 100644 --- a/go/seatlist/seatlisttest/seats/mesh-dns-resolver.json +++ b/go/seatlist/seatlisttest/seats/mesh-dns-resolver.json @@ -3,6 +3,7 @@ "seat": "mesh-dns-resolver", "scope": "mesh", "grain": "seat-list", + "domain": "Connectivity", "decision": "novox/hq ADR 0194, ADR 0223", "delivers": "wildcard-resolution", "replicated": true diff --git a/go/seatlist/seatlisttest/seats/mesh-enrolment.json b/go/seatlist/seatlisttest/seats/mesh-enrolment.json index b611558..474653a 100644 --- a/go/seatlist/seatlisttest/seats/mesh-enrolment.json +++ b/go/seatlist/seatlisttest/seats/mesh-enrolment.json @@ -3,6 +3,7 @@ "seat": "mesh-enrolment", "scope": "mesh", "grain": "seat-list", + "domain": "Identity and access", "decision": "novox/hq ADR 0587", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/mesh-hand-acts.json b/go/seatlist/seatlisttest/seats/mesh-hand-acts.json index a789dbb..9d760ec 100644 --- a/go/seatlist/seatlisttest/seats/mesh-hand-acts.json +++ b/go/seatlist/seatlisttest/seats/mesh-hand-acts.json @@ -3,6 +3,7 @@ "seat": "mesh-hand-acts", "scope": "mesh", "grain": "seat-list", + "domain": "Health and repair", "decision": "novox/hq ADR 0565", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/mesh-healers.json b/go/seatlist/seatlisttest/seats/mesh-healers.json index 0f463da..5b67239 100644 --- a/go/seatlist/seatlisttest/seats/mesh-healers.json +++ b/go/seatlist/seatlisttest/seats/mesh-healers.json @@ -3,6 +3,7 @@ "seat": "mesh-healers", "scope": "mesh", "grain": "seat-list", + "domain": "Health and repair", "decision": "novox/hq ADR 0564", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/mesh-placement.json b/go/seatlist/seatlisttest/seats/mesh-placement.json index cc3d44c..c38d9f4 100644 --- a/go/seatlist/seatlisttest/seats/mesh-placement.json +++ b/go/seatlist/seatlisttest/seats/mesh-placement.json @@ -3,6 +3,7 @@ "seat": "mesh-placement", "scope": "mesh", "grain": "seat-list", + "domain": "Placement", "decision": "novox/hq ADR 0567", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/mesh-provisioner.json b/go/seatlist/seatlisttest/seats/mesh-provisioner.json index fe16d81..719758d 100644 --- a/go/seatlist/seatlisttest/seats/mesh-provisioner.json +++ b/go/seatlist/seatlisttest/seats/mesh-provisioner.json @@ -3,6 +3,7 @@ "seat": "mesh-provisioner", "scope": "mesh", "grain": "seat-list", + "domain": "Provisioning", "decision": "novox/hq ADR 0349", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/mesh-self-check.json b/go/seatlist/seatlisttest/seats/mesh-self-check.json index 56ba074..1029b9c 100644 --- a/go/seatlist/seatlisttest/seats/mesh-self-check.json +++ b/go/seatlist/seatlisttest/seats/mesh-self-check.json @@ -3,6 +3,7 @@ "seat": "mesh-self-check", "scope": "mesh", "grain": "seat-list", + "domain": "Health and repair", "decision": "novox/hq ADR 0564", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/mesh-store.json b/go/seatlist/seatlisttest/seats/mesh-store.json index f02517a..fe1c4dd 100644 --- a/go/seatlist/seatlisttest/seats/mesh-store.json +++ b/go/seatlist/seatlisttest/seats/mesh-store.json @@ -3,6 +3,7 @@ "seat": "mesh-store", "scope": "mesh", "grain": "seat-list", + "domain": "Module", "decision": "novox/hq ADR 0079", "delivers": "postgres-database", "verbs": [ diff --git a/go/seatlist/seatlisttest/seats/mesh-vault.json b/go/seatlist/seatlisttest/seats/mesh-vault.json index 5a115a6..e83f02a 100644 --- a/go/seatlist/seatlisttest/seats/mesh-vault.json +++ b/go/seatlist/seatlisttest/seats/mesh-vault.json @@ -3,6 +3,7 @@ "seat": "mesh-vault", "scope": "mesh", "grain": "whole", + "domain": "Identity and access", "decision": "novox/hq ADR 0161", "delivers": "secret", "verbs": [ diff --git a/go/seatlist/seatlisttest/seats/mesh-wants.json b/go/seatlist/seatlisttest/seats/mesh-wants.json index 8b50c1a..3de06f7 100644 --- a/go/seatlist/seatlisttest/seats/mesh-wants.json +++ b/go/seatlist/seatlisttest/seats/mesh-wants.json @@ -3,6 +3,7 @@ "seat": "mesh-wants", "scope": "mesh", "grain": "seat-list", + "domain": "Placement", "decision": "novox/hq ADR 0565", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/mesh-watchdogs.json b/go/seatlist/seatlisttest/seats/mesh-watchdogs.json index 3ad9f3c..5d5a076 100644 --- a/go/seatlist/seatlisttest/seats/mesh-watchdogs.json +++ b/go/seatlist/seatlisttest/seats/mesh-watchdogs.json @@ -3,6 +3,7 @@ "seat": "mesh-watchdogs", "scope": "mesh", "grain": "seat-list", + "domain": "Health and repair", "decision": "novox/hq ADR 0564", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/node-backup.json b/go/seatlist/seatlisttest/seats/node-backup.json index 465f68f..f5c59d2 100644 --- a/go/seatlist/seatlisttest/seats/node-backup.json +++ b/go/seatlist/seatlisttest/seats/node-backup.json @@ -3,6 +3,7 @@ "seat": "node-backup", "scope": "node", "grain": "seat-list", + "domain": "Data", "decision": "novox/hq ADR 0214", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/node-bar.json b/go/seatlist/seatlisttest/seats/node-bar.json index dc73191..92249d1 100644 --- a/go/seatlist/seatlisttest/seats/node-bar.json +++ b/go/seatlist/seatlisttest/seats/node-bar.json @@ -3,6 +3,7 @@ "seat": "node-bar", "scope": "node", "grain": "seat-list", + "domain": "Core", "decision": "novox/hq ADR 0208", "receives": [ { diff --git a/go/seatlist/seatlisttest/seats/node-build-go.json b/go/seatlist/seatlisttest/seats/node-build-go.json index 5beead8..ccb5664 100644 --- a/go/seatlist/seatlisttest/seats/node-build-go.json +++ b/go/seatlist/seatlisttest/seats/node-build-go.json @@ -3,6 +3,7 @@ "seat": "node-build-go", "scope": "node", "grain": "seat-list", + "domain": "Delivery", "decision": "novox/hq ADR 0525, ADR 0536, ADR 0553", "pulled-by-kind": true, "yields": true, diff --git a/go/seatlist/seatlisttest/seats/node-build-image.json b/go/seatlist/seatlisttest/seats/node-build-image.json index 96065eb..b275f85 100644 --- a/go/seatlist/seatlisttest/seats/node-build-image.json +++ b/go/seatlist/seatlisttest/seats/node-build-image.json @@ -3,6 +3,7 @@ "seat": "node-build-image", "scope": "node", "grain": "seat-list", + "domain": "Delivery", "decision": "novox/hq ADR 0525, ADR 0536, ADR 0553", "pulled-by-kind": true, "yields": true, diff --git a/go/seatlist/seatlisttest/seats/node-build-node.json b/go/seatlist/seatlisttest/seats/node-build-node.json index d2b8fb7..aa7f182 100644 --- a/go/seatlist/seatlisttest/seats/node-build-node.json +++ b/go/seatlist/seatlisttest/seats/node-build-node.json @@ -3,6 +3,7 @@ "seat": "node-build-node", "scope": "node", "grain": "seat-list", + "domain": "Delivery", "decision": "novox/hq ADR 0525, ADR 0536, ADR 0553", "pulled-by-kind": true, "yields": true, diff --git a/go/seatlist/seatlisttest/seats/node-clipboard.json b/go/seatlist/seatlisttest/seats/node-clipboard.json index 0f21e51..88dde07 100644 --- a/go/seatlist/seatlisttest/seats/node-clipboard.json +++ b/go/seatlist/seatlisttest/seats/node-clipboard.json @@ -3,6 +3,7 @@ "seat": "node-clipboard", "scope": "node", "grain": "seat-list", + "domain": "Core", "decision": "novox/hq ADR 0208", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/node-compositor.json b/go/seatlist/seatlisttest/seats/node-compositor.json index 4ce95ee..f126432 100644 --- a/go/seatlist/seatlisttest/seats/node-compositor.json +++ b/go/seatlist/seatlisttest/seats/node-compositor.json @@ -3,5 +3,6 @@ "seat": "node-compositor", "scope": "node", "grain": "seat-list", + "domain": "Core", "decision": "novox/hq ADR 0208" } diff --git a/go/seatlist/seatlisttest/seats/node-container-runtime.json b/go/seatlist/seatlisttest/seats/node-container-runtime.json index 4a68219..1b1bf02 100644 --- a/go/seatlist/seatlisttest/seats/node-container-runtime.json +++ b/go/seatlist/seatlisttest/seats/node-container-runtime.json @@ -3,5 +3,6 @@ "seat": "node-container-runtime", "scope": "node", "grain": "seat-list", + "domain": "Placement", "decision": "novox/hq ADR 0166, ADR 0207" } diff --git a/go/seatlist/seatlisttest/seats/node-display-server.json b/go/seatlist/seatlisttest/seats/node-display-server.json index 8523e84..20c587d 100644 --- a/go/seatlist/seatlisttest/seats/node-display-server.json +++ b/go/seatlist/seatlisttest/seats/node-display-server.json @@ -3,6 +3,7 @@ "seat": "node-display-server", "scope": "node", "grain": "seat-list", + "domain": "Core", "decision": "novox/hq ADR 0208", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/node-display-session.json b/go/seatlist/seatlisttest/seats/node-display-session.json index 6edac04..a815db1 100644 --- a/go/seatlist/seatlisttest/seats/node-display-session.json +++ b/go/seatlist/seatlisttest/seats/node-display-session.json @@ -3,6 +3,7 @@ "seat": "node-display-session", "scope": "node", "grain": "seat-list", + "domain": "Core", "decision": "novox/hq ADR 0208", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/node-engine.json b/go/seatlist/seatlisttest/seats/node-engine.json index dfcaeb8..d09c320 100644 --- a/go/seatlist/seatlisttest/seats/node-engine.json +++ b/go/seatlist/seatlisttest/seats/node-engine.json @@ -3,6 +3,7 @@ "seat": "node-engine", "scope": "node", "grain": "whole", + "domain": "Core", "decision": "novox/hq ADR 0563", "description": "The node seat every node's engine holds (novox/hq ADR 0563, ADR 0618 §3, §4): its hand acts on the operator's warrant, its read-only judgements, its compositions and what it reads of a manifest. Each verb is answered on this node's subject, mesh.seat.node-engine.tool.., and each event is published on mesh.seat.node-engine.event.., the node's name its last token.", "held-by-the-engine": true, diff --git a/go/seatlist/seatlisttest/seats/node-environment.json b/go/seatlist/seatlisttest/seats/node-environment.json index 064beb0..75bb5d3 100644 --- a/go/seatlist/seatlisttest/seats/node-environment.json +++ b/go/seatlist/seatlisttest/seats/node-environment.json @@ -3,5 +3,6 @@ "seat": "node-environment", "scope": "node", "grain": "seat-list", + "domain": "Placement", "decision": "novox/hq ADR 0203" } diff --git a/go/seatlist/seatlisttest/seats/node-files.json b/go/seatlist/seatlisttest/seats/node-files.json index 7ad768f..6a43cf4 100644 --- a/go/seatlist/seatlisttest/seats/node-files.json +++ b/go/seatlist/seatlisttest/seats/node-files.json @@ -3,6 +3,7 @@ "seat": "node-files", "scope": "node", "grain": "seat-list", + "domain": "Core", "decision": "novox/hq ADR 0394", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/node-hostname.json b/go/seatlist/seatlisttest/seats/node-hostname.json index 0f646af..327c4d5 100644 --- a/go/seatlist/seatlisttest/seats/node-hostname.json +++ b/go/seatlist/seatlisttest/seats/node-hostname.json @@ -3,6 +3,7 @@ "seat": "node-hostname", "scope": "node", "grain": "seat-list", + "domain": "Connectivity", "decision": "novox/hq ADR 0199, ADR 0223", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/node-hotkeys.json b/go/seatlist/seatlisttest/seats/node-hotkeys.json index cedd627..aec1269 100644 --- a/go/seatlist/seatlisttest/seats/node-hotkeys.json +++ b/go/seatlist/seatlisttest/seats/node-hotkeys.json @@ -3,6 +3,7 @@ "seat": "node-hotkeys", "scope": "node", "grain": "seat-list", + "domain": "Core", "decision": "novox/hq ADR 0212", "receives": [ { diff --git a/go/seatlist/seatlisttest/seats/node-intrusion-prevention.json b/go/seatlist/seatlisttest/seats/node-intrusion-prevention.json index a987a70..b2bc355 100644 --- a/go/seatlist/seatlisttest/seats/node-intrusion-prevention.json +++ b/go/seatlist/seatlisttest/seats/node-intrusion-prevention.json @@ -3,6 +3,7 @@ "seat": "node-intrusion-prevention", "scope": "node", "grain": "seat-list", + "domain": "Connectivity", "decision": "novox/hq ADR 0121", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/node-launcher.json b/go/seatlist/seatlisttest/seats/node-launcher.json index 3eab2eb..977e537 100644 --- a/go/seatlist/seatlisttest/seats/node-launcher.json +++ b/go/seatlist/seatlisttest/seats/node-launcher.json @@ -3,6 +3,7 @@ "seat": "node-launcher", "scope": "node", "grain": "seat-list", + "domain": "Core", "decision": "novox/hq ADR 0208", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/node-lock-screen.json b/go/seatlist/seatlisttest/seats/node-lock-screen.json index 4cd19ed..38e5340 100644 --- a/go/seatlist/seatlisttest/seats/node-lock-screen.json +++ b/go/seatlist/seatlisttest/seats/node-lock-screen.json @@ -3,6 +3,7 @@ "seat": "node-lock-screen", "scope": "node", "grain": "seat-list", + "domain": "Core", "decision": "novox/hq ADR 0208", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/node-login-manager.json b/go/seatlist/seatlisttest/seats/node-login-manager.json index e0a70ba..2b3d4fa 100644 --- a/go/seatlist/seatlisttest/seats/node-login-manager.json +++ b/go/seatlist/seatlisttest/seats/node-login-manager.json @@ -3,6 +3,7 @@ "seat": "node-login-manager", "scope": "node", "grain": "seat-list", + "domain": "Core", "decision": "novox/hq ADR 0208", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/node-login-shell.json b/go/seatlist/seatlisttest/seats/node-login-shell.json index c868e5b..9d6295a 100644 --- a/go/seatlist/seatlisttest/seats/node-login-shell.json +++ b/go/seatlist/seatlisttest/seats/node-login-shell.json @@ -3,6 +3,7 @@ "seat": "node-login-shell", "scope": "node", "grain": "seat-list", + "domain": "Core", "decision": "novox/hq ADR 0204", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/node-message-bus.json b/go/seatlist/seatlisttest/seats/node-message-bus.json index 83c6744..4c19846 100644 --- a/go/seatlist/seatlisttest/seats/node-message-bus.json +++ b/go/seatlist/seatlisttest/seats/node-message-bus.json @@ -3,5 +3,6 @@ "seat": "node-message-bus", "scope": "node", "grain": "seat-list", + "domain": "Core", "decision": "novox/hq ADR 0215" } diff --git a/go/seatlist/seatlisttest/seats/node-mounts.json b/go/seatlist/seatlisttest/seats/node-mounts.json index 43f1655..eadb518 100644 --- a/go/seatlist/seatlisttest/seats/node-mounts.json +++ b/go/seatlist/seatlisttest/seats/node-mounts.json @@ -3,6 +3,7 @@ "seat": "node-mounts", "scope": "node", "grain": "seat-list", + "domain": "Provisioning", "decision": "novox/hq ADR 0263", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/node-nfs-server.json b/go/seatlist/seatlisttest/seats/node-nfs-server.json index 4cedbde..664dd3d 100644 --- a/go/seatlist/seatlisttest/seats/node-nfs-server.json +++ b/go/seatlist/seatlisttest/seats/node-nfs-server.json @@ -3,6 +3,7 @@ "seat": "node-nfs-server", "scope": "node", "grain": "seat-list", + "domain": "Provisioning", "decision": "novox/hq ADR 0263", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/node-notifier.json b/go/seatlist/seatlisttest/seats/node-notifier.json index f391310..565d898 100644 --- a/go/seatlist/seatlisttest/seats/node-notifier.json +++ b/go/seatlist/seatlisttest/seats/node-notifier.json @@ -3,6 +3,7 @@ "seat": "node-notifier", "scope": "node", "grain": "seat-list", + "domain": "Core", "decision": "novox/hq ADR 0208", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/node-package-manager.json b/go/seatlist/seatlisttest/seats/node-package-manager.json index c2b32b0..034e878 100644 --- a/go/seatlist/seatlisttest/seats/node-package-manager.json +++ b/go/seatlist/seatlisttest/seats/node-package-manager.json @@ -3,5 +3,6 @@ "seat": "node-package-manager", "scope": "node", "grain": "seat-list", + "domain": "Placement", "decision": "novox/hq ADR 0207" } diff --git a/go/seatlist/seatlisttest/seats/node-packet-filter.json b/go/seatlist/seatlisttest/seats/node-packet-filter.json index fb69e1c..005b50c 100644 --- a/go/seatlist/seatlisttest/seats/node-packet-filter.json +++ b/go/seatlist/seatlisttest/seats/node-packet-filter.json @@ -3,6 +3,7 @@ "seat": "node-packet-filter", "scope": "node", "grain": "seat-list", + "domain": "Connectivity", "decision": "novox/hq ADR 0121", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/node-power.json b/go/seatlist/seatlisttest/seats/node-power.json index 762a79f..13679b4 100644 --- a/go/seatlist/seatlisttest/seats/node-power.json +++ b/go/seatlist/seatlisttest/seats/node-power.json @@ -3,5 +3,6 @@ "seat": "node-power", "scope": "node", "grain": "seat-list", + "domain": "Core", "decision": "novox/hq ADR 0211" } diff --git a/go/seatlist/seatlisttest/seats/node-provisioner.json b/go/seatlist/seatlisttest/seats/node-provisioner.json index 9752f8b..3510f6f 100644 --- a/go/seatlist/seatlisttest/seats/node-provisioner.json +++ b/go/seatlist/seatlisttest/seats/node-provisioner.json @@ -3,5 +3,6 @@ "seat": "node-provisioner", "scope": "node", "grain": "seat-list", + "domain": "Provisioning", "decision": "novox/hq ADR 0349" } diff --git a/go/seatlist/seatlisttest/seats/node-reads.json b/go/seatlist/seatlisttest/seats/node-reads.json index 938a71a..5dae465 100644 --- a/go/seatlist/seatlisttest/seats/node-reads.json +++ b/go/seatlist/seatlisttest/seats/node-reads.json @@ -3,6 +3,7 @@ "seat": "node-reads", "scope": "node", "grain": "seat-list", + "domain": "Core", "decision": "novox/hq ADR 0310", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/node-resolver.json b/go/seatlist/seatlisttest/seats/node-resolver.json index 8689bcd..be8a91f 100644 --- a/go/seatlist/seatlisttest/seats/node-resolver.json +++ b/go/seatlist/seatlisttest/seats/node-resolver.json @@ -3,6 +3,7 @@ "seat": "node-resolver", "scope": "node", "grain": "seat-list", + "domain": "Connectivity", "decision": "novox/hq ADR 0247", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/node-secret-service.json b/go/seatlist/seatlisttest/seats/node-secret-service.json index fd5b84b..9dc3e27 100644 --- a/go/seatlist/seatlisttest/seats/node-secret-service.json +++ b/go/seatlist/seatlisttest/seats/node-secret-service.json @@ -3,5 +3,6 @@ "seat": "node-secret-service", "scope": "node", "grain": "seat-list", + "domain": "Identity and access", "decision": "novox/hq ADR 0208" } diff --git a/go/seatlist/seatlisttest/seats/node-service-manager.json b/go/seatlist/seatlisttest/seats/node-service-manager.json index 9270cc2..695bc00 100644 --- a/go/seatlist/seatlisttest/seats/node-service-manager.json +++ b/go/seatlist/seatlisttest/seats/node-service-manager.json @@ -3,6 +3,7 @@ "seat": "node-service-manager", "scope": "node", "grain": "seat-list", + "domain": "Placement", "decision": "novox/hq ADR 0177", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/node-terminal-emulator.json b/go/seatlist/seatlisttest/seats/node-terminal-emulator.json index 732a5ba..dd856ee 100644 --- a/go/seatlist/seatlisttest/seats/node-terminal-emulator.json +++ b/go/seatlist/seatlisttest/seats/node-terminal-emulator.json @@ -3,6 +3,7 @@ "seat": "node-terminal-emulator", "scope": "node", "grain": "seat-list", + "domain": "Core", "decision": "novox/hq ADR 0208", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/node-uplink.json b/go/seatlist/seatlisttest/seats/node-uplink.json index 0ecfbf1..cd59ee5 100644 --- a/go/seatlist/seatlisttest/seats/node-uplink.json +++ b/go/seatlist/seatlisttest/seats/node-uplink.json @@ -3,6 +3,7 @@ "seat": "node-uplink", "scope": "node", "grain": "seat-list", + "domain": "Connectivity", "decision": "novox/hq ADR 0117", "verbs": [ { diff --git a/go/seatlist/seatlisttest/seats/npm-package-registry.json b/go/seatlist/seatlisttest/seats/npm-package-registry.json index 61f77c3..ae2ab3d 100644 --- a/go/seatlist/seatlisttest/seats/npm-package-registry.json +++ b/go/seatlist/seatlisttest/seats/npm-package-registry.json @@ -3,6 +3,7 @@ "seat": "npm-package-registry", "scope": "mesh", "grain": "whole", + "domain": "Delivery", "decision": "novox/hq ADR 0109", "description": "The mesh's npm packages: the npm registry protocol's read side, and publishing over the bus.", "delivers": "npm-package-registry", diff --git a/go/seatlist/seatlisttest/seats/oci-artifact-registry.json b/go/seatlist/seatlisttest/seats/oci-artifact-registry.json index 9d37fce..a9d969c 100644 --- a/go/seatlist/seatlisttest/seats/oci-artifact-registry.json +++ b/go/seatlist/seatlisttest/seats/oci-artifact-registry.json @@ -3,6 +3,7 @@ "seat": "oci-artifact-registry", "scope": "mesh", "grain": "whole", + "domain": "Delivery", "decision": "novox/hq ADR 0605", "description": "The mesh's bundles and archives, by digest, in the one artifact store: the OCI distribution protocol's read side.", "includes": [ diff --git a/go/seatlist/seatlisttest/seats/operator-channel.json b/go/seatlist/seatlisttest/seats/operator-channel.json index 9770349..0bd8c21 100644 --- a/go/seatlist/seatlisttest/seats/operator-channel.json +++ b/go/seatlist/seatlisttest/seats/operator-channel.json @@ -3,6 +3,7 @@ "seat": "operator-channel", "scope": "mesh", "grain": "whole", + "domain": "Operator and conversation", "decision": "novox/hq ADR 0259", "holder-declares": true, "description": "Asking a person and answering on a channel (ADR 0259): held by the router, the messenger module, whose manifest declares the seat; written from that seat entry (design 26).", diff --git a/go/seatlist/seatlisttest/seats/the-private-network.json b/go/seatlist/seatlisttest/seats/the-private-network.json index 858f02e..6cd6500 100644 --- a/go/seatlist/seatlisttest/seats/the-private-network.json +++ b/go/seatlist/seatlisttest/seats/the-private-network.json @@ -3,5 +3,6 @@ "seat": "the-private-network", "scope": "node", "grain": "seat-list", + "domain": "Connectivity", "decision": "novox/hq ADR 0110" }