Files
mesh-contracts/seats/node-engine/fixtures/verbs.json
T
jschoubben 91818305e7 C5: the node-engine seat says composed, running (kept last per subject, no age limit, or stopped) and capabilities-changed, acts in compose, and serves process-builds
Rewritten from the earlier branch to the final lines: keep as an object, stopped on running, process-builds a
read for persons, sessions and healers and not optional, the compose rule with the step's default bound.
The eleven verbs' callers (§393) wait on a question; the generated Go and TypeScript wait on the generator.

Builds: design 47 G §177, §199, §203, §260, §261, §266, §396, §404, §440

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 10:39:23 +01:00

161 lines
3.8 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"
}
}
]