fix/tradein-oblast-d-backtest
main
D validation harness для oblast-точности: - --city '<точное deals.city>' → scope выборки по deals.city; default None = байт-идентично (тот же _SAMPLE_SQL object, literal identity). - per-city PPM2 band из deal_city_price_bands (fallback global, 0 доп-запросов при None). - corridor city-parity: backtest _fetch_dkp_corridor теперь передаёт city=_resolve_target_city(deal.address) — зеркалит прод C2 (был cross-city contaminated). NB: меняет и default-run live-числа (не fixture-replay) — intended catch-up к проду. - _compute_confidence подтверждён comp-count-based (без EKB-хардкода). - +10 unit-тестов. Регресс-гейт байт-зелёный (replay не гоняет corridor). code-review ✅ APPROVE. Frozen fixture/baseline не тронуты. Live per-city backtest прогоню после деплоя.