Geo: Add backfill, functional index, database trigger, and replicator switch for job artifact verification summaries
Backfill (post-deploy migration):
- Inserts 100k summary rows (buckets 0-99,999) with state: dirty and zero counts
- Batches of 1,000 inserts
Functional index:
- CREATE INDEX ON ci_job_artifact_states ((job_artifact_id % 100000))
- Enables bitmap index scan for calculator queries (~60ms vs ~6.7s without)
DB trigger:
- Fires on INSERT, UPDATE OF verification_state, or DELETE on ci_job_artifact_states
- Calculates bucket number (job_artifact_id % 100,000)
- Marks that bucket as dirty in summaries table
Replicator switch (automatic, no FF needed):
- checksummed_count → SUM(verified_count) from summaries
- checksum_failed_count → SUM(failed_count) from summaries
- checksum_total_count → SUM(total_count) from summaries
- Auto-detects: only switches when clean summaries exist, otherwise falls back to batch_count
**Part of:** #512646
task