LearnNewsExamplesServices
Frontmatter
id15649
titleFM cockpit tab-body theme leak + card breakpoint content-box error
stateClosed
labels
bugdesignai
assigneesneo-kimi-phoebe
createdAtJul 21, 2026, 9:08 PM
updatedAtJul 21, 2026, 10:45 PM
githubUrlhttps://github.com/neomjs/neo/issues/15649
authorneo-kimi-phoebe
commentsCount1
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtJul 21, 2026, 10:45 PM

FM cockpit tab-body theme leak + card breakpoint content-box error

Closed Backlog/active-chunk-8 bugdesignai
neo-kimi-phoebe
neo-kimi-phoebe commented on Jul 21, 2026, 9:08 PM

Context

Live post-merge NL inspection of the FM cockpit (Build Week film surface) surfaced a three-link defect chain in the merged evolved-D AgentCard + cockpit shell (#15536, #15565, #15629, #15633 arc). The operator's framing: "nice dark blue + ugly gray borders". Emmy root-caused the chain end-to-end and handed it over with exact receipts.

Live latest-open sweep: checked latest 20 open issues at 2026-07-21 ~19:10Z; no equivalent found. A2A in-flight claim sweep (last 60 min): no competing claim — Emmy assigned three tasks to me via A2A.

The Problem (three linked defects)

1. Tonal leak — generic tab body renders stock-theme olive inside the FM surface. .fm-fleet-cockpit is rgb(11,14,19); Fleet toolbar rgb(14,19,26) with rgb(38,47,61) line; AgentCard rgb(20,26,35) with rgb(28,36,47) line. But the Fleet Neo.tab.BodyContainer is stock-theme rgb(14,15,13) with 1px rgb(69,75,66) right/bottom/left borders — the visible olive/gray rectangle. This is generic theme leakage, not an FM token choice. Sibling precedent exists: resources/scss/src/apps/workstation/Workspace.scss scopes .neo-tab-container > .neo-tab-body-container { background: transparent; border: 0; } and lets the application surface own the boundary.

2. Box-model breakpoint — the narrow rule fires ~30px early and creates the scarcity it claims to solve. The SCSS comment says narrow <320px card, but container size queries evaluate the content box: 328 outer − 28px horizontal padding − 2px border = 298 content, so @container (max-width:319px) classifies a 328 card as narrow. At that state the rule both hides .fm-card-engine (model family — which the operator says plainly has capacity there) AND inflates both controls 32→44px (action group 94px = 31.5% of the 298px head). Product rule (operator): capacity-driven degradation — at 328/298 keep the model and compact controls; only omit the model once truthful identity/actions cannot coexist at a materially narrower card. Emmy's arithmetic points at a content-box equivalent ~289px threshold, but that must be falsified against real 294/319/320/328 outer renders before adoption.

3. Evidence + test gap — the visual matrix misses the transition. AgentCardSynthesisRenderNL.spec.mjs CARD_WIDTHS is only 294/360/720 and its prose repeats narrow <320: it proves both stable endpoints but never exercises the box-model boundary. The Retina-corrected geometry also belongs in the matrix: ~271 CSS px detail-pane and ~314 CSS px whole-cockpit captures (physical 542/628 px on a Retina seat), plus the 328px card state. At ~270 the title + provenance pill needs a deliberate wrap/stack/truncation choice — not incidental flex competition producing a two-line title.

The Fix

  1. Scope the workstation tab-body precedent into FM/AgentOS SCSS only (background: transparent; border: 0 on the Fleet tab body container). No framework-theme change.
  2. Correct the narrow breakpoint to content-box semantics; per the capacity rule, restore model visibility + compact (32px) controls at the 328/298 state. Falsify the exact threshold against real renders at 294/319/320/328 outer first.
  3. Extend AgentCardSynthesisRenderNL.spec.mjs: boundary receipt widths (minimal set around the final threshold), semantic guards for model visibility + action-group geometry/capacity, and refresh the cockpit visual goldens after the tonal fix (incl. a new ~314 whole-cockpit capture).

Scope amendment (2026-07-21, operator-polish findings via Emmy)

Two leaves added before implementation (A2A scope-required receipt):

  1. FM-scoped active tab indicator — the keeper-view nav's active tab strip (--tab-indicator-background-color-active, stock neutral-contrast white) becomes the FM signal token, shell scope only; the framework token itself is untouched.
  2. Quiet pop-out hierarchy.fm-detail-window-toggle joins the cockpit bar's quiet, panel-toned base (the ledger D1 hierarchy); Start fleet remains the sole signal/primary action.

The generic DockRail equal-flex defect is explicitly OUT of this ticket — separate narrow ticket/PR owned by Emmy (four-edge geometry proof). The ~271 detail-pane geometry moved to #15652 (Emmy's lane). The Accounts visual-test rot moved to #15651 (pre-existing since #15503, filed separately).

Acceptance Criteria

  • Fleet tab body renders the FM surface (no stock olive surface/borders) — both themes, with receipts
  • 328-outer card shows model family + compact controls; the narrow classification only fires where identity+actions genuinely cannot coexist
  • Boundary receipts at the chosen threshold set prove model visibility + action-group capacity; 294 stays narrow, 328 stays regular
  • Active tab indicator reads as FM signal in the keeper-view nav (no stock white strip)
  • Pop-out toggle is quiet/secondary on the cockpit bar; Start fleet remains the sole signal/primary
  • ~314 whole-cockpit receipt captured (the Retina-corrected geometry)
  • No framework-theme or Workstation-app regression (sibling scopes untouched)

Out of Scope

  • A full responsive redesign (the box-model correction preserves the good existing design, per the root hypothesis)
  • #15634 fleet surface items (badge honesty, grid scroll, rail hover — Iris's lane)

Avoided Traps

  • Global theme patch — the leak is a scope problem, not a theme defect; the fix mirrors the Workstation precedent inside FM scope only.
  • Blind 289 — the arithmetic threshold is a hypothesis until falsified against real renders at the boundary set.
  • Absolute "engine never hides" — the operator's refinement is conditional hide at genuinely constrained width, not an absolute.

Related

  • #15536 (design conformance epic), #15565 (evolved-D synthesis), #15629 / #15633 (film-floor rounds), #14618 (visual baseline)
  • resources/scss/src/apps/workstation/Workspace.scss (tab-body precedent)

Origin Session ID: d8a51237-4fcc-4171-8071-a391da0be361

Retrieval Hint: "FM tab body olive leak AgentCard container query content-box 319 328 breakpoint"