Builds: design 47 G §698 (§683, §422) Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
223 lines
5.3 KiB
JSON
223 lines
5.3 KiB
JSON
[
|
|
{
|
|
"name": "manifest-reads answers what the engine reads and when it stated it",
|
|
"of": "verb:manifest-reads.answer",
|
|
"given": {
|
|
"v": 1,
|
|
"node": "ace",
|
|
"manifest-reads": [
|
|
"form:seat-reference",
|
|
"word:series"
|
|
],
|
|
"stated-at": "2026-11-04T10:00:00Z"
|
|
}
|
|
},
|
|
{
|
|
"name": "manifest-reads of an engine built before it said them is the baseline",
|
|
"of": "verb:manifest-reads.answer",
|
|
"given": {
|
|
"v": 1,
|
|
"node": "g14",
|
|
"stated-at": "2026-11-04T10:05:00Z"
|
|
}
|
|
},
|
|
{
|
|
"name": "compose-candidate asks the candidate and, as a boolean, its composition input",
|
|
"of": "verb:compose-candidate.input",
|
|
"given": {
|
|
"candidate": "mesh-host.0123abcd",
|
|
"input": true
|
|
}
|
|
},
|
|
{
|
|
"name": "compose-candidate answers per module and the node's own",
|
|
"of": "verb:compose-candidate.answer",
|
|
"given": {
|
|
"v": 1,
|
|
"node": "ace",
|
|
"candidate": "mesh-host.0123abcd",
|
|
"verdict": "composed",
|
|
"modules": [
|
|
{
|
|
"module": "plex",
|
|
"fp": "fp-1",
|
|
"state": "composed",
|
|
"digest": "sha256:aa",
|
|
"changed": true
|
|
}
|
|
],
|
|
"own": {
|
|
"module": "node",
|
|
"state": "composed",
|
|
"digest": "sha256:bb"
|
|
},
|
|
"took": 1200
|
|
}
|
|
},
|
|
{
|
|
"name": "acts answers each act kept",
|
|
"of": "verb:acts.answer",
|
|
"given": {
|
|
"node": "ace",
|
|
"acts": [
|
|
{
|
|
"id": "hand-over-1",
|
|
"act": "hand-over",
|
|
"subject": "/srv/media",
|
|
"caller": "mesh-tools",
|
|
"at": "2026-11-04T09:00:00Z",
|
|
"state": "asked",
|
|
"ask": "hand-over-1",
|
|
"expires": "2026-11-05T09:00:00Z"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "seat-list answers what the engine holds and what it waits for",
|
|
"of": "verb:seat-list.answer",
|
|
"given": {
|
|
"status": {
|
|
"heard": false,
|
|
"held": [
|
|
{
|
|
"seat": "node-engine",
|
|
"source": "bootstrap"
|
|
},
|
|
{
|
|
"seat": "node-files",
|
|
"source": "trunk",
|
|
"digest": "3f2a9c"
|
|
}
|
|
],
|
|
"waiting": [
|
|
"node-engine"
|
|
],
|
|
"last-error": "no answer"
|
|
},
|
|
"health": "the seat list is held from the bootstrap and nothing new is acted on"
|
|
}
|
|
},
|
|
{
|
|
"name": "seat-list-again answers the error when the read failed",
|
|
"of": "verb:seat-list-again.answer",
|
|
"given": {
|
|
"status": {
|
|
"heard": false,
|
|
"held": [
|
|
{
|
|
"seat": "node-engine",
|
|
"source": "bootstrap"
|
|
}
|
|
],
|
|
"waiting": [
|
|
"node-engine"
|
|
]
|
|
},
|
|
"health": "the seat list is held from the bootstrap",
|
|
"error": "seatlist: no answer"
|
|
}
|
|
},
|
|
{
|
|
"name": "process-builds asks one module",
|
|
"of": "verb:process-builds.input",
|
|
"given": {
|
|
"module": "nats"
|
|
}
|
|
},
|
|
{
|
|
"name": "process-builds answers each process's build",
|
|
"of": "verb:process-builds.answer",
|
|
"given": {
|
|
"node": "ace",
|
|
"processes": [
|
|
{
|
|
"module": "nats",
|
|
"process": "nats.service",
|
|
"kind": "service",
|
|
"fingerprint": "src2:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
"started": "2026-11-09T19:00:00Z"
|
|
},
|
|
{
|
|
"module": "route-proxy",
|
|
"process": "route-proxy",
|
|
"kind": "container",
|
|
"unknown": "started before the node-engine handed MESH_FINGERPRINT",
|
|
"started": "2026-11-01T08:00:00Z"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "process-builds answers an error",
|
|
"of": "verb:process-builds.answer",
|
|
"given": {
|
|
"node": "ace",
|
|
"processes": [],
|
|
"error": "the service manager did not answer"
|
|
}
|
|
},
|
|
{
|
|
"name": "first-view-again names the owner, its state and why",
|
|
"of": "verb:first-view-again.input",
|
|
"given": {
|
|
"owner": "mesh-delivery-indexer",
|
|
"state": "manifests",
|
|
"why": "the picture lags the indexer by hand"
|
|
}
|
|
},
|
|
{
|
|
"name": "first-views answers its entries and its kept wants",
|
|
"of": "verb:first-views.answer",
|
|
"given": {
|
|
"first-views": [],
|
|
"entries": [
|
|
{
|
|
"fingerprint": "b3f1c9",
|
|
"state": "asked",
|
|
"since": "2026-11-11T08:00:00Z"
|
|
},
|
|
{
|
|
"fingerprint": "a77d02",
|
|
"state": "answered",
|
|
"since": "2026-11-11T08:01:00Z"
|
|
},
|
|
{
|
|
"fingerprint": "0c1e55",
|
|
"state": "not-found",
|
|
"since": "2026-11-11T08:02:00Z"
|
|
}
|
|
],
|
|
"wants": [
|
|
{
|
|
"module": "mesh-delivery-indexer",
|
|
"fingerprint": "b3f1c9",
|
|
"kept-since": "2026-11-11T07:00:00Z"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "entry-again names the fingerprint and why",
|
|
"of": "verb:entry-again.input",
|
|
"given": {
|
|
"fingerprint": "b3f1c9",
|
|
"why": "the entry could not be read"
|
|
}
|
|
},
|
|
{
|
|
"name": "entry-again answers what was asked and where it is read",
|
|
"of": "verb:entry-again.answer",
|
|
"given": {
|
|
"asked": {
|
|
"v": 1,
|
|
"fingerprint": "b3f1c9",
|
|
"why": "the entry could not be read",
|
|
"by": "operator@shanks",
|
|
"at": "2026-11-11T08:00:00Z"
|
|
},
|
|
"read": "first-views"
|
|
}
|
|
}
|
|
]
|