reduce turso read usage: indexes, cron-only enrichment, batch profiles endpoint
- remove enrichActors from ingest handler (was running every ~5s, scanning
3.4M rows 3x per invocation). enrichment now runs only on hourly cron.
- add indexes for enrichment queries (partial indexes on identity_checked_at,
profile_checked_at) and sync queries (updated_at, did) to eliminate full
table scans.
- add tombstones.deleted_at index for sync tombstone queries.
- add /xrpc/app.bsky.actor.getProfiles endpoint (bsky-compatible, up to 25
actors by DID or handle, no metrics recording).
- bump enrichment batch sizes (identity 100→500, pds 100→500, profile 75→250).
- rewrite bulk-enrich.py to use client-side filtering (cheap rowid reads,
skip already-enriched rows, tiny write batches).
- downsize fly.io VM from 512mb to 256mb.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>