From 41690f7c3fb6fb3e2abc3a4f5079b341c9e9e57c Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 10:42:51 +0100 Subject: [PATCH] C11: mesh-conditions says findings-asked, resyncs one observer, and defines the finding bodies MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The event findings-asked (ask, at, by, module; 7 days, 16 MiB), resync with an optional module and callers operator, healers and sessions, and the section bodies: the finding with its layout whole, finding-written, finding-cleared and findings-stated. The state findings is its owner's alone. Whether findings-views is a state of this definition waits on a question. Builds: design 47 G §383, §384, §390, §434, §437, §439 Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ --- .../mesh-conditions/fixtures/events.json | 23 ++ .../seats/mesh-conditions/seat.json | 249 +++++++++++++++++- 2 files changed, 267 insertions(+), 5 deletions(-) create mode 100644 health-and-repair/seats/mesh-conditions/fixtures/events.json diff --git a/health-and-repair/seats/mesh-conditions/fixtures/events.json b/health-and-repair/seats/mesh-conditions/fixtures/events.json new file mode 100644 index 0000000..dde417e --- /dev/null +++ b/health-and-repair/seats/mesh-conditions/fixtures/events.json @@ -0,0 +1,23 @@ +[ + { + "name": "the keeper asks one observer to state its findings", + "of": "event:findings-asked", + "subject": "mesh.seat.mesh-conditions.event.findings-asked", + "given": { + "ask": "a-20261111t100000", + "at": "2026-11-11T10:00:00Z", + "by": "jochen", + "module": "mesh-host" + } + }, + { + "name": "the keeper asks every observer", + "of": "event:findings-asked", + "subject": "mesh.seat.mesh-conditions.event.findings-asked", + "given": { + "ask": "a-20261111t100100", + "at": "2026-11-11T10:01:00Z", + "by": "mesh-conditions" + } + } +] diff --git a/health-and-repair/seats/mesh-conditions/seat.json b/health-and-repair/seats/mesh-conditions/seat.json index 76f464c..7f9fb80 100644 --- a/health-and-repair/seats/mesh-conditions/seat.json +++ b/health-and-repair/seats/mesh-conditions/seat.json @@ -84,15 +84,26 @@ }, { "name": "resync", - "description": "Read every observer's findings again and raise and clear what differs from the open conditions: the recovery of a keeper that missed a change.", + "description": "Ask the observers to state their findings again, every one or the one named, and raise and clear what differs from the open conditions: the recovery of a keeper that missed a change. Each call is written in the hand-act log of the seat mesh-hand-acts (design 47 G 390).", "input": { - "properties": {}, - "type": "object" + "type": "object", + "properties": { + "module": { + "type": "string", + "description": "ask this observer alone; none asks all" + } + }, + "additionalProperties": false }, "answer": { "type": "object", "description": "what was raised and cleared again" - } + }, + "callers": [ + "operator", + "healers", + "sessions" + ] } ], "events": [ @@ -113,6 +124,40 @@ "body": { "$ref": "#/defs/ConditionEvent" } + }, + { + "name": "findings-asked", + "keep": { + "max-age-days": 7, + "max-mib": 16 + }, + "body": { + "type": "object", + "description": "the keeper asks every observer, or one, to state its findings (design 47 G 384, 390)", + "properties": { + "ask": { + "type": "string", + "description": "the ask's id" + }, + "at": { + "type": "string", + "format": "date-time" + }, + "by": { + "type": "string", + "description": "who asked: the keeper, or the person or session that called resync" + }, + "module": { + "type": "string", + "description": "to ask one observer; none asks all" + } + }, + "required": [ + "ask", + "at", + "by" + ] + } } ], "family": { @@ -363,6 +408,14 @@ "at": { "type": "string", "format": "date-time" + }, + "owner": { + "type": "string", + "description": "the module the finding is about, when not the observer" + }, + "waiting-on": { + "type": "string", + "description": "what it waits on: a person, a part or a call" } }, "required": [ @@ -380,7 +433,7 @@ "description": "one finding of the observer that wrote it" } ], - "description": "every observer's findings, one key per finding; a key written raises or changes the condition of the same key, a key deleted clears it" + "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)" } ], "defs": { @@ -643,5 +696,191 @@ "change" ] } + }, + "bodies": { + "Finding": { + "type": "object", + "description": "one finding as an observer says it: the layout whole, plus scope, id and since (design 47 G 437, 439)", + "properties": { + "kind": { + "type": "string" + }, + "scope": { + "type": "string", + "description": "the key's first part: .. (ADR 0564)" + }, + "id": { + "type": "string", + "description": "the key's second part" + }, + "at": { + "type": "string", + "format": "date-time" + }, + "since": { + "type": "string", + "format": "date-time", + "description": "since when the finding stands" + }, + "severity": { + "type": "string", + "enum": [ + "urgent", + "warning" + ] + }, + "summary": { + "type": "string", + "description": "one line" + }, + "headline": { + "type": "string" + }, + "explanation": { + "type": "string" + }, + "subject": { + "$ref": "#/defs/Subject" + }, + "evidence": { + "type": "array", + "description": "newest first, at most 10", + "items": { + "$ref": "#/defs/Evidence" + } + }, + "source": { + "type": "string", + "description": "the row, probe or event that saw it" + }, + "observer": { + "type": "string", + "description": "the module that wrote it" + }, + "owner": { + "type": "string", + "description": "the module the finding is about, when not the observer" + }, + "waiting-on": { + "type": "string", + "description": "what it waits on: a person, a part or a call" + }, + "actions": { + "type": "array", + "items": { + "$ref": "#/defs/Action" + } + }, + "needs": { + "type": "string" + }, + "resolver": { + "type": "string", + "description": "self, operator, agent or healer:" + }, + "ref": { + "type": "string", + "description": "the key's last part when it is not the kind" + }, + "run": { + "type": "string", + "description": "what of its own saw it last" + } + }, + "required": [ + "kind", + "scope", + "id", + "at", + "since", + "severity", + "summary", + "subject", + "source", + "observer" + ] + }, + "FindingWritten": { + "$ref": "#/bodies/Finding" + }, + "FindingCleared": { + "type": "object", + "description": "an observer no longer observes a finding", + "properties": { + "kind": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "id": { + "type": "string" + }, + "at": { + "type": "string", + "format": "date-time" + }, + "why": { + "type": "string" + } + }, + "required": [ + "kind", + "scope", + "id", + "at", + "why" + ] + }, + "FindingsStated": { + "type": "object", + "description": "every finding an observer observes now, at its start and when asked (design 47 G 384, 439)", + "properties": { + "at": { + "type": "string", + "format": "date-time" + }, + "asked": { + "type": "string", + "description": "the ask it answers; none at a start" + }, + "findings": { + "type": "array", + "items": { + "$ref": "#/bodies/Finding" + } + }, + "pending": { + "type": "array", + "description": "the keys the observer cannot judge yet since its start, with their since and bound", + "items": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "since": { + "type": "string", + "format": "date-time" + }, + "bound": { + "type": "string", + "description": "a duration such as 5m" + } + }, + "required": [ + "key", + "since", + "bound" + ] + } + } + }, + "required": [ + "at", + "findings", + "pending" + ] + } } }