7a9261c425
3 surgical fixes: 1. src/openai_schemas.py: add custom __init__ to NormalizedResponse that accepts BOTH the new nested usage: UsageStats AND the legacy flat usage_input_tokens=... kwargs. Fixes 12 of the 14 failing tests in one place (no test changes needed). 2. tests/test_auto_whitelist.py: use dataclasses.replace() instead of mutating a frozen Session via dict assignment. 3. tests/test_command_palette_sim.py: use a deterministic close callback (or push toggle twice as fallback) instead of the non-deterministic _toggle_command_palette callback. 4 phases, 4 tasks, 6 atomic commits expected. Verification: full scripts/run_tests_batched.py is green; 4 audit gates remain clean; no new failures introduced.