feat: add Labs reports basket and quiet deliver target
Summary
This is the smallest Labs dogfood for Leo's no-wake reports basket, outside Chief code. The existing Feed page gets an off-by-default feed.reportsBasket Labs toggle. When enabled, it projects agent/harness notices into a human-only basket with sender, time, body, and a direct reply box.
The ACPMUX CLI gains:
acpmux deliver --target reports:<person> ..., which appends through the existing mailbox send RPC with a target andquietpath.- The daemon persists the row through
deliver_quiet, so it does not notify session waiters or wake a model. - Audience metadata is validated as
leo,coordinator, orsilent; the target must bereports:<person>. - A human reply uses the poster's authenticated session identity and the ordinary
acpmux send --no-waitpath, so the reply is the explicit wake.
Scope and overlap
This PR intentionally stays out of Chief implementation. It is a separate Labs surface plus ACPMUX mailbox transport. The open lane-report PR #24365 remains prior art for parent-session reports; this basket target does not modify its hub lane-report files.
Validation
git diff --check origin/feat-cmux-next...2549c3def56126be7b5f9c088bfb1a62940fb7bbswiftc -parseover the changed Swift filesrustfmt --edition 2024over changed Rust files- Rust tests/builds are routed to Blacksmith per cmux policy; no native local build was run.
Before/after capture: the before state is the existing Feed Inbox; the after state is the Reports basket layout shown when feed.reportsBasket is enabled in Labs. A fleet-backed runtime capture is required before merge.
Agent session: Air-Blue
![View with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v3-3x.png)
![Autofix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png)
Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Adds a Labs reports basket and quiet mailbox delivery so agent and harness reports land in a human view without waking the sending model.
acpmux deliver --target reports:<person> appends a durable report row without notifying session waiters or injecting a model turn. The CLI attaches to the bound agent session with visible: false first, so attaching neither marks the agent seen nor publishes a visible status event, and the daemon accepts that bound sender without an explicit receipt. Text comes from args or stdin; --audience validates as leo, coordinator, or silent.
New Features
- Adds an off-by-default
feed.reportsBaskettoggle that shows agent/harness notices with sender, time, body, and a direct reply box. - The app reads the
reports:<person>mailbox over the daemon socket and projects quiet rows into the basket as durable reports. - Basket replies are addressed to the sender's session via the poster's authenticated identity on the normal
send --no-waitpath, making the reply the explicit wake. - Mail send accepts either a session
recipientor areports:target; only the reports path can omit a session receipt on a local bound connection. - Stays out of Chief and parent-session lane-report code.