2026-08-13 - 2026-09-13
Overview
459 pull requests merged by 2 users
Merged
#3509 fix(mera): витрина сделок лэндинга — в расписание, дата прогона на страницу, монитор свежести (#3469)
Merged
#3512 Импорт msk_raw умеет областной ДомКлик, а не падает на нём
Merged
#3508 МЕРА: у запросов к БД появился потолок по времени и по ожиданию блокировки (#3463)
Merged
#3510 Коллектор ДомКлика умеет Московскую область, а не только Москву
Merged
#3506 fix(deploy): Caddy пересоздаётся только когда правка иначе не доедет (#3443)
Merged
#3507 Московская область считается по своему ряду Сбериндекса, а не по общероссийскому
Merged
#3505 Импорт сырья msk_raw умеет Московскую область, а не только Москву
Merged
#3504 Расписание импорта сделок Росреестра по Московской области
Merged
#3503 fix(tests): убрать реальные паузы из tradein-тестов (wave2)
Merged
#3502 perf(tests): заглушить форсайт-enqueue в analyze-тестах Site Finder
Merged
#3501 Московская область в реестре регионов, обход — по специфичности вместо кода
Merged
#3500 perf(tradein-tests): убираем реальные паузы из 5 медленных тестов
Merged
#3494 fix(tgbot): проверка темы при старте + общий rate limit на группу (#3471)
Merged
#3499 Прогон тестов перестаёт спать по-настоящему
Merged
#3498 Ряд Московской области в Сбериндексе — грузим заранее, до включения региона 50
Merged
#3495 fix(tradein): идемпотентная отправка сообщения в поддержку (#3471)
Merged
#3497 ДомКлик как четвёртый источник переливки московского сырья в listings
Merged
#3496 ДомКлик — четвёртая площадка ручного сбора Москвы
Merged
#3488 Ожидаемые исходы скрапинга перестают быть ошибками
Merged
#3492 fix(metrics): гасим crash-loop tg-relay через профиль relay
Merged
#3491 Продуктовые счётчики и дашборд воронки
Merged
#3465 Быстрый путь «правка только прокси» наконец включается: считаем изменённые файлы сами (#3448)
Merged
#3487 Продуктовый Telegram-трафик уходит через ретранслятор на Beget
Merged
#3490 Отказ в alert-ack перестаёт съедать следующий алерт
Merged
#3489 Очередь задач и Redis становятся видимыми
Merged
#3479 Ответ оператора не исчезает при сбое БД, и реплай на собственный ответ снова маршрутизируется
Merged
#3485 Алерт GlitchTip переживает недоступность Telegram: отправка уходит в фон, 502 остаётся
Merged
#3483 Меньше шума: выключенные платежи не засоряют ленту ошибок, провал прокси-пробы пишется строкой вместо трейса
Merged
#3476 Деплой метрик перечитывает конфиг Prometheus, а не только кладёт его на диск
Merged
#3484 Маршрут и секрет для резервного приёмника алертов GlitchTip
Merged
#3482 Резервный канал для алертов GlitchTip: приём на alert-ack, другой хост и другой провайдер
Merged
#3481 Alertmanager объявлен единственным путём доставки: встроенный алертинг Grafana выключен явно
Merged
#3478 Access-логи Caddy доезжают в Loki: статусы и латентность прокси наконец видны
Merged
#3477 Тревоги уровня приложения, cAdvisor и пропавшие фоновые контейнеры; critical переживает подавление
Merged
#3474 Панель классов ответов больше не стекируется — красная линия и есть число 5xx
Merged
#3472 Москва в реестре городов лендинга и кабинета
Merged
#3473 ДКП-коридор по Москве не строился: имя улицы не извлекалось из московского формата адреса
Merged
#3468 feat(mera/лендинг): витрина показывает полосу расхождения −5…+20 %; плитку «уверенность низкая» сменил замер 12.09
Merged
#3470 Московский city_hint больше не уходит молча в регион 66
Merged
#3464 Тревоги печатали не ту величину, которую называли: «2.684e+11% от mem_limit» и «доля HOT 75.21%» при пороге 20%
Merged
#3460 Оценка не теряется, когда геокодер не уложился в бюджет (#3449)
Merged
#3462 Коридор сделок с малой выборкой честно помечен справочным
Merged
#3461 Витрина «сделки против объявлений» перестаёт пустовать: снят предикат по синтетической комнатности сделок
Merged
#3459 Поддержка: доставленное сообщение не теряется при сбое БД, отказы Telegram расходуют бюджет
Merged
#3458 Связь с Telegram не встаёт колом, ответ оператора не теряется
Merged
#3457 Недоступный Telegram отдаёт 502 — теперь на всём дереве транспортных отказов
Merged
#3456 Недоступный Telegram отдаёт 502, а не 500
Merged
#3455 Сборщик: обрыв сети на машине не должен убивать многочасовой проход
Merged
#3454 Импортёр знает Яндекс: город из второго компонента адреса, ноль внешних вызовов
Merged
#3453 Красный main после #3440: тест полос по округам передаёт убранный параметр rooms
Merged
#3440 Москва: пред-геокод Авито, Яндекс третьей площадкой, продукт отвечает по региону 77
Merged
#3445 fix(mera/estimate): убран предикат d.rooms в коридоре ДКП — он был вторым фильтром по площади (#3256)
Merged
#3444 fix(mera/estimate): коннект БД не живёт через внешний HTTP; потолок пула ≥ суммы потолков одновременности (#3083, #3408)
Merged
#3447 ci(#3274): гейт против возврата фронта в общую команду и снятия ретрая (часть 2b/3)
Merged
#3446 fix(caddy): ретрай подключения к фронту МЕРЫ — остаток окна подмены (#3274, часть 2a/3)
Merged
#3442 fix(deploy): подменять фронт МЕРЫ отдельной командой — окно простоя 30–90 с уходит (#3274, часть 1/2)
Merged
#3441 fix(smoke): «ответа нет» ≠ «неверный код» — ретраи и честная формулировка в смоуке периметра МЕРА
Merged
#3438 МЕРА B2C: микроразметка schema.org и картинки превью ссылок
Merged
#3437 Версия согласия ПДн отстала от новой редакции политики — деплой МЕРЫ стоял, прод обновился наполовину
Merged
#3436 МЕРА B2C: Яндекс.Метрика и GA4 + открытие сайта для поисковой индексации
Merged
#3317 ЕЭСК: бинд-параметр в SQL-комментарии молча ронял все 71 UPDATE две недели
Merged
#3318 [SECURITY] Caddy: голый IP по HTTP спрашивал пароль пилота открытым текстом
Merged
#3435 fix(msk-collector): ретрай заливки батча на обрыве ssh
Merged
#3434 fix(msk-collector): страница выдачи — 50 карточек, не 60
Merged
#3433 fix(msk-collector): пересоздавать свою вкладку каждые 75 загрузок
Merged
#3432 feat(tradein/geocoder): регион-параметризация геокодера — region_code в geocode()/known_city_hint, --region-code у скрипта сделок, region_code у geocode-missing (#3051)
Merged
#3431 feat(tradein/estimator): deal_city_price_bands по ключу (region_code, city) — миграция 298, refresh per-region (#3051 sub-PR B)
Merged
#3430 test(tradein): тесты трека «Москва» — импорт ДКП по 77, чекпоинт per-source, wildcard-хендлер, регион-скоуп коридора, миграция 289, deploy-скрипт (#3051)
Merged
#3429 feat: bulk-дампы открытых данных ФНС по юрлицам + lookup по ИНН
Merged
#3428 feat(mera): слой ДТП (dtp-stat/ГИБДД) в PostGIS + радиусные агрегаты
Merged
#3427 feat(mera): макро-ряды ЦБ РФ — ипотека по субъектам и ключевая ставка
Merged
#3426 feat(mera): загрузчик реестра МКД АИС ФРТ → обогащение houses
Merged
#3425 fix(msk-collector): ограниченный ретрай goto на таймауте навигации
Merged
#3424 fix(msk-collector): узкий ретрай page.content() на гонке перенавигации
Merged
#3422 feat(tradein/rosreestr): импорт ДКП по Москве (77) — canonical_city, raw_payload, wildcard-расписание rosreestr_dkp_import_*, per-source чекпоинт (#3051)
Merged
#3423 feat(tradein/estimator): регион-скоуп ДКП-коридора — фильтр по deals.region_code (#3051 PR-A)
Merged
#3421 feat(#3051): deals.doc_type + регион и тип документа как параметры импорта Росреестра
Merged
#3420 feat(#2989): локальный ручной сборщик SERP Авито по Москве и МО
Merged
#3409 chore(tradein): последние обходы пула прокси — admin cian-login/domclick-debug через фабрику; снят костыль _PoolCurlConfig (#3197, #3386)
Merged
#3407 fix(tradein/proxy): операции пула прокси уходят с event loop публичного /estimate — acurl_proxy_url через to_thread (#3398 п.1)
Merged
#3406 fix(cian): капча видна в отчёте прогона (ban_kinds.platform по типу) и банит узел на curl-пути (#3402 follow-up)
Merged
#3405 feat(tradein/proxy): прогон знает свой узел, а снятый бан перестаёт стирать историю (#3404)
Merged
#3403 fix(cian): капча/страница ошибки Циана (HTTP 200) — отказ площадки в сайдкаре и kit, ротация аренды внутри батча (#3402)
Merged
#3400 refactor(tradein): одна реализация scrape_runs — kit orchestration/runs.py, app-модуль = алиас; counters везде мержатся (#3390)
Merged
#3399 fix(tradein/estimator): yandex/cian valuation в /estimate через пул прокси; честный лог при пустом пуле (#3398)
Merged
#3397 fix(tradein/estimator): IMV-путь /estimate через пул прокси; пустой пул — честная деградация без IMV (#3386 п.в)
Merged
#3396 fix(scraper-kit/cian): фаза houses cian_city_sweep через пул прокси + стоп на пустом пуле (#3394)
Merged
#3395 fix(tradein): прогоны, оборванные деплоем (interrupted=1), невидимы лестницам стриков и honest-status-гейтам (#3393)
Merged
#3392 fix(scraper-kit/scheduler): SIGTERM-drain помечает in-flight прогоны interrupted=1 при hard-cancel; честный лог drain'а (#3391)
Merged
#3389 fix(tradein/yandex): newbuilding resolve/fetch_jk через пул прокси + стоп на пустом пуле (#3197, точки 2-3)
Merged
#3388 fix(tradein): пустой пул на старте батча пишет no_proxy_stop у cian/domclick/avito detail-бэкфиллов (#3384)
Merged
#3383 fix(tradein): гейт против сдвига разряда (×10) в offer_price_history у всех писателей + миграция 286 (#3376)
Merged
#3387 fix(tradein/compose): USE_PROXY_POOL_CURL/BROWSER и сервису backend — не только scraper (#3386)
Merged
#3382 fix(tradein/cian): cian_history_backfill идёт через пул прокси + стоп на пустом пуле (#3197, точка 1 из 3)
Merged
#3378 fix(scraper-kit/yandex): full-load on_bucket отдаёт список лотов бакета, а не int (#3375)
Merged
#3379 fix(browser-sidecar): бан-страница площадки отдаётся 403, а не 500 (#3288 п.C)
Merged
#3381 fix(deploy-metrics): пересоздавать alloy после выката конфига + гейт по иноду (#3380)
Merged
#3377 fix(ops/alloy): второй слой маскировки query-секретов на сборщике логов (apps + infra) — defence-in-depth к #3353
Merged
#3371 fix(tradein/rbac): аноним на admin-префиксе получает единый 404 — существование admin-ручек снаружи не перебирается
Merged
#3373 fix(scraper-kit): yandex _leaf под CAP не пишется в done-леджер как complete — capped_buckets отдельным счётчиком
Merged
#3372 fix(scraper-kit): domclick city sweep — done_buckets во всех семи выходах, а не только в дрейне и одном бане
Merged
#3370 fix(tradein/domklik): diff_percent — проценты из соседних price_rub вместо рублей источника, гейт отвергает |x|>100, миграция 285 пересчитывает историю
Merged
#3374 chore(smoke): периметр-смоук бьёт в реальный роут истории — /api/v1/trade-in/history, а не в несуществующий /api/v1/history
Merged
#3367 fix(tradein/avito): брейкер добора считает долю только по отказам площадки — сайдкар/пустой пул не рвут прогон и не красят его banned
Merged
#3363 fix(scraper-kit): дрейн-метка interrupted=1 у domclick sweep и трёх full-load — резюм после SIGTERM для всех функций с чекпоинтом
Merged
#3364 fix(tradein/yandex): недорендеренная карточка — отказ, не успех: структурный маркер encryptedPhones + порог размера, карточка остаётся в очереди
Merged
#3362 fix(scraper-kit): containment до пробы у cian и yandex — резюм full-load не пере-пробивает готовые полосы
Merged
#3361 fix(tradein/payments): отказ банка на Init не блокирует покупателя на 30 минут — мёртвая попытка уходит из предиката живого платежа
Merged
#3365 fix(scraper-kit): свежесть источника — по последнему прогону, принёсшему данные, а не по статусу done
Merged
#3357 fix(scraper-kit): бан площадки не гасит здоровье узла для всех источников — report_ban по паре узел×источник вместо mark_health(ok=False)
Merged
#3356 fix(tradein/domclick): дом-поля карточки → houses, backfill total_units/material_* из raw_payload (миграция 284)
Merged
#3351 fix(scraper-kit): пропуск по куке двигает next_run_at на interval_minutes, а не на случайный час завтра
Merged
#3352 fix(tradein/rbac): 401-оракул закрыт — несуществующий путь под публичным префиксом отвечает так же, как любой другой мусор
Merged
#3358 fix(scraper-kit): резюм exhaustive не пере-пробивает готовые полосы — containment по done-леджеру до пробы, 17 911 запросов → 0
Merged
#3350 test(tradein/auth): флаки-замер «< 500 мс» заменён проверкой механизма — bcrypt обязан исполняться вне потока event loop
Merged
#3347 fix(tradein/backfill): save-False у yandex/avito больше не теряет попытку — attempted == сумма исходов у всех трёх бэкфиллов
Merged
#3353 fix(tradein): секрет вебхука GlitchTip не попадает в access-log — скруббер query-секретов + приём из заголовка
Merged
#3349 fix(tradein/front): число оценочной модели площадки подписано «рынок из N объявлений — в расчёт не входит» при тонком рынке
Merged
#3348 fix(caddy): окно деплоя — 503 «Сервис обновляется» с Retry-After вместо голого 502 на публичных путях МЕРЫ
Merged
#3346 fix(scraper-kit): метка дрейна interrupted=1 во всех city-свипах — yandex/cian/newbuilding больше не объявляют недоделанный обход готовым
Merged
#3336 fix(tradein/estimator): thin-market гейт IMV перестаёт быть витринным — рынок из 1 объявления больше не двигает headline и range_high
Merged
#3331 fix(tradein/auth): единый источник ролей — БД first, YAML только legacy-fallback (закрывает эскалацию до admin и 403 своим)
Merged
#3335 fix(tradein/domclick): обрыв «пул пуст» и save-False больше не теряют попытку — attempted == сумма исходов
Merged
#3330 fix(scraper-kit): чекпоинт avito_city_sweep доживает до финализатора — 0/67 прогонов писали done_buckets
Merged
#3345 fix(mera-public): подписи метрик снижения цены и бенчмарк отчёта не называют площадку
Merged
#3344 fix(tradein/pdf): клиентский PDF не называет площадки-источники — «Источник N», как в веб-отчёте (#3341)
Merged
#3342 fix(mera-public): публичная копия — сервис не называет себя оценщиком, площадки-источники не названы
Merged
#3340 fix(caddy): периметр МЕРЫ — секрет убран из анонимного пути, чанки закрытого контура не раздаются с meraocenka
Merged
#3337 fix(mera-public): честный текст покрытия и разные квартиры в раундах игры
Merged
#3334 fix(deploy): гейт деплоя ПТИЦЫ — мёртвый worker/beat/frontend больше не уезжает зелёным
Merged
#3329 fix(site_finder): Россети — стабильный ключ вместо сессионного fid, дедуп power_supply_centers ×10 → ~481
Merged
#3328 fix(tradein-v2): пустая выборка сделок больше не рисуется нулями — «0,00 млн · −100%» зелёным исчезает
Merged
#3327 fix(mera-public): этаж и состояние переживают переход на /estimate
Merged
#3326 v2: бейдж «Мои отчёты» показывает «использовано / доступно» — остаток квоты был не виден нигде
Merged
#3325 auth: тестовый аккаунт buyer1 (pilot) для потенциального покупателя
Merged
#3314 imv: HTTP 429 больше не приговаривает дом навечно
Merged
#3313 feat(tradein/avito): бан площадки не менял IP — прогон добивался в тот же забаненный адрес (#3283)
Merged
#3308 feat(tradein/browser): имитация чтения страницы человеком, целиком opt-in (#3283)
Merged
#3309 fix(tradein/support): один повтор терял каждое одиннадцатое сообщение в поддержку
Merged
#3306 fix(tradein/browser): снятый PoW-челлендж отдавался с протухшим статусом, и карточка выбрасывалась (#3283)
Merged
#3305 fix(tradein/proxy): успешный fetch затирал exit_ip и latency_ms в NULL (#3283)
Merged
#3304 fix(tradein/avito): бан-страница площадки уезжала в транспортные сбои и не банила узел (#3283)
Merged
#3302 feat(tradein/avito): ротация exit-IP по счётчику попыток в доборе карточек
Merged
#3303 fix(tradein/proxy_pool): истёкший прокси больше не выдаётся в аренду
Merged
#3301 chore(tradein/scheduler): добор карточек Яндекса и Циана шёл раз в сутки и простаивал
Merged
#3300 fix(tradein/avito): browser-путь добора не смотрел на HTTP-статус — отказ площадки уходил в ошибку парсинга (#3297)
Merged
#3298 feat(tradein/proxy_rotation): ротация IP через mobileproxy.space (aproxy.site)
Merged
#3292 лендинг: типографский ритм и мобильные отступы — подача без новых обещаний
Merged
#3293 первый экран: оговорки вынесены из блока преимуществ
Merged
#3296 липкая панель прячется, пока герой в кадре
Merged
#3290 лендинг: пятая плитка падала на вторую строку, столбец «Расхождение» читался пустым
Merged
#3295 числа лендинга: покрытие 88 % было выше всего диапазона представительных пересборок
Merged
#3291 витрина: строка без улицы больше не открывает страницу и игру
Merged
#3289 бэктест: выборка вразброс — ORDER BY id DESC садится на несколько улиц
Merged
#3294 «Для бизнеса» вела на форму входа — заведена страница /business
Merged
#3282 P1: лендинг отдавался без витрины — имя сервиса двоится между продуктами
Merged
#3287 fix(tradein/domclick): бан сайдкара наследуется от httpx-ошибки и уезжал в транспортные сбои (#3283)
Merged
#3286 fix(tradein/domclick): таймаут сайдкара и пустой пул считались отказами площадки (#3283)
Merged
#3285 feat(tradein/cian): у Циана не было добора карточек — только побочный эффект задачи про историю (#3284)
Merged
#3281 контраст: 32 → 2 → 0, проверено на живой странице; сторож теперь ловит выбор токена, а не только его значение
Merged
#3275 #3194: ключ шифрования кук и сами куки больше не уезжают в GlitchTip
Merged
#3279 лендинг: этаж перестал теряться на переходе к проверке
Merged
#3278 тикер: разброс показанных строк под лентой — она больше не опровергает заголовок
Merged
#3277 лендинг: 32 нарушения контраста WCAG AA — затемнены токены, поставлен сторож
Merged
#3276 подсказки адреса: пустые части адреса выпадают, а не печатаются
Merged
#3273 лендинг: имя боевого сервера убрано из пользовательской копии + гейт
Merged
#3269 витрина: разброс показанных строк рядом с медианой всей сверки
Merged
#3268 fix(tradein/domclick): «система защиты от протечек» в объявлении читалась как блок QRATOR
Merged
#3271 test(tradein): гонка на sleep(0.05) вешала тест потолка оценок на 120с (#3270)
Merged
#3267 fix(tradein/avito): браузерный путь ходил на каждую карточку холодным (#3251)
Merged
#3266 fix(tradein/domclick): свип брал BFF навигацией браузера — теперь подзапросом (#3264)
Merged
#3265 fix(tradein/domclick): свип ходил на QRATOR без кук и вис на PoW каждым запросом (#3264)
Merged
#3262 fix(tradein/browser): куки клались на поддомен и вечно держали QRATOR-загрузчик (#3261)
Merged
#3260 fix(tradein/browser): переход с Яндекса на площадку должен быть настоящим, а не заявленным
Merged
#3259 feat(mera/estimate): предзаполнять этажность, год и тип дома из справочника (UI)
Merged
#3257 feat(mera/estimate): ручка фактов дома для предзаполнения формы + гейт «этаж не выше дома»
Merged
#3258 feat(tradein/browser): на выдачу площадки заходить через настоящий поиск Яндекса, а не голым goto
Merged
#3255 fix(mera/estimate): перефит хедоники поверх area-бакетного ratio — крупное жильё занижалось на 21%
Merged
#3254 fix(mera/backtest): свежая фикстура не реплеилась, а разрез по сегментам врал по построению
Merged
#3250 feat(tradein/browser): ходить по Домклику как человек — с Referer и с перезагрузкой зависшего рукопожатия
Merged
#3249 docs(mera/estimate): сегментные множители откалиброваны на артефакте измерения — предупреждение в конфиге
Merged
#3247 fix(mera/b2c): восемь находок финального аудита прода — включая три моих собственных
Merged
#3245 feat(mera/b2c): настоящая карта улицы в карточке игры + мобильный лэндинг перестал съедать 45% экрана
Merged
#3244 perf(tradein/browser): якорная вкладка выдачи вместо переоткрытия origin на каждую карточку
Merged
#3243 feat(mera/b2c): витрина лэндинга переезжает с выдуманных чисел на замеренные
Merged
#3242 feat(mera/estimate): характеристики дома из справочника, а не только из формы
Merged
#3241 fix(tradein/domclick): подтверждённый отказ площадки уехал в ветку «сбой транспорта» и перестал банить узел
Merged
#3240 docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253
Merged
#3238 fix(smoke): периметр требовал 401 от вебхука, который PR-D3 открыл намеренно
Merged
#3235 chore(site-finder): удалить мёртвый код — 14 неиспользуемых символов
Merged
#3237 fix(tradein/domclick): мы считали блоком собственное недоделанное рукопожатие
Merged
#3236 feat(mera/b2c): новый дизайн становится корнем meraocenka.ru, функционал старого перенесён
Merged
#3233 fix(mera/b2c): выключенная ручка расчёта подтверждала своё существование и печатала схему
Merged
#3226 fix(mera/v2): форма принимала этаж больше этажности дома
Merged
#3231 feat(mera/b2c): платёжный роутер, статус-машина и доставка купленного (за флагом)
Merged
#3232 chore(tradein): две ручки ротации без читателей и врущий комментарий над ними
Merged
#3224 chore(tradein): четыре символа, на которые нет ни одной ссылки
Merged
#3230 feat(mera/b2c): анонимный расчёт и повторное чтение результата по токену (за флагом)
Merged
#3229 feat(mera/b2c): лента сделок и раунды игры — из реальных сделок с реальным прогнозом
Merged
#3228 feat(mera/b2c): метрики лэндинга считаются по проду, а не лежат литералами
Merged
#3227 fix(gendesign): FDW-роль не могла читать районы ЕКБ — витрина сделок МЕРЫ теряла район
Merged
#3223 feat(mera/b2c): раздел статей и хаб документов (макет 29.08) + числа статьи заменены на замер
Merged
#3222 fix(tradein/domclick): detail-бэкфилл ходил в сайдкар мимо прокси-пула (#3197 ч.1)
Merged
#3221 feat(mera/b2c): результат проверки в облике отчёта (макет 29.08 «МЕРА отчёт»)
Merged
#3214 chore(ci): node 20 отслужил — рантайм фронтов и оба CI-джоба на node 24 LTS
Merged
#3218 chore(deps/site-finder): vitest 2 → 3 — заодно уходит вся dev-цепочка vite/esbuild
Merged
#3213 chore(deps): три места, где сборка не воспроизводится — лок-призрак, глоб и неприпинованный сайдкар
Merged
#3217 fix(tradein/domclick): перезапуск браузера на карточку уничтожал пропуск QRATOR (#3212)
Merged
#3216 chore(deps/mera): vitest 2 → 3 — заодно уходит вся dev-цепочка vite/esbuild
Merged
#3215 feat(mera/b2c): лэндинг v3 доведён до макета 29.08 — лента, игра, два пути, возражения, статьи
Merged
#3211 fix(deps/mera): 6 уязвимых пакетов во фронт-локе — пересборка без правки package.json
Merged
#3210 fix(deps/site-finder): 19 уязвимых пакетов во фронт-локе — пересборка без правки package.json
Merged
#3207 fix(deps/site-finder): 53 advisory в backend/uv.lock — точечный апгрейд восьми пакетов
Merged
#3209 feat(glitchtip): включить встроенный MCP-сервер образа 6.1.6
Merged
#3206 fix(tradein/domclick): одна карточка на процесс браузера — перезапускать camoufox после каждой страницы (#3205)
Merged
#3204 fix(tradein/domclick): 401 — тот же отказ площадки, что 403, а классифицировался как unknown (#3196)
Merged
#3203 chore(rules): убрать осиротевшие после PR #3198 ветки bot-pipeline
Merged
#3201 fix(tradein/scrapers): ABORT-лог называл серию блоков, хотя рвал прогон по доле
Merged
#3202 fix(tradein/scrapers): диагноз блока из HTTP-статуса, а не из маркеров чужой площадки (#3196)
Merged
#3200 docs(tradein/scrapers): в репозитории лежало опровергнутое обоснование хранилища сессий Яндекса
Merged
#3199 fix(tradein/browser): дефолт block_images для avito вернулся к True — гипотеза не подтвердилась
Merged
#3198 chore(claude): retire autonomous bot-pipeline
Merged
#3193 fix(tradein/domclick): каждый запрос получал чистый браузерный контекст, куки реплеились протухшими (#3190)
Merged
#3195 feat(tradein/scrapers): хранилище авторизованной сессии Яндекс.Недвижимости
Merged
#3188 fix(tradein/scrapers): обрыв по серии блоков рвал каждый прогон, включая здоровые
Merged
#3186 fix(tradein/browser): сайдкар безусловно резал картинки, а camoufox предупреждал, что за это ловят WAF
Merged
#3183 fix(tradein/scrapers): диагноз блока терялся при схлопывании, а в алерт шла непроверенная причина
Merged
#3176 fix(tradein/ingest): rosreestr_dkp_import курсор переживает рестарт (#3168)
Merged
#3174 fix(tradein/domclick): исчерпание пула прокси помечалось как отказ сбора (#3118)
Merged
#3173 fix(tradein/yandex): чекпоинт combo ставился до save_listings, не после (#3170)
Merged
#3169 feat(tradein/scraper): чекпоинты для avito_newbuilding_sweep — страница как единица (#3074)
Merged
#3167 fix(ops/metrics): тема «метрики» задаётся дефолтом, а не ручным заведением секрета
Merged
#3165 feat(ops/metrics): инфра-алерты уезжают в тему «метрики», клиенты остаются в «алертах»
Merged
#3166 fix(tradein/tgbot): в логе сетевого сбоя не было причины — только пустота после двоеточия
Merged
#3162 fix(ops/metrics): Alertmanager отвечал 404 на /api/v2/alerts — Prometheus писал мимо
Merged
#3160 fix(ops/metrics): Prometheus не видел ни одного Alertmanager — цель file_sd осталась пустой
Merged
#3153 fix(frontend): нейтральный fallback ещё в 4 enum-lookup-местах (#2452)
Merged
#3152 fix(tradein/geocode): бюджет прогона проверяется внутри батча (#3151)
Merged
#3150 ci(tradein): гейт невалидных индексов в CI (#2990)
Merged
#3149 fix(tradein/scrapers): три прод-пути остались на chrome120, пока kit ушёл на chrome146
Merged
#3146 feat(ops): off-box копия рантайм-конфига — зашифрованной, иначе никак
Merged
#3145 fix(tradein/avito): браузерный бэкфилл ходил мимо пула прокси
Merged
#3144 fix(ops/metrics): postgres-exporter печатал пароль БД в лог при каждой ошибке
Merged
#3143 fix(tradein/avito): повтор после блока терял прокси и уходил с адреса машины
Merged
#3142 fix(ops/metrics): правки конфига Alertmanager молча не доезжали до контейнера
Merged
#3141 chore(ops): restore-дрель для базы tradein — она не покрывалась вовсе
Merged
#3140 feat(tradein/domclick): чекпоинты для city_sweep — корзина как единица возобновления (#3118)
Merged
#3136 feat(observability): кнопка «Принял в работу» под клиентским инцидентом (#3078)
Merged
#3139 fix(mera/v2): плашка версии лежала на главной кнопке и съедала клик
Merged
#3138 fix(mera/b2c): подсказка дублировала адрес, а числа в результате спорили
Merged
#3137 fix(mera/perimeter): www-формы доменов МЕРА обрывали TLS вместо редиректа
Merged
#3135 fix(observability): cadvisor перестаёт сканировать overlay-слои — упирался в лимит памяти
Merged
#3134 fix(observability): healthcheck Alertmanager стучится по правильному пути — контейнер был вечно unhealthy
Merged
#3133 fix(tradein): срок жизни оценки 24ч → 720ч — отчёты исчезали раньше, чем ими успевали воспользоваться
Merged
#3132 fix(tradein/auth): лимит попыток входа 5 → 20 на адрес — офис за одним NAT запирал сам себя
Merged
#3131 fix(mera/ui): карта перестала перекрывать интерфейс, страница помещается в окно
Merged
#3129 fix(ops): оповещения уходят в тему «алерты», а не в переговорку (#2203)
Merged
#3128 feat(observability): клиентский инцидент зовёт дежурного поимённо + чинит сломанное продолжение команды (#3078)
Merged
#3130 feat(tradein/db): дроп дублирующего listings_geom_idx (#2997)
Merged
#3127 fix(observability): конфиг Alertmanager читается контейнером — гейт падал на своих же правах (#3078)
Merged
#3125 feat(ops): сторож расхождения «прод ↔ main» — недоехавший деплой перестаёт быть молчаливым (#3029)
Merged
#3126 feat(observability): токен алертов приходит из секретов Actions, а не только с машины (#3078)
Merged
#3124 fix(tradein/scheduler): boot-reap виден и при нуле (#3122)
Merged
#3123 feat(tradein/scheduler): boot-reap — прогоны предыдущего контейнера снимаются на старте (#3122)
Merged
#3121 feat(tradein/matching): region_code у houses — вывод, а не выдумка (#3051 п.4)
Merged
#3120 chore(ops): адрес Poincare — 188.124.37.140 вместо заменённого 188.246.224.93 (#3110)
Merged
#3116 feat(tradein/geo): реестр регионов — единственный источник гео-границ (#3051, шард 1a)
Merged
#3117 feat(tradein/scraper): чекпоинт по якорям для cian_city_sweep (#3074)
Merged
#3115 fix(observability): пароли БД не уезжают в Loki — скруббер учётных данных в Alloy (#3114)
Merged
#2661 fix(tradein/estimate): фильтр свежести в якоре дома и знаменателе коэффициента выкупа (#2656)
Merged
#3113 fix(observability): у Grafana остаётся один вход — внешний basic_auth снят с витрины (#3078)
Merged
#3112 feat(tradein/scraper): чекпоинт по якорям для avito_city_sweep (#3074)
Merged
#3111 feat(observability): алерты адресуются в топик форумной группы + проверка конфига до подъёма (#3078)
Merged
#3109 fix(observability): cAdvisor 0.55.1 — 0.52 не видит контейнеры на Docker 29
Merged
#3108 fix(observability): контейнерные метрики терялись целиком + два хвоста стека
Merged
#3107 chore(hooks): точечный allowlist на три ключа метрик вместо снятия гарда
Merged
#3106 fix(observability): агент не падает из-за переменной чужой роли + DSN экспортеров собираются (#3078)
Merged
#3105 fix(observability): стек не поднимался — привилегированную роль спрашиваем у контейнера, а не угадываем (#3078)
Merged
#3104 ci(caddy): гард — import обязан быть покрыт volume-маунтом
Merged
#3103 fix(caddy): смонтировать сниппеты метрик — без них Caddy валит ВЕСЬ прод
Merged
#3102 feat(observability): /metrics в обоих бэкендах — счётчики, задержка, дашборд приложений
Merged
#3099 feat(observability): стек метрик и логов — Prometheus, Loki, Grafana на Beget, агенты на обоих хостах
Merged
#3101 fix(mera/ui): карточка прогресса перестала выдумывать стадии (#3081, вариант A)
Merged
#3100 feat(tradein/yandex): is_pro_seller из агентского блока + бэкфилл (#3063 п.2)
Merged
#3098 feat(tradein): чекпоинты #3074 — наследование при claim + yandex_city_sweep
Merged
#3097 feat(tradein/estimate): потолок одновременных оценок — 4 слота, быстрый 429 (#3082)
Merged
#3096 fix(tradein/observability): результат detail-бэкфиллов доезжает до total_seen (#3044)
Merged
#3095 fix(ops): алерт не теряется от одного сетевого отказа — ретрай в обеих notify() (#3059)
Merged
#3093 fix(tradein/deploy): подключить selectel-оверрайд — иначе после переезда бот умрёт молча
Merged
#2546 feat(mera/b2c): анти-абуз для анонимного трафика — этап 2 из 8
Merged
#3092 fix(ops): страж повторной заливки перестал молча пропускаться
Merged
#3091 chore(ops): backup-couchdb.sh исполняемый, как остальные бэкапы
Merged
#3090 feat(ops): у волта Obsidian появился автоматический бэкап
Merged
#3089 fix(ops): восстановление не падает в хвосте из-за незаведённых ролей
Merged
#3088 fix(caddy): разделение сайтов по хостам доходит до контейнера
Merged
#3087 fix(ci): стек CouchDB после переезда остаётся на своём хосте
Merged
#3086 fix(ops): бэкап без выгрузки в S3 падает, а не рапортует успех
Merged
#3084 chore(ci): деплой не убивает worker посреди скрап-прогона (заплатка до #3074)
Merged
#3079 feat(ci): деплой проверяет, к тому ли хосту подключился
Merged
#3080 feat(ops): лёгкий Postgres на Beget под forgejo и glitchtip (вариант А)
Merged
#3076 feat(tradein/domklik): ЖК в свою колонку вместо только raw_payload
Merged
#3077 docs(delegation): бюджет пишется в промпт сабагента, а не держится в голове
Merged
#3066 feat(tradein/deactivate-stale): страховочные рельсы объёма снятия (PR-B)
Merged
#3073 feat(ops): бэкапить конфигурацию Forgejo, а не только его содержимое
Merged
#3072 chore(ops): развести crontab по хостам под переезд
Merged
#3071 chore(ci): синхронизировать /opt/gendesign на остающемся хосте
Merged
#3070 feat(ops): запасной канал алертов на случай недоступного Telegram
Merged
#3069 fix(tests): объявить два живых теста #3063 в skip_allowlist — main красный, деплой встал
Merged
#3062 refactor(caddy): разделить site-блоки по хостам под переезд
Merged
#3067 fix(scraper-kit): бедный re-scrape больше не стирает признаки продавца
Merged
#3068 feat(tradein/domklik): пробросить isRosreestrApproved в колонку
Merged
#3065 fix(avito): считать HTTP 439 блокировкой, а не концом выдачи
Merged
#3060 fix(ops): закрепить рабочий адрес api.telegram.org на новом хосте
Merged
#3058 chore(compose): параметризовать ресурсы postgres под переезд на новый хост
Merged
#3056 fix(tradein/deactivate-stale): пол переобхода — LATERAL вместо equality-join по дате
Merged
#3055 feat(tradein/estimate): внешние оценки не ждутся в запросе — 9 секунд превращаются в 1
Merged
#3054 fix(tradein/avito): бэкфилл простаивал 23 часа из 24 — каденс был суточным
Merged
#3050 chore(ops): скрипты аудита и первичной настройки выделенного сервера Selectel
Merged
#3049 fix(tradein/avito): detail_backfill ходил curl'ом, который не решает PoW-челлендж
Merged
#3048 fix(tradein/avito): парсер карточки читал только первый блок параметров — параметры дома терялись молча
Merged
#3038 fix(tradein/scraper-kit): актуализация отпечатка Авито — impersonate, Sec-Fetch-Site, referer, проверка антибот-кук
Merged
#3025 ops(backup): missed-run detection + Forgejo code/DB backup to S3
Merged
#3026 fix(ops): дрилл восстановления ждал БД по сокету и умирал на старте настоящего сервера
Merged
#3046 fix(tradein/browser): дожидаться QRATOR PoW-челленджа Авито вместо тихой заглушки
Merged
#3042 feat(tradein/avito): путь вторички для якорного и citywide-обхода (#3033, follow-up)
Merged
#3040 feat(tradein/avito): house-поля с детальной страницы доезжают в houses (#3036)
Merged
#3041 fix(tradein/avito): страница SERP отдаёт 60 карточек, а не 50 — лишние 17% запросов
Merged
#3039 feat(tradein/avito): полный обход качает вторичку родным фильтром пути (#3033)
Merged
#3011 fix(db/ci): чистый старт БД не падает на 077 и не может уехать на пустой схеме
Merged
#3024 feat(tradein/v2): позиция квартиры на рынке — плашка на карточке рекомендованной цены (#2899)
Merged
#3023 fix(ci): деплой падает громко, если :latest отстаёт от головы по компоненту (#2950)
Merged
#3022 chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864)
Merged
#3021 chore(tooling): pre-commit, pyproject и uv.lock — один ruff 0.15.20 (#2864)
Merged
#3019 fix(ops): бэкапы — +x на deploy-скриптах при деплое tradein, тихий s3 cp (#3005)
Merged
#3018 fix(best-layouts): avg_area_m2 = NULL вместо 0 при пустом окне сделок (#2867)
Merged
#3020 feat(db): GiST по (geom::geography) на houses — матчинг идёт по индексу (#2997)
Merged
#3017 fix(tradein): неудача резолва yandex_jk_slug помечает дом — очередь не упирается в одни и те же пять (#2924)
Merged
#3016 fix(tradein): апсерт не переписывает неизменившуюся строку — гейт IS DISTINCT FROM + МСК-день (#2992)
Merged
#3014 fix(data): партиции rosreestr_deals на Q2–Q4 2026 + загрузчик доходит до файла (#2998)
Merged
#3015 feat(tradein/estimator): штраф за неизвестный год/тип дома — флагом, default OFF (#2936)
Merged
#3010 feat(tradein): ручка «дома, уехавшие от собственных объявлений» (#2996)
Merged
#3013 fix(ops): проверка трейлера дампа падала на grep — ведущие -- принимались за опции (#2203)
Merged
#3012 chore(db): Postgres tradein уходит со стоковых настроек — конфиг в compose
Merged
#3008 feat(tradein): secondary_only — параметр расписания, выброшенное считается (#1781)
Merged
#3009 fix(ops): выгрузка бэкапа в S3 не проходила TLS — у aws-cli свой CA-бандл (#2203)
Merged
#3006 fix(ptica): «геологический риск» больше не выводится из шума (#2934)
Merged
#3007 fix(tradein/search): снять STORED-generated с listings.tsv, не пересчитывать на каждом UPDATE
Merged
#3004 fix(ops): бэкап не теряет роли, не глотает ошибки и умеет уезжать с машины (#2203)
Merged
#3003 fix(ptica): три места, где код делал не то, что говорил (#2464)
Merged
#3002 docs(ptica): две докстроки обещали то, чего в коде нет (#2464)
Merged
#3001 fix(ptica): подпись сетевого обременения называет все виды, а не первый (#2464)
Merged
#3000 fix(ptica): невозможные параметры регламента не превращаются в деньги (#2464)
Merged
#2999 fix(ptica): download_binary переживает транзиентный ответ, как и get_json (#2464)
Merged
#2987 fix(ptica): ключ gisogd_permits — id документа на портале, а не (группа, номер) (#2986)
Merged
#2988 docs(ptica): докстрока не обещает защиты, которой нет, и не шлёт на мёртвый хост (#2464)
Merged
#2984 fix(ptica): backfill act_date у 11 строк, куда уехала дата Генплана-2004 (#2464)
Merged
#2983 fix(ptica): лоты без площади — своя корзина, а не «<25 м²» (#2464)
Merged
#2981 fix(ptica): act_date — дата акта об изъятии, а не первой попавшейся ссылки (#2464)
Merged
#2980 fix(ptica): тип постановления — по первому упоминанию, а не по порядку проверок (#2464)
Merged
#2979 fix(ptica): «не продана» перестаёт означать «продана» (#2464)
Merged
#2978 fix(ptica): осиротевшие прогоны Объектива закрываются, а не висят вечно (#2464)
Merged
#2977 fix(workers): убрать max_retries, который ничего не делает (#2464)
Merged
#2976 fix(ptica): у пользователя не может быть двух дефолтных профилей весов (#2464)
Merged
#2975 fix(ptica): на worker_ready зомби помечается ЛЮБОЙ 'running', а не только со снапшотом (#2464)
Merged
#2974 fix(ptica): «объекта нет в БД» считается пропуском, а не сбоем (#2464)
Merged
#2973 fix(ptica): загрузчик теплоснабжения фиксирует по организациям, а не одной транзакцией (#2464)
Merged
#2972 fix(ptica): упавший прогон Объектива помечается failed, а не висит running вечно (#2464)
Merged
#2971 fix(ptica): серия WAF-блоков прерывает батч каталога, а не гонит его до конца (#2464)
Merged
#2970 fix(ptica): ключ синглтон-лока kn-свипа зависит от множества, а не от порядка (#2464)
Merged
#2969 fix(ptica): WAF-блок прерывает backfill_parcel_geom, а не гонит его дальше по кварталам (#2464)
Merged
#2968 docs(ptica): шесть мест, где документация расходилась с кодом (#2464)
Merged
#2966 fix(ptica): land_reservation перестаёт копить дубли — 91% таблицы были копиями (#2464)
Merged
#2965 fix(ptica): scope=manual_list перестаёт создавать задание из пустоты (#2464)
Merged
#2964 fix(ptica): два запроса connection-capacity перестают травить общую сессию (#2464)
Merged
#2963 fix(ptica): выручка и сделки в KPI лидов названы по своему охвату (#2464)
Merged
#2961 fix(ptica): число ЗОУИТ перестаёт подписываться как число типов (#2464)
Merged
#2960 fix(ptica): успехи батча каталога фиксируются по ходу, а не одним commit'ом в конце (#2464)
Merged
#2959 fix(ptica): HTML-экспортёр перестаёт выбрасывать легаси-зонирование, которое сам же проверил (#2464)
Merged
#2958 fix(ci): ожидание докер-лока оставляет след в логе (#2950)
Merged
#2957 fix(ptica): свежесть data-table источника считается по успешным строкам (#2956)
Merged
#2955 fix(ci): докер-секции прод-деплоев исключают друг друга через host-lock (#2950)
Merged
#2954 fix(tradein/geocoder): темп Nominatim сдерживается перед запросом, а не после успеха (#2953)
Merged
#2952 fix(ci): прод-деплои в одну группу concurrency — прун одного убивал pull другого (#2950)
Merged
#2951 fix(ptica): шесть lookup'ов /analyze глотали ошибку БД без SAVEPOINT (#2464)
Merged
#2949 fix(ptica): два блока analyze_parcel глотали ошибку БД без SAVEPOINT (#2464)
Merged
#2948 test(tradein): гейт «снять noindex можно только вместе с плейсхолдерами» (#2904)
Merged
#2947 fix(ptica): «0 мм осадков» перестаёт означать «данных нет» (#2464)
Merged
#2946 fix(ptica): resume_geo_job больше не возобновляет что попало (#2464)
Merged
#2945 fix(ptica): сноска концепт-PDF печатает фактический срок распродажи, а не «30 мес» (#2464)
Merged
#2944 fix(ptica): нечисловое значение от OSRM/ORS больше не даёт 500 вместо деградации (#2464)
Merged
#2943 docs(ptica): три комментария, утверждавших не то, что делает код (#2464 кластер H)
Merged
#2942 fix(ptica): дрейф формы ответа DaData не роняет весь гео-проход (#2464)
Merged
#2941 fix(ptica): проба глубины очереди перестаёт висеть без таймаута (#2464)
Merged
#2940 fix(ptica): пустой слой риск-зон перестаёт означать «рисков нет» (#2934)
Merged
#2938 test(ptica): снятие SAVEPOINT теперь роняет тест во всех местах кластера A (#2464)
Merged
#2939 fix(ptica): «Риск: Низкий» больше не выглядит вердиктом (#2934)
Merged
#2937 fix(ptica): job_settings не отравляет чужую сессию при сбое БД (#2464 кластер A)
Merged
#2935 fix(ptica): строка о подтоплении в PDF и DOCX перестаёт читаться как заключение (#2934)
Merged
#2933 fix(ptica): достоверность видит зону ПЗЗ из НСПД, а не только из пустой таблицы (#2464)
Merged
#2932 fix(tradein): обход Домклика начинается со сдвигом — комнатности 2+ перестают быть слепой зоной (#2854)
Merged
#2931 fix(ptica): шумовой скорер перестаёт считать водоёмы источниками шума (#2464-G)
Merged
#2930 test(ptica): покрыть переиспользование сессии после close() в отдаче фотографий (#2464-C)
Merged
#2929 fix(ptica): гео-проход не тратит геокод на занятых кандидатов и не «подтверждает» их (#2464)
Merged
#2928 fix(ptica): соединение БД отпускается до похода за фотографией наружу (#2464-C)
Merged
#2927 fix(ptica): защита таймаутом теперь реально ограничивает время (#2464-C)
Merged
#2926 feat(tradein): позиция квартиры внутри когорты аналогов — перцентиль (#2899)
Merged
#2925 ci: правка конфига прокси больше не тянет полный деплой Site Finder (#2916)
Merged
#2923 fix(tradein): фильтр выдачи Яндекса мёртв — slug ЖК ищем по странице объекта (#2860)
Merged
#2922 ci: смоук периметра МЕРЫ запускается сразу после деплоя (#2917)
Merged
#2921 fix(infra/caddy): site-блоки с секретами переживают деплой — import caddy/local/*.caddy
Merged
#2920 fix(tradein/estimate): залипший anchor_tier больше не глушит четыре механизма разом
Merged
#2836 fix(tradein/estimate): нет индекса у аналогов — нет квартальной поправки (#2583 C3)
Merged
#2919 fix(mera/b2c): житель Серова получал «вы вне области», а подсказки игнорировали выбранный город
Merged
#2918 fix(mera/b2c): /estimate снова закрывался гвардом — короткий адрес завели в Caddy, но не в RouteGuard
Merged
#2913 feat(mera/b2c): публичный периметр МЕРЫ — свой API, отдельный экран оценки, короткие адреса
Merged
#2786 fix(tradein): гейт номеров миграций берёт эталон из git, ручной манифест удалён
Merged
#2915 feat(tradein/ops): алерты GlitchTip доезжают в Telegram
Merged
#2794 fix(tradein/payments): тело нотификации не течёт в мониторинг и аудит, повторы банка не отбиваются лимитом
Merged
#2914 chore(ops): почта GlitchTip настраивается из окружения и на worker'е тоже
Merged
#2912 chore(ops): зависшие job-контейнеры, лимит журнала, мёртвый блок status в Caddy
Merged
#2751 chore(ci): деплой на изменение ролей, ruff-гейт для МЕРЫ, удаление мёртвого workflow
Merged
#2911 fix(tradein/scraper): строка с пустым сегментом самочинится при пересборе
Merged
#2819 fix(db): /dev/shm боевого postgres — 64 МБ умолчания Docker → 1 ГБ
Merged
#2882 fix(ptica): загрузка ЦП больше не пишется в категориальную колонку (#2464-B)
Merged
#2910 fix(mera/b2c): публичный лэндинг больше не показывает «Не удалось проверить доступ»
Merged
#2909 feat(tradein): бесплатная проба покрытия POST /coverage (#2894)
Merged
#2908 fix(tradein/deactivate): протухшие объявления с пустым сегментом больше не якорят оценку
Merged
#2907 fix(tradein/deactivate): потолок эффективного TTL — защита от разгона пола и опечатки в расписании
Merged
#2906 fix(observability): убрать 83% мусора из трекера ошибок
Merged
#2905 feat(mera/b2c): лэндинг v3 по макету — превью на /mera-public/v3
Merged
#2893 fix(health): HEAD на /health в обоих бэкендах — аптайм проверял то, что всегда отвечает 405
Merged
#2892 fix(tradein/scrapers): прогон больше не рапортует «done» поверх провала и нуля
Merged
#2891 fix(tradein/geocoder): фолбэк на локальные houses — часть адресов ЕКБ давала гарантированный ноль аналогов
Merged
#2890 chore(ci): не проглатывать падение сборки + починить самолечение buildcache
Merged
#2889 chore(ops): выставить +x на docker-prune.sh и restore.sh
Merged
#2888 chore(deploy): триггерить деплой на правку ops/docker-prune.sh
Merged
#2887 chore(ops): чинить корень утечки docker-томов + еженедельная уборка
Merged
#2880 fix(tradein/cian): вернуть сбор вторички — sweep выбрасывал всё найденное
Merged
#2886 fix(mera): кликабельная ссылка на политику ПДн в чекбоксе согласия + синхронизация версии (блоки 2, 5.4)
Merged
#2885 feat(mera/pdf): дисклеймер 135-ФЗ в подвале каждой страницы отчёта (блок 4.2)
Merged
#2884 feat(mera): «Ориентировочный расчёт. Не является официальной оценкой.» под диапазоном цены (блок 4.1)
Merged
#2883 feat(mera): формулировки шапки и заголовка вкладки по юр-требованиям (блок 3)
Merged
#2881 fix(ptica): бан НСПД по WAF больше не глотается сборщиком кварталов (#2464-A)
Merged
#2878 docs(ptica): фактор уверенности называл не ту величину (#2464-H)
Merged
#2876 test(ci): сторож пропусков кричит ::error:: под Actions (#2871)
Merged
#2879 feat(tradein): вся Свердловская область — 40 городов в city-sweep
Merged
#2877 fix(tradein/proxy): учитывать историю банов при выборе egress-узла
Merged
#2865 fix(ptica): фильтр класса в velocity ссылался на алиас, которого нет в CTE (#2464-G)
Merged
#2875 ci: печатать код возврата pytest явно (#2871)
Merged
#2873 fix(ptica): отказ слоя НСПД больше не выглядит как «здесь ничего нет» (#2464-G/H)
Merged
#2874 feat(mera): оферта, политика возврата и утверждённая политика ПДн + реквизиты
Merged
#2872 ci: сделать видимыми два безмолвных шага после pytest (#2871)
Merged
#2870 ci: убирать buildx-билдер в конце сборочных job'ов (#2869)
Merged
#2868 fix(ptica): нет сделок за окно — цена не 0 ₽/м², а «нет данных» (#2464-B)
Merged
#2866 docs(ptica): комментарии beat-расписания считали сдвиг МСК дважды (#2464-H)
Merged
#2863 fix(ptica): границы правдоподобия у средней цены конкурента (#2464-D)
Merged
#2861 fix(tradein/ui): этаж сделки скрывался у всех 96 974 — требовалось второе поле (#2674)
Merged
#2859 docs(tradein): снять устаревшее обоснование обрыва прогона Домклика (#2854)
Merged
#2858 chore(tradein/db): снести три колонки-заглушки из витрины поиска (#2857)
153 issues closed from 3 users
Closed
#3469 Витрина сделок на лендинге МЕРЫ не пересчитывается: задачи нет в расписании, последний прогон 30.08 (13 суток назад), всего 3 прогона за всё вр…
Closed
#3463 tradein-backend: у запросов к БД нет потолка ни по времени, ни по ожиданию блокировки — одна заблокированная таблица вешает /estimate для всех
Closed
#3443 Полный деплой ПТИЦЫ роняет сам Caddy на 67 секунд — все домены отдают code=000, заглушка окна деплоя здесь бессильна по построению
Closed
#3448 Быстрый путь caddy_only не исполняется: мерж с единственным caddy-файлом пересоздал весь стек ПТИЦЫ, а пропущенная джоба показана как success
Closed
#3158 Grafana: ноль правил алертинга и ноль контакт-поинтов — решить, нужен ли он вообще
Closed
#3449 geocoder: отмена по бюджету оставляет поток работать с сессией запроса — следующий шаг ловит «another operation is in progress», персист оценки отдаёт 500
Closed
#3452 MERA/оценка: порог показа коридора (3) и порог доверия к нему (10) рассогласованы — клиенты в зоне 3..9 видят коридор, но ценовая страховка молча …
Closed
#3451 tradein: TVF street_sales_vs_listings фильтрует сделки по d.rooms — та же синтетика, что снята в #3256; /sales-vs-listings отдаёт пустое пересечение
Closed
#3418 scraper-kit/cian: бакет уходит в done_buckets, хотя фаза houses внутри отказала полностью — следующий прогон пропускает фазу и рапортует done с houses_attempted=0
Closed
#3417 scraper-kit/cian: бакет уходит в done_buckets, хотя фаза houses внутри отказала полностью — следующий прогон пропускает фазу и рапортует done с houses_attempted=0
Closed
#3416 scraper-kit/cian: бакет уходит в done_buckets, хотя фаза houses внутри отказала полностью — следующий прогон пропускает фазу и рапортует done с houses_attempted=0
Closed
#3414 tradein/browser: cian-инстанс camoufox отказывает в 63% запусков (99/156 за 30ч) — релонч браузера перед КАЖДЫМ fetch из-за чередования аренд; generic на том же узле 0%
Closed
#3413 tradein/browser: cian-инстанс camoufox отказывает в 63% запусков (99/156 за 30ч) — релонч браузера перед КАЖДЫМ fetch из-за чередования аренд; generic на том же узле 0%
Closed
#3197 Скрапперы A2: четыре точки ходят мимо пула прокси, и тёплый контекст сайдкара ключуется по провайдеру, а не по узлу
Closed
#3402 tradein/cian: капча Циана приходит с HTTP 200 и не распознаётся как отказ площадки — cian_detail_backfill сжигает батч (0/210, 0/400) на одном узле, парсер пишет «def…
Closed
#3390 tradein: две живые копии mark_failed/mark_done с разной семантикой counters — app/services/scrape_runs.py ЗАМЕНЯЕТ, scraper_kit/orchestration/runs.py МЕРЖИТ (||)
Closed
#3394 tradein/cian: фаза houses у cian_city_sweep падает 0/30 с 02.09 — fetch_newbuilding зовётся без proxy_provider → env-фолбэк на мёртвый узел 9 → сайдкар 503
Closed
#3393 tradein: прогоны, оборванные деплоем (interrupted=1), попадают в лестницы стриков — failed-ratio судит частичные counters, а done обнуляет стрик банов источника
Closed
#3391 tradein: SIGTERM-drain при деплое не помечает app-task бэкфиллы (cian_detail/cian_history/avito/domclick detail) — hard-cancel через 100 с, строки остаются running → boot-reap делает их zombie
Closed
#3384 tradein: «пул пуст на старте батча» у cian/domclick detail-бэкфиллов уходит мимо no_proxy_stop — scheduler пишет failed со стухшими counters
Closed
#3376 domklik price history: 42 скачка ровно ×10 (потерянный разряд в цене источника) — миграция 285 их честно пересчитала в +900 %, гейт лоадера такие занулит; п…
Closed
#3386 tradein-backend без USE_PROXY_POOL_* — браузерные скрейпы из backend (yandex full-load, админ-ручки) идут на SCRAPER_PROXY_URL = выключенный узел 9 (407) → camoufox InvalidIP, 83 провала …
Closed
#3375 [P1] yandex full-load: _leaf/_degraded передают on_bucket(key, len(seen), …) — int уезжает в save_listings как lots → TypeError, ручной full-load Яндекса ничего не сохраняет
Closed
#3380 deploy-metrics: up -d не перечитывает одно-файловый bind-mount конфига Alloy (Beget читал конфиг 26.08 после успешного деплоя #3377)
Closed
#3354 Alloy: второй слой скруббинга query-секретов (secret|token|api_key) в alloy-apps.alloy — defence-in-depth к #3154
Closed
#3360 [SECURITY] Caddy: /trade-in/api/v1/admin/* доступен снаружи анонимно до guard'а — нет среза админского префикса на периметре
Closed
#3368 yandex full-load: _leaf, обрезанный max_pages_per_bucket/CAP, пишется в done-леджер как complete — с containment (#3362) хвост крупного бакета не переобходится
Closed
#3369 domclick city sweep: cancel-ветка пишет counters без done_buckets — резюм cancelled-прогона пересобирает всё заново
Closed
#3225 tradein: offer_price_history.diff_percent у domklik — колонка смешанных единиц (рубли и проценты вперемешку)
Closed
#3355 scraper-kit: ещё 4 дрейна с живым чекпоинтом без метки interrupted — domclick sweep и три full-load (cian/yandex/avito) нерезюмируемы после SIGTERM
Closed
#3359 scraper-kit: containment-skip до пробы (#3315) подключён только у avito — cian/yandex full-load при резюме тоже пере-пробивают готовые полосы
Closed
#3172 Свежесть источника меряется по статусу done — источник с блоками числится мёртвым, пока приносит данные
Closed
#3324 Деплой ПТИЦЫ проверяет только backend /health — мёртвый frontend или crash-loop worker/beat уезжают зелёным деплоем
Closed
#3312 tradein/scheduler: пропуск по протухшим кукам Циана отбрасывает следующий запуск на сутки вместо шести часов — _defer_next_run_at не знает про interval_minutes
Closed
#3315 avito exhaustive: резюм пере-пробивает готовые полосы — на худом пуле весь бан-бюджет сгорает до первой новой корзины
Closed
#3343 Флаки: test_auth_api.py — замер «худший сторонний запрос < 500 мс» падает на нагруженном раннере и роняет деплой tradein
Closed
#3338 yandex/avito detail_backfill: save-False не начисляет исход — та же потеря попытки, что #3332 у domclick
Closed
#3339 v2: флаг thin_market карточки avito_imv нигде не отрисован — «display-only» обещание без display
Closed
#3333 scraper-kit: дрейн-метка interrupted только у avito_city_sweep — у yandex/cian/newbuilding дрейн по-прежнему неотличим от полного done
Closed
#3316 [SECURITY][P1] tradein/team: имя из roles.yaml при создании сотрудника даёт эскалацию до admin — IDOR по всем оценкам и безлимит квоты
Closed
#3332 domclick_detail_backfill: обрыв «пул пуст» бросает попытку неучтённой — attempted ≠ enriched+failed+blocked
Closed
#3319 avito_city_sweep: чекпоинт мёртв по построению — 0 из 67 прогонов за 60 дней записали done_buckets, плюс две дыры честности
Closed
#3341 PDF-отчёт клиента печатает реальные названия площадок — привести к норме publicLabel («Источник N»)
Closed
#3322 Россети WFS: сессионный feature.id как external_id — power_supply_centers раздут ×10, ON CONFLICT не сработал ни разу
Closed
#3320 v2: четыре места, где числа честно посчитаны и нечестно показаны — «0,00 млн · −100%» зелёным, смешанные выборки в футере, deals-only полоса, бейдж о…
Closed
#3321 лендинг: обязательные этаж и состояние уничтожаются непрочитанными — takeDraft() удаляет черновик целиком на монтировании /estimate
Closed
#3190 Домклик detail: сайдкар даёт чистый контекст на каждый запрос, мы реплеим протухший qrator_jsid2 — отсюда «одна карточка и стена»
Closed
#3192 Яндекс: авторизованная сессия открывает контакты продавца (author.phoneNumbers) — хранилище сессии и извлечение телефонов
Closed
#3297 tradein/avito: browser-путь detail не смотрит на HTTP-статус — отказ 439 приезжает как ошибка парсинга, узел не ротируется
Closed
#3194 Ключ шифрования кук и сами куки уезжают в GlitchTip через текст исключения SQLAlchemy (все три сервиса сессий)
Closed
#3078 Телеметрия: метрики и Grafana — сегодня тихий отказ не виден ничем
Closed
#3118 Домклик не собирается с 5 августа: 17 банов подряд, QRATOR рубит на первой из шести корзин
Closed
#2869 CI/деплой встали: диск VPS 94%, копятся buildx-билдеры (20 штук, до 2 месяцев)
Closed
#2275 [tradein][v2] Мобильной раскладки нет: 390px → overflowX 473px, десктопная сетка без брейкпоинта (из аудита #2266)
Closed
#2081 trade-in/v2: UI/UX аудит — round 2 (системный контраст · честность чисел: дедуп/фильтр/адрес · a11y drawer+автокомплит)
Closed
#2277 [tradein] cleanup-волна после стабилизации scraper-kit: удалить legacy-дубли скрапперов + косметика pool
Closed
#2320 [tradein][analytics] Point-in-time backtest на listing_source_snapshots — заблокировано данными, не кодом
Closed
#3283 tradein/domclick: пустой пул прокси и таймаут навигации считаются блоками площадки и вместе рвут добор карточек
Closed
#3272 tradein/domclick: «система защиты от протечек» в описании квартиры читалась свипом как блок QRATOR
Closed
#3270 CI Trade-In: test_fifth_concurrent_estimate_gets_fast_429 виснет на 120с — гонка на sleep(0.05)
Closed
#3063 Яндекс: is_homeowner / is_pro_seller стираются при каждом «бедном» re-scrape (живая потеря данных)
Closed
#3074 Скрапперы: чекпоинты — длинный прогон продолжается с места обрыва, а не начинается заново
Closed
#1781 [tradein] cian-первичка не освежается: 9205 заморожены с 31.05, 93% без house_id_fk, фантомы не гаснут (Савкова 29)
Closed
#2012 [tradein][estimator] Подключить house_type/kitchen/ceiling как фичи comp-scoring (+ обязательный backtest)
Closed
#2657 [HIGH] tradein/scraper: охват Домклика упал в 8-10 раз — прод-свип даёт ~1% предложения, а видимый пул держался внешним ручным ингестом
Closed
#2678 tradein/houses: хвосты после #2675 — camelCase-типы домов не нормализованы у источника, расхождение двух путей по монолиту, 369 замороженных строк
Closed
#2723 [HIGH] tradein/proxy: проверка здоровья прокси ходит обычным HTTP, а работа — браузером — 480 зелёных проб за 10 суток, когда сбор падал по 4-5 раз в день
Closed
#2857 Витрина поиска отдаёт четыре поля-заглушки: NULL прописан в самом определении, читателей у трёх — ноль
Closed
#2934 [HIGH] ПТИЦА: отчёт утверждает отсутствие природного риска, ни разу его не проверив — 12 мест
Closed
#2936 [HIGH] МЕРА/эстиматор: отбор сопоставимых предпочитает источник с худшими данными — отсутствие поля считается идеальным совпадением
Closed
#3264 tradein/domclick: свип ходит на QRATOR без кук сессии — все запросы виснут на PoW, 0 лотов
Closed
#3212 fix(tradein/domclick): перезапуск браузера на карточку уничтожает пропуск QRATOR — лечим симптом, который сами и создаём
Closed
#3261 tradein/domclick: проверить, не травят ли контекст инжектируемые куки сессии — последняя невыясненная разница между добором и ручными пробами
Closed
#3170 yandex_city_sweep: combo с упавшим сохранением уходит в чекпоинт — молчаливая дыра в покрытии
Closed
#3168 import_rosreestr_dkp: курсор last_id живёт только в памяти — рестарт начинает импорт с нуля
Closed
#3047 Парсер карточки Авито недобирает поля: параметры дома теряются молча, метро тянется из описания, собственник не парсится
Closed
#2950 Деплой Trade-In своим prune -af убивает compose pull деплоя ПТИЦЫ (разные группы concurrency, один докер-демон)
Closed
#3248 Пересчитать хедонические коэффициенты поверх area-бакетного ratio — площадь штрафуется дважды, 4+ комнат занижены на 21%
Closed
#3239 tradein/domclick: после #3237 настоящий отказ площадки перестал банить узел — уехал в ветку «сбой транспорта»
Closed
#3189 Домклик: критерий обрыва по доле блоков — нужна своя калибровка (один прокси без ротации, цена ошибки другая)
Closed
#3205 tradein/domclick: площадка отдаёт одну карточку на экземпляр браузера — перезапускать camoufox после каждой страницы
Closed
#3196 Скрапперы A1: detail-пути ДомКлика, Циана и Яндекса не проставляют ban_kind — 23 бана Авито числятся unknown, у Яндекса ветка бана мертва
Closed
#3184 Обрыв по серии блоков срабатывает на КАЖДОМ прогоне (40 из 40 за 14 дней) — критерий не несёт информации
Closed
#3185 Сайдкар безусловно блокирует картинки — camoufox предупреждает, что это детектируется WAF (44 раза за 3 часа)
Closed
#3178 Авито/Домклик: ban_kind теряет явное большинство при схлопывании + причина в алерте захардкожена
Closed
#2986 gisogd_permits: ключ (doc_group, doc_num) схлопывает 2243 разных документа — на проде нет 23.9% реестра
Closed
#2956 [needs-human] НСПД не отдаёт данные с 27.07 — 24 суток без единого успешного дампа, WAF 403 на IP VPS
Closed
#2848 Осиротевший прогон 6 часов числится «идёт»: деплой убил процесс, а status='running' остался — гейт деплоя врёт
Closed
#3027 Переезд: понизить TTL на 13 доменах за 24–48 часов до окна
Closed
#2997 Индексы: ~855 МБ мёртвых и дублирующих на listings, у houses вообще нет индекса под geography
Closed
#3163 Тема «метрики» в Telegram пуста: инфра-алерты и клиентские инциденты делят одну тему 158
Closed
#3156 tgbot: getUpdates падает 23 раза в сутки, а в логе пустая строка вместо причины
Closed
#3161 Alertmanager отвечает 404 на /api/v2/alerts: внешний префикс распространён на весь API
Closed
#3155 Prometheus не видел ни одного Alertmanager: цель file_sd осталась пустой при включённом профиле alerts
Closed
#2673 [КРИТИЧНО] МЕРА слепа: за всю историю не отправлено ни одного уведомления — в GlitchTip нет ни правил, ни получателей
Closed
#3114 Пароли БД утекают в логи: postgres_exporter печатает DSN при каждой неудачной сборке WAL-метрик (~210 строк в сутки)
Closed
#2452 fix(frontend): нейтральный fallback ещё в 4 enum-lookup-местах (follow-up #2445-B2/B3)
Closed
#3151 geocode-бэкфилл: budget_sec проверяется только между батчами — прогон ушёл на 175 % бюджета
Closed
#2860 yandex_newbuilding_sweep: восемь прогонов подряд «обработано 5, успешно 0» со статусом done, очередь растёт 351 → 389
Closed
#2953 tradein: 429 от Nominatim — сдерживатель темпа стоит на успешной ветке, при череде неудач его нет
Closed
#2990 Чистый старт БД падает на миграции 077: FDW-backfill выполняется до создания USER MAPPING
Closed
#3148 Легаси-периметр impersonate: три прод-пути бэкенда остались на chrome120, а тест это закрепляет
Closed
#2904 compliance: заменить маркетинговые метрики лэндинга на вычисляемые до снятия noindex
Closed
#3034 Авито: притворяемся Chrome 120 в 2026 году, и заголовки внутренне противоречивы
Closed
#2656 [HIGH] tradein/estimate: якорь дома и знаменатель коэффициента выкупа читают is_active без фильтра свежести — протухшие объявления напрямую двигают цену
Closed
#2203 [P0] Off-box бэкап tradein-postgres + restore-тест + hardening backup-скрипта
Closed
#3082 MERA: на /trade-in/estimate нет ограничителя одновременности — рейт-лимит меряет частоту, а не параллелизм
Closed
#3122 Планировщик: зомби после ребута хоста блокируют источники до 6 часов — нужен boot-reap по границе старта контейнера
Closed
#3110 Переезд: 188.246.224.93 заблокирован у российских операторов — продукты недоступны клиентам с 25.08
Closed
#3119 Poincare не отвечает с 00:41 МСК — продукты лежат девять часов, и об этом никто не узнал
Closed
#3032 Переезд: замерить фактическую задержку Beget ↔ Selectel СПб — оценка 10–15 мс не проверялась
Closed
#3081 MERA: карточка прогресса оценки показывает выдуманные стадии и ссылается на серверную механику, которой в этом пути нет
Closed
#3044 Авито detail: HTTP 439 не обработан вовсе, а 429 с бан-страницей QRATOR ретраится на сожжённом IP
Closed
#3036 Данные о доме с площадок не доезжают: консьерж заполнен у 5 домов из 10 131, а парсим мы его на каждой карточке
Closed
#3061 [БЛОКЕР] Переезд ломает сам Forgejo: его БД живёт внутри уезжающего gendesign-postgres-1
Closed
#3057 Переезд: раннбук окна cutover — порядок, тайминги, критерии отката
Closed
#3085 Блокер 30.08: на Poincare нет бэкапов вообще — пустой crontab, и отказ будет тихим
Closed
#3094 Переезд: на Poincare не задан TRADEIN_DATABASE_URL — newbuilding-crossload молча грузит 0 лотов вместо ~11 000/сут
Closed
#3028 Переезд: скрапперы остаются на Beget — построчный upsert через сеть станет часами ожидания
Closed
#3005 Cron бэкапа tradein вызывает скрипт сырым путём — потеря бита +x сломает бэкап молча
Closed
#3033 Авито: у площадки есть родной фильтр вторички — качаем впятеро больше, чем нужно
Closed
#2864 chore(tooling): pre-commit пинит ruff v0.7.4, в venv 0.15.12 — хук переформатирует чужие строки
Closed
#2899 estimator: положение объекта на рынке (перцентиль внутри когорты)
Closed
#2991 Postgres на стоковом конфиге: shared_buffers 128 МБ на базу 21 ГБ, wal_compression off при доле FPI 55-86%
Closed
#2992 Апсерт переписывает 41 колонку безусловно — корень 15 ГБ раздутости и 7 ГБ WAL в сутки
Closed
#2867 ПТИЦА: avg_area_m2 в топ-планировках показывает 0 м² вместо «нет данных» (нужна правка контракта)
Closed
#2924 tradein: очередь yandex_newbuilding упирается в одни и те же пять домов — неудача ничего не помечает
Closed
#2846 «ФАКТИЧЕСКИЕ СДЕЛКИ» на экране — сделки семимесячной давности, и возраст никуда не доезжает
Closed
#2998 Росреестр не грузится 39 суток: rosreestr_dkp_import каждый день рапортует done с total_seen=0
Closed
#2916 ops: правка Caddyfile ради МЕРЫ пересобирает и передеплоивает Site Finder, применяя все pending SQL
Closed
#2917 ops: смоук периметра МЕРЫ не запускается после деплоя — регресс живёт до суток
Closed
#9 Stage 2c: Интеграция Site Finder ↔ Generative + подача в реестр ПО
Closed
#2677 [HIGH] tradein/estimate: домовой якорь подбирается без учёта ремонта, а подмешивается только вверх — после починки параметров это станет системати…
Closed
#2382 fix(tradein/estimator): merge orphaned floor term for hedonic composite (#2002 roadmap item 1)
Closed
#2632 tradein: бэкенд не отдаёт фактический радиус поиска — карта рисует круг по выбору пользователя, а не по тому, что реально искали
Closed
#2625 [HIGH] tradein/scraper: капча Циана и пустые выдачи Яндекса засчитываются как успешный прогон — 41 из 68 прогонов за 2 недели забрали ноль лотов без ед…
Closed
#2590 tradein/geocoder: инвариант «назван чужой топоним + результат внутри ЕКБ = недостоверно» вместо перечисления городов
Closed
#2871 CI: backend-tests краснеет ПОСЛЕ зелёного pytest, и по логу нельзя понять, в каком шаге
Closed
#2841 Битый слой buildcache роняет сборку бэкенда — правка не доезжает до прода, а сигнала об этом нет
Closed
#2830 tradein: два места по-прежнему ходят мимо пула прокси (cian_price_history + /admin/scraper/health)
Closed
#2812 [HIGH] ptica/db: параллельные запросы Объектива падают на /dev/shm = 64 МБ (умолчание Docker) — 6 отказов за сутки
Closed
#2800 [HIGH] tradein/proxy: браузерная проба спрашивает только Авито — узел «здоров» и мёртв для Домклика одновременно
Closed
#2700 [HIGH] tradein/cian: detail-страницы отдают 403 на 50 из 50 попыток 15 дней подряд — прогон пишет errors=0 и done, все домовые поля Циана нулевые
Closed
#2683 chore(tradein): _manifest_applied.txt отстал на 27 имён — гейт от коллизий номеров миграций не работает между ветками
Closed
#2567 tradein/ui: чистить TanStack Query cache при смене identity (login/logout)
Closed
#2376 backend: POST /api/v1/trade-in/lead + persist (parent #1971)
Closed
#2457 fix(export): «НДС (паркинг)» → «НДС (паркинг + коммерция)» в full_report экспортёрах (follow-up #2445-C1)
Closed
#2369 [tradein][obs] scrape_runs.total_seen=0 у yandex (и проверить avito/cian) — counters пишутся только в jsonb
Closed
#2350 [tradein] scraper_kit Group F2: fix avito build_warmed_session() missing config= (#2330)
Closed
#2349 [tradein] scraper_kit Group F1: fix yandex/cian newbuilding BrowserFetcher missing endpoint= (#2322)
Closed
#2087 trade-in/v2: data-contract — рассинхрон счётчика источников / ratio-vs-медианы / базы торга + кросс-source дедуп (из аудита #2081)
Closed
#400 feat(tradein): #3 — источник ДомКлик
Closed
#2894 B2C: бесплатная проба покрытия — POST /trade-in/coverage
201 issues created by 2 users
Opened
#2857 Витрина поиска отдаёт четыре поля-заглушки: NULL прописан в самом определении, читателей у трёх — ноль
Opened
#2860 yandex_newbuilding_sweep: восемь прогонов подряд «обработано 5, успешно 0» со статусом done, очередь растёт 351 → 389
Opened
#2862 Бэктест калибрует оценщик с выключенным штрафом за тип дома: deals.house_type пуст у 96 974 из 96 974, у источника заполнен на 99.74%
Opened
#2864 chore(tooling): pre-commit пинит ruff v0.7.4, в venv 0.15.12 — хук переформатирует чужие строки
Opened
#2867 ПТИЦА: avg_area_m2 в топ-планировках показывает 0 м² вместо «нет данных» (нужна правка контракта)
Opened
#2869 CI/деплой встали: диск VPS 94%, копятся buildx-билдеры (20 штук, до 2 месяцев)
Opened
#2871 CI: backend-tests краснеет ПОСЛЕ зелёного pytest, и по логу нельзя понять, в каком шаге
Opened
#2894 B2C: бесплатная проба покрытия — POST /trade-in/coverage
Opened
#2895 B2C: анонимный периметр — открыть geocode/suggest и coverage без авторизации
Opened
#2896 B2C: платёжный контур 150 ₽ (CloudPayments) + серверный пейволл
Opened
#2897 B2C: страница отчёта /r/<token> + доставка на e-mail
Opened
#2899 estimator: положение объекта на рынке (перцентиль внутри когорты)
Opened
#2898 estimator: окно прогноза срока продажи вместо одного числа + персист
Opened
#2900 B2C data: контур сверки «прогноз → факт сделки»
Opened
#2902 B2C: «Продажа под ключ» — приём заявки на агентскую услугу
Opened
#2901 B2C: раздел статей (SEO-контур)
Opened
#2903 B2C: игра «Проверьте себя» на реальных сделках
Opened
#2904 compliance: заменить маркетинговые метрики лэндинга на вычисляемые до снятия noindex
Opened
#2916 ops: правка Caddyfile ради МЕРЫ пересобирает и передеплоивает Site Finder, применяя все pending SQL
Opened
#2917 ops: смоук периметра МЕРЫ не запускается после деплоя — регресс живёт до суток
Opened
#2924 tradein: очередь yandex_newbuilding упирается в одни и те же пять домов — неудача ничего не помечает
Opened
#2934 [HIGH] ПТИЦА: отчёт утверждает отсутствие природного риска, ни разу его не проверив — 12 мест
Opened
#2936 [HIGH] МЕРА/эстиматор: отбор сопоставимых предпочитает источник с худшими данными — отсутствие поля считается идеальным совпадением
Opened
#2950 Деплой Trade-In своим prune -af убивает compose pull деплоя ПТИЦЫ (разные группы concurrency, один докер-демон)
Opened
#2953 tradein: 429 от Nominatim — сдерживатель темпа стоит на успешной ветке, при череде неудач его нет
Opened
#2956 [needs-human] НСПД не отдаёт данные с 27.07 — 24 суток без единого успешного дампа, WAF 403 на IP VPS
Opened
#2962 tradein/ПТИЦА: мост gap-fill по objective_lots.complex_id тянет чужие ЖК — скорость и цена раздуты вчетверо у 185 конкурентов
Opened
#2967 ПТИЦА: основной источник скорости продаж (objective) не выбирался ни разу — порог 50%, максимум покрытия 23.7%
Opened
#2982 act_number не извлекается ни у одной строки land_reservation — регекс ждёт суффикс областных актов
Opened
#2985 cad_territorial_zones: запрос к НСПД на каждый квартал, 1 строка в таблице и ни одного читателя
Opened
#2986 gisogd_permits: ключ (doc_group, doc_num) схлопывает 2243 разных документа — на проде нет 23.9% реестра
Opened
#2989 [EPIC] МЕРА: пересборка базы начисто при переезде на выделенный сервер
Opened
#2990 Чистый старт БД падает на миграции 077: FDW-backfill выполняется до создания USER MAPPING
Opened
#2991 Postgres на стоковом конфиге: shared_buffers 128 МБ на базу 21 ГБ, wal_compression off при доле FPI 55-86%
Opened
#2992 Апсерт переписывает 41 колонку безусловно — корень 15 ГБ раздутости и 7 ГБ WAL в сутки
Opened
#2993 listing_source_snapshot пишет полную копию всех источников каждые сутки — 97,6% строк дубли по построению
Opened
#2994 26 203 мёртвых объявления числятся активными: deactivate_stale_* читают last_seen_at, который лжёт
Opened
#2995 Кросс-источниковый дедуп объявлений невозможен по построению: dedup_hash = source + source_id, матчер не вызывается ни разу
Opened
#2996 Блокер Москвы: город входит в ценовую формулу текстом, нормализованный адрес считается уникальным по всей стране
Opened
#2997 Индексы: ~855 МБ мёртвых и дублирующих на listings, у houses вообще нет индекса под geography
Opened
#2998 Росреестр не грузится 39 суток: rosreestr_dkp_import каждый день рапортует done с total_seen=0
Opened
#3005 Cron бэкапа tradein вызывает скрипт сырым путём — потеря бита +x сломает бэкап молча
Opened
#3027 Переезд: понизить TTL на 13 доменах за 24–48 часов до окна
Opened
#3028 Переезд: скрапперы остаются на Beget — построчный upsert через сеть станет часами ожидания
Opened
#3029 Переезд: деплой-конвейер разворачивается наизнанку — раннеры на Beget катят на Selectel
Opened
#3030 Переезд: лимиты потребления на Beget после разгрузки — cgroup, своп, prune, мониторинг
Opened
#3031 Переезд: зоопарк дашбордов в LXC на новом хосте, сертификаты 13 сайтов перевыпустить, 94.228.121.73 погасить
Opened
#3032 Переезд: замерить фактическую задержку Beget ↔ Selectel СПб — оценка 10–15 мс не проверялась
Opened
#3033 Авито: у площадки есть родной фильтр вторички — качаем впятеро больше, чем нужно
Opened
#3034 Авито: притворяемся Chrome 120 в 2026 году, и заголовки внутренне противоречивы
Opened
#3035 Авито detail-бэкфилл отрезает ?context= — теряется searchHash, карточка выглядит пришедшей ниоткуда
Opened
#3036 Данные о доме с площадок не доезжают: консьерж заполнен у 5 домов из 10 131, а парсим мы его на каждой карточке
Opened
#3037 Авито отдаёт историю цен по объявлению — не запрашиваем вовсе
Opened
#3043 Авито: geoCoords/radius в SERP-URL сервером не применяются — якорный city-sweep качает 5× одну и ту же городскую выдачу
Opened
#3044 Авито detail: HTTP 439 не обработан вовсе, а 429 с бан-страницей QRATOR ретраится на сожжённом IP
Opened
#3045 Корень отказов Авито: QRATOR отдаёт proof-of-work челлендж, а мы его не проходим ни одним из путей
Opened
#3047 Парсер карточки Авито недобирает поля: параметры дома теряются молча, метро тянется из описания, собственник не парсится
Opened
#3051 Москва, часть 1/3: ключи регионов — реестр вместо констант, city_fias_id, doc_type
Opened
#3052 Москва, часть 2/3: гард по полигону вместо радиуса 3 км — адрес перестаёт быть уникальным по стране
Opened
#3053 Москва, часть 3/3: решение по FDW — обогащение ходит в чужую базу, переезд рвёт связь
Opened
#3057 Переезд: раннбук окна cutover — порядок, тайминги, критерии отката
Opened
#3059 Переезд: перечень интеграций, привязанных к IP 46.173.16.127 — что ломается молча
Opened
#3061 [БЛОКЕР] Переезд ломает сам Forgejo: его БД живёт внутри уезжающего gendesign-postgres-1
Opened
#3063 Яндекс: is_homeowner / is_pro_seller стираются при каждом «бедном» re-scrape (живая потеря данных)
Opened
#3064 Домклик: богатые поля SERP оседают в raw_payload и никуда не доезжают (100 % NULL в колонках)
Opened
#3074 Скрапперы: чекпоинты — длинный прогон продолжается с места обрыва, а не начинается заново
Opened
#3075 После переезда: сузить периметр доступа — отзыв старого ключа, узкие правила SSH, уборка секретов
Opened
#3078 Телеметрия: метрики и Grafana — сегодня тихий отказ не виден ничем
Opened
#3081 MERA: карточка прогресса оценки показывает выдуманные стадии и ссылается на серверную механику, которой в этом пути нет
Opened
#3082 MERA: на /trade-in/estimate нет ограничителя одновременности — рейт-лимит меряет частоту, а не параллелизм
Opened
#3083 MERA: бэкенд оценки крутится в один воркер uvicorn — тяжёлый /estimate внутри event loop блокирует всех
Opened
#3085 Блокер 30.08: на Poincare нет бэкапов вообще — пустой crontab, и отказ будет тихим
Opened
#3094 Переезд: на Poincare не задан TRADEIN_DATABASE_URL — newbuilding-crossload молча грузит 0 лотов вместо ~11 000/сут
Opened
#3110 Переезд: 188.246.224.93 заблокирован у российских операторов — продукты недоступны клиентам с 25.08
Opened
#3114 Пароли БД утекают в логи: postgres_exporter печатает DSN при каждой неудачной сборке WAL-метрик (~210 строк в сутки)
Opened
#3118 Домклик не собирается с 5 августа: 17 банов подряд, QRATOR рубит на первой из шести корзин
Opened
#3119 Poincare не отвечает с 00:41 МСК — продукты лежат девять часов, и об этом никто не узнал
Opened
#3122 Планировщик: зомби после ребута хоста блокируют источники до 6 часов — нужен boot-reap по границе старта контейнера
Opened
#3148 Легаси-периметр impersonate: три прод-пути бэкенда остались на chrome120, а тест это закрепляет
Opened
#3151 geocode-бэкфилл: budget_sec проверяется только между батчами — прогон ушёл на 175 % бюджета
Opened
#3154 Секрет вебхука GlitchTip уходит в Loki: uvicorn логирует query-параметр, скруббер #3115 его не ловит
Opened
#3155 Prometheus не видел ни одного Alertmanager: цель file_sd осталась пустой при включённом профиле alerts
Opened
#3157 Доставка уведомлений GlitchTip ненаблюдаема: is_sent не означает, что кто-то их получил
Opened
#3156 tgbot: getUpdates падает 23 раза в сутки, а в логе пустая строка вместо причины
Opened
#3159 GlitchTip: почта уходит в /dev/null (EMAIL_URL=consolemail://), uptime-мониторы шлют в никуда
Opened
#3158 Grafana: ноль правил алертинга и ноль контакт-поинтов — решить, нужен ли он вообще
Opened
#3161 Alertmanager отвечает 404 на /api/v2/alerts: внешний префикс распространён на весь API
Opened
#3163 Тема «метрики» в Telegram пуста: инфра-алерты и клиентские инциденты делят одну тему 158
Opened
#3164 Уведомления бэкапов уходят в общую тему форума: TELEGRAM_TOPIC_ID не задан ни в одном env бэкапов
Opened
#3168 import_rosreestr_dkp: курсор last_id живёт только в памяти — рестарт начинает импорт с нуля
Opened
#3170 yandex_city_sweep: combo с упавшим сохранением уходит в чекпоинт — молчаливая дыра в покрытии
Opened
#3171 Ротация IP прокси построена, но не вызвана ни разу: единственный вызывающий — ручка админки
Opened
#3172 Свежесть источника меряется по статусу done — источник с блоками числится мёртвым, пока приносит данные
Opened
#3175 Квартальный harvest НСПД не догоняет устаревание: 50 кварталов в неделю на 11 048 — покрытие сходится к 6%
Opened
#3177 Авито detail: авторизованные сессии — хранение кук, липкость к прокси, прогрев в браузерном пути
Opened
#3178 Авито/Домклик: ban_kind теряет явное большинство при схлопывании + причина в алерте захардкожена
Opened
#3180 Авито: браузерный путь берёт сохранённую сессию + прогрев, сейчас ходит холодным
Opened
#3179 Авито: распространить существующее хранилище сессий (как у Циана/Домклика) + липкость к exit-IP
Opened
#3181 Авито: измерить потолок карточек на сессию и развести «аккаунт vs прогретые куки»
Opened
#3182 Флаг AVITO_DETAIL_BACKFILL_USE_CURL имеет разные значения в контейнерах, которые оба исполняют задачи
Opened
#3184 Обрыв по серии блоков срабатывает на КАЖДОМ прогоне (40 из 40 за 14 дней) — критерий не несёт информации
Opened
#3185 Сайдкар безусловно блокирует картинки — camoufox предупреждает, что это детектируется WAF (44 раза за 3 часа)
Opened
#3187 Сайдкар жёстко задаёт таймзону МСК поверх geoip — camoufox предупреждает о детекте при расхождении с IP
Opened
#3189 Домклик: критерий обрыва по доле блоков — нужна своя калибровка (один прокси без ротации, цена ошибки другая)
Opened
#3190 Домклик detail: сайдкар даёт чистый контекст на каждый запрос, мы реплеим протухший qrator_jsid2 — отсюда «одна карточка и стена»
Opened
#3191 Яндекс: недорендеренная карточка (1,8 МБ вместо 3,9) принимается за успешную — проверка размера отвечает не на тот вопрос
Opened
#3192 Яндекс: авторизованная сессия открывает контакты продавца (author.phoneNumbers) — хранилище сессии и извлечение телефонов
Opened
#3194 Ключ шифрования кук и сами куки уезжают в GlitchTip через текст исключения SQLAlchemy (все три сервиса сессий)
Opened
#3196 Скрапперы A1: detail-пути ДомКлика, Циана и Яндекса не проставляют ban_kind — 23 бана Авито числятся unknown, у Яндекса ветка бана мертва
Opened
#3197 Скрапперы A2: четыре точки ходят мимо пула прокси, и тёплый контекст сайдкара ключуется по провайдеру, а не по узлу
Opened
#3205 tradein/domclick: площадка отдаёт одну карточку на экземпляр браузера — перезапускать camoufox после каждой страницы
Opened
#3208 dev-env: разделить трафик рабочей машины (VPN / геохайд / прод-прокси / обычный) — сейчас DNS тормозит и мешает воспроизводить прод локально
Opened
#3212 fix(tradein/domclick): перезапуск браузера на карточку уничтожает пропуск QRATOR — лечим симптом, который сами и создаём
Opened
#3219 MCP-стек рефакторинга: хвосты после PR #3209 (DuckDB, покрытие codanna, копипаста в forecasting)
Opened
#3225 tradein: offer_price_history.diff_percent у domklik — колонка смешанных единиц (рубли и проценты вперемешку)
Opened
#3234 Аналоги подбираются без учёта класса дома — total_floors как прокси серии
Opened
#3239 tradein/domclick: после #3237 настоящий отказ площадки перестал банить узел — уехал в ветку «сбой транспорта»
Opened
#3246 tradein/proxy: блок Домклика банит узел пула на двое суток там, где хватило бы сброса контекста
Opened
#3248 Пересчитать хедонические коэффициенты поверх area-бакетного ratio — площадь штрафуется дважды, 4+ комнат занижены на 21%
Opened
#3251 tradein/scrapers: проверить Авито, Циан и Яндекс тем же способом, что вскрыл дефекты Домклика
Opened
#3252 tradein/domclick: аудит полноты — что есть на странице карточки и чего мы не забираем
Opened
#3253 tradein/domclick: данные о доме с карточки не доезжают до houses — 400 домов против 3061 объявления
Opened
#3256 Пересчитать asking_to_sold_ratios — бакет ≥85 м² занижен на 5%, остаток занижения крупного жилья
Opened
#3261 tradein/domclick: проверить, не травят ли контекст инжектируемые куки сессии — последняя невыясненная разница между добором и ручными пробами
Opened
#3263 tradein/browser: заход через поиск Яндекса срабатывает 2 раза из 9 — капча на выдаче, откат без Referer
Opened
#3264 tradein/domclick: свип ходит на QRATOR без кук сессии — все запросы виснут на PoW, 0 лотов
Opened
#3270 CI Trade-In: test_fifth_concurrent_estimate_gets_fast_429 виснет на 120с — гонка на sleep(0.05)
Opened
#3272 tradein/domclick: «система защиты от протечек» в описании квартиры читалась свипом как блок QRATOR
Opened
#3274 Публичный лендинг лежит 30–90 секунд при КАЖДОМ деплое: подмена контейнера всплывает как 502
Opened
#3280 Лендинг на мобильном: тикер — 39% узлов страницы (446 из 1142). Анимация при этом невиновна
Opened
#3283 tradein/domclick: пустой пул прокси и таймаут навигации считаются блоками площадки и вместе рвут добор карточек
Opened
#3284 tradein/cian: добор карточек работает без единого отказа, но квота 100/сутки — остаток разгребается 190 дней
Opened
#3288 tradein/avito: отказ сайдкара и пустой пул считаются блоками площадки и рвут добор по доле — тот же дефект, что #3283, но по ratio
Opened
#3297 tradein/avito: browser-путь detail не смотрит на HTTP-статус — отказ 439 приезжает как ошибка парсинга, узел не ротируется
Opened
#3299 tradein/proxy_pool: защита «последнего узла выделенной affinity» не считает узлы 'any' и прячет свободный узел от всех источников
Opened
#3307 domrf_kn: наш.дом.рф сменил анти-бот на StormWall — IP Poincare блокируется, конвейер КН стоит с 28.06
Opened
#3310 proxy_pool: защита последнего узла бережёт бан, но не счётчик отказов — узел выбывает через 3 мс после обещания «продолжит выдаваться»
Opened
#3311 tradein/scrapers: 101 городское расписание выключено и не запускалось ни разу — 39 городов области не отличимы от «собрано и пусто»
Opened
#3312 tradein/scheduler: пропуск по протухшим кукам Циана отбрасывает следующий запуск на сутки вместо шести часов — _defer_next_run_at не знает про interval_minutes
Opened
#3315 avito exhaustive: резюм пере-пробивает готовые полосы — на худом пуле весь бан-бюджет сгорает до первой новой корзины
Opened
#3316 [SECURITY][P1] tradein/team: имя из roles.yaml при создании сотрудника даёт эскалацию до admin — IDOR по всем оценкам и безлимит квоты
Opened
#3319 avito_city_sweep: чекпоинт мёртв по построению — 0 из 67 прогонов за 60 дней записали done_buckets, плюс две дыры честности
Opened
#3320 v2: четыре места, где числа честно посчитаны и нечестно показаны — «0,00 млн · −100%» зелёным, смешанные выборки в футере, deals-only полоса, бейдж о…
Opened
#3321 лендинг: обязательные этаж и состояние уничтожаются непрочитанными — takeDraft() удаляет черновик целиком на монтировании /estimate
Opened
#3322 Россети WFS: сессионный feature.id как external_id — power_supply_centers раздут ×10, ON CONFLICT не сработал ни разу
Opened
#3323 Сборник аудита 02.09 — средние/низкие подтверждённые находки (7 шт., каждая с уликой скептика)
Opened
#3324 Деплой ПТИЦЫ проверяет только backend /health — мёртвый frontend или crash-loop worker/beat уезжают зелёным деплоем
Opened
#3332 domclick_detail_backfill: обрыв «пул пуст» бросает попытку неучтённой — attempted ≠ enriched+failed+blocked
Opened
#3333 scraper-kit: дрейн-метка interrupted только у avito_city_sweep — у yandex/cian/newbuilding дрейн по-прежнему неотличим от полного done
Opened
#3338 yandex/avito detail_backfill: save-False не начисляет исход — та же потеря попытки, что #3332 у domclick
Opened
#3339 v2: флаг thin_market карточки avito_imv нигде не отрисован — «display-only» обещание без display
Opened
#3341 PDF-отчёт клиента печатает реальные названия площадок — привести к норме publicLabel («Источник N»)
Opened
#3343 Флаки: test_auth_api.py — замер «худший сторонний запрос < 500 мс» падает на нагруженном раннере и роняет деплой tradein
Opened
#3354 Alloy: второй слой скруббинга query-секретов (secret|token|api_key) в alloy-apps.alloy — defence-in-depth к #3154
Opened
#3355 scraper-kit: ещё 4 дрейна с живым чекпоинтом без метки interrupted — domclick sweep и три full-load (cian/yandex/avito) нерезюмируемы после SIGTERM
Opened
#3359 scraper-kit: containment-skip до пробы (#3315) подключён только у avito — cian/yandex full-load при резюме тоже пере-пробивают готовые полосы
Opened
#3360 [SECURITY] Caddy: /trade-in/api/v1/admin/* доступен снаружи анонимно до guard'а — нет среза админского префикса на периметре
Opened
#3366 scraper-kit: run_yandex_full_load не имеет job'а в планировщике — единственный вход админский POST, резюм/чекпоинт без авто-потребителя
Opened
#3368 yandex full-load: _leaf, обрезанный max_pages_per_bucket/CAP, пишется в done-леджер как complete — с containment (#3362) хвост крупного бакета не переобходится
Opened
#3369 domclick city sweep: cancel-ветка пишет counters без done_buckets — резюм cancelled-прогона пересобирает всё заново
Opened
#3375 [P1] yandex full-load: _leaf/_degraded передают on_bucket(key, len(seen), …) — int уезжает в save_listings как lots → TypeError, ручной full-load Яндекса ничего не сохраняет
Opened
#3376 domklik price history: 42 скачка ровно ×10 (потерянный разряд в цене источника) — миграция 285 их честно пересчитала в +900 %, гейт лоадера такие занулит; п…
Opened
#3380 deploy-metrics: up -d не перечитывает одно-файловый bind-mount конфига Alloy (Beget читал конфиг 26.08 после успешного деплоя #3377)
Opened
#3384 tradein: «пул пуст на старте батча» у cian/domclick detail-бэкфиллов уходит мимо no_proxy_stop — scheduler пишет failed со стухшими counters
Opened
#3385 tradein/yandex: сдвиг разряда (×10) в истории цен Яндекса структурно не ловится на записи — нужен отлов «на следующем наблюдении»
Opened
#3386 tradein-backend без USE_PROXY_POOL_* — браузерные скрейпы из backend (yandex full-load, админ-ручки) идут на SCRAPER_PROXY_URL = выключенный узел 9 (407) → camoufox InvalidIP, 83 провала …
Opened
#3390 tradein: две живые копии mark_failed/mark_done с разной семантикой counters — app/services/scrape_runs.py ЗАМЕНЯЕТ, scraper_kit/orchestration/runs.py МЕРЖИТ (||)
Opened
#3391 tradein: SIGTERM-drain при деплое не помечает app-task бэкфиллы (cian_detail/cian_history/avito/domclick detail) — hard-cancel через 100 с, строки остаются running → boot-reap делает их zombie
Opened
#3393 tradein: прогоны, оборванные деплоем (interrupted=1), попадают в лестницы стриков — failed-ratio судит частичные counters, а done обнуляет стрик банов источника
Opened
#3394 tradein/cian: фаза houses у cian_city_sweep падает 0/30 с 02.09 — fetch_newbuilding зовётся без proxy_provider → env-фолбэк на мёртвый узел 9 → сайдкар 503
Opened
#3398 tradein: пул прокси на пути /estimate — синхронный acquire без statement_timeout на event loop, IMV-баны атрибутируются источнику avito целиком, house_imv_backfill curl-путь без …
Opened
#3401 tradein/dadata: услуга CLEAN (стандартизация) выключена на аккаунте — HTTP 403, /estimate работает через suggest-fallback без canonical/cadnum (решение владельца: включить…
Opened
#3402 tradein/cian: капча Циана приходит с HTTP 200 и не распознаётся как отказ площадки — cian_detail_backfill сжигает батч (0/210, 0/400) на одном узле, парсер пишет «def…
Opened
#3404 Выбор оператора прокси неизмерим: прогон не связан с узлом, а история банов стирается успешной ротацией
Opened
#3408 tradein-backend: пул коннектов SQLAlchemy 15 против пикового спроса до 28 на /estimate; sync db.execute/commit в estimator и cian_price_history на публичном event loop
Opened
#3410 tradein/browser: /login сайдкара не принимает proxy-override — cian auto-login всегда идёт с env-узла сайдкара (сейчас выключенный узел 9 → InvalidIP)
Opened
#3411 tradein/cian: страницы ЖК (zhk-*.cian.ru) не грузятся — Page.goto timeout 60s, фаза houses городского свипа остаётся пустой даже через пул
Opened
#3412 tradein/browser: cian-инстанс camoufox отказывает в 63% запусков (99/156 за 30ч) — релонч браузера перед КАЖДЫМ fetch из-за чередования аренд; generic на том же узле 0%
Opened
#3413 tradein/browser: cian-инстанс camoufox отказывает в 63% запусков (99/156 за 30ч) — релонч браузера перед КАЖДЫМ fetch из-за чередования аренд; generic на том же узле 0%
Opened
#3414 tradein/browser: cian-инстанс camoufox отказывает в 63% запусков (99/156 за 30ч) — релонч браузера перед КАЖДЫМ fetch из-за чередования аренд; generic на том же узле 0%
Opened
#3415 scraper-kit/cian: бакет уходит в done_buckets, хотя фаза houses внутри отказала полностью — следующий прогон пропускает фазу и рапортует done с houses_attempted=0
Opened
#3416 scraper-kit/cian: бакет уходит в done_buckets, хотя фаза houses внутри отказала полностью — следующий прогон пропускает фазу и рапортует done с houses_attempted=0
Opened
#3417 scraper-kit/cian: бакет уходит в done_buckets, хотя фаза houses внутри отказала полностью — следующий прогон пропускает фазу и рапортует done с houses_attempted=0
Opened
#3418 scraper-kit/cian: бакет уходит в done_buckets, хотя фаза houses внутри отказала полностью — следующий прогон пропускает фазу и рапортует done с houses_attempted=0
Opened
#3419 tradein/cian: 80 таймаутов навигации в сутки на ПРОГРЕТЫХ инстансах — хвост латентности Циана против BROWSER_NAV_TIMEOUT_MS=60000 не измерен
Opened
#3439 tradein/avito: серия отказов НАШЕГО тракта не рвёт detail-бэкфилл — 4 прогона × 1600 попыток дали 8 карточек и статус done (infra провалился между ratio-брейк…
Opened
#3443 Полный деплой ПТИЦЫ роняет сам Caddy на 67 секунд — все домены отдают code=000, заглушка окна деплоя здесь бессильна по построению
Opened
#3448 Быстрый путь caddy_only не исполняется: мерж с единственным caddy-файлом пересоздал весь стек ПТИЦЫ, а пропущенная джоба показана как success
Opened
#3449 geocoder: отмена по бюджету оставляет поток работать с сессией запроса — следующий шаг ловит «another operation is in progress», персист оценки отдаёт 500
Opened
#3450 MERA/оценка: премиальный лот прижимается к коридору сделок обычной вторички своей улицы — Малышева 84 теряет 41.8% от клампа
Opened
#3451 tradein: TVF street_sales_vs_listings фильтрует сделки по d.rooms — та же синтетика, что снята в #3256; /sales-vs-listings отдаёт пустое пересечение
Opened
#3452 MERA/оценка: порог показа коридора (3) и порог доверия к нему (10) рассогласованы — клиенты в зоне 3..9 видят коридор, но ценовая страховка молча …
Opened
#3463 tradein-backend: у запросов к БД нет потолка ни по времени, ни по ожиданию блокировки — одна заблокированная таблица вешает /estimate для всех
Opened
#3466 MERA/оценка: пометка «коридор справочный» не покрывает Tier A — там сделок много, пометки нет, а кламп всё равно выключен
Opened
#3467 Деплой метрик кладёт правила на диск, но Prometheus их не перечитывает — правка алерта не вступает в силу, а деплой зелёный
Opened
#3469 Витрина сделок на лендинге МЕРЫ не пересчитывается: задачи нет в расписании, последний прогон 30.08 (13 суток назад), всего 3 прогона за всё вр…
Opened
#3471 Инвентаризация проблем прода 12.09.2026: потерянный ответ клиенту, доставка алертов, слепые зоны мониторинга
Opened
#3480 tradein: транзакция живёт дольше часа регулярно (50 замеров из 4033 за 14 суток, пик 2.2 ч) — пока она жива, vacuum не убирает мёртвые строки во ВСЕЙ базе
Opened
#3486 postgres-exporter: queries.yml примонтирован одиночным файлом и читается только при старте — правка не вступит в силу, джобы агентов пересоздают тольк…
Opened
#3493 NoActiveCeleryWorkers врёт: воркер жив и берёт задачи каждую минуту, а тревога говорит «все periodic-таски встали» — на самом деле не поднят экспортер (ag…
Opened
#3511 Витрина лендинга: прогон с нулём строк завершается успехом, гасит часы свежести и снимает со страницы весь блок вместе с датой
56 unresolved conversations
Open
#2674
[EPIC] МЕРА: 47 мест, где код написан, отревьюен, смержен — и ни разу не сработал на проде
Open
#2583
tradein: остальные находки аудита области — C3 (квартальный индекс) + H1-H5
Open
#2189
tradein/canon: слэш-коллапс в tradein_canon_addr — «Сулимова, 32» ≡ «Сулимова, 3/2» (подтверждено ревизией DaData)
Open
#2013
[tradein][avito] year_built = 0% — источник не отдаёт год постройки (потолок ~1.7% через houses-catalog)
Open
#2638
[ВЛАДЕЛЬЦУ] Один рабочий прокси на три источника — 37 из 53 банов от исчерпания пула, а не от площадок
Open
#2558
tradein/auth 8: DevOps — SESSION_SECRET + AUTH_MODE=dual на прод; cutover follow-up
Open
#2549
[EPIC] tradein: DB-backed auth + ролевка manager→employee (login-форма, сессии, team-management)
Open
#2854
Домклик: блок бьёт внутри первой корзины, ротация узла его не видит — шесть корзин не доводятся никогда
Open
#2576
[EPIC] tradein: расширение Меры на всю Свердловскую область
Open
#667
[tradein][analytics] Point-in-time backtest estimator через listing_source_snapshots (#570)
Open
#2002
[tradein][analytics] Elite/premium estimate accuracy — data-research findings + roadmap
Open
#2827
tradein/avito: detail-страницы отдают HTTP 439 firewall независимо от IP и клиента
Open
#2443
[needs-human] DOM.РФ WAF hard-ban на VPS IP с 2026-05-24 — статус cooldown не проверялся 6 недель
Open
#2659
tradein: деактивация по TTL не знает про баны и покрытие — паушальный TTL уже выкосил 9033 живых строки, у Циана первичка не подметается вовсе
Open
#2704
[ВЛАДЕЛЬЦУ] Сводка: 8 пунктов, которые не чинятся кодом — учётки, ключи, получатель уведомлений, два решения
Open
#2777
[HIGH] tradein/houses: 108 домов сшиты сопоставителем из объявлений разных населённых пунктов (до 290 км разброса)
Open
#2464
EPIC: exhaustive line-by-line аудит backend ПТИЦЫ (2026-07-07) — 89 подтверждённых находок
Open
#2214
[P1] Observability: off-box uptime-probe + fail health-check на dead backend + mem-лимиты + log-rotation
Open
#2761
ops: 13 ГБ из 113 занятых — логи двух контейнеров без ротации; наши compose вообще без потолка
Open
#2855
Проба узла спрашивает robots.txt, а работа — защищённый API: «пара здорова» ровно там, где свип получает QRATOR
Open
#1772
[tradein] Один дом дробится на несколько houses → same-building компы теряются (unify по кадастру)
Open
#2291
[P3] Дедуп-остаток после #2269: mkr-misfire (334), ё/е-фолд (~60), area-straddle (139)
Open
#2853
Коэффициент «хороший ремонт» — не константа: 1.000 в фонде до 1990 против 1.023 в новом, применяется 1.05
Open
#2842
source_url записывается только при вставке — колонка не способна залечиться сама (решение не очевидно, поэтому не чинил)
Open
#2778
backend/tests: 6 проверок парсера ППТ ждут PDF-образец, которого нет ни у кого — нужен файл от Anton
Open
#2757
[HIGH] ci: сервис-контейнер сборки с портом 5432 попадает в БОЕВОЙ Postgres — раннер работает в сети хоста, спасло только несовпадение пароля
Open
#2690
[HIGH] tradein: 781 дубль домов не схлопнуть — «независимый идентификатор здания» оказался тем же адресом, а слияние необратимо и без аудита
Open
#2687
tradein/avito: решить по данным 9–10.08 — нужны ли два недельных полных обхода, и как делать пробный прогон с узким окном
Open
#2666
tradein: два видимых пользователю числа отдаются без гейта правдоподобия — «медианный торг +36%» и индекс локации с шумом ±20 п.п.
Open
#2572
tradein/auth: переключить AUTH_MODE=db_only после обкатки cutover
Open
#2568
tradein/db: recovery-прогон сида 193 упадёт при демоутнутой seed-роли (узкий fail-mode)
Open
#2462
[needs-human][devops] deploy-очередь: контейнер отстаёт от :latest при серии быстрых мержей + SENTRY_RELEASE-флаг врёт о готовности
Open
#2449
fix(site-finder): раскрыть/устранить 2 оставшихся *45.0 proxy-сайта в velocity.py (follow-up #2445-A4)
Open
#2440
feat(scraper): harvest plan_image из уже работающего catalog-скрапера (22d) — блокер для #299/#300
Open
#2442
feat(scrapers): подключить flat-level catalog scraper в Celery + прокинуть catalog_url_hash
Open
#2425
[tradein] v2: клик по «Предыдущие оценки» не переключает вид, если в этой же SPA-сессии уже был submit свежей оценки
Open
#2422
[tradein] kit standalone unit-покрытие после удаления legacy golden-parity (final E #2419) + чистка orphaned fixtures
Open
#2408
[tradein] standalone kit unit-тесты для SERP/houses парсеров (после удаления legacy golden-parity) + чистка orphaned fixtures
Open
#2409
[needs-human][data] 191-ФЗ engineering_networks: нужен датасет из личного кабинета Минстроя (ФГИС ТП, QGIS.zip)
Open
#2386
[tradein] scraper_kit F4 follow-up: mock-target artifact блокирует миграцию avito/imv.py на _base
Open
#2406
[tradein] port legacy-only sweep edge cases (cancel-midway / watchdog-timeout / SIGTERM-drain) onto kit run_*_city_sweep
Open
#2385
[tradein] scraper_kit F4 follow-up: сделать config mandatory в {cian,yandex}/newbuilding.py + домиграция на _base
Open
#2380
chore(tradein/estimator): схлопнуть #1795 corridor-clamp/radius-floor/expected-sold-clamp флаги — #1970
Open
#2381
chore(tradein/estimator): схлопнуть same-building-anchor + IMV-blend tuning флаги (#651/#652/#680/#1774) — #1970
Open
#2379
chore(tradein/estimator): схлопнуть quarter-index price-correction флаги (#764) — #1970
Open
#2378
chore(tradein/estimator): схлопнуть low-risk кластер флагов (dedup/disclosure/manual-review/confidence-floor) — #1970
Open
#2294
[P3] Сегментный множитель: confidence-гейт против band-by-predicted утечки (follow-up #2255)
Open
#1940
[tradein][scrapers] Browser-sweep'ы зависают ДО первого HTTP (http_requests=0) → zombie/stuck-running на 6ч, источник теряет день
Open
#1969
[tradein][compliance] ФЗ-152 / ToS — блокер B2C: PII потребителей в БД + правовой риск скрейпа
Open
#301
feat(generative): reverse-train generative engine on real DOM.РФ plans — Phase 3
Open
#401
feat(tradein): #5 — источник Дом.РФ
Open
#300
feat(plans): semantic floor plan vectorization — Phase 2 (CubiCasa5K)
Open
#81
B8-1: Product analytics — PostHog self-hosted EU
Open
#58
B1-5: Реестр ПО — подготовка заявки (60-180 дней рассмотрения!)
Open
#52
Extra E2: B2B integration registry (вопросы для Макса)
Open
#59
B1-6: Pilot tracker / коммерческая воронка (50 leads → 3 пилота)