diff --git a/health-and-repair/seats/mesh-conditions/fixtures/states.json b/health-and-repair/seats/mesh-conditions/fixtures/states.json index 0cac1dd..f8b2682 100644 --- a/health-and-repair/seats/mesh-conditions/fixtures/states.json +++ b/health-and-repair/seats/mesh-conditions/fixtures/states.json @@ -113,5 +113,47 @@ ], "at": "2026-10-26T20:19:41.474823121Z" } + }, + { + "name": "a finding owned by a session and waiting on a seat (design 47 G 678)", + "of": "state:findings/", + "given": { + "v": 1, + "key": "module.mesh-host.ace.directory-used-as-found", + "kind": "directory-used-as-found", + "subject": { + "scope": "module", + "id": "mesh-host.ace", + "machine": "ace" + }, + "severity": "warning", + "summary": "a directory waits for a hand", + "source": "health-report", + "observer": "mesh-delivery-watchman", + "at": "2026-11-11T10:00:00Z", + "owner": "jochen@shanks", + "waiting-on": "node-engine" + } + }, + { + "name": "a finding owned by a seat and waiting on a commit's author (design 47 G 678, 540)", + "of": "state:findings/", + "given": { + "v": 1, + "key": "module.mesh-host.ace.directory-used-as-found", + "kind": "directory-used-as-found", + "subject": { + "scope": "module", + "id": "mesh-host.ace", + "machine": "ace" + }, + "severity": "warning", + "summary": "a directory waits for a hand", + "source": "health-report", + "observer": "mesh-delivery-watchman", + "at": "2026-11-11T10:00:00Z", + "owner": "node-engine", + "waiting-on": "forge:jochen" + } } ] diff --git a/health-and-repair/seats/mesh-conditions/seat.json b/health-and-repair/seats/mesh-conditions/seat.json index 0591b4a..e4fc40a 100644 --- a/health-and-repair/seats/mesh-conditions/seat.json +++ b/health-and-repair/seats/mesh-conditions/seat.json @@ -411,11 +411,13 @@ }, "owner": { "type": "string", - "description": "the module the finding is about, when not the observer" + "pattern": "^([a-z0-9][a-z0-9._-]*@[a-z0-9][a-z0-9-]*|[a-z][a-z0-9-]*|forge:[A-Za-z0-9._-]+)$", + "description": "who the finding is about, when not the observer: a session who@node (^[a-z0-9][a-z0-9._-]*@[a-z0-9][a-z0-9-]*$), a seat's name (^[a-z][a-z0-9-]*$) or a commit's author forge: (^forge:[A-Za-z0-9._-]+$); another is refused (design 47 G 678)" }, "waiting-on": { "type": "string", - "description": "what it waits on: a person, a part or a call" + "pattern": "^([a-z0-9][a-z0-9._-]*@[a-z0-9][a-z0-9-]*|[a-z][a-z0-9-]*|forge:[A-Za-z0-9._-]+)$", + "description": "what it waits on: a session who@node (^[a-z0-9][a-z0-9._-]*@[a-z0-9][a-z0-9-]*$), a seat's name (^[a-z][a-z0-9-]*$) or a commit's author forge: (^forge:[A-Za-z0-9._-]+$); another is refused (design 47 G 678)" } }, "required": [ @@ -819,11 +821,13 @@ }, "owner": { "type": "string", - "description": "the module the finding is about, when not the observer" + "pattern": "^([a-z0-9][a-z0-9._-]*@[a-z0-9][a-z0-9-]*|[a-z][a-z0-9-]*|forge:[A-Za-z0-9._-]+)$", + "description": "who the finding is about, when not the observer: a session who@node (^[a-z0-9][a-z0-9._-]*@[a-z0-9][a-z0-9-]*$), a seat's name (^[a-z][a-z0-9-]*$) or a commit's author forge: (^forge:[A-Za-z0-9._-]+$); another is refused (design 47 G 678)" }, "waiting-on": { "type": "string", - "description": "what it waits on: a person, a part or a call" + "pattern": "^([a-z0-9][a-z0-9._-]*@[a-z0-9][a-z0-9-]*|[a-z][a-z0-9-]*|forge:[A-Za-z0-9._-]+)$", + "description": "what it waits on: a session who@node (^[a-z0-9][a-z0-9._-]*@[a-z0-9][a-z0-9-]*$), a seat's name (^[a-z][a-z0-9-]*$) or a commit's author forge: (^forge:[A-Za-z0-9._-]+$); another is refused (design 47 G 678)" }, "actions": { "type": "array",