From 77e583be44750d8dfa52685811b2d7101afbfeee Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 10:44:34 +0100 Subject: [PATCH] C3, C5, C11 (answers): mesh-broker's write verbs name module:nats, node-engine's seat-list verbs the callers its code names, mesh-conditions declares findings-views MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit create and apply are of class act; recreate and drop of class warrant; all four called by module:nats. seat-list and seat-list-again name persons, sessions and healers as SeatListCallers does. Builds: design 47 G §336, §388, §391, §392, §393 Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ --- .../seats/mesh-conditions/seat.json | 60 +++++++++++++++++++ seats/mesh-broker/seat.json | 28 ++++++--- seats/node-engine/seat.json | 4 +- 3 files changed, 83 insertions(+), 9 deletions(-) diff --git a/health-and-repair/seats/mesh-conditions/seat.json b/health-and-repair/seats/mesh-conditions/seat.json index 7f9fb80..e5fa435 100644 --- a/health-and-repair/seats/mesh-conditions/seat.json +++ b/health-and-repair/seats/mesh-conditions/seat.json @@ -434,6 +434,66 @@ } ], "description": "every observer's findings, one key per finding, kept in the observer's own state and read only by its owner's read tool; the keeper hears each change as the observer's events finding-written, finding-cleared and findings-stated (design 47 G 383, 434)" + }, + { + "name": "findings-views", + "template": "state", + "description": "the keeper's sources: one key per observer and node, its last stated set with its at, its pending keys and the open asks; deleted when the module leaves the catalog or the node (design 47 G 388)", + "key-forms": [ + { + "key": ".", + "description": "one observer on one node", + "value": { + "type": "object", + "properties": { + "v": { + "type": "integer" + }, + "observer": { + "type": "string" + }, + "node": { + "type": "string" + }, + "stated": { + "type": "object", + "description": "the last findings-stated set", + "properties": { + "at": { + "type": "string", + "format": "date-time" + }, + "findings": { + "type": "array", + "items": { + "$ref": "#/bodies/Finding" + } + } + } + }, + "pending": { + "type": "array", + "items": { + "type": "string" + }, + "description": "the keys it cannot judge yet" + }, + "asks": { + "type": "array", + "items": { + "type": "string" + }, + "description": "the open asks" + } + }, + "required": [ + "v", + "observer", + "node" + ] + } + } + ] } ], "defs": { diff --git a/seats/mesh-broker/seat.json b/seats/mesh-broker/seat.json index baff7db..a118c0e 100644 --- a/seats/mesh-broker/seat.json +++ b/seats/mesh-broker/seat.json @@ -143,43 +143,54 @@ { "name": "create", "description": "Create one entry now.", - "callers": "the bus module's own process only", + "callers": [ + "module:nats" + ], "input": { "$ref": "#/defs/Entry" }, "answer": { "$ref": "#/defs/Held" }, - "optional": true + "optional": true, + "class": "act" }, { "name": "apply", "description": "Apply a difference that only grows: a larger cap, a longer age.", - "callers": "the bus module's own process only", + "callers": [ + "module:nats" + ], "input": { "$ref": "#/defs/Named" }, "answer": { "$ref": "#/defs/Held" }, - "optional": true + "optional": true, + "class": "act" }, { "name": "recreate", "description": "Rebuild an entry whose settings differ in a way that cannot grow, from its data where the storage type allows, after a stream snapshot.", - "callers": "the bus module's process, on the operator's warrant", + "callers": [ + "module:nats" + ], "input": { "$ref": "#/defs/Warranted" }, "answer": { "$ref": "#/defs/Held" }, - "optional": true + "optional": true, + "class": "warrant" }, { "name": "drop", "description": "Remove one orphan, after a stream snapshot.", - "callers": "the bus module's process, on the operator's warrant", + "callers": [ + "module:nats" + ], "input": { "$ref": "#/defs/Warranted" }, @@ -199,7 +210,8 @@ "dropped" ] }, - "optional": true + "optional": true, + "class": "warrant" }, { "name": "snapshot-kept", diff --git a/seats/node-engine/seat.json b/seats/node-engine/seat.json index 1a08c68..63159fe 100644 --- a/seats/node-engine/seat.json +++ b/seats/node-engine/seat.json @@ -686,6 +686,7 @@ "description": "The seat list this engine holds and what it waits for (novox/hq ADR 0636 §7): each seat's source (trunk or bootstrap) and digest, the seats held from the bootstrap alone, the definitions refused, the last error and whether the seat mesh-catalog has answered. Read-only.", "callers": [ "persons", + "sessions", "healers" ], "input": { @@ -700,7 +701,8 @@ "name": "seat-list-again", "description": "Make this engine read the seat list from the seat mesh-catalog now (novox/hq ADR 0636 §7), the recovery of a list unread; it answers what it holds afterwards, and the error when the read failed. A read that changed nothing still ends the engine's wait.", "callers": [ - "operator", + "persons", + "sessions", "healers" ], "input": {