(medium) concept/page.tsx: устаревший результат концепции против перерисованного полигона (стейл-стейт)
(low) prinzip/page.tsx KpiCard «Средний метраж»: двойной минус при avg≥49 и ложный «-0» при null
(medium) page.tsx / KpiCard «Нежилые» и «Машино-места»: hint гейтит на perc, но печатает realised → возможна строка «null продано»
(low) scrape/all/page.tsx isStale: UI-порог 5 мин расходится с backend-zombie 10 мин — ложный статус «stale» у живого kn-прогона
(low) scrape/all/page.tsx summary: плитки считают по top-30 и не покрывают статусы skipped/paused/queued — сумма плиток ≠ числу строк
(medium) scrape/all/page.tsx: смена filter не сбрасывает logsRunId — стейл-стейт показывает логи чужого прогона
(medium) scrape/all/page.tsx logs: при filter=all кнопка «логи» не задаёт scraper_type — смешивает логи разных скраперов по совпадающему run_id
(low) 55_schema_scrape_resume.sql: partial-index на heartbeat_at мёртв — reaper фильтрует по COALESCE(heartbeat_at, started_at)
(low) decode_to_file.py: f.write(decoded) падает TypeError, если JSON декодируется в list/dict
(low) _fmt_number падает на NaN/Inf-float (ValueError в детерминированном fallback-пути chat)
(low) Классификация таймаута LLM по имени класса вместо isinstance (хрупко)
(low) queue_status: broker-failure except-блоки без логирования (silent swallow в UI hot-path)
(low) POST /geo/bulk игнорирует rate_ms — все bulk-джобы создаются с дефолтом 600ms без контроля оператора
(low) own_portfolio: слабый regex-guard '^[0-9]+' позволяет non-numeric префиксу dev_id уронить весь current-portfolio запрос
(low) Fan-out по objective_complex_mapping завышает SUM-метрики в _INLINE_VELOCITY_SQL (best_layouts)
[low] izyatie_client: мёртвый fallback a_tag.get('title', href) недостижим (title уже непуст)
[low] TradeInEstimateInput допускает floor > total_floors (нет cross-field валидации)
[low] Cian has_furniture: реальное False теряется через or-коалесинг двух boolean-полей
[low] Avito relative-date parser возвращает None для бесцифровых форм ('час назад', 'неделю назад', 'день назад')
[low] Avito detail abort: транзиентная не-block ошибка сбрасывает consecutive_blocks, маскируя продолжающийся IP-блок