diff --git a/seats/node-engine/fixtures/events.json b/seats/node-engine/fixtures/events.json index 657566e..56731bd 100644 --- a/seats/node-engine/fixtures/events.json +++ b/seats/node-engine/fixtures/events.json @@ -92,6 +92,34 @@ "at": "2026-11-09T20:01:00Z" } }, + { + "name": "running says the build that runs is healthy", + "of": "event:running", + "subject": "mesh.seat.node-engine.event.running.ace.nats", + "given": { + "v": 1, + "node": "ace", + "module": "nats", + "fingerprint": "src2:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "manifest": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", + "healthy": true, + "at": "2026-11-11T09:00:00Z" + } + }, + { + "name": "running says the build that runs turned unhealthy, still running", + "of": "event:running", + "subject": "mesh.seat.node-engine.event.running.ace.nats", + "given": { + "v": 1, + "node": "ace", + "module": "nats", + "fingerprint": "src2:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "manifest": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", + "healthy": false, + "at": "2026-11-11T09:05:00Z" + } + }, { "name": "running says a module stopped on the node, with no fingerprint", "of": "event:running", diff --git a/seats/node-engine/seat.json b/seats/node-engine/seat.json index ab45d89..89352fa 100644 --- a/seats/node-engine/seat.json +++ b/seats/node-engine/seat.json @@ -2883,7 +2883,7 @@ }, "Running": { "type": "object", - "description": "a module running healthy on a node at a build: what the node-engines of other nodes and the grants part decide a seat's pass from (ADR 0660 §2), kept last per subject with no age limit", + "description": "a module's build running on a node, and its health: what the node-engines of other nodes and the grants part decide a seat's pass from (ADR 0660 §2), and the assigner reads a provider's and a canary's health and a put's end from (design 47 G 520); said again on the same subject each time healthy changes and for every module the have holds at the engine's start, kept last per subject with no age limit", "properties": { "v": { "type": "integer", @@ -2905,14 +2905,21 @@ "type": "string", "description": "the digest of that build's manifest, the indexer's manifest of it, read by digest from the catalog half" }, + "healthy": { + "type": [ + "boolean", + "null" + ], + "description": "the health of the build that runs, as the node-engine's have holds it from the module's declared check (ADR 0240); a running with none, said by a node-engine of before design 47 G, reads as healthy (design 47 G 520). SeatsToPassOn reads none of it: an unhealthy holder still holds its seat" + }, "at": { "type": "string", - "description": "when it was seen running healthy, RFC 3339", + "description": "when it was said, RFC 3339", "format": "date-time" }, "stopped": { "type": "boolean", - "description": "true when the module no longer runs on the node: no fingerprint or manifest then (design 47 G 365, 404); mesh-sdk's SeatsToPassOn counts such a module as not running there" + "description": "true when the have no longer holds the module on the node, never for an unhealthy build: no fingerprint or manifest then (design 47 G 365, 404, 520); mesh-sdk's SeatsToPassOn counts such a module as not running there" } }, "required": [