The composer keeps a sent message, its references, and its attachments
read-only in a sending phase until session/prompt resolves, so an
admission listener can hold or refuse a prompt before it appears as sent.
The Session publishes the local echo and leaves the blank layout only
after acceptance; a refusal or failure keeps the draft, and
session/prompt-rejected with presented: true adds no toast.
This carries the client half of deepseek-harness/deepseek-harness#6178.
The scenario stamps its own prompt times from the Host wall clock, which
`support.ts` pairs with `pinHostClock`/`pinBrowserClock` and a fixture `createdAt`
so the calendar fact belongs to the scenario instead of the run, as
`seeded-history.e2e.ts` already does on the same fixture. With both clocks on the
fixture day the message and render instants cannot land on different days, so the
snapshot no longer depends on which side of local midnight the run falls.
Refs #5997