7eb743c6cb
Phase 2 of startup_speedup_20260606 is done. Tasks: T2.1 (Red) tests/test_io_pool.py1354679e4 tests T2.2 (Green) src/io_pool.py1354679emake_io_pool() factory T2.3 (Red) tests/test_warmup.py1354679e10 tests T2.4 (Green) src/warmup.py1354679eWarmupManager T2.5 (Wire) AppController integration922c5ad9io_pool + warmup in __init__ + 5 public delegation methods T2.6 (Plan) this commit What now exists: - make_io_pool() returns a 4-worker ThreadPoolExecutor named 'controller-io-N' - WarmupManager class with submit/status/is_done/wait/on_complete/reset - AppController creates self._io_pool + self._warmup early in __init__ - Warmup is submitted immediately (jobs run concurrent with the rest of init) - Public API: controller.warmup_status(), controller.is_warmup_done(), controller.wait_for_warmup(timeout), controller.on_warmup_complete(cb) - controller._compute_warmup_list() returns 9 always + 2 conditional (fastapi) - shutdown() now also shuts down the io_pool Currently the warmup is a no-op for modules already imported at the top of app_controller.py (fastapi, requests). Phase 3 will remove those top-level imports; the warmup infrastructure will then start doing real work. 18/18 tests passing (4 io_pool + 10 warmup + 4 test_app_controller_*). Next: Phase 3 (remove top-level SDK imports from src/ai_client.py). Expected to fix ~3 audit violations (google.genai, anthropic, openai).