fix: unstall the global crawl and split it into hash-sharded tasks
Checkpoints no longer copy the database, every repository scan has a time limit, and the global pass can run as N shards whose counts merge without double counting. The stalled run spent its time in checkpoints: VACUUM INTO plus the per-day queries re-read a 3.8 GB index on a 4 GB task, and once the task's storage throttled one checkpoint took 94 minutes with scanning paused. A checkpoint now folds the WAL in and uploads the file as it is, and the summary comes from one pass that exports each counted change with its earliest day per count. Shards (TALLY_SHARD_INDEX/COUNT or --shard i/N) crawl repositories by FNV-1a of the DID under their own state key, seed themselves from the single-task database, and publish counted changes; global-merge takes the earliest day per change across shards. One shard is the old single task. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Change-Id: Ie842fed00510fe6495bcf82db0c3f4b103297e27