Operator escalation with screenshots, 2026-08-15 evening: opening the AgentOS cockpit's side panels (Memories, Catch up, Wake routes, Operator) renders unstyled text dumps — raw headings, hundreds of pixels of dead vertical gap, overlapping/clipped row text ("whole fleet Ada Grace VegaMnemosyne Cli…" squeezed into one broken line), form controls floating in black. His words: "should it look like THAT?!? Now my eyes hurt." He is right, and this is the FIRST-RUN face: the panels are most likely to be opened while exploring, exactly when nothing else is running.
The census (view components vs skin files, measured)
apps/agentos/view/fleet/ vs resources/scss/src/apps/agentos/fleet/:
No SCSS at all:MailboxPane.mjs, MemoriesPane.mjs, WakeRoutePane.mjs, OperatorMailbox.mjs — four pane components ship structural markup only.
SCSS exists but renders defective:CatchUpPane.scss (the one skinned pane still shows agent-scope rows overlapping/clipping); AddAgentForm.scss (form chips render raw, giant gaps around the field groups).
The common denominator across ALL panels (including skinned ones): the pinned-drawer SHELL — the container hosting Agent detail / Perspectives / Add agent / Catch up / Memories / Wake routes / Operator — has no layout contract of its own: no header treatment, no section rhythm, no gap discipline. Even a skinned child renders inside an unstyled well, which is why every panel shows the same dead-space signature.
Acceptance Criteria
The pinned-drawer shell gets its own skin contract: header row (title + pin affordance), content well with a defined vertical rhythm, and scroll behavior — so every hosted pane inherits a sane frame.
The four skinless panes (Mailbox, Memories, Wake routes, Operator mailbox) receive SCSS skins consistent with the existing fleet look (AgentCard/FleetGrid/ActivityStream are the reference idiom — SCSS token/skin layers only, zero CSS-in-JS).
CatchUpPane's agent-scope row no longer overlaps/clips (the row is a wrapping chip set, not a single squeezed line).
AddAgentForm's field groups and harness chips sit in the drawer's rhythm (no unexplained multi-hundred-px gaps).
Empty/awaiting states inside panels ("Pick an agent…", "Catch-up source unavailable.", "Mailbox feed not wired") render as designed quiet-state rows, not bare paragraphs.
Verified in the offline topology (static server, no fleet server) — the degraded view IS the first-run view and is the acceptance surface.
Out of Scope
The per-card "Roster not nominal · malformed source fact" alarm on the static roster (sibling ticket — that is a data/validation defect plus a degraded-state design question, different surface). C3 render-state semantics (#16744) — this ticket is skin and layout, not state vocabulary.
Related
#13015 (FM umbrella) · #16744 (C3 render states) · the C2 leg-2 pane work consumes the same drawer surface.
Live latest-open sweep: latest 8 checked 2026-08-15T20:1xZ (nearest: #17207/#17204/#17203 — process/test surfaces, no overlap); no equivalent. A2A claim sweep: current-hour window clean.
Origin: operator escalation (screenshots on session dd4568bd) · Retrieval Hint: "FM side panel skins pinned drawer shell text dump catch up memories wake routes operator"
tobiu referenced in commit ad3706b - "feat(agentos): FM drawer-shell skin contract + the four missing pane skins (#17209) (#17219) on Aug 16, 2026, 9:17 PM
Context
Operator escalation with screenshots, 2026-08-15 evening: opening the AgentOS cockpit's side panels (Memories, Catch up, Wake routes, Operator) renders unstyled text dumps — raw headings, hundreds of pixels of dead vertical gap, overlapping/clipped row text ("whole fleet Ada Grace VegaMnemosyne Cli…" squeezed into one broken line), form controls floating in black. His words: "should it look like THAT?!? Now my eyes hurt." He is right, and this is the FIRST-RUN face: the panels are most likely to be opened while exploring, exactly when nothing else is running.
The census (view components vs skin files, measured)
apps/agentos/view/fleet/vsresources/scss/src/apps/agentos/fleet/:MailboxPane.mjs,MemoriesPane.mjs,WakeRoutePane.mjs,OperatorMailbox.mjs— four pane components ship structural markup only.CatchUpPane.scss(the one skinned pane still shows agent-scope rows overlapping/clipping);AddAgentForm.scss(form chips render raw, giant gaps around the field groups).Acceptance Criteria
Out of Scope
The per-card "Roster not nominal · malformed source fact" alarm on the static roster (sibling ticket — that is a data/validation defect plus a degraded-state design question, different surface). C3 render-state semantics (#16744) — this ticket is skin and layout, not state vocabulary.
Related
#13015 (FM umbrella) · #16744 (C3 render states) · the C2 leg-2 pane work consumes the same drawer surface.
Live latest-open sweep: latest 8 checked 2026-08-15T20:1xZ (nearest: #17207/#17204/#17203 — process/test surfaces, no overlap); no equivalent. A2A claim sweep: current-hour window clean.
Origin: operator escalation (screenshots on session dd4568bd) · Retrieval Hint: "FM side panel skins pinned drawer shell text dump catch up memories wake routes operator"