CT8: the seat mesh-delivery-checker: the events owed per repository and number, and checked

Builds: design 47 G §162, §164, §260 (owed on mesh.seat.mesh-delivery-checker.event.owed.<repository>.<number>, kept 7 days and 64 MiB per §396; checked).

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
This commit is contained in:
2026-11-11 10:47:35 +01:00
parent 71afa10f4d
commit 15c065d2bb
2 changed files with 206 additions and 2 deletions
@@ -40,5 +40,52 @@
"of": "holder-event:preview.written",
"subject": "mesh.stream.mesh-delivery-checker.event.preview.written",
"given": {}
},
{
"name": "checked is said",
"of": "event:checked",
"subject": "mesh.seat.mesh-delivery-checker.event.checked",
"given": {
"group": "feat/47-G",
"heads": "0123456789ab",
"source": 3611,
"catalog": 3612,
"verdict": "pass",
"entries": [
{
"module": "mesh-delivery-gate",
"fp": "src2:1480985e"
}
],
"at": "2026-11-09T20:30:00Z"
}
},
{
"name": "checked is said when it could not run",
"of": "event:checked",
"subject": "mesh.seat.mesh-delivery-checker.event.checked",
"given": {
"group": "feat/47-G",
"heads": "0123456789ab",
"verdict": "could not run",
"words": "the seat git's holder did not answer"
}
},
{
"name": "owed is said",
"of": "event:owed",
"subject": "mesh.seat.mesh-delivery-checker.event.owed.novox/mesh-sdk.178",
"given": {
"id": "status.novox/mesh-sdk#178.aaaaaaaaaaaa.mesh/check",
"act": "status",
"repository": "novox/mesh-sdk",
"number": 178,
"head": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"context": "mesh/check",
"state": "success",
"description": "passed",
"target": "https://forge.test/x",
"said": "2026-11-09T20:30:00Z"
}
}
]
+159 -2
View File
@@ -176,7 +176,79 @@
}
}
],
"description": "The merge check's tries: start one, read one, end one. The checker's own events stay under its own subjects (ADR 0620 §2).",
"description": "The merge check's tries: start one, read one, end one. The seat says each check's end as checked and what the checker owes the forge as owed; the checker's other events stay under its own subjects (ADR 0620 \u00a72).",
"family": {
"name": "mesh-delivery-checker.events",
"max-age-days": 7
},
"events": [
{
"name": "checked",
"body": {
"type": "object",
"description": "a candidate checked: its entries judged at the group's heads (design 47 *What each step says*)",
"properties": {
"group": {
"type": "string",
"description": "the group, its branch"
},
"heads": {
"type": "string",
"description": "the heads checked, 12 hex digits, as the candidate's revisions are keyed"
},
"source": {
"type": "integer",
"description": "the source revision the heads are merged onto"
},
"catalog": {
"type": "integer",
"description": "the candidate's catalog graph revision judged, by its number on the seat mesh-catalog"
},
"verdict": {
"type": "string",
"enum": [
"pass",
"fail",
"could not run"
],
"description": "pass, fail, or could not run when a part the check needs did not answer"
},
"words": {
"type": "string",
"description": "what failed first, or the part not heard"
},
"entries": {
"type": "array",
"items": {
"$ref": "#/defs/CheckedEntry"
},
"description": "the entries checked"
},
"at": {
"type": "string",
"format": "date-time",
"description": "when"
}
},
"required": [
"group",
"heads",
"verdict"
]
}
},
{
"name": "owed",
"subject": "owed.<repository>.<number>",
"body": {
"$ref": "#/defs/Owed"
},
"keep": {
"max-age-days": 7,
"max-mib": 64
}
}
],
"holder-events": [
{
"name": "verdict",
@@ -746,5 +818,90 @@
"description": "the previews of a head merged onto a trunk",
"history": 5
}
]
],
"defs": {
"Owed": {
"type": "object",
"description": "the status the checker owes the forge for a head, said under its id and safe to repeat (a status replaces what stands); the forge bridge performs it through the seat git's verb status (design 47 *What the gate owes the forge*)",
"properties": {
"id": {
"type": "string",
"description": "the act's id, the same each time it is said again"
},
"act": {
"type": "string",
"enum": [
"status"
],
"description": "the act: always status"
},
"repository": {
"type": "string",
"description": "the repository, <owner>/<name>",
"minLength": 1
},
"number": {
"type": "integer",
"description": "the pull request's number"
},
"head": {
"type": "string",
"description": "the pull request's head the status is on",
"pattern": "^[0-9a-f]{40}$"
},
"context": {
"type": "string",
"description": "its context, mesh/check"
},
"state": {
"type": "string",
"description": "pending, success, failure or error"
},
"description": {
"type": "string",
"description": "what it says"
},
"target": {
"type": "string",
"description": "the page it links to"
},
"said": {
"type": "string",
"format": "date-time",
"description": "when the checker first said it"
}
},
"required": [
"id",
"act",
"repository",
"number",
"head",
"context",
"state"
]
},
"CheckedEntry": {
"type": "object",
"description": "one entry of the candidate checked: a module at its fingerprint",
"properties": {
"module": {
"type": "string",
"description": "the module"
},
"fp": {
"type": "string",
"description": "the entry's fingerprint"
},
"node": {
"type": "string",
"description": "the node it was composed for, when the check composed it on one"
}
},
"required": [
"module",
"fp"
]
}
}
}