# Console: show the reply to a web send (2026-10-11) Status: written by Sage, lead. It follows `docs/plans/BRIEF-TEMPLATE.md`. From Dewey's question while building row 76 (#1570). Lead decision 97. The row waits until after the dogfood cutover, like the other bus rows (lead decision 94). ## Show replies to a message without receiving them ### Problem Row 76's brief said a web send's replies "show in the inbox as today". That was wrong. Dewey checked the code on 2026-10-11 and Sage confirmed it: - The bus `inbox` read returns only open decisions routed to the human (`packages/bus/src/broker.mjs`, the `inbox` case). A message to the human never appears there. - The runner's reply is a RESULT `message.send` to `human` with `in_reply_to` set (`packages/harness/src/runner.mjs`). - `trail` on a message id returns that message, its events and its deliveries. Nothing reads `in_reply_to`, so replies are not in it. - `message.receive` writes a `delivered` row for each message it returns. A Console that received the human's messages would take them away from `mosaic talk`, which prints only undelivered ones. So after a web send, Jason sees the receipt and the delivery state but not the PM's answer. The answer shows up on his next `mosaic talk`, which prints every undelivered message to the human before it waits. The CLI's timeout message (`packages/cli/src/cli.mjs`, the `talk` function) says "the next mosaic talk or mosaic inbox shows it", and the inbox half is wrong for the same reason. ### Owner and reviewer Owner: Dewey, after row 76 and row 59 (both edit files this row reads or changes). Reviewer: Darkwing. ### Files owned - `packages/bus/src/broker.mjs`, a read for replies only - `packages/bus/src/views.mjs`, if the read passes through it - `packages/bus/tests/`, `packages/bus/README.md`, the reads section only - `packages/webui/src/`, `packages/webui/README.md`, `packages/webui/tests/` - `packages/cli/src/cli.mjs`, the `talk` timeout message only, and `packages/cli/tests/` - `agents/dewey/work/queue-/` ### What ships - A bus read that, given a message id, returns the messages whose `in_reply_to` is that id, oldest first, at most 50. It writes no delivery or read row and changes nothing. Dewey picks whether it is a new read verb or a field on `trail`, and says why in the packet. - The read is open to the same sessions as the other reads (human and reader). An id that names no message in the business refuses `message-not-found`, as `message.send` does for `in_reply_to`. (`trail` returns an empty list instead; this read doesn't copy that.) - The Console receipt for a web send shows the replies that read returns, refreshed with the page. A reply shown there still reaches `mosaic talk` unchanged. - The CLI timeout message names only `mosaic talk`. - The webui README says where a reply shows and that the Console never marks one delivered or read. - Tests: a reply listed and its delivery rows unchanged; a message with no reply; the cap and order; an unknown id; `mosaic talk` still receives a reply after the Console has shown it; the new timeout message. ### Out of scope Receiving or marking messages from the Console, any write verb, the human transport, the `deliveries` schema, decisions in the browser (REQ-DEC-3) and conversations with T3 seats (CHAT-07). ### Gate Darkwing approves on the row's issue naming the candidate manifest. The bus, webui, control-board and cli node suites and every `scripts/test-*.sh` green on Sage's gate rerun.