From d64131328001ff3d1d6786d06d33e48a8600e23f Mon Sep 17 00:00:00 2001 From: jochen Date: Thu, 5 Nov 2026 14:34:09 +0100 Subject: [PATCH] =?UTF-8?q?mesh-delivery-contracts:=20mesh-catalog=20serve?= =?UTF-8?q?s=20the=20verb=20seat-definitions,=20every=20definition=20names?= =?UTF-8?q?=20its=20domain=20Delivery,=20regenerated=20(ADR=200636=20?= =?UTF-8?q?=C2=A71,=20=C2=A75;=20issue=201966)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i --- contracts/go/seats/meshcatalog/contract.go | 20 ++++++++++++++----- .../seats/container-image-registry/seat.json | 1 + contracts/seats/git/seat.json | 1 + contracts/seats/go-package-registry/seat.json | 1 + contracts/seats/mesh-artifact-store/seat.json | 1 + contracts/seats/mesh-artifact-sweep/seat.json | 5 +++-- contracts/seats/mesh-catalog/seat.json | 19 ++++++++++++++++++ .../seats/mesh-delivery-checker/seat.json | 1 + contracts/seats/mesh-delivery/seat.json | 1 + contracts/seats/node-build-go/seat.json | 1 + contracts/seats/node-build-image/seat.json | 1 + contracts/seats/node-build-node/seat.json | 1 + .../seats/npm-package-registry/seat.json | 1 + .../seats/oci-artifact-registry/seat.json | 1 + contracts/ts/seats/meshcatalog/src/index.ts | 10 ++++++++++ 15 files changed, 58 insertions(+), 7 deletions(-) diff --git a/contracts/go/seats/meshcatalog/contract.go b/contracts/go/seats/meshcatalog/contract.go index aeecc413..323e853a 100644 --- a/contracts/go/seats/meshcatalog/contract.go +++ b/contracts/go/seats/meshcatalog/contract.go @@ -14,10 +14,11 @@ import ( const Seat = "mesh-catalog" const ( - VerbModules = "modules" - VerbModule = "module" - VerbProvides = "provides" - VerbDependents = "dependents" + VerbSeatDefinitions = "seat-definitions" + VerbModules = "modules" + VerbModule = "module" + VerbProvides = "provides" + VerbDependents = "dependents" ) const ( @@ -27,7 +28,7 @@ const ( // Verbs is every verb the seat serves, in its definition's order: a new copy each call. func Verbs() []string { - return []string{VerbModules, VerbModule, VerbProvides, VerbDependents} + return []string{VerbSeatDefinitions, VerbModules, VerbModule, VerbProvides, VerbDependents} } // Events is every event published on the seat's subject: a new copy each call. @@ -309,6 +310,15 @@ func DecodePackagesByPackageSeriesValue(raw []byte) (PackagesByPackageSeriesValu return v, nil } +// SeatDefinitionsInput is what seat-definitions takes. +type SeatDefinitionsInput struct { + // the seat to give whole; omit for the list of every seat + Seat string `json:"seat,omitempty"` +} + +// SeatDefinitionsAnswer is what seat-definitions answers. +type SeatDefinitionsAnswer = map[string]any + // ModulesInput is what modules takes. type ModulesInput struct { } diff --git a/contracts/seats/container-image-registry/seat.json b/contracts/seats/container-image-registry/seat.json index 9f95f1e4..bc116b4b 100644 --- a/contracts/seats/container-image-registry/seat.json +++ b/contracts/seats/container-image-registry/seat.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/contracts/seats/git/seat.json b/contracts/seats/git/seat.json index 836285ab..b7c55a10 100644 --- a/contracts/seats/git/seat.json +++ b/contracts/seats/git/seat.json @@ -3,6 +3,7 @@ "seat": "git", "scope": "mesh", "grain": "seat-list", + "domain": "Delivery", "decision": "novox/hq ADR 0111", "delivers": "git" } diff --git a/contracts/seats/go-package-registry/seat.json b/contracts/seats/go-package-registry/seat.json index edf39986..9d426368 100644 --- a/contracts/seats/go-package-registry/seat.json +++ b/contracts/seats/go-package-registry/seat.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/contracts/seats/mesh-artifact-store/seat.json b/contracts/seats/mesh-artifact-store/seat.json index 84c8a57e..d82ab333 100644 --- a/contracts/seats/mesh-artifact-store/seat.json +++ b/contracts/seats/mesh-artifact-store/seat.json @@ -3,5 +3,6 @@ "seat": "mesh-artifact-store", "scope": "mesh", "grain": "seat-list", + "domain": "Delivery", "decision": "novox/hq ADR 0075" } diff --git a/contracts/seats/mesh-artifact-sweep/seat.json b/contracts/seats/mesh-artifact-sweep/seat.json index 602a5f8d..3cf6fa69 100644 --- a/contracts/seats/mesh-artifact-sweep/seat.json +++ b/contracts/seats/mesh-artifact-sweep/seat.json @@ -3,6 +3,7 @@ "seat": "mesh-artifact-sweep", "scope": "mesh", "grain": "seat-list", + "domain": "Delivery", "decision": "novox/hq ADR 0571", "verbs": [ { @@ -19,7 +20,7 @@ "type": "string" }, "repository": { - "description": "only this repository's references, as \u003cmodule\u003e/\u003cartifact\u003e (the counts stay whole)", + "description": "only this repository's references, as / (the counts stay whole)", "type": "string" } }, @@ -32,7 +33,7 @@ "input": { "properties": { "references": { - "description": "the artifacts' references, artifact-store://\u003cmodule\u003e/\u003cartifact\u003e/blobs/sha256:\u003chex\u003e: a list, or one text separated by commas", + "description": "the artifacts' references, artifact-store:////blobs/sha256:: a list, or one text separated by commas", "items": { "type": "string" }, diff --git a/contracts/seats/mesh-catalog/seat.json b/contracts/seats/mesh-catalog/seat.json index 92a8307e..3ba5b97e 100644 --- a/contracts/seats/mesh-catalog/seat.json +++ b/contracts/seats/mesh-catalog/seat.json @@ -3,8 +3,27 @@ "seat": "mesh-catalog", "scope": "mesh", "grain": "whole", + "domain": "Delivery", "decision": "novox/hq ADR 0604", "verbs": [ + { + "name": "seat-definitions", + "description": "The seats' definitions the trunk holds, for the seat list reader of every host (ADR 0636 §1, §4): with no seat, the revision and every trunk seat's name and digest; with a seat, that seat's resolved definition, its digest and any reason it did not parse. Trunk definitions only. Reads only.", + "optional": false, + "input": { + "properties": { + "seat": { + "description": "the seat to give whole; omit for the list of every seat", + "type": "string" + } + }, + "type": "object" + }, + "answer": { + "type": "object", + "description": "{revision, seats:[{seat, source, digest}]} for no seat; {seat, found, entry:{seat, source, digest, definition, unparsed?}, revision} for one" + } + }, { "name": "modules", "description": "Every module the trunk holds, each with its repository, its directory there, the merge commit it was last changed at and its fingerprint (or why it has none): the catalog of the mesh, read from its holder's state. Reads only.", diff --git a/contracts/seats/mesh-delivery-checker/seat.json b/contracts/seats/mesh-delivery-checker/seat.json index 2aaba6bf..0a9220d3 100644 --- a/contracts/seats/mesh-delivery-checker/seat.json +++ b/contracts/seats/mesh-delivery-checker/seat.json @@ -3,6 +3,7 @@ "seat": "mesh-delivery-checker", "scope": "mesh", "grain": "whole", + "domain": "Delivery", "decision": "novox/hq ADR 0547", "verbs": [ { diff --git a/contracts/seats/mesh-delivery/seat.json b/contracts/seats/mesh-delivery/seat.json index bc08d0ff..8365118a 100644 --- a/contracts/seats/mesh-delivery/seat.json +++ b/contracts/seats/mesh-delivery/seat.json @@ -3,6 +3,7 @@ "seat": "mesh-delivery", "scope": "mesh", "grain": "whole", + "domain": "Delivery", "decision": "novox/hq ADR 0239", "verbs": [ { diff --git a/contracts/seats/node-build-go/seat.json b/contracts/seats/node-build-go/seat.json index ff273bdb..a810a6bb 100644 --- a/contracts/seats/node-build-go/seat.json +++ b/contracts/seats/node-build-go/seat.json @@ -3,6 +3,7 @@ "seat": "node-build-go", "scope": "node", "grain": "whole", + "domain": "Delivery", "decision": "novox/hq ADR 0525, ADR 0536, ADR 0553", "pulled-by-kind": true, "yields": true, diff --git a/contracts/seats/node-build-image/seat.json b/contracts/seats/node-build-image/seat.json index f0ca605b..037a8907 100644 --- a/contracts/seats/node-build-image/seat.json +++ b/contracts/seats/node-build-image/seat.json @@ -3,6 +3,7 @@ "seat": "node-build-image", "scope": "node", "grain": "whole", + "domain": "Delivery", "decision": "novox/hq ADR 0525, ADR 0536, ADR 0553", "pulled-by-kind": true, "yields": true, diff --git a/contracts/seats/node-build-node/seat.json b/contracts/seats/node-build-node/seat.json index 34ee7310..6fce1468 100644 --- a/contracts/seats/node-build-node/seat.json +++ b/contracts/seats/node-build-node/seat.json @@ -3,6 +3,7 @@ "seat": "node-build-node", "scope": "node", "grain": "whole", + "domain": "Delivery", "decision": "novox/hq ADR 0525, ADR 0536, ADR 0553", "pulled-by-kind": true, "yields": true, diff --git a/contracts/seats/npm-package-registry/seat.json b/contracts/seats/npm-package-registry/seat.json index 61f77c32..ae2ab3db 100644 --- a/contracts/seats/npm-package-registry/seat.json +++ b/contracts/seats/npm-package-registry/seat.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/contracts/seats/oci-artifact-registry/seat.json b/contracts/seats/oci-artifact-registry/seat.json index ae30e92c..ee6f5bf7 100644 --- a/contracts/seats/oci-artifact-registry/seat.json +++ b/contracts/seats/oci-artifact-registry/seat.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/contracts/ts/seats/meshcatalog/src/index.ts b/contracts/ts/seats/meshcatalog/src/index.ts index 10a89abb..948161ec 100644 --- a/contracts/ts/seats/meshcatalog/src/index.ts +++ b/contracts/ts/seats/meshcatalog/src/index.ts @@ -5,6 +5,7 @@ export const seat = "mesh-catalog"; export const verbs = { + seatDefinitions: "seat-definitions", modules: "modules", module: "module", provides: "provides", @@ -155,6 +156,15 @@ export function parsePackagesByPackageSeriesKey(key: string): { packagePart: str return { packagePart, series }; } +/** is what seat-definitions takes. */ +export interface SeatDefinitionsInput { + /** the seat to give whole; omit for the list of every seat */ + "seat"?: string; +} + +/** is what seat-definitions answers. */ +export type SeatDefinitionsAnswer = Record; + /** is what modules takes. */ export interface ModulesInput { }