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]>
This commit is contained in:
@@ -2101,3 +2101,28 @@ which stay with him. Each item names who decided it and what happened.
|
||||
the faster option. In exchange, the in-stack Mos never runs with
|
||||
its wider authority under Jason's user, with PID-only isolation,
|
||||
for more than the trial.
|
||||
|
||||
97. **Row 76 builds as briefed; the reply view is its own row after the
|
||||
cutover (2026-10-11).** Dewey found, building row 76 (#1570), that the
|
||||
brief's "replies show in the inbox as today" is wrong. The bus inbox
|
||||
lists only open decisions, and nothing reads `in_reply_to`. Sage wrote
|
||||
that line; the error is Sage's.
|
||||
- Row 76 goes ahead with Dewey's option (a). Its README says the PM's
|
||||
reply to a web send shows on Jason's next `mosaic talk`, which
|
||||
prints every undelivered message to the human first
|
||||
(`packages/cli/src/cli.mjs`, `talk`).
|
||||
- Option (b), a Console `message.receive` with no `message.read`, is
|
||||
refused. `message.receive` writes a `delivered` row, so the Console
|
||||
would take the reply away from `mosaic talk`. It is also a bus
|
||||
change, which row 76's brief puts out of scope.
|
||||
- The web send keeps the broker's default class, INFO. The brief puts
|
||||
other classes out of scope, and the runner answers any class but
|
||||
RESULT.
|
||||
- Row 81 (#1575): a read-only bus read of the replies to a message,
|
||||
shown on the Console receipt, plus the CLI talk timeout message,
|
||||
which also names `mosaic inbox` wrongly. Owner Dewey after rows 76
|
||||
and 59, reviewer Darkwing. Held behind the cutover with the other
|
||||
bus rows (decision 94).
|
||||
- The tradeoff: on cutover day Jason sends from the browser and reads
|
||||
the answer in the CLI. In exchange no broker change lands before the
|
||||
cutover and row 76 needs no extra review round.
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user