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:
@@ -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=="
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user