Context
The view half of surface S1 from the graduated FM design-first record (D#15249, closed RESOLVED → #15254 Surface Registry). Object permanence ruled the placement: the mailbox belongs to the agent object → a tab inside AgentDetail. Dock-liftability is a later follow-up under the dock grammar, deliberately NOT this leaf.
The Problem
The operator's daily loop today is reading raw A2A traffic by hand (wake daemon off = manual mailbox checks). The detail view (#14608) renders status/freshness panes but no communication surface.
The Architectural Reality
- Consumes the Fleet mailbox read adapter (#15269 — blocked-by edge set); renders, never fetches raw MailboxService itself.
- Graduated design direction (binding): flat-chronological with thread-collapse where
partOfThread exists; freshness labels the PANE (data-as-of), never rows — messages are immutable timestamped facts, per-row freshness is noise.
- Read-only in v13.2: no mark-read affordance ANYWHERE in the pane (the record's MUST-NOT: operator mark-read swallows peer handoffs); reply-as-operator deferred to v13.3 as chat's companion (the record pre-answers the convergence: chat is the actionable EVOLUTION of this pane, never a parallel surface — the registry entry names it).
- Windowed/paginated per the record's density bound (thread-collapse alone is not a bound); honest degraded/admission-denied states.
apps/** gate: data via data.Store/records where applicable, state.Provider scoping, zero CSS-in-JS; design primitives from TOKENS.md/CARD-CONTRACT.md.
Acceptance Criteria
Out of Scope
The adapter itself (#15269) · dock-liftability of the pane · chat/actionable evolution (v13.3) · archive browsing.
Related
Epic #14560 (parent — the surface epic) · #15269 (blocked-by: the Brain half) · D#15249 (graduated record, S1 tokens + boundary ACs) · #15254 / PR #15255 (registry) · #14608 (the detail view this extends).
Sweeps: latest-open checked 2026-07-16T15:05Z (latest #15267) — no equivalent. A2A herd-window clean.
Origin Session ID: b42c5667-db78-4a0c-83a0-ce66c95ee0d9
Retrieval Hint: "FM cockpit mailbox pane AgentDetail tab read-only S1"
Context
The view half of surface S1 from the graduated FM design-first record (D#15249, closed RESOLVED → #15254 Surface Registry). Object permanence ruled the placement: the mailbox belongs to the agent object → a tab inside
AgentDetail. Dock-liftability is a later follow-up under the dock grammar, deliberately NOT this leaf.The Problem
The operator's daily loop today is reading raw A2A traffic by hand (wake daemon off = manual mailbox checks). The detail view (#14608) renders status/freshness panes but no communication surface.
The Architectural Reality
partOfThreadexists; freshness labels the PANE (data-as-of), never rows — messages are immutable timestamped facts, per-row freshness is noise.apps/**gate: data viadata.Store/records where applicable,state.Providerscoping, zero CSS-in-JS; design primitives fromTOKENS.md/CARD-CONTRACT.md.Acceptance Criteria
AgentDetailgains a mailbox tab rendering the selected resident's active-inbox mirror via #15269: flat-chrono, thread-collapsed, paginated, pane-level data-as-of freshness label.Out of Scope
The adapter itself (#15269) · dock-liftability of the pane · chat/actionable evolution (v13.3) · archive browsing.
Related
Epic #14560 (parent — the surface epic) · #15269 (blocked-by: the Brain half) · D#15249 (graduated record, S1 tokens + boundary ACs) · #15254 / PR #15255 (registry) · #14608 (the detail view this extends).
Sweeps: latest-open checked 2026-07-16T15:05Z (latest #15267) — no equivalent. A2A herd-window clean.
Origin Session ID: b42c5667-db78-4a0c-83a0-ce66c95ee0d9 Retrieval Hint: "FM cockpit mailbox pane AgentDetail tab read-only S1"