Context
Operator's screen recording, 2026-09-26 11:56, at 00:03 and 00:12: the tear-out vessel during the drag shows a tall plain "Metrics" / "Commits" tab header, while the committed popup (00:10, 00:17) shows the compact dock tab header. Measured headless (ScratchVesselChromeNL, untracked): during the birth dwell the vessel's .neo-tab-header-toolbar is 49 px with a 48 px button; after the terminal the committed popup's toolbar is 33 px with a 32 px button. The chains differ in exactly the classes the dock projection adds:
- pre-terminal:
div.neo-tab-container-plain.workstation-vessel-provisional-chrome.neo-tab-container.neo-top under .workstation-viewport.workstation-popout-host
- committed:
div.neo-tab-container-plain.neo-dashboard-dock-tabs.neo-tab-container.neo-tab-container-inline.neo-top under .neo-dashboard-dock-edge-zone.neo-dashboard under .workstation-vessel-dock-host
The Problem
apps/workstation/view/VesselWorkspace.mjs resolveVesselStageTarget (~:836) creates the provisional chrome as a bare DockTabContainer with cls: ['workstation-vessel-provisional-chrome'] and no ui. The dock projection (src/dashboard/dock/projection/LayoutAdapter.mjs ~:1262-1268) projects every dock tab strip with cls: ['neo-dashboard-dock-tabs'] and ui: 'inline' — "the compact, flush variant" (src/dashboard/dock/interaction/TabContainer.mjs:46) — whose .neo-tab-container-inline > .neo-tab-header-toolbar rules (resources/scss/src/tab/Container.scss:16,80) give the 32 px header. Without the variant the stock theme's min-width: var(--cmp-button-height) (48 px) floor wins. The pre-terminal vessel is meant to look like the window it becomes (#19210); it looks like a different component for the whole drag.
Design authority
#19210: "A born vessel shows its staged pane in dock chrome from the first frame" — the chrome is defined as the committed projection's; the operator's recording shows the two still differ. No record sentence changes.
The Fix
resolveVesselStageTarget: create the provisional chrome with ui: 'inline' and cls: ['neo-dashboard-dock-tabs', 'workstation-vessel-provisional-chrome'] (the projection's own pair, so the popup's Viewport.scss rules — --tab-header-inline-background-image, the toolbar ground — apply as they do after the terminal). If the compact height also depends on the .neo-dashboard-dock-edge-zone / .workstation-vessel-dock-host ancestors rather than the container's classes alone, the stage target wraps the chrome in the same host classes; the measurement decides.
Acceptance Criteria
- AC-1 (unit, red-first):
Workspace.spec.mjs › "a vessel's stage target is a provisional tab chrome…" also asserts ui === 'inline' and the neo-dashboard-dock-tabs class on the created chrome.
- AC-2 (headless, receipt in the PR): the pre-terminal vessel's toolbar and button heights equal the committed popup's (33 / 32 px) on the same tree.
- AC-3 (CI):
unit/apps/workstation green.
Out of Scope
- #19248 (the target-side proxy is the tab header) — the other window.
- #19186 (the park's z-order under a real drag).
Related
#19210 / PR #19214 (provisional chrome), #19248, #19186.
Live latest-open sweep: latest 20 open issues at 2026-09-26T10:06:07Z, no equivalent. A2A sweep (last 10 at 10:04Z): none on this surface. Memory sweep: the recording's frame reads. Own-assignment sweep: #19248, #19245, #19186 — none covers it.
Origin Session ID: 1dd49b26-0f42-462c-b0bc-ef28f26d9da5
Retrieval Hint: "provisional vessel chrome ui inline neo-dashboard-dock-tabs 48px header"
🪢 Mnemosyne (Claude Fable 5.1 · Claude Code) · session 1dd49b26-0f42-462c-b0bc-ef28f26d9da5
Context
Operator's screen recording, 2026-09-26 11:56, at 00:03 and 00:12: the tear-out vessel during the drag shows a tall plain "Metrics" / "Commits" tab header, while the committed popup (00:10, 00:17) shows the compact dock tab header. Measured headless (
ScratchVesselChromeNL, untracked): during the birth dwell the vessel's.neo-tab-header-toolbaris 49 px with a 48 px button; after the terminal the committed popup's toolbar is 33 px with a 32 px button. The chains differ in exactly the classes the dock projection adds:div.neo-tab-container-plain.workstation-vessel-provisional-chrome.neo-tab-container.neo-topunder.workstation-viewport.workstation-popout-hostdiv.neo-tab-container-plain.neo-dashboard-dock-tabs.neo-tab-container.neo-tab-container-inline.neo-topunder.neo-dashboard-dock-edge-zone.neo-dashboardunder.workstation-vessel-dock-hostThe Problem
apps/workstation/view/VesselWorkspace.mjsresolveVesselStageTarget(~:836) creates the provisional chrome as a bareDockTabContainerwithcls: ['workstation-vessel-provisional-chrome']and noui. The dock projection (src/dashboard/dock/projection/LayoutAdapter.mjs~:1262-1268) projects every dock tab strip withcls: ['neo-dashboard-dock-tabs']andui: 'inline'— "the compact, flush variant" (src/dashboard/dock/interaction/TabContainer.mjs:46) — whose.neo-tab-container-inline > .neo-tab-header-toolbarrules (resources/scss/src/tab/Container.scss:16,80) give the 32 px header. Without the variant the stock theme'smin-width: var(--cmp-button-height)(48 px) floor wins. The pre-terminal vessel is meant to look like the window it becomes (#19210); it looks like a different component for the whole drag.Design authority
#19210: "A born vessel shows its staged pane in dock chrome from the first frame" — the chrome is defined as the committed projection's; the operator's recording shows the two still differ. No record sentence changes.The Fix
resolveVesselStageTarget: create the provisional chrome withui: 'inline'andcls: ['neo-dashboard-dock-tabs', 'workstation-vessel-provisional-chrome'](the projection's own pair, so the popup'sViewport.scssrules —--tab-header-inline-background-image, the toolbar ground — apply as they do after the terminal). If the compact height also depends on the.neo-dashboard-dock-edge-zone/.workstation-vessel-dock-hostancestors rather than the container's classes alone, the stage target wraps the chrome in the same host classes; the measurement decides.Acceptance Criteria
Workspace.spec.mjs› "a vessel's stage target is a provisional tab chrome…" also assertsui === 'inline'and theneo-dashboard-dock-tabsclass on the created chrome.unit/apps/workstationgreen.Out of Scope
Related
#19210/ PR #19214 (provisional chrome), #19248, #19186.Live latest-open sweep: latest 20 open issues at 2026-09-26T10:06:07Z, no equivalent. A2A sweep (last 10 at 10:04Z): none on this surface. Memory sweep: the recording's frame reads. Own-assignment sweep: #19248, #19245, #19186 — none covers it.
Origin Session ID: 1dd49b26-0f42-462c-b0bc-ef28f26d9da5 Retrieval Hint: "provisional vessel chrome ui inline neo-dashboard-dock-tabs 48px header"
🪢 Mnemosyne (Claude Fable 5.1 · Claude Code) · session 1dd49b26-0f42-462c-b0bc-ef28f26d9da5