stealth: BrowserSession.download_binary обходит семафор concurrency (в отличие от get_json)
[ekburg_permits] parse_xlsx не закрывает read_only workbook (wb.close()) — утечка дескриптора/буфера
[domrf_catalog] price_rub regex ловит цену за м² раньше полной цены → price_rub=NULL при наличии цены на странице
_norm_flat: деривация price_per_m2 падает с TypeError при строковом totalArea — необработанное исключение роняет весь run
Сбой загрузки квартир глотается молча — провал /portal/table не пишется в kn_scrape_failures, run рапортует ложную полноту
make_thumbnail: пропуск по факту существования → устаревшая миниатюра после перекачки оригинала
Форматированный 10-значный мобильный без кода страны (922 123 45 67 / 922-123-45-67) проходит redaction нетронутым
INN-regex затирает легитимные слитные 10/12-значные числа (крупные суммы в рублях) в text/строковых fields перед отправкой в LLM
affordability.py:339-342: payment_at_scenario считает аннуитет по rate_path[h] без спреда, хотя rate_path в стеке = key_rate ЦБ → занижен и на иной базе, чем monthly_payment_rub (латент…
normalize.py: 0-заполненная сетка SalesSeries.units сводит guard _count_full_years к диапазону дат, а не к числу реальных наблюдений (латентно, до подключения #979)
[Fable 5][P3] §15 confidence: нота deal_count теряет окно «за N мес» — расходится с контракт-примером модуля
commercial: sell_through_pct (темп распродажи нежилого) мислейблится как «доля коммерции» (commercial_share_pct)
market_now.summary: district-wide счёт ЖК-выборки (obj_count) выдаётся за «N ЖК-конкурентов рядом»
[Fable 5][P4] §25.3 _geo_weight: подтверждённо-далёкий проект (>6.9 км) получает вес ниже floor для проекта без координат — инверсия против комментария
report_md._md_kv_lines: многострочное значение (напр. product_tz.summary «Резюме») ломает Markdown-буллет — нет свёртки переводов строк
trade_in_pdf._analog_rows: floor==0 (или total_floors==0) у аналога рендерится как «—» из-за truthiness вместо is not None
intents.py: _render_why_forecast объявляет future_market источником provenance даже когда из него не выведено ни строки
grid_geometry.py:59-61 — sanity-check сравнивает искажённые единицы EPSG:3857 с порогами, заданными как наземные метры → валидные крупные/вытянутые квартал…
date_cr минует _parse_nspd_date → CAST(:date_cr AS date) роняет upsert_quarter_stats и весь harvest_quarter квартала (нет savepoint)