diff --git a/seats/node-engine/fixtures/verbs.json b/seats/node-engine/fixtures/verbs.json index 8c72985..a1488ee 100644 --- a/seats/node-engine/fixtures/verbs.json +++ b/seats/node-engine/fixtures/verbs.json @@ -156,5 +156,14 @@ "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" + } } ] diff --git a/seats/node-engine/seat.json b/seats/node-engine/seat.json index af5875e..ab45d89 100644 --- a/seats/node-engine/seat.json +++ b/seats/node-engine/seat.json @@ -6,7 +6,6 @@ "domain": "Core", "decision": "novox/hq ADR 0563", "description": "The node seat every node's engine holds (novox/hq ADR 0563, ADR 0618 §3, §4): its hand acts on the operator's warrant, its read-only judgements, its compositions and what it reads of a manifest. Each verb is answered on this node's subject, mesh.seat.node-engine.tool.., and each event is published on mesh.seat.node-engine.event.., the node's name its last token, or, for an event whose subject names , there (composed., running..): the grants part grants a node's account only its own node's subjects (ADR 0363 §2).", - "held-by-the-engine": true, "acts": [ { "step": "compose", @@ -724,6 +723,117 @@ "$ref": "#/defs/SeatList" } }, + { + "name": "first-views", + "description": "The node-engine's first views of the owners' states it follows (design 47 G 422, 204): per owner and state, the tool it asks, the revision its picture holds and why it is behind, when it asked and was answered, how many asks and whether its condition is raised; served by mesh-sdk's runtime as the view's read tool.", + "class": "read", + "callers": [ + "persons", + "healers" + ], + "input": { + "type": "object", + "properties": {} + }, + "answer": { + "type": "object", + "required": [ + "first-views" + ], + "properties": { + "first-views": { + "type": "array", + "items": { + "type": "object" + }, + "description": "one status per owner and state followed, as mesh-sdk's views runtime keeps it" + } + } + } + }, + { + "name": "first-view-again", + "description": "Ask the node-engine's first view of an owner's state again now, by hand (design 47 G 422, 204): a hand act, its caller and why kept in the status first-views reads; served by mesh-sdk's runtime as the view's again tool.", + "class": "act", + "callers": [ + "operator", + "healers" + ], + "input": { + "type": "object", + "required": [ + "owner", + "state", + "why" + ], + "properties": { + "owner": { + "type": "string", + "description": "the owner module, as first-views names it" + }, + "state": { + "type": "string", + "description": "the owner's state, as first-views names it" + }, + "why": { + "type": "string", + "description": "why it is asked again, in plain words" + } + } + }, + "answer": { + "type": "object", + "required": [ + "asked", + "read" + ], + "properties": { + "asked": { + "type": "object", + "description": "the hand ask written", + "required": [ + "v", + "owner", + "state", + "why", + "by", + "at" + ], + "properties": { + "v": { + "type": "integer", + "description": "the layout's version" + }, + "owner": { + "type": "string", + "description": "the owner module" + }, + "state": { + "type": "string", + "description": "the owner's state" + }, + "why": { + "type": "string", + "description": "why it was asked again" + }, + "by": { + "type": "string", + "description": "the caller the runtime proved" + }, + "at": { + "type": "string", + "format": "date-time", + "description": "when it was asked, RFC 3339" + } + } + }, + "read": { + "type": "string", + "description": "the verb that reads the status, first-views" + } + } + } + }, { "name": "process-builds", "description": "The build each process on this node was started with (design 47 *The revision view*): per service and container the fingerprint the node-engine handed it in MESH_FINGERPRINT, or why it is unknown, and when it started. Narrowed by module. Reads only.",