Some checks failed
CI / Unit & Component Tests (push) Failing after 3m58s
CI / OCR Service Tests (push) Successful in 38s
CI / Backend Unit Tests (push) Failing after 3m20s
CI / Unit & Component Tests (pull_request) Failing after 4m5s
CI / OCR Service Tests (pull_request) Successful in 48s
CI / Backend Unit Tests (pull_request) Failing after 3m15s
Math.abs(Integer.MIN_VALUE) overflows back to Integer.MIN_VALUE (negative), making the old pattern unsafe for any palette size that doesn't evenly divide MIN_VALUE. Math.floorMod always returns a non-negative residue in [0, n-1], eliminating the overflow edge case entirely. Fixes SpotBugs RV_ABSOLUTE_VALUE_OF_HASHCODE (priority 1, CORRECTNESS). Closes #471 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>