generated from coulomb/repo-seed
Root cause: C2/C9/C10 each made a full HTTP round-trip back to the API (asyncio.to_thread → urllib → TCP → uvicorn → SQLAlchemy → DB) for every repo. 16 repos × 3 calls = 48 self-calls at ~80-150ms each = ~6s total. Fix: doi_engine.evaluate() accepts a prefetch dict. The summary endpoint runs 3 bulk GROUP BY queries (domain status, TPSC snapshot counts, active goal counts) and passes results directly — zero HTTP self-calls in summary mode. Result: /repos/doi/summary 6s → <1s (6× improvement on top of prior 13×). Total improvement from original: 108s → <1s. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>