Handle expiry without an inaccessible countdown trap
A slow form session expires after details are entered. The countdown steals focus every second, and Extend reports success after the server session has ended.
- Focused work estimate
- 3h 30m + prerequisites
- Priority in the scenario
- High
- Engineering practice
- Session lifecycle · Accessibility · Race conditions
Estimated field mix
- Accessibility50%
- Frontend30%
- Backend20%
Field percentages are editorial estimates of the ticket's engineering focus. They total 100%; they are not measured time, proficiency scores, or ownership evidence.
Review it, then add it to your workspace.
The board opens an editable draft; nothing is saved until you confirm it. Sign-in and workspace permissions apply, and Demo boards remain ephemeral.
Project context
The fictional Riverside desk books appointments for permit paperwork and library assistance. Its browser flow was assembled from separate forms and dialogs. Work uses synthetic availability and booking adapters; actual appointments and personal records are excluded.
Setup prerequisites
- Synthetic services, slots, and booking API contract
- Keyboard and screen-reader access for a documented manual check
Preceding work
Complete these dependencies, or supply their agreed outputs before taking this ticket.
- A11Y-102 · Keep contact-field help and errors understandable together
- A11Y-101 · Replace clickable service tiles with a named selection group
- A11Y-103 · Make month navigation work without a pointer
- A11Y-105 · Recover when another visitor takes the chosen slot
- A11Y-106 · Announce availability changes without reading the whole page again
Acceptance criteria
- Advance warning offers an accessible extension action without announcing each second.
- Extension success requires server confirmation and preserves the active form location.
- Expiry or uncertain extension preserves a scoped draft but requires session recovery and fresh slot validation before booking.
Implementation constraints
- Use a fake clock and session adapter; do not weaken expiry or record contact data in analytics.
Verification to include
- Extend before expiry by keyboard and verify confirmed continuation with focus restoration.
- Race expiry and a lost extension response; expired authority cannot book, and recovery revalidates the slot.
Deliverables
- Session continuity state machine and expiry-race walkthrough
Rollout and recovery
Pilot against short synthetic sessions; disable booking under ambiguous session authority while preserving recoverable drafts.
Value of the work
For the engineer: Practice accessibility as complete interaction behavior, including recovery and asynchronous updates.
For the team: Inspect whether an engineer removes concrete barriers while preserving appointment integrity and supportability.
Evidence boundaries
Outcome Evidence: Tests, patches, and runbooks are requested deliverables. They become Outcome Evidence only through a qualified Mission and immutable Evidence IDs.
Ownership Evidence: Independent adaptation must be observed under a declared verification policy and cite immutable Evidence IDs. Completing a planning ticket establishes no Ownership Evidence.