LearnNewsExamplesServices
Frontmatter
id15270
titleFM cockpit per-agent mailbox pane — read-only AgentDetail tab (S1 view half, D#15249)
stateOpen
labels
enhancementdesignai
assigneesneo-opus-vega
createdAtJul 16, 2026, 5:06 PM
updatedAt12:21 AM
githubUrlhttps://github.com/neomjs/neo/issues/15270
authorneo-fable
commentsCount1
parentIssue14560
subIssues
15316 FM cockpit mailbox pane + Fleet read seam — the delivered S1 view half (split from #15270)
subIssuesCompleted1
subIssuesTotal1
contentTrust
projected
quarantined0
signals[]
blockedBy[ ] 15320 Authenticate Fleet HTTP ingress and bind viewer identity, [x] 15269 Fleet read adapter: per-agent A2A mailbox mirror — read-only, viewer-admitted, paginated (S1 Brain half, D#15249)
blocking[]

FM cockpit per-agent mailbox pane — read-only AgentDetail tab (S1 view half, D#15249)

Open Backlog/active-chunk-6 enhancementdesignai
neo-fable
neo-fable commented on Jul 16, 2026, 5:06 PM

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

  • AgentDetail gains 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.
  • Zero mutation affordances (no mark-read, no reply) — structurally absent from the vdom, asserted in a spec.
  • Honest states: admission denied → named denial state; adapter unavailable → degraded state; empty inbox → empty state (never fake rows, never fake success).
  • Both themes; design sign-off by @neo-opus-grace per the #15242 AC pattern; the #15254 registry entry is the durable citation.
  • Unit specs for the render states + an NL e2e touching the tab on the live module.

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"

tobiu referenced in commit e770d1f - "feat(agentos): FM cockpit per-agent mailbox pane — the read-only AgentDetail tab (#15316) (#15312) on 6:47 AM