Row 76 builds as briefed; its brief's 'replies show in the inbox' line was wrong. A read-only bus read of replies, shown on the Console receipt, is row 81 (#1575), held behind the cutover. Option (b), a Console message.receive, is refused because receive marks delivery. Co-Authored-By: Claude Opus 5.5 <[email protected]>
82 lines
3.5 KiB
Markdown
82 lines
3.5 KiB
Markdown
# 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-<row>/`
|
|
|
|
### 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.
|