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