Context
Tree line D2 (#13158 map). The rail (#14654) recalls hidden items; this leaf is the INTERACTION contract per ADR 0029 §2.7: hovering an edge tab reveals the pane as an overlay, pointer-away (with grace timing) dismisses, pinning escapes to docked state.
The Problem
Reveal/dismiss timing is where auto-hide UIs die (flicker on pass-through, sticky overlays, lost panes). The contract must be explicit: reveal trigger, dismiss conditions, grace periods as DESIGN constants (not magic numbers), and interaction with focus (a focused revealed pane never auto-dismisses).
The Architectural Reality
Render-projection layer only (§2.1 classes): reveal state is per-window ephemeral; the pin action routes setItemAutoHidden(false) through the executor. Focus-hold rule composes with the a11y leaf (I1). Placement: with the rail component (src/dashboard/ sibling).
The Fix
One PR: the reveal/dismiss state machine on the rail + overlay host + focus-hold + spec coverage (hover-in/out timing via fake timers, focus-hold, pin escape routes executor).
Acceptance Criteria
Out of Scope
Overlay-vs-push disposition (D3) · rail rendering (#14654) · styling (F-tranche).
Related
Parent #13158 (line D2) · blocked_by #14654 · authority ADR 0029 §2.7/§2.1. Sweeps: latest-8 at 03:47Z clean; line unclaimed.
Origin Session ID: fa2a6fd5-7488-4af6-a0d2-3855c86003e4
Retrieval Hint: "auto-hide reveal dismiss state machine focus hold"
Context
Tree line D2 (#13158 map). The rail (#14654) recalls hidden items; this leaf is the INTERACTION contract per ADR 0029 §2.7: hovering an edge tab reveals the pane as an overlay, pointer-away (with grace timing) dismisses, pinning escapes to docked state.
The Problem
Reveal/dismiss timing is where auto-hide UIs die (flicker on pass-through, sticky overlays, lost panes). The contract must be explicit: reveal trigger, dismiss conditions, grace periods as DESIGN constants (not magic numbers), and interaction with focus (a focused revealed pane never auto-dismisses).
The Architectural Reality
Render-projection layer only (§2.1 classes): reveal state is per-window ephemeral; the pin action routes
setItemAutoHidden(false)through the executor. Focus-hold rule composes with the a11y leaf (I1). Placement: with the rail component (src/dashboard/sibling).The Fix
One PR: the reveal/dismiss state machine on the rail + overlay host + focus-hold + spec coverage (hover-in/out timing via fake timers, focus-hold, pin escape routes executor).
Acceptance Criteria
Out of Scope
Overlay-vs-push disposition (D3) · rail rendering (#14654) · styling (F-tranche).
Related
Parent #13158 (line D2) · blocked_by #14654 · authority ADR 0029 §2.7/§2.1. Sweeps: latest-8 at 03:47Z clean; line unclaimed. Origin Session ID: fa2a6fd5-7488-4af6-a0d2-3855c86003e4 Retrieval Hint: "auto-hide reveal dismiss state machine focus hold"