Основную часть задачи закрыл #2642 (капча Циана / заглушки Яндекса → banned).
Замер прода 2026-08-10 подтверждает симптом: развёртки cian/yandex со статусом
'done' и нулём — 42 из 89 до деплоя #2642 (04.08 19:00 UTC), 1 из 30 после.
Оставшийся один — прогон 3557 (yandex_city_sweep_pervouralsk, 09.08 17:11):
155 мс, anchors_total=1, errors_count=1, lots_fetched=0, статус 'done'. За 90
суток под тот же признак попадают 28 прогонов, включая 16 суток подряд
yandex_city_sweep_nizhniy_tagil (15-30.07), каждый ровно 240 с — таймаут якоря.
Детект #2642 их не видит и правильно не видит: он считает попытки РАЗБОРА, а
transport_error туда намеренно не попадает (#2600 п.1 — «наш прокси сдох» не
должно выглядеть баном площадки). Якорь, упавший до первого разобранного
ответа, даёт attempts=0, условие «attempts>0 и все провалились» молчит.
То есть третий исход существовал без терминального статуса:
площадка отбила → banned (#2642)
площадка честно пуста → done (здоровый ответ, сохранён)
мы не дошли → ??? → done ← дефект
Признак — собственная бухгалтерия прогона, не список антибот-маркеров:
errors_count >= anchors_total при ИЗМЕРЕННОМ нуле. Доказывает: каждый якорь
кончился отказом и собрано ноль. НЕ доказывает, кто виноват — поэтому 'failed'
без ban_kind, а не 'banned'/'platform' (#2764).
Страж стоит в mark_done, а не в каждом sweep'е: у финализатора четыре десятка
вызывающих, и сторож, который надо не забыть позвать, — это тот же дефект
оборванной проводки, из-за которого задача и появилась.
Ложной тревоги нет (замер, 90 суток): 132 прогона с отказами, но ненулевым
сбором, и 37 прогонов честной пустоты (errors_count=0) остаются 'done'.