CT4: the seat mesh-wants: input, version-delivered, the accepted step, the want's version and parts, the step place

Builds: design 47 G §308, §22, §24, §116, §338 (accepted kind step from the runner
alone; step-ended.<node>), §331 (step-ended 32 MiB, version-delivered 64 MiB, 90
days), §376, §379 (version-delivered; the want names the released version and each
part's digest), §354 (verb input, callers the holders of the build seats; state
inputs), §184 (assignment revision per watched branch), §398 (the step place
declared here), §400 (no verb optional).

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
This commit is contained in:
2026-11-11 10:45:40 +01:00
parent 17517b9f4e
commit cbaa9a35e9
4 changed files with 1388 additions and 0 deletions
@@ -0,0 +1,170 @@
[
{
"name": "an assignment graph revision kept",
"of": "event:assignment-revision",
"subject": "mesh.seat.mesh-wants.event.assignment-revision",
"given": {
"v": 1,
"revision": 40,
"kind": "trunk",
"catalogs": [
{
"branch": "main",
"revision": 12,
"source": 3589
}
],
"cause": "placement-changed",
"at": "2026-11-09T19:00:00Z"
}
},
{
"name": "a difference worked out",
"of": "event:difference",
"subject": "mesh.seat.mesh-wants.event.difference",
"given": {
"v": 1,
"from": 40,
"to": 41,
"source": 3589,
"changes": 1,
"nodes": [
"n1"
]
}
},
{
"name": "an entry wanted from a trunk revision",
"of": "event:wanted",
"subject": "mesh.seat.mesh-wants.event.wanted",
"given": {
"v": 1,
"node": "n1",
"module": "xclip",
"fp": "src2:b427bdde1f100e2f52490cfa9df0c5112dd3700226b4892349f0c14a15a4af56",
"revision": 40,
"source": 3589,
"at": "2026-11-09T19:00:00Z"
}
},
{
"name": "a composing wait held with its bound",
"of": "event:wait-held",
"subject": "mesh.seat.mesh-wants.event.wait-held",
"given": {
"step": "compose",
"part": "node-engine",
"version": "src2:7dd0db8e98224f46121a5ae05c0b9c5a430eff531a5120aa40b1a59237853a3f",
"node": "n1",
"module": "xclip",
"fp": "src2:b427bdde1f100e2f52490cfa9df0c5112dd3700226b4892349f0c14a15a4af56",
"since": "2026-11-09T19:00:00Z",
"bound": "30m"
}
},
{
"name": "a wait ended, released by hand",
"of": "event:wait-ended",
"subject": "mesh.seat.mesh-wants.event.wait-ended",
"given": {
"step": "compose",
"part": "node-engine",
"version": "src2:7dd0db8e98224f46121a5ae05c0b9c5a430eff531a5120aa40b1a59237853a3f",
"node": "n1",
"module": "xclip",
"fp": "src2:b427bdde1f100e2f52490cfa9df0c5112dd3700226b4892349f0c14a15a4af56",
"since": "2026-11-09T19:00:00Z",
"bound": "30m",
"how": "released",
"by": "lead@shanks: the node is away"
}
},
{
"name": "the store past 80 % of its cap",
"of": "event:filling",
"subject": "mesh.seat.mesh-wants.event.filling",
"given": {
"store": "assignment-revisions",
"bytes": 450000000,
"cap": 536870912,
"at": "2026-11-09T19:00:00Z"
}
},
{
"name": "the store full, keeping its last revision",
"of": "event:full",
"subject": "mesh.seat.mesh-wants.event.full",
"given": {
"store": "assignment-revisions",
"bytes": 536870912,
"cap": 536870912,
"at": "2026-11-09T19:00:00Z",
"refused": "the next revision; no new want is written"
}
},
{
"name": "the store back below its cap",
"of": "event:room",
"subject": "mesh.seat.mesh-wants.event.room",
"given": {
"store": "assignment-revisions",
"bytes": 300000000,
"cap": 536870912,
"at": "2026-11-09T19:00:00Z"
}
},
{
"name": "the composition step ended passed on the assigner's node, a node asleep warned",
"of": "event:step-ended",
"subject": "mesh.seat.mesh-wants.event.step-ended.novox",
"given": {
"v": 1,
"id": "m2kx9a1b3c4d6a",
"pipeline": "main.12.nats",
"step": "composition",
"module": "nats",
"commit": "0123456789abcdef0123456789abcdef01234567",
"fingerprint": "fp-0123",
"node": "novox",
"outcome": "passed",
"warnings": [
"g14 asleep: composed from its last capabilities"
],
"started": "2026-11-10T10:00:00Z",
"ended": "2026-11-10T10:01:00Z"
}
},
{
"name": "the composition step failed, two modules owning one path",
"of": "event:step-ended",
"subject": "mesh.seat.mesh-wants.event.step-ended.novox",
"given": {
"v": 1,
"id": "m2kx9a1b3c4d6b",
"pipeline": "main.12.nats",
"step": "composition",
"module": "nats",
"commit": "0123456789abcdef0123456789abcdef01234567",
"fingerprint": "fp-0123",
"node": "novox",
"outcome": "failed",
"said": "nats and xclip both own /etc/nats.conf on ace"
}
},
{
"name": "a version delivered with the machines away",
"of": "event:version-delivered",
"subject": "mesh.seat.mesh-wants.event.version-delivered",
"given": {
"v": 1,
"module": "mesh-sdk",
"version": "0.1.15",
"parts": {
"mesh-sdk:go": "sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
},
"away": [
"laptop"
]
}
}
]
@@ -43,5 +43,100 @@
"heads": "0123456789ab",
"state": "pass"
}
},
{
"name": "a trunk assignment graph revision naming its inputs",
"of": "state:assignment-revisions/trunk.<revision>",
"given": {
"v": 1,
"revision": 40,
"kind": "trunk",
"catalogs": [
{
"branch": "main",
"revision": 12,
"source": 3589
}
],
"placements": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"capabilities": [
{
"node": "n1",
"digest": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
}
],
"cause": "catalog-revision",
"at": "2026-11-09T19:00:00Z",
"entries": [
{
"node": "n1",
"module": "xclip",
"digest": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
}
]
}
},
{
"name": "a candidate's assignment graph revision",
"of": "state:assignment-revisions/candidate.<group>.<heads>",
"given": {
"v": 1,
"revision": 41,
"kind": "candidate",
"catalogs": [
{
"branch": "main",
"revision": 13,
"source": 3589
}
],
"placements": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"capabilities": [
{
"node": "n1",
"digest": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
}
],
"cause": "catalog-revision",
"at": "2026-11-09T19:00:00Z",
"entries": [
{
"node": "n1",
"module": "xclip",
"digest": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
}
],
"group": "feat/47-G",
"heads": "0123456789ab"
}
},
{
"name": "an assignment entry with an acting edge and a provisioning edge",
"of": "state:assignment-revisions/entry.<digest>",
"given": {
"v": 1,
"node": "n1",
"module": "xclip",
"branch": "main",
"fp": "src2:b427bdde1f100e2f52490cfa9df0c5112dd3700226b4892349f0c14a15a4af56",
"catalog": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"edges": [
{
"kind": "acting",
"node": "n1",
"module": "node-engine",
"fp": "src2:7dd0db8e98224f46121a5ae05c0b9c5a430eff531a5120aa40b1a59237853a3f",
"seat": "node-engine",
"step": "compose",
"bound": "30m"
},
{
"kind": "provisioning",
"node": "n2",
"module": "postgres",
"provision": "database"
}
]
}
}
]
@@ -0,0 +1,173 @@
[
{
"name": "revision asks the trunk's newest",
"of": "verb:revision.input",
"given": {}
},
{
"name": "revision asks a candidate's",
"of": "verb:revision.input",
"given": {
"group": "feat/47-G",
"heads": "0123456789ab"
}
},
{
"name": "revision answers one revision naming its inputs",
"of": "verb:revision.answer",
"given": {
"revision": {
"v": 1,
"revision": 40,
"kind": "trunk",
"catalogs": [
{
"branch": "main",
"revision": 12,
"source": 3589
}
],
"placements": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"capabilities": [
{
"node": "n1",
"digest": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
}
],
"cause": "catalog-revision",
"at": "2026-11-09T19:00:00Z",
"entries": [
{
"node": "n1",
"module": "xclip",
"digest": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
}
]
}
}
},
{
"name": "entry asks by node and module in a revision",
"of": "verb:entry.input",
"given": {
"revision": 40,
"node": "n1",
"module": "xclip"
}
},
{
"name": "entry answers the entry with its edges",
"of": "verb:entry.answer",
"given": {
"digest": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"entry": {
"v": 1,
"node": "n1",
"module": "xclip",
"branch": "main",
"fp": "src2:b427bdde1f100e2f52490cfa9df0c5112dd3700226b4892349f0c14a15a4af56",
"catalog": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"edges": [
{
"kind": "acting",
"node": "n1",
"module": "node-engine",
"fp": "src2:7dd0db8e98224f46121a5ae05c0b9c5a430eff531a5120aa40b1a59237853a3f",
"seat": "node-engine",
"step": "compose",
"bound": "30m"
},
{
"kind": "provisioning",
"node": "n2",
"module": "postgres",
"provision": "database"
}
]
}
}
},
{
"name": "difference asks a candidate's against trunk",
"of": "verb:difference.input",
"given": {
"group": "feat/47-G",
"heads": "0123456789ab"
}
},
{
"name": "difference answers the changes and their order",
"of": "verb:difference.answer",
"given": {
"from": 40,
"to": 41,
"group": "feat/47-G",
"heads": "0123456789ab",
"changes": [
{
"node": "n1",
"module": "xclip",
"from": "src2:b427bdde1f100e2f52490cfa9df0c5112dd3700226b4892349f0c14a15a4af56",
"to": "src2:7dd0db8e98224f46121a5ae05c0b9c5a430eff531a5120aa40b1a59237853a3f"
}
],
"nodes": [
"n1"
],
"tiers": [
[
{
"node": "n1",
"module": "xclip",
"digest": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
}
]
]
}
},
{
"name": "difference refuses a changed fingerprint with no difference, by name",
"of": "verb:difference.answer",
"given": {
"from": 40,
"to": 41,
"changes": [],
"refused": [
{
"module": "xclip",
"why": "its fingerprint changed and its difference is empty"
}
]
}
},
{
"name": "a composition step asked by the runner",
"of": "accept:step",
"subject": "mesh.seat.mesh-wants.accept.step",
"given": {
"pipeline": "main.12.nats",
"step": "composition",
"module": "nats",
"branch": "main",
"commit": "0123456789abcdef0123456789abcdef01234567",
"revision": 12,
"source": 3589,
"fingerprint": "fp-0123"
}
},
{
"name": "input asks a composition step's input by digest",
"of": "verb:input.input",
"given": {
"digest": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
}
},
{
"name": "input answers the exact bytes",
"of": "verb:input.answer",
"given": {
"digest": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
"input": "eyJ2IjoxfQ=="
}
}
]
+950
View File
@@ -51,6 +51,160 @@
"type": "object",
"description": "what a bus upgrade would do, read only"
}
},
{
"name": "revision",
"description": "The assignment half of the revision view (ADR 0656 \u00a76): one assignment graph revision, named by its own number and naming its inputs, with its entries' digests; the trunk's newest when none is named, or a candidate's for its group and heads. Reads only.",
"input": {
"type": "object",
"properties": {
"revision": {
"type": "integer",
"description": "a kept revision; absent: the newest of trunk, or of the candidate named"
},
"group": {
"type": "string",
"description": "a candidate's group"
},
"heads": {
"type": "string",
"description": "a candidate's heads"
}
}
},
"answer": {
"type": "object",
"properties": {
"revision": {
"$ref": "#/defs/AssignmentRevision"
}
},
"required": [
"revision"
]
},
"class": "read"
},
{
"name": "entry",
"description": "One entry of an assignment graph revision whole, by its digest or by its node and module in a revision, with the seat rule that gave each edge. Reads only.",
"input": {
"type": "object",
"properties": {
"revision": {
"type": "integer",
"description": "a kept revision; absent: the newest of trunk, or of the candidate named"
},
"group": {
"type": "string",
"description": "a candidate's group"
},
"heads": {
"type": "string",
"description": "a candidate's heads"
},
"digest": {
"type": "string"
},
"node": {
"type": "string"
},
"module": {
"type": "string"
}
}
},
"answer": {
"type": "object",
"properties": {
"digest": {
"type": "string"
},
"entry": {
"$ref": "#/defs/AssignmentEntry"
}
},
"required": [
"digest",
"entry"
]
},
"class": "read"
},
{
"name": "difference",
"description": "A change's graph difference, which is its delivery: two kept revisions compared, or a candidate's newest against trunk's newest, with the changed module versions, the touched nodes and the order as tiers. Reads only.",
"input": {
"type": "object",
"properties": {
"from": {
"type": "integer"
},
"to": {
"type": "integer"
},
"group": {
"type": "string"
},
"heads": {
"type": "string"
}
}
},
"answer": {
"$ref": "#/defs/Difference"
},
"class": "read"
},
{
"name": "input",
"class": "read",
"callers": [
"seat:node-build-go",
"seat:node-build-node",
"seat:node-build-image"
],
"description": "A step's input by its digest, as the assigner keeps it for the composition step it asked a build seat to run (design 47 G section 354).",
"input": {
"type": "object",
"properties": {
"digest": {
"type": "string",
"description": "the input's sha256"
}
},
"required": [
"digest"
]
},
"answer": {
"type": "object",
"properties": {
"digest": {
"type": "string",
"description": "the input's sha256"
},
"input": {
"type": "string",
"description": "the input's exact bytes, base64"
}
},
"required": [
"digest",
"input"
]
}
}
],
"accepts": [
{
"name": "step",
"body": {
"$ref": "#/defs/StepRun"
},
"callers": [
"seat:mesh-pipeline-runner"
]
}
],
"events": [
@@ -59,6 +213,220 @@
"body": {
"type": "object"
}
},
{
"name": "assignment-revision",
"body": {
"type": "object",
"description": "an assignment graph revision kept",
"properties": {
"v": {
"type": "integer"
},
"revision": {
"type": "integer"
},
"kind": {
"type": "string"
},
"cause": {
"type": "string"
},
"group": {
"type": "string"
},
"heads": {
"type": "string"
},
"catalogs": {
"type": "array",
"items": {
"$ref": "#/defs/CatalogOf"
},
"minItems": 1,
"description": "the catalog graph revision of each watched branch a placement names, which the entries come from"
},
"at": {
"type": "string",
"format": "date-time"
}
},
"required": [
"v",
"revision",
"kind",
"catalogs"
]
}
},
{
"name": "difference",
"body": {
"type": "object",
"description": "a difference worked out between two revisions",
"properties": {
"v": {
"type": "integer"
},
"from": {
"type": "integer"
},
"to": {
"type": "integer"
},
"source": {
"type": "integer"
},
"group": {
"type": "string"
},
"heads": {
"type": "string"
},
"changes": {
"type": "integer",
"description": "how many module versions it changes"
},
"nodes": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"v",
"from",
"to"
]
}
},
{
"name": "wanted",
"body": {
"type": "object",
"description": "an entry written as a want, from a trunk revision only",
"properties": {
"v": {
"type": "integer"
},
"node": {
"type": "string"
},
"module": {
"type": "string"
},
"fp": {
"type": "string"
},
"revision": {
"type": "integer"
},
"source": {
"type": "integer"
},
"at": {
"type": "string",
"format": "date-time"
}
},
"required": [
"v",
"node",
"module",
"fp",
"revision"
]
}
},
{
"name": "wait-held",
"body": {
"$ref": "#/defs/Wait"
}
},
{
"name": "wait-ended",
"body": {
"$ref": "#/defs/Wait"
}
},
{
"name": "filling",
"body": {
"$ref": "#/defs/Fill"
}
},
{
"name": "full",
"body": {
"$ref": "#/defs/Fill"
}
},
{
"name": "room",
"body": {
"$ref": "#/defs/Fill"
}
},
{
"name": "step-ended",
"subject": "step-ended.<node>",
"body": {
"$ref": "#/defs/StepEnded"
},
"keep": {
"max-age-days": 90,
"max-mib": 32
}
},
{
"name": "version-delivered",
"keep": {
"max-age-days": 90,
"max-mib": 64
},
"body": {
"type": "object",
"description": "a version delivered to every present machine that places it, and healthy (design 47 G section 376)",
"properties": {
"v": {
"type": "integer"
},
"module": {
"type": "string",
"description": "the module"
},
"version": {
"type": "string",
"description": "MAJOR.MINOR.PATCH"
},
"parts": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "the digest of each of its parts, by artifact reference"
},
"away": {
"type": "array",
"items": {
"type": "string"
},
"description": "the machines away when it was said"
},
"at": {
"type": "string",
"format": "date-time"
}
},
"required": [
"v",
"module",
"version",
"parts"
]
}
}
],
"family": {
@@ -120,6 +488,17 @@
},
"self": {
"type": "boolean"
},
"version": {
"type": "string",
"description": "the module's released version, for people; none for a build of another watched branch (design 47 G section 379)"
},
"parts": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "the digest of each of the module's parts, by artifact reference; the node-engine fetches and checks each part by it (design 47 G section 379)"
}
}
},
@@ -279,6 +658,577 @@
],
"history": 5,
"description": "composition verdicts of a group's check; the checker reads them"
},
{
"name": "assignment-revisions",
"template": "objects",
"description": "the assignment graph revisions, each a list of its entries' digests naming its inputs, and each entry once by its digest; a revision is kept while a delivery record pins it or it is current (design 47)",
"key-forms": [
{
"key": "trunk.<revision>",
"value": {
"$ref": "#/defs/AssignmentRevision"
},
"description": "a trunk revision"
},
{
"key": "candidate.<group>.<heads>",
"value": {
"$ref": "#/defs/AssignmentRevision"
},
"description": "a candidate's newest revision, dropped on heads-replaced"
},
{
"key": "entry.<digest>",
"value": {
"$ref": "#/defs/AssignmentEntry"
},
"description": "an entry, written once, removed when no kept revision lists it"
}
]
},
{
"name": "inputs",
"template": "state",
"history": 1,
"description": "a step's input, named by its write time and its sha256 (design 47 G section 354)",
"key-forms": [
{
"key": "<time>.<digest>",
"value": {
"type": "string",
"description": "the input's bytes, base64"
},
"description": "one input"
}
]
}
],
"defs": {
"Edge": {
"type": "object",
"description": "an edge from one module version on a node to another: provisioning, contribution, or an acting part's version that is to act on it in a step (ADR 0656)",
"properties": {
"kind": {
"type": "string",
"description": "provisioning, contribution or acting"
},
"node": {
"type": "string"
},
"module": {
"type": "string"
},
"fp": {
"type": "string",
"description": "the other end's fingerprint"
},
"provision": {
"type": "string",
"description": "for provisioning, the provision"
},
"seat": {
"type": "string",
"description": "for contribution, the seat it contributes to; for acting, the seat whose rule gave the edge"
},
"step": {
"type": "string",
"description": "for acting, the step: take-in, validate, check, build, compose, grant or place"
},
"bound": {
"type": "string",
"description": "for acting, how long the new version may take before it acts"
}
},
"required": [
"kind",
"node",
"module"
]
},
"AssignmentEntry": {
"type": "object",
"description": "one module version on a node of an assignment graph revision, stored once by its digest (ADR 0656)",
"properties": {
"v": {
"type": "integer",
"description": "the layout version"
},
"node": {
"type": "string"
},
"module": {
"type": "string"
},
"branch": {
"type": "string",
"description": "the watched branch its placement names, whose catalog graph the entry comes from (design 47 lines 523-525)"
},
"fp": {
"type": "string",
"description": "the fingerprint it is to run"
},
"catalog": {
"type": "string",
"description": "the digest of its catalog graph entry"
},
"edges": {
"type": "array",
"items": {
"$ref": "#/defs/Edge"
}
}
},
"required": [
"node",
"module",
"branch",
"fp",
"catalog"
]
},
"NodeEntryRef": {
"type": "object",
"properties": {
"node": {
"type": "string"
},
"module": {
"type": "string"
},
"digest": {
"type": "string",
"description": "the entry's digest, its object's name"
}
},
"required": [
"node",
"module",
"digest"
]
},
"AssignmentRevision": {
"type": "object",
"description": "an assignment graph revision: the list of its entries' digests and the inputs it was computed from, so it can be computed again and compared",
"properties": {
"v": {
"type": "integer",
"description": "the layout version"
},
"revision": {
"type": "integer",
"description": "counted by its holder"
},
"kind": {
"type": "string",
"description": "trunk or candidate"
},
"group": {
"type": "string"
},
"heads": {
"type": "string"
},
"catalogs": {
"type": "array",
"items": {
"$ref": "#/defs/CatalogOf"
},
"minItems": 1,
"description": "the catalog graph revision of each watched branch a placement names, which the entries come from"
},
"placements": {
"type": "string",
"description": "the digest of the placements it was computed from"
},
"capabilities": {
"type": "array",
"items": {
"type": "object",
"properties": {
"node": {
"type": "string"
},
"digest": {
"type": "string",
"description": "the digest of the node's capability reading"
}
},
"required": [
"node",
"digest"
]
}
},
"cause": {
"type": "string",
"description": "what made it: catalog-revision, placement-changed or capabilities-changed"
},
"at": {
"type": "string",
"format": "date-time"
},
"entries": {
"type": "array",
"items": {
"$ref": "#/defs/NodeEntryRef"
}
}
},
"required": [
"revision",
"kind",
"catalogs",
"placements",
"entries"
]
},
"Change": {
"type": "object",
"description": "one module on a node whose version differs between two revisions",
"properties": {
"node": {
"type": "string"
},
"module": {
"type": "string"
},
"from": {
"type": "string",
"description": "the fingerprint before; absent when it is new there"
},
"to": {
"type": "string",
"description": "the fingerprint after; absent when it goes"
},
"edges": {
"type": "array",
"items": {
"$ref": "#/defs/Edge"
},
"description": "the edges that moved"
}
},
"required": [
"node",
"module"
]
},
"Difference": {
"type": "object",
"description": "two assignment graph revisions compared: a change's delivery, with its order read off the edges and no plan stored (ADR 0656)",
"properties": {
"from": {
"type": "integer",
"description": "the revision compared from"
},
"to": {
"type": "integer",
"description": "the revision compared to"
},
"group": {
"type": "string"
},
"heads": {
"type": "string"
},
"changes": {
"type": "array",
"items": {
"$ref": "#/defs/Change"
}
},
"nodes": {
"type": "array",
"items": {
"type": "string"
},
"description": "the nodes it touches"
},
"tiers": {
"type": "array",
"items": {
"type": "array",
"items": {
"$ref": "#/defs/NodeEntryRef"
}
},
"description": "the order as a view: each tier the changes whose acting parts acted in the tiers before it (ADR 0603 \u00a76 as ADR 0656 changes it)"
},
"refused": {
"type": "array",
"items": {
"type": "object",
"properties": {
"module": {
"type": "string"
},
"why": {
"type": "string"
}
},
"required": [
"module",
"why"
]
},
"description": "a module whose fingerprint changed while the difference is empty, refused by name"
}
},
"required": [
"from",
"to",
"changes"
]
},
"Wait": {
"type": "object",
"description": "a step's wait the assigner holds: placing, wanting or composing until an acting part's new version runs",
"properties": {
"step": {
"type": "string"
},
"part": {
"type": "string",
"description": "the acting part waited for"
},
"version": {
"type": "string",
"description": "its new version's fingerprint"
},
"node": {
"type": "string"
},
"module": {
"type": "string",
"description": "the entry that waits"
},
"fp": {
"type": "string"
},
"since": {
"type": "string",
"format": "date-time"
},
"bound": {
"type": "string",
"description": "a duration such as 30m"
},
"how": {
"type": "string",
"description": "on wait-ended: ran or released"
},
"by": {
"type": "string",
"description": "on a release, who released it and why"
}
},
"required": [
"step",
"part",
"version",
"module",
"since"
]
},
"Fill": {
"type": "object",
"description": "a store's fill against its cap",
"properties": {
"store": {
"type": "string",
"description": "the kept data, by its name in the holder's manifest"
},
"bytes": {
"type": "integer"
},
"cap": {
"type": "integer",
"description": "bytes"
},
"refused": {
"type": "string",
"description": "what full refuses"
},
"at": {
"type": "string",
"format": "date-time"
}
},
"required": [
"store",
"bytes",
"cap"
]
},
"StepRun": {
"type": "object",
"description": "the composition step of one module's pipeline (design 47 *Pipeline steps and the policy*, *The pipeline makes the check*): the assigner composes each machine's declaration at the change's heads with the composer built from them, in the build seat's sandbox, and refuses a change in which two modules own one path",
"properties": {
"pipeline": {
"type": "string",
"description": "the runner's pipeline key, <branch>.<revision>.<module>, a branch escaped as a key's name is"
},
"step": {
"type": "string",
"enum": [
"composition"
]
},
"module": {
"type": "string"
},
"branch": {
"type": "string",
"description": "the watched branch, or the branch of a run on request"
},
"commit": {
"type": "string",
"description": "the commit the step runs at"
},
"revision": {
"type": "integer",
"description": "the catalog graph revision of the branch the pipeline runs for"
},
"source": {
"type": "integer",
"description": "the source revision of the watched branch; absent for a run on request"
},
"fingerprint": {
"type": "string",
"description": "the module's build-input fingerprint at the commit"
},
"run": {
"type": "string",
"description": "the run on request's id: its composition writes no want (ADR 0666 section 18)"
},
"rerun": {
"type": "boolean",
"description": "the step is asked again by the runner's rerun"
},
"by": {
"type": "string",
"description": "for a rerun, the caller the runtime proved"
}
},
"required": [
"pipeline",
"step",
"module",
"branch",
"commit",
"fingerprint"
]
},
"StepEnded": {
"type": "object",
"description": "the composition step's end, said by the assigner on the node it runs on (ADR 0666 sections 7, 21): the runner takes it only from that holder's account, naming the ask, the commit and the fingerprint it was asked at",
"properties": {
"v": {
"type": "integer",
"description": "the layout version"
},
"id": {
"type": "string",
"description": "the ask's id"
},
"pipeline": {
"type": "string"
},
"step": {
"type": "string",
"enum": [
"composition"
]
},
"module": {
"type": "string"
},
"commit": {
"type": "string"
},
"fingerprint": {
"type": "string"
},
"node": {
"type": "string",
"description": "the node the assigner ran it on, as in the subject"
},
"outcome": {
"type": "string",
"enum": [
"passed",
"failed",
"nothing to run",
"could not run"
],
"description": "never passed for a step that composed nothing"
},
"said": {
"type": "string",
"description": "why it failed or could not run: the two modules owning one path, the part not heard"
},
"warnings": {
"type": "array",
"items": {
"type": "string"
},
"description": "a node asleep, passed with a warning (ADR 0593 section 9)"
},
"rerun": {
"type": "boolean"
},
"by": {
"type": "string",
"description": "for a rerun, the caller the runtime proved"
},
"started": {
"type": "string",
"format": "date-time"
},
"ended": {
"type": "string",
"format": "date-time"
}
},
"required": [
"id",
"pipeline",
"step",
"module",
"commit",
"fingerprint",
"node",
"outcome"
]
},
"CatalogOf": {
"type": "object",
"description": "one catalog graph revision of a watched branch the revision was computed from (design 47 lines 1416-1418)",
"properties": {
"branch": {
"type": "string",
"description": "the watched branch"
},
"revision": {
"type": "integer",
"description": "that branch's catalog graph revision"
},
"source": {
"type": "integer",
"description": "the source revision of that branch it carries"
}
},
"required": [
"branch",
"revision"
]
}
},
"acts": [
{
"step": "place",
"on": "every"
}
]
}