Skip to content

DL-220

The Bridge 2-D cursor model — stops are cards + gutter heads (gutter = column −1, swimlane only, non-null agents), never cells; empty (dim) cells skipped; Up/Down column-flattened through card stacks, Left/Right row-wise with an indexInCell clamp (a named non-reversible asymmetry), Home/End = column first/last, edges clamp (no wrap); focus is distinct from selection (cursor moves focus, Enter selects); no ARIA grid role on the sparse board — stops stay <button>s with roving tabindex + per-card positional aria-label and a container aria-roledescription="kanban board". PR-card stop ids are composite (issue.id::repo#number) because an issue with two non-closed PRs (open + merged, per DL-196) yields two rows sharing issue.id.

Status: Active (Matt, 2026-08-21)

Record: ../../ui/compass-bridge-keyboard-nav/design.md#the-2-d-sparse-grid-cursor-model