All checks were successful
CI / Unit & Component Tests (pull_request) Successful in 3m20s
CI / OCR Service Tests (pull_request) Successful in 22s
CI / Backend Unit Tests (pull_request) Successful in 3m42s
CI / fail2ban Regex (pull_request) Successful in 46s
CI / Semgrep Security Scan (pull_request) Successful in 22s
CI / Compose Bucket Idempotency (pull_request) Successful in 1m7s
The error block was a colour-only, visually-small dead end. Add role="alert" so screen readers announce the failure, bump the message to text-base and the recovery download link to text-sm with a py-2 tap target — the only escape hatch, sized for the archive's older readers. Addresses re-review: Leonie (a11y of the error state). Refs #708 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>