v0.2.1 - security and reliability hardening
Security fixes (see CHANGELOG.md for impact and operator action per item):
- frozen scoreboard leaked via getTeam/getUser (+ fail-safe freeze visibility)
- unauthenticated WebSocket denial of service (connection/handshake caps)
- instance extend after the event ended
- session revocation evadable via reverse-index drift
- registration blocked for venues on one NAT (per-IP sign-up limit, GitHub issue #1)
- registration/login burst could OOM the host via unbounded argon2id hashing
(concurrency-capped semaphore + 503/Retry-After load-shed, GitHub issue #3) - per-team bridge reclaimed after upgrade (network garbage collection)
- per-instance flags exposed via the admin submissions view (+ historical redaction, migration 0004)
Also: reliability fixes (reconcile clock skew, scheduler lock scope and port reaper,
graceful shutdown, WS/REST scoreboard consistency) and a large test-coverage expansion.
Operator action required on upgrade: the per-instance flag redaction (migration 0004,
runs on boot) and the WebSocket ulimit guidance. See the CHANGELOG "Security" and
"Upgrade notes" sections.