All checks were successful
CI / Backend Unit Tests (pull_request) Successful in 5m44s
CI / fail2ban Regex (pull_request) Successful in 52s
CI / Semgrep Security Scan (pull_request) Successful in 25s
CI / Compose Bucket Idempotency (pull_request) Successful in 1m11s
CI / Unit & Component Tests (pull_request) Successful in 4m55s
CI / OCR Service Tests (pull_request) Successful in 26s
The DB CHECK chk_timeline_event_range enforces only the presence biconditional (eventDateEnd non-null IFF RANGE), not date ordering, so a RANGE event with eventDateEnd before eventDate persisted silently and rendered as a negative span. validateRangeInvariant now also rejects end-before-start (INVALID_DATE_RANGE); equal dates remain a valid one-day closed range. Also compute effectivePrecision once per create/update and thread it into validateRangeInvariant and applyUpdate instead of recomputing. Addresses review of #822 (#775). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>