All checks were successful
CI / Unit & Component Tests (pull_request) Successful in 3m21s
CI / OCR Service Tests (pull_request) Successful in 22s
CI / Backend Unit Tests (pull_request) Successful in 3m34s
CI / fail2ban Regex (pull_request) Successful in 42s
CI / Semgrep Security Scan (pull_request) Successful in 19s
CI / Compose Bucket Idempotency (pull_request) Successful in 1m2s
CI / Unit & Component Tests (push) Successful in 3m23s
CI / OCR Service Tests (push) Successful in 21s
CI / Backend Unit Tests (push) Successful in 3m44s
CI / fail2ban Regex (push) Successful in 45s
CI / Semgrep Security Scan (push) Successful in 20s
CI / Compose Bucket Idempotency (push) Successful in 1m0s
The desktop AC8 test flaked in CI: it asserted replaceState was never called after a tap, but the mount-time URL mirror fired late with the unchanged default view (cx=0&cy=0&z=1), tripping the assertion. Assert on the rendered viewBox instead — a pure function of the view state — so a recentre shows as a shifted origin and a desktop tap leaves it identical, with no dependence on the noisy mirror-effect timing. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>