S01 Accessibility and Performance Acceptance Gates
Status: SUPERSEDED for the current UI gate (2026-07-13); historical acceptance plan Date: 2026-02-20
Working directory: docs/modules/ui/v2-rewire
Use the directory currency notice for current navigation and route tests.
Purpose
Define mandatory pass/fail gates for the navigation shell, global scope controls, search, and run-centric release surfaces.
Accessibility gates (must pass)
| Area | Gate | Pass criteria |
|---|---|---|
| Keyboard entry points | Ctrl+K opens search, Escape closes active search/scope overlays | Works from any authenticated shell page without focus traps. |
| Scope controls | Region, Environment, Time Window controls are keyboard-operable on desktop and tablet/mobile | Scope panel is reachable via topbar Scope button and supports Tab, Enter, Space, Escape. |
| Focus visibility | Shell controls have visible focus treatment | Focus ring contrast ratio >= 3:1 against adjacent background. |
| Nav semantics | Sidebar and topbar expose valid navigation landmarks | Screen readers announce main nav and scope dialog labels correctly. |
| Status/degraded messaging | Degraded state banner is announced and actionable | Impact (BLOCKING, DEGRADED, INFO) and retry action are readable by assistive tech. |
Performance gates (must pass)
| Area | Gate | Pass criteria |
|---|---|---|
| Shell route transitions | Canonical root navigation (/dashboard, /releases, /security, /evidence, /topology, /platform) | Route-to-render under 500ms median in local CI profile build. |
| Search interaction | Debounced global search | Input-to-result update <= 300ms median for cached responses and <= 800ms for uncached responses. |
| Scope URL sync | Context change URL patching | No duplicate navigations/loops; one URL update per scope mutation. |
| Run detail live refresh | Active run polling cadence | Poll interval 15s with no overlapping requests; terminal runs stop polling. |
| Mobile shell | Scope panel render | Scope panel opens in <= 200ms and does not trigger layout overflow at <= 1199px width. |
Required checks per sprint close
- Run unit tests covering updated contracts:
src/tests/global_search/global-search.component.spec.tssrc/tests/context/platform-context-url-sync.service.spec.tssrc/tests/navigation/legacy-route-telemetry.service.spec.tssrc/tests/releases/release-detail.live-refresh.spec.ts
- Run route integrity checks:
src/tests/navigation/nav-model.spec.tssrc/tests/navigation/nav-route-integrity.spec.tssrc/tests/navigation/legacy-redirects.spec.ts
- Execute one manual keyboard walkthrough on desktop and <= 1199px layout for:
- Scope controls
- Global search
- Run detail degraded banner retry action
If any gate fails, sprint closure remains BLOCKED until evidence of fix is logged in docs/implplan/SPRINT_*.md.
