verify_session возвращает четыре разных исхода (бан 403 / источник
недоступен / смена вёрстки / реально протухшие куки) — это сделано
намеренно, с sentinel-объектами и подробными докстрингами. Но эндпоинты
загрузки проверяли только `if state is None`, и три sentinel'а
проваливались в одну ветку с текстом «Authenticated state missing userId».
На проде 2026-08-10 это стоило часа: реальный бан по IP показывался как
«плохие куки», и заведомо валидные куки перезаливались несколько раз.
- бан 403 → 503, текст указывает чинить egress (SCRAPER_PROXY_URL и баны
в scrape_proxy_source_bans), а не перезаливать куки
- источник недоступен → 503, повторить позже, куки не трогать
- смена вёрстки → 500, нужен фикс парсера, перезалив не поможет
- 401/isAuthenticated=false → 401, куки перезалить
- успех без userId → 400 с точным описанием случая
Sentinel'ы сравниваются через `is`, как оговорено в их докстрингах.
Тексты по-русски: их читает человек в момент инцидента.