Context
Merged PR #18019 made the rail reveal header use real tab-header primitives. On current dev, an operator-captured Workstation reveal exposed two regressions in the complete preview surface:
Dependency Graph Explorer overflows the narrow left reveal header and visually collides with chrome outside the preview.
- A bottom reveal is shallow and visually merges with the pane underneath: the reveal root has neither an opaque surface nor elevation, so the covered header remains legible through it.
Live inspection on 2026-09-01 found the title button resolving flex: 0 1 auto, white-space: nowrap, overflow: visible, and text-overflow: clip. Its VDOM contains the long title. The existing tab system already owns the correct over-wide active-tab treatment in .neo-tab-overflow-capped; the reveal composition simply does not opt into it.
Memory prior art: session 8c150fe3-e8a4-4475-8694-a6f92115dce9 established that overlap defects require real rect-intersection/containment evidence, not crop-only or scroll-width probes.
The Problem
The preview is an edge-anchored overlay by design, but it does not read as one:
- Its active-tab title can paint outside its flex allocation.
- Its root is transparent and has no box shadow, so an underlying tab header bleeds into the reveal header.
- Its free dimension comes from the last committed owning edge-zone
extent; only an absent extent falls back to defaultRevealFraction (25%). A previously narrow dock band therefore creates a narrow reveal with no usability floor.
The three symptoms compound: a small, transparent, unelevated pane with escaping text reads as accidental overlap rather than a deliberate transient preview.
The Architectural Reality
src/dashboard/dock/interaction/RevealOverlay.mjs owns transient composition, visibility, and free-dimension sizing.
src/dashboard/dock/projection/LayoutAdapter.mjs#resolveRevealExtent() correctly reads only the owning edge descriptor; nested split shares are not preview-size authority.
resources/scss/src/tab/header/Button.scss already owns the active-tab ellipsis contract through .neo-tab-overflow-capped.
resources/scss/src/dashboard/Container.scss owns engine reveal structure; resources/scss/src/apps/workstation/Workspace.scss owns Workstation-specific visual values.
- A reveal is non-modal hover/focus chrome. A workspace-wide dimmer would overstate modality and flash on pointer dwell, so this leaf uses surface opacity and elevation instead.
Decision Record impact: none; aligned with the transient overlay model in ADR 0029.
The Fix
- Mark the reveal title button with the existing tab overflow-cap variant. Do not duplicate the ellipsis CSS.
- Treat
defaultRevealFraction as both fallback and minimum: effective = max(committedExtent, defaultRevealFraction). Preserve larger committed extents exactly.
- Let Workstation supply
defaultRevealFraction: 0.35 through its existing getDockProjectionOptions() hook; generic consumers retain the engine default.
- Add tokenized physical floors capped by the available workspace. Workstation supplies 20rem inline / 16rem block so a phone-width viewport does not turn 35% into a 147px pane.
- Give the reveal root an opaque engine surface plus tokenized border/shadow; Workstation supplies its signal-aware values. Keep the overlay pointer model unchanged and add no full-workspace scrim.
- Add full-surface visual/geometry coverage using a deliberately long title and a narrow committed extent. Assertions must include overlay boundaries and the covered neighboring header, not only the title row.
Acceptance Criteria
Out of Scope
- Changing committed dock-zone extents or relaying out the workspace during reveal.
- Adding modal pointer capture or a full-workspace backdrop/dimmer.
- Replacing the tab-header primitives introduced by #18019.
Avoided Traps
- A title-only screenshot can pass while the complete preview escapes its boundary; assert rect containment and capture the entire overlay against neighboring content.
- New reveal-specific ellipsis rules would duplicate
.neo-tab-overflow-capped.
- Borrowing nested split sizes would violate the owning edge-descriptor contract.
Related
Live duplicate sweep: latest open issues and recent A2A claims re-checked immediately before creation; no equivalent found.
Origin Session ID: 01a0534f-a981-7560-93de-8d3d54966db6
Retrieval Hint: Dock RevealOverlay long title containment transparent preview surface minimum extent
Context
Merged PR #18019 made the rail reveal header use real tab-header primitives. On current
dev, an operator-captured Workstation reveal exposed two regressions in the complete preview surface:Dependency Graph Exploreroverflows the narrow left reveal header and visually collides with chrome outside the preview.Live inspection on 2026-09-01 found the title button resolving
flex: 0 1 auto,white-space: nowrap,overflow: visible, andtext-overflow: clip. Its VDOM contains the long title. The existing tab system already owns the correct over-wide active-tab treatment in.neo-tab-overflow-capped; the reveal composition simply does not opt into it.Memory prior art: session
8c150fe3-e8a4-4475-8694-a6f92115dce9established that overlap defects require real rect-intersection/containment evidence, not crop-only or scroll-width probes.The Problem
The preview is an edge-anchored overlay by design, but it does not read as one:
extent; only an absent extent falls back todefaultRevealFraction(25%). A previously narrow dock band therefore creates a narrow reveal with no usability floor.The three symptoms compound: a small, transparent, unelevated pane with escaping text reads as accidental overlap rather than a deliberate transient preview.
The Architectural Reality
src/dashboard/dock/interaction/RevealOverlay.mjsowns transient composition, visibility, and free-dimension sizing.src/dashboard/dock/projection/LayoutAdapter.mjs#resolveRevealExtent()correctly reads only the owning edge descriptor; nested split shares are not preview-size authority.resources/scss/src/tab/header/Button.scssalready owns the active-tab ellipsis contract through.neo-tab-overflow-capped.resources/scss/src/dashboard/Container.scssowns engine reveal structure;resources/scss/src/apps/workstation/Workspace.scssowns Workstation-specific visual values.Decision Record impact: none; aligned with the transient overlay model in ADR 0029.
The Fix
defaultRevealFractionas both fallback and minimum:effective = max(committedExtent, defaultRevealFraction). Preserve larger committed extents exactly.defaultRevealFraction: 0.35through its existinggetDockProjectionOptions()hook; generic consumers retain the engine default.Acceptance Criteria
Out of Scope
Avoided Traps
.neo-tab-overflow-capped.Related
Live duplicate sweep: latest open issues and recent A2A claims re-checked immediately before creation; no equivalent found.
Origin Session ID:
01a0534f-a981-7560-93de-8d3d54966db6Retrieval Hint:
Dock RevealOverlay long title containment transparent preview surface minimum extent