(low) SeasonalWeatherBlock: строка экстремумов мин/макс подписана как «макс» (только максимум)
(low) ForecastConfidenceBlock: coverage=1.0 (100%) рендерится как «1» вместо «100%» из-за строгого
< 1
(low) Air quality берёт hourly[0] (00:00 forecast-дня), а не текущий час — docstring обещает «текущий час»
(low) scenarios.py: module-docstring численно противоречит реализации _horizon_widen_factor
(low) recommend_mix: comparables/competitors матчат obj_class = :cls точно, has_class_data проверяет лишь NOT NULL — молчаливо пустой результат при разном словаре (RU vs EN)
(low) trigger_kn_sweep: queued_at всегда null — берётся date_done (время завершения) только что поставленной задачи
(low) Несогласованный вывод quarter_cad для 3-сегментного кад. номера: REGEXP_REPLACE vs _quarter_cad
(low) _classify зависит от порядка вставки в OSM_CATEGORIES — вторая категория multi-tag элемента молча теряется
(low) get_connection_points игнорирует harvest_error/staleness — error-only дамп отдаётся как dump_available=true
(low) Глобальный per-cache Lock удерживается на время сетевого вызова Open-Meteo — сериализация всех analyze-запросов одного cache-типа
(medium) corp_sum: сбой парсера оставляет run помеченным 'done' (silent failure) — асимметрия с фиксом lots_pf #1220
(medium) Avito enrichment: пойманная ошибка оставляет общий Session в aborted-state → каскад на все оставшиеся строки
(medium) Не-idempotent миграции (110 ADD CONSTRAINT, 74 DROP TABLE→VIEW) при ложном заявлении об идемпотентности ломают DR-restore
(medium) trade_in_pdf: страница «Сделки» рисует выдуманные дни экспозиции (4–118) для rosreestr ДКП-сделок
(medium) 062 address cleaner: regex 'Площадь \\d' усекает легитимные адреса ЕКБ ('Площадь 1905 года')
(medium) asking→sold ratio: в asking-медиану попадают новостройки (нет listing_segment guard в seed-миграциях 080/098)
(medium) reap_zombies может пометить живой sweep 'zombie' → терминальные mark_done/mark_failed молча no-op, риск дубль-sweep
(medium) OwnPlannedProjectUpdate без price-range валидатора → PUT может сохранить инвертированную вилку (min > max)
(medium) pzz_loader: rosreestr_id может быть NULL → дубли строк, ON CONFLICT не срабатывает при повторном sync
(medium) gate_verdict: blocker subcategory=17 сравнивается через isinstance(int) — строковый subcategory из nspd-dump молча деградирует до warning