Merge pull request 'To-be 46: an agent session asks the operator through its module and reads the answer by a key (issue 589, ADR 0332)' (#334) from design/589-a-session-asks-the-operator into main

This commit was merged in pull request #334.
This commit is contained in:
2026-10-12 21:30:23 +00:00
@@ -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 <id>`.
### 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 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
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