Context
Epic #15239 leaf — D#15204 OQ8 [RESOLVED_TO_AC] (cycle-4): the keyboard path is a named leaf, never silently pending and never folded into G1/G4. The explicit detach command doubles as the always-works acquisition fallback (Axis-1's fourth option: fresh activation by definition — a keystroke IS a user activation). Unowned — self-select.
The Problem
The five-beat story is pointer-only as designed. Keyboard users need parity for: detaching an item to a popup, selecting a target (window + zone), transferring focus with the moved item, and returning it — and pointer users on a platform where the matrix (#15243) shows boundary-acquisition failing need the same command as the documented fallback.
The Architectural Reality
- The dock model side is COMMAND-shaped already:
detachItem (ADR 0029 §2.1 / ADR 0020) and transferItem are semantic operations — no pointer required; this leaf builds the interaction surface, not new model capability.
- Focus transfer across real OS windows:
window.focus() rides user activation (a keystroke provides it); the admission truth (windowOpen Boolean) applies to the command path identically.
- Target selection UX composes with the shared
#15207 affordance consumer (the §06 menu is the visual for cycle-through selection).
- Blocked-by:
#15244 (G1's dock detach semantics are the substrate the command drives) + #15245 (the fallback contract this implements).
The Fix
One PR: the keyboard command surface — detach (item → popup), target cycle (windows/zones with visible affordance highlighting through the shared consumer), commit, and return — plus focus-transfer discipline and the a11y announcements.
Acceptance Criteria (the graduated OQ8 disposition)
Out of Scope
Pointer gestures (G1–G4) · re-designing dock focus management wholesale (only the transfer discipline this path needs).
Related
Parent #15239 · blocked-by #15244 + #15245 · D#15204 (OQ8; Axis-1 explicit-command row) · ADR 0029 §2.1 / ADR 0020 (the command-shaped model ops).
Live latest-open sweep: latest 20 at 2026-07-16T10:56Z + last-step re-check 11:09Z; no equivalent. A2A claim sweep: no competing claim.
Origin Session ID: c5d7cd6b-4e01-45fd-aa59-5ccbc0e5f091
Retrieval Hint: "keyboard detach a11y parity explicit command focus transfer OQ8"
Context
Epic
#15239leaf — D#15204 OQ8[RESOLVED_TO_AC](cycle-4): the keyboard path is a named leaf, never silently pending and never folded into G1/G4. The explicit detach command doubles as the always-works acquisition fallback (Axis-1's fourth option: fresh activation by definition — a keystroke IS a user activation). Unowned — self-select.The Problem
The five-beat story is pointer-only as designed. Keyboard users need parity for: detaching an item to a popup, selecting a target (window + zone), transferring focus with the moved item, and returning it — and pointer users on a platform where the matrix (
#15243) shows boundary-acquisition failing need the same command as the documented fallback.The Architectural Reality
detachItem(ADR 0029 §2.1 / ADR 0020) andtransferItemare semantic operations — no pointer required; this leaf builds the interaction surface, not new model capability.window.focus()rides user activation (a keystroke provides it); the admission truth (windowOpenBoolean) applies to the command path identically.#15207affordance consumer (the §06 menu is the visual for cycle-through selection).#15244(G1's dock detach semantics are the substrate the command drives) +#15245(the fallback contract this implements).The Fix
One PR: the keyboard command surface — detach (item → popup), target cycle (windows/zones with visible affordance highlighting through the shared consumer), commit, and return — plus focus-transfer discipline and the a11y announcements.
Acceptance Criteria (the graduated OQ8 disposition)
#15240outcome machine (cancel = zero model mutation).#15245's degradation target) — witnessed once as that fallback.Out of Scope
Pointer gestures (G1–G4) · re-designing dock focus management wholesale (only the transfer discipline this path needs).
Related
Parent
#15239· blocked-by#15244+#15245· D#15204 (OQ8; Axis-1 explicit-command row) · ADR 0029 §2.1 / ADR 0020 (the command-shaped model ops).Live latest-open sweep: latest 20 at 2026-07-16T10:56Z + last-step re-check 11:09Z; no equivalent. A2A claim sweep: no competing claim.
Origin Session ID: c5d7cd6b-4e01-45fd-aa59-5ccbc0e5f091 Retrieval Hint: "keyboard detach a11y parity explicit command focus transfer OQ8"