(low) 06_match_economics.py/main: median_price_m2 считается по равновзвешенным строкам room×month, а не по объёму сделок
(medium) 12_more_pois.py/main: bbox padding ±0.005° меньше радиуса привязки 2 км — POI у границ теряются
(low) 10_score_v2.py/main: sat_factor вычисляется и пишется, но не применяется к скорости (мёртвая логика vs комментарий)
(medium) 09_macro_and_trend.py/main: trend_ratio=2.0 при v_prior==0 даёт максимальный буст районам без истории продаж
(medium) 04_report.py/build_html: селектор .r.r красит все числовые ячейки в красный и перебивает зелёный
(medium) 04_report.py/build_html: заголовок «последние 90 дней» не соответствует реальным периодам real_* (12 мес / всё время)
(high) 04_report.py/build_html: HTML-подпись весов противоречит JSON weights_used в том же отчёте
(high) 04_report.py/main: JSON weights_used не соответствует реальным весам скоринга и не содержит economic
(low) server.py/smart_suggestions: нет фильтра 'score выше точки', обещанного в докстринге
(low) server.py/price_distribution: квантиль int(p*n) завышает p25/p50/p75 на малых выборках
(low) server.py/district_time_machine: AVG(price) выдаётся под ключом median_price_kr
(medium) server.py/jk_full: import psycopg2 в проде (psycopg v3 only) → photos/sale_graph всегда пустые
(low) server.py/developer_track_record: двойной учёт лотов при N сайтах на один Objective-проект
(low) check-no-print.py/main: matcher только Edit
(low) check-no-print.py/PRINT_RE: ловит закомментированный print, строковые литералы и method-call .print() — ложные блокировки
(low) check-no-print.py/normalize_path: rfind берёт последнее 'backend/' — ломает allow-prefix для вложенных backend-каталогов
(low) check-no-print.py/normalize_path: rfind('backend/') матчит подстроку, а не сегмент пути
(medium) cleanup_ghosts.py main: _all_docs limit=10000 без пагинации — при росте vault живые chunks ошибочно удаляются как orphan
(low) cleanup-worktrees-aggressive.py fetch_all_prs: жёсткий лимит 30 страниц (1500 PR) может пометить ветку с PR за пределом как stale и удалить worktree
(medium) migrate_kg_to_obsidian.py _moc_for_subdir/sort_key: хроносортировка MOC вырождается в обратно-алфавитную из-за None от extract_date