deals.rooms — синтетика из площади при импорте (Росреестр комнатность не
отдаёт; границы 30/44/62/85 в import-rosreestr.sh). Сравнение
синтетик-бакета сделок с реальным rooms-бакетом объявлений мигрировало
23-55% объявлений между бакетами — отсюда аномалия «4+» ratio>1 (сделки
дороже объявлений). ask_side/ask_global теперь бакетируются тем же
area-CASE: 4+ падает 1.0257→0.8315, все бакеты в 0.76-0.91.
Вторая половина (deep-review): estimator применял коэффициент по реальным
rooms клиента — mismatch переезжал из расчёта в применение (29.9%
исторических запросов легли бы в другой бакет). _get_asking_sold_ratio
ключуется по area_bucket(payload.area_m2) (rooms — только фолбэк без
площади); границы — одна истина в трёх представлениях (shell/SQL/Python)
с guard-тестом на дрейф. Контракт-коммент 080 обновлён (rooms_bucket —
легаси-имя, семантика area-based). Новостроечный гард на deals-стороне
честно НЕ добавлен (year_built-прокси сдвигал все бакеты равномерно) —
задокументировано ограничением.
Refs #2620