diff --git a/internal/catalogue/seats.go b/internal/catalogue/seats.go index 39de060..7f75e04 100644 --- a/internal/catalogue/seats.go +++ b/internal/catalogue/seats.go @@ -59,7 +59,16 @@ var defaultSeats = []Seat{ {Name: ControllerSeatName, Scope: ScopeMesh, Decision: "novox/hq ADR 0079", Emits: []string{"applied", "refused", "built-before"}, Serves: ControllerVerbs}, - {Name: "mesh-store", Scope: ScopeMesh, Delivers: "postgres-database", Decision: "novox/hq ADR 0079"}, + // The store's first verbs (novox/hq ADR 0159): the smallest set that makes the store askable, + // served by whichever module holds the seat with tools of these names. + {Name: "mesh-store", Scope: ScopeMesh, Delivers: "postgres-database", Decision: "novox/hq ADR 0079", + Serves: []Verb{ + {Name: "databases", Description: "Every database the store holds, with its on-disk size.", + Input: schema(map[string]string{}, nil)}, + {Name: "query", Description: "One read-only statement against one database the store holds.", + Input: schema(map[string]string{"database": "the database to query", "sql": "the read-only statement"}, + []string{"database", "sql"})}, + }}, // **Delivers the mesh's own bus, not `amqp`.** Those were the same word until // ADR 0127 separated them: `amqp` is a backing service a module may require, and this seat is // the mesh's own transport. ADR 0128 then made that connection something a module requires