Сторожа и расписки
Замер: 2026-08-14 · чем проверено: единый вход по сторожам, план второго сборщика,
python3 -m pytest marketplace-collector-v3/tests/test_collection_input_receipts.py -q -rsЧитать перед тем, как отключить сторожа, понизить порог или утверждать, что число получено из тех данных, из которых мы думаем.
Какой цели служит
Доверие к числам: каждое важное число доказуемо до источника, а каждая поломка видна сразу и объяснена.
Для чего это нужно
Сторожа ловят поломку в момент, когда её дёшево чинить: до записи в базу, до выкладки, до того, как по неверному числу примут решение. Бизнес-смысл чисел они не проверяют — они проверяют условия, без которых числам нельзя верить. Ложный успех хуже молчания: человек ждёт результата, которого не будет.
Расписка — это не журнал. Журнал отвечает «что-то происходило», расписка — «вот из чего получилось это число»: она связывает результат с величинами, из которых он получен. Без неё нельзя доказать, что число взято из тех данных, из которых мы думаем: если сборщик возьмёт не то описание, не тот код или не тот ответ, число будет выглядеть как всегда, и никто этого не заметит.
Пять частей расписки, и каждая — ответ на своё «откуда»: отпечаток описания (по каким правилам собрано), коммит рантайма (каким кодом), отпечаток договора запроса (что именно спросили у площадки), хеш сырого ответа (что именно она ответила), отпечаток самой расписки (чтобы саму расписку нельзя было подменить). Каждая часть защищает от своей разновидности подмены, и пропуск любой оставляет дыру.
Что станет невозможным без этого
Доказательство. Без сторожей поломка видна только в конечном числе — и неясно, где именно соврало. Без расписки расхождение разбирается вручную: идти и выяснять, из чего получено число, когда выяснять уже не из чего.
Какой ценой это даётся
Сложностью и ложными срабатываниями: каждый сторож — это порог, который иногда срабатывает зря, и каждое ложное срабатывание тормозит работу. Цена признана и принята: ложное срабатывание — повод настроить порог, а не убрать сторожа, и решение об отключении принимает владелец.
Что здесь работает, а что только объявлено
Работают сторожа выкладки, записи данных и проверки результата. Сторож полноты расписки в действующем приёме проверяет связь результата с сырьём и пять сверяемых величин; это закреплено кодом и тестами. Сквозное покрытие всех живых прогонов приложенными замерами не установлено. Единый формат сообщения об отказе также введён не везде — границы перечислены в едином входе. Для второго сборщика тот же набор пока только требуется планом.
Как это устроено
Вход по симптому — единый вход по сторожам; устройство — блок «Служебное».