From e7cff3d38ea2b116cfd0cd7ad3b47051d3811e6e Mon Sep 17 00:00:00 2001 From: jochen Date: Thu, 1 Oct 2026 14:02:46 +0200 Subject: [PATCH] The store seat promises two verbs, databases and query (hq ADR 0159) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Seeded additively into the seat's row at the controller's next start; a holder must list tools of these names (design 33 ยง3), so this merges after the database engine's definition does. --- internal/catalogue/seats.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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