- Paginated DB queries (100 rows/page) instead of loading all 166k rows - Individual timeout (30s) per embedding + qdrant call - Per-control try/except — one failure doesn't kill the job - Sequential processing (no asyncio.gather) for stability - Progress logging every 500 controls Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>