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