diff --git a/02-DECISIONS/0259-an-ask-is-a-message-on-the-bus-any-channel-answers-it-and-the-asker-acts-on-a-warrant.md b/02-DECISIONS/0259-an-ask-is-a-message-on-the-bus-any-channel-answers-it-and-the-asker-acts-on-a-warrant.md index 5a6bdbbd..63f60d0e 100644 --- a/02-DECISIONS/0259-an-ask-is-a-message-on-the-bus-any-channel-answers-it-and-the-asker-acts-on-a-warrant.md +++ b/02-DECISIONS/0259-an-ask-is-a-message-on-the-bus-any-channel-answers-it-and-the-asker-acts-on-a-warrant.md @@ -252,6 +252,9 @@ met, and when. It carries no secret. ### 7. Who the operator is on a channel: linking +- **An answer from an account that is not the operator's** is refused, and the operator is told on the linked + account which account tried (by name and number); the other account is told nothing (added on 2026-10-09: + a question forwarded, or a phone in other hands, is something the operator must hear of). - **The router's list is the only list.** It is changed only by linking and unlinking, never by a setting. - **Linking:** the operator sends the bot `/start`. The channel publishes `link.` with the sender and the name the service shows. The router shows a six-digit code on the desk, with that name, valid @@ -430,7 +433,9 @@ Telegram, or from the mesh MCP server." The asker's words never name a channel. | The self-check counts the login shell only where `execute` is served, and what it cannot measure fails | controller probe tests (`TestTheLoginShellCountsOnlyWhereExecuteIsServed`, the unmeasured case) | | The whole flow, before anyone uses it | the lab's proof `asks` (mesh-lab): a real bus with the controller's composed grants, the router and the Telegram channel in runtimes of their own accounts, a fake Telegram API — approve acted once, decline, expiry, a replayed tap, a tap from another account, a forged warrant, an ask under another name, an ask from a module that may not ask | | The controller holds no channel code | review; the controller's module imports no channel package | -| End to end | live drill after rollout (mesh-lab `asks/live-acceptance.md`): a harmless ask approved on the phone, acted once; the hand-act reads "the operator, as telegram identity …", via telegram, user id verified | +| End to end | live acceptance after rollout (mesh-lab `asks/live-acceptance.sh`): the controller's `drill`, started at its terminal alone, approved on the phone, acted on once and performing nothing; the hand-act reads `warrant drill drill=approve`, by "the operator, as telegram identity …", via "telegram (telegram), user id verified", proofs P1 | +| An answer from another account is refused and the operator is told which account tried | router test (`TestEveryAnswerThatIsNotTheOperatorsIsRefusedAndSaid`); the lab's proof | +| A message carrying an ask's answers is never folded into a digest | router test (`TestAnAsksMessageWithOneAnswerIsNotFoldedIntoADigest`); the lab's proof, where it was found | ## References