seatlist: a reader started while the seat was silent is heard at the seat's changed event, which reads the whole list (ADR 0636 §1; issue 1966)

This commit is contained in:
2026-11-05 14:32:25 +01:00
parent b81622842b
commit 9fb2c42138
2 changed files with 1181 additions and 18 deletions
+791 -17
View File
@@ -2,24 +2,9 @@
"format": 1,
"seat": "mesh-catalog",
"scope": "mesh",
"grain": "seat-list",
"domain": "Delivery",
"decision": "novox/hq ADR 0636",
"grain": "whole",
"decision": "novox/hq ADR 0604",
"verbs": [
{
"name": "seat-definitions",
"description": "The seat list (ADR 0636 §4): with no seat, every trunk seat with its digest and the revision of the list; with a seat, that trunk definition resolved with the parts it includes. Reads only.",
"optional": true,
"input": {
"properties": {
"seat": {
"description": "the seat's name; none lists every trunk seat",
"type": "string"
}
},
"type": "object"
}
},
{
"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.",
@@ -27,6 +12,10 @@
"input": {
"properties": {},
"type": "object"
},
"answer": {
"type": "object",
"description": "what modules answers, as its description says"
}
},
{
@@ -44,6 +33,10 @@
"module"
],
"type": "object"
},
"answer": {
"type": "object",
"description": "what module answers, as its description says"
}
},
{
@@ -61,6 +54,10 @@
"provision"
],
"type": "object"
},
"answer": {
"type": "object",
"description": "what provides answers, as its description says"
}
},
{
@@ -78,7 +75,784 @@
"module"
],
"type": "object"
},
"answer": {
"type": "object",
"description": "what dependents answers, as its description says"
}
}
],
"description": "The catalog of the mesh: every module the trunk holds with its manifest, fingerprint and verdict, the packages published, and the seat list (ADR 0636 §1, §4).",
"family": {
"name": "mesh-catalog.events",
"max-age-days": 7
},
"events": [
{
"name": "seat-definition-changed",
"body": {
"type": "object",
"properties": {
"seat": {
"type": "string"
},
"source": {
"type": "string",
"description": "trunk"
},
"digest": {
"type": "string"
}
},
"required": [
"seat",
"source",
"digest"
]
}
},
{
"name": "seat-definition-removed",
"body": {
"type": "object",
"properties": {
"seat": {
"type": "string"
}
},
"required": [
"seat"
]
}
}
],
"states": [
{
"name": "manifests",
"template": "state",
"key-forms": [
{
"key": "<digest>",
"value": {
"type": "object",
"properties": {
"v": {
"type": "integer",
"description": "the layout version"
},
"module": {
"type": "string"
},
"manifest": {
"type": "string",
"description": "the manifest, UTF-8 JSON text"
}
},
"required": [
"module",
"manifest"
]
},
"description": "a manifest by its digest, written once"
}
],
"description": "every manifest the indexer judged",
"history": 1
},
{
"name": "modules",
"template": "state",
"key-forms": [
{
"key": "<module>",
"value": {
"type": "object",
"properties": {
"v": {
"type": "integer",
"description": "the layout version"
},
"fp": {
"type": "string",
"description": "the old-form fingerprint"
},
"none": {
"type": "string"
},
"fp2": {
"type": "string",
"description": "src2: fingerprint"
},
"none2": {
"type": "string",
"description": "why it has none"
},
"manifest": {
"type": "string",
"description": "manifest digest"
},
"inputs2": {
"type": "object",
"properties": {
"tree": {
"type": "string"
},
"bases": {
"type": "array",
"items": {
"type": "string"
}
},
"builder": {
"type": "string"
},
"contexts": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"locks": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"paths": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"packages": {
"type": "array",
"items": {
"type": "string"
}
},
"imports": {
"type": "array",
"items": {
"type": "string"
}
},
"import-form": {
"type": "string"
}
},
"required": [
"tree"
]
},
"src": {
"type": "integer",
"description": "the source revision"
},
"fp-src": {
"type": "integer"
},
"repository": {
"type": "string"
},
"commit": {
"type": "string"
},
"path": {
"type": "string"
},
"toolchains": {
"type": "object",
"additionalProperties": {
"description": "toolchain used"
}
},
"paths": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
}
},
"packages": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"verdict": {
"type": "string"
},
"problems": {
"type": "array",
"items": {
"type": "string"
}
},
"unknown": {
"type": "array",
"items": {
"type": "string"
}
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"needs": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"repository",
"commit"
],
"description": "one module as the trunk holds it"
},
"description": "a module the trunk holds"
}
],
"description": "the module catalog",
"history": 20
},
{
"name": "candidates",
"template": "state",
"key-forms": [
{
"key": "<group>",
"value": {
"type": "object",
"properties": {
"v": {
"type": "integer",
"description": "the layout version"
},
"group": {
"type": "string"
},
"base": {
"type": "integer",
"description": "the source revision it is read on"
},
"heads": {
"type": "string"
},
"pulls": {
"type": "array",
"items": {
"type": "object",
"properties": {
"repository": {
"type": "string"
},
"number": {
"type": "integer"
},
"head": {
"type": "string"
},
"modules": {
"type": "array",
"items": {
"type": "string"
}
},
"fps": {
"type": "object",
"additionalProperties": {
"type": "object",
"properties": {
"fp2": {
"type": "string"
},
"none2": {
"type": "string"
},
"manifest": {
"type": "string"
},
"paths": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"packages": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"required": [
"repository",
"number",
"head",
"modules"
]
}
},
"fpset": {
"type": "string"
}
},
"required": [
"group",
"base",
"heads",
"pulls"
],
"description": "the modules a group of open pull requests would change"
},
"description": "a group's candidate"
}
],
"description": "the candidates of open groups",
"history": 10
},
{
"name": "verdicts",
"template": "state",
"key-forms": [
{
"key": "<digest>",
"value": {
"type": "object",
"properties": {
"v": {
"type": "integer",
"description": "the layout version"
},
"module": {
"type": "string"
},
"state": {
"type": "string"
},
"problems": {
"type": "array",
"items": {
"type": "string"
}
},
"unknown": {
"type": "array",
"items": {
"type": "string"
}
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"judge": {
"type": "string"
},
"at": {
"type": "string",
"description": "when (RFC 3339 time)"
}
},
"required": [
"module",
"state"
],
"description": "a manifest's verdict, by the judge named"
},
"description": "a manifest's verdict by its digest"
}
],
"description": "the manifest verdicts",
"history": 5
},
{
"name": "predefined",
"template": "state",
"key-forms": [
{
"key": "list",
"value": {
"type": "object",
"properties": {
"v": {
"type": "integer",
"description": "the layout version"
},
"commit": {
"type": "string"
},
"at": {
"type": "string",
"description": "when (RFC 3339 time)"
},
"list": {
"description": "the foundation's predefined list as kept"
}
},
"required": [
"commit",
"list"
]
},
"description": "the one key"
}
],
"description": "the kept predefined list",
"history": 5
},
{
"name": "config-candidates",
"template": "state",
"key-forms": [
{
"key": "<pull>",
"value": {
"type": "object",
"properties": {
"v": {
"type": "integer",
"description": "the layout version"
},
"pull": {
"type": "string"
},
"head": {
"type": "string"
},
"declares": {
"type": "object",
"additionalProperties": {
"type": "object",
"additionalProperties": {
"type": "object",
"properties": {
"kind": {
"type": "string"
},
"default": {
"description": "the default"
},
"why": {
"type": "string"
},
"type": {
"type": "string"
},
"description": {
"type": "string"
},
"enum": {
"description": "the allowed values"
},
"minimum": {
"type": "number"
},
"maximum": {
"type": "number"
},
"pattern": {
"type": "string"
},
"trusted": {
"type": "boolean"
},
"predefined": {
"type": "string"
},
"required": {
"type": "boolean"
},
"runtime": {
"type": "boolean"
}
},
"required": [
"kind",
"default",
"why"
]
}
},
"description": "module to key to declaration"
},
"at": {
"type": "string",
"description": "when (RFC 3339 time)"
}
},
"required": [
"pull",
"head",
"declares"
]
},
"description": "the configuration a pull request declares"
}
],
"description": "the configuration declared by open pull requests",
"history": 5
},
{
"name": "packages",
"template": "state",
"key-forms": [
{
"key": "<module>",
"value": {
"type": "object",
"properties": {
"v": {
"type": "integer",
"description": "the layout version"
},
"module": {
"type": "string",
"description": "the Go module path"
},
"repository": {
"type": "string"
},
"dir": {
"type": "string"
},
"commit": {
"type": "string"
},
"requires": {
"type": "string",
"description": "digest of go.mod and go.sum"
},
"packages": {
"type": "array",
"items": {
"type": "object",
"properties": {
"package": {
"type": "string"
},
"digest": {
"type": "string"
}
},
"required": [
"package",
"digest"
]
}
},
"at": {
"type": "string",
"description": "when (RFC 3339 time)"
}
},
"required": [
"module",
"repository",
"commit",
"packages"
]
},
"description": "a mesh Go module as its latest trunk merge published it"
},
{
"key": "<package>.<series>",
"value": {
"type": "object",
"properties": {
"v": {
"type": "integer",
"description": "the layout version"
},
"name": {
"type": "string"
},
"package": {
"type": "string"
},
"series": {
"type": "string"
},
"seat": {
"type": "string"
},
"go-module": {
"type": "string"
},
"newest": {
"type": "object",
"properties": {
"version": {
"type": "string"
},
"commit": {
"type": "string"
},
"digest": {
"type": "string"
},
"fingerprint": {
"type": "string"
},
"contents": {
"type": "object",
"properties": {
"v": {
"type": "integer",
"description": "the layout version"
},
"module": {
"type": "string",
"description": "the Go module path"
},
"repository": {
"type": "string"
},
"dir": {
"type": "string"
},
"commit": {
"type": "string"
},
"requires": {
"type": "string",
"description": "digest of go.mod and go.sum"
},
"packages": {
"type": "array",
"items": {
"type": "object",
"properties": {
"package": {
"type": "string"
},
"digest": {
"type": "string"
}
},
"required": [
"package",
"digest"
]
}
},
"at": {
"type": "string",
"description": "when (RFC 3339 time)"
}
},
"required": [
"module",
"repository",
"commit",
"packages"
]
}
},
"required": [
"version"
]
},
"numbered": {
"type": "object",
"properties": {
"version": {
"type": "string"
},
"commit": {
"type": "string"
},
"digest": {
"type": "string"
},
"fingerprint": {
"type": "string"
},
"contents": {
"type": "object",
"properties": {
"v": {
"type": "integer",
"description": "the layout version"
},
"module": {
"type": "string",
"description": "the Go module path"
},
"repository": {
"type": "string"
},
"dir": {
"type": "string"
},
"commit": {
"type": "string"
},
"requires": {
"type": "string",
"description": "digest of go.mod and go.sum"
},
"packages": {
"type": "array",
"items": {
"type": "object",
"properties": {
"package": {
"type": "string"
},
"digest": {
"type": "string"
}
},
"required": [
"package",
"digest"
]
}
},
"at": {
"type": "string",
"description": "when (RFC 3339 time)"
}
},
"required": [
"module",
"repository",
"commit",
"packages"
]
}
},
"required": [
"version"
]
},
"at": {
"type": "string",
"description": "when (RFC 3339 time)"
}
},
"required": [
"name",
"series"
]
},
"description": "a published package series, numbered and newest"
}
],
"description": "the published packages",
"history": 5
}
]
}
@@ -3,7 +3,6 @@
"seat": "mesh-delivery-checker",
"scope": "mesh",
"grain": "whole",
"domain": "Delivery",
"decision": "novox/hq ADR 0547",
"verbs": [
{
@@ -242,5 +241,395 @@
"subject": "mesh.stream.<holder>.event.preview.written",
"family": "checks"
}
],
"states": [
{
"name": "verdicts",
"template": "state",
"key-forms": [
{
"key": "<group>.<heads>",
"value": {
"type": "object",
"properties": {
"v": {
"type": "integer",
"description": "the layout version"
},
"group": {
"type": "string"
},
"heads": {
"type": "string",
"description": "12 hex digits"
},
"trunk": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "repository to the trunk head merged onto"
},
"state": {
"type": "string",
"description": "running, pass or fail"
},
"failed": {
"type": "object",
"properties": {
"test": {
"type": "string"
},
"machine": {
"type": "string"
},
"words": {
"type": "string"
}
}
},
"failures": {
"type": "array",
"items": {
"type": "object",
"properties": {
"test": {
"type": "string"
},
"machine": {
"type": "string"
},
"words": {
"type": "string"
}
}
}
},
"levels": {
"type": "object",
"additionalProperties": {
"type": "object",
"properties": {
"run": {
"type": "integer"
},
"kept": {
"type": "integer"
},
"skipped": {
"type": "integer"
}
},
"required": [
"run",
"kept"
]
},
"description": "by level, unit or integration"
},
"took": {
"type": "object",
"properties": {
"queue": {
"type": "integer"
},
"clone": {
"type": "integer"
},
"unit": {
"type": "integer"
},
"lint": {
"type": "integer"
},
"integration-setup": {
"type": "integer"
},
"integration-run": {
"type": "integer"
},
"composition": {
"type": "integer"
}
},
"description": "milliseconds"
},
"machines": {
"type": "array",
"items": {
"type": "string"
}
},
"sdk": {
"type": "string"
},
"composition": {
"type": "object",
"properties": {
"state": {
"type": "string",
"description": "not-run, pass or fail"
},
"words": {
"type": "string"
},
"sdk": {
"type": "string"
},
"machines": {
"type": "array",
"items": {
"type": "string"
}
},
"fpset": {
"type": "string"
}
},
"required": [
"state"
]
},
"over-bound": {
"type": "array",
"items": {
"type": "string"
}
},
"beside": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"carried-from": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"series": {
"type": "array",
"items": {
"type": "object",
"properties": {
"module": {
"type": "string"
},
"artifact": {
"type": "string"
},
"from": {
"type": "string"
},
"to": {
"type": "string"
}
},
"required": [
"module",
"artifact",
"from",
"to"
]
}
}
},
"required": [
"group",
"heads",
"state"
],
"description": "one check of a group at one set of heads"
},
"description": "one check of a group; the group is an escaped branch name, heads 12 hex digits"
}
],
"description": "the checker's verdict of each group at each set of heads",
"history": 5
},
{
"name": "kept",
"template": "state",
"key-forms": [
{
"key": "<level>.<digest>",
"value": {
"type": "object",
"properties": {
"v": {
"type": "integer",
"description": "the layout version"
},
"state": {
"type": "string",
"description": "pass: a failure is never kept"
},
"repository": {
"type": "string"
},
"package": {
"type": "string"
},
"level": {
"type": "string"
},
"tests": {
"type": "integer"
},
"took": {
"type": "integer"
},
"toolchain": {
"type": "string"
},
"at": {
"type": "string",
"description": "when (RFC 3339 time)"
}
},
"required": [
"state",
"repository",
"package",
"level"
],
"description": "one passing level of one package, kept so the next check does not run it again"
},
"description": "a passing level of one package by its content digest"
}
],
"description": "the kept passing levels",
"history": 1
},
{
"name": "owed",
"template": "state",
"key-forms": [
{
"key": "<repository>.<number>.<head>.<act>",
"value": {
"type": "object",
"properties": {
"v": {
"type": "integer",
"description": "the layout version"
},
"act": {
"type": "string",
"description": "status=<context>, view, note or comment.<seq>"
},
"context": {
"type": "string"
},
"target": {
"type": "string"
},
"state": {
"type": "string"
},
"text": {
"type": "string"
},
"ref": {
"type": "string"
}
},
"required": [
"act"
],
"description": "one act owed to the forge, written by its owner and done by the forge bridge"
},
"description": "the status mesh/check the checker owes the forge for a head (its act is status=mesh/check)"
}
],
"description": "the status the checker owes the forge",
"history": 5
},
{
"name": "previews",
"template": "state",
"key-forms": [
{
"key": "<repository>.<head>.<trunk>",
"value": {
"type": "object",
"properties": {
"v": {
"type": "integer",
"description": "the layout version"
},
"repository": {
"type": "string"
},
"head": {
"type": "string"
},
"trunk": {
"type": "string"
},
"merge": {
"type": "string",
"description": "the merge commit"
},
"conflicts": {
"type": "array",
"items": {
"type": "string"
},
"description": "files in conflict"
},
"modules": {
"type": "object",
"additionalProperties": {
"type": "object",
"properties": {
"tree": {
"type": "string"
},
"manifest": {
"type": "string",
"description": "manifest digest"
},
"locks": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"paths": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"packages": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"tree",
"manifest"
]
},
"description": "by directory"
}
},
"required": [
"repository",
"head",
"trunk"
],
"description": "the merge of a head onto a trunk commit, read before a pull request is checked"
},
"description": "the merge of a head onto a trunk commit"
}
],
"description": "the previews of a head merged onto a trunk",
"history": 5
}
]
}