The lease predicate's `state='running' AND leased_until < now()` arm had no index, so every lease poll seq-scanned the whole crawler_jobs table (audit H2). migration 0039 adds a partial index on (leased_until) WHERE state='running'. Behavior-neutral; 29 lease tests green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>