From a5333f8ecbccf77ad4bbe1ba6a4144007e3be874 Mon Sep 17 00:00:00 2001 From: jochen Date: Mon, 12 Oct 2026 22:44:52 +0200 Subject: [PATCH 1/2] To-be 46: an agent session asks the operator through its module and reads the answer by a key (issue 589, ADR 0332) Gives ADR 0332 its home in the design of the conversation with the operator, beside how an asker gets its answer. --- .../46-the-conversation-with-the-operator.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/03-DESIGN/01-to-be/46-the-conversation-with-the-operator.md b/03-DESIGN/01-to-be/46-the-conversation-with-the-operator.md index da34cd72..8b9e162c 100644 --- a/03-DESIGN/01-to-be/46-the-conversation-with-the-operator.md +++ b/03-DESIGN/01-to-be/46-the-conversation-with-the-operator.md @@ -4,6 +4,7 @@ status: in-progress code: [mesh-controller, mesh-tools, mesh-sdk, mesh-catalog] updated: 2026-10-12 decisions: + - "ADR 0332" - "ADR 0308" - "ADR 0286" - "ADR 0277" @@ -210,6 +211,19 @@ optionally a group, for batching. The words pass the content rule. The event **`ask-answered`**, with the ask's id and any conversation handle. An asker may also call `ask` with a bounded wait (a few minutes), or poll `asks `. +### An agent session asks + +*Added 2026-10-12, ADR 0332 (issue 589):* an agent session asks through the operator's agent module, which +is the asker: the ask goes out under that module's own name, so the bus proves who asks, and the router +gains no verb. The session gives a headline, the context in plain words, two to four options with exactly +one recommended and why, what it does if nobody answers, its own name, and an expiry of five minutes to a +day less ten minutes. Every option is an approval bound to the question, so only a channel that proves who +answered carries it, never the desk. The session gets a key at once and reads the answer by it later: +waiting, the option chosen with who chose it and where, ended without a choice, or not proven when the +router's record does not hold to the question asked. At most two such questions are open at once, so one +open ask is always left for a proposed instruction section. The answer informs the session and authorises +nothing. + ### The router's verbs and events *Amended 2026-10-08, ADR 0259:* an ask and its cancel are accepted on the `operator-channel` seat under From f7c677a3a712f3584d76719a13fd868a4e34ca9a Mon Sep 17 00:00:00 2001 From: jochen Date: Mon, 12 Oct 2026 23:15:12 +0200 Subject: [PATCH 2/2] To-be 46: the session gets its key within seconds, not at once (review of #334) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The tool waits for the router's word before it answers, as ADR 0332 ยง5 says. --- 03-DESIGN/01-to-be/46-the-conversation-with-the-operator.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/03-DESIGN/01-to-be/46-the-conversation-with-the-operator.md b/03-DESIGN/01-to-be/46-the-conversation-with-the-operator.md index 8b9e162c..b0d18ebb 100644 --- a/03-DESIGN/01-to-be/46-the-conversation-with-the-operator.md +++ b/03-DESIGN/01-to-be/46-the-conversation-with-the-operator.md @@ -218,7 +218,7 @@ is the asker: the ask goes out under that module's own name, so the bus proves w gains no verb. The session gives a headline, the context in plain words, two to four options with exactly one recommended and why, what it does if nobody answers, its own name, and an expiry of five minutes to a day less ten minutes. Every option is an approval bound to the question, so only a channel that proves who -answered carries it, never the desk. The session gets a key at once and reads the answer by it later: +answered carries it, never the desk. The session gets a key within seconds and reads the answer by it later: waiting, the option chosen with who chose it and where, ended without a choice, or not proven when the router's record does not hold to the question asked. At most two such questions are open at once, so one open ask is always left for a proposed instruction section. The answer informs the session and authorises