Флаки: test_auth_api.py — замер «худший сторонний запрос < 500 мс» падает на нагруженном раннере и роняет деплой tradein
fix(tradein/backfill): save-False у yandex/avito больше не теряет попытку — attempted == сумма исходов у всех трёх бэкфиллов
yandex/avito detail_backfill: save-False не начисляет исход — та же потеря попытки, что #3332 у domclick
[SECURITY] Caddy: /trade-in/api/v1/admin/* доступен снаружи анонимно до guard'а — нет среза админского префикса на периметре
fix(tradein): секрет вебхука GlitchTip не попадает в access-log — скруббер query-секретов + приём из заголовка
v2: флаг thin_market карточки avito_imv нигде не отрисован — «display-only» обещание без display
fix(tradein/front): число оценочной модели площадки подписано «рынок из N объявлений — в расчёт не входит» при тонком рынке
fix(caddy): окно деплоя — 503 «Сервис обновляется» с Retry-After вместо голого 502 на публичных путях МЕРЫ
scraper-kit: containment-skip до пробы (#3315) подключён только у avito — cian/yandex full-load при резюме тоже пере-пробивают готовые полосы
fix(scraper-kit): резюм exhaustive не пере-пробивает готовые полосы — containment по done-леджеру до пробы, 17 911 запросов → 0
fix(scraper-kit): бан площадки не гасит здоровье узла для всех источников — report_ban по паре узел×источник вместо mark_health(ok=False)
fix(scraper-kit): метка дрейна interrupted=1 во всех city-свипах — yandex/cian/newbuilding больше не объявляют недоделанный обход готовым
scraper-kit: дрейн-метка interrupted только у avito_city_sweep — у yandex/cian/newbuilding дрейн по-прежнему неотличим от полного done
fix(tradein/domclick): дом-поля карточки → houses, backfill total_units/material_* из raw_payload (миграция 284)