E5-F5: Queue Connection Resilience¶
Epic: E5: Waiting Queue System
Size: S (Small)
Problem / Outcome¶
Users don't lose position if connection drops briefly.
Scope¶
In-Scope:
- Position persists for 30 minutes after disconnect
- Reconnect restores original position
- Grace period expiration handling
Out-of-Scope:
- Indefinite persistence
Acceptance Criteria¶
- AC1: Given connection lost, position persists for 30 minutes
- AC2: On reconnect within 30 minutes, original position restored
- AC3: On reconnect after 30 minutes, position lost, user must rejoin
Data Model Impact¶
QueueEntry table:
- last_heartbeat (TIMESTAMP)
- grace_period_expires_at (TIMESTAMP, nullable)
- is_connected (BOOLEAN)
Heartbeat mechanism:
- Client sends heartbeat every 30 seconds
- Server marks disconnected after 60 seconds of no heartbeat
- Grace period starts on disconnect detection
Permissions/Roles¶
- System
How to Verify¶
npm test -- --grep "queue resilience"
Expected: Position retained within grace period.
Dependencies¶
Implementation Tasks¶
Doc References¶
Last Updated: January 2026