Ключевая гарантия
«Завершено» — не доказательство. Доказательство — VERIFIED.
Большинство платформ сообщают, что модель закончила работу. Davirix сообщает, произошёл ли эффект на самом деле — с подтверждением в системе-источнике. Это два разных вопроса, и именно их смешение приводит к повторной отправке одного и того же платежа.
Самое важное правило
status: completed ≠ выполнено
Одно исполнение несёт два независимых факта: завершил ли агент обработку и произошёл ли внешний эффект. Davirix хранит их в разных полях, чтобы код не мог перепутать одно с другим.
Два поля — два вопроса
Завершил ли агент обработку?
status
Произошёл ли внешний эффект?
operations[].status
Пять состояний операции
Любой побочный эффект агента — SMS, платёж, запись в реестр — приводит ровно к одному из них.
Подтверждено в источнике. Единственное настоящее «выполнено».
Продолжайте.
Коннектор принял запрос. Только транспорт — не результат.
Ждите подтверждения.
Результат действительно неизвестен.
Никогда не повторяйте. Ждите сверки.
Операция требует решения человека.
Разберите в консоли.
Однозначный сбой. Ничего не произошло.
Повтор безопасен.
Ошибка и её исправление
if n.status == "completed":
send_receipt() # ⛔ платежа могло и не бытьif n.verified:
send_receipt() # ✅ подтверждено в источнике
elif n.unknown:
hold_for_reconciliation() # ⚠ здесь повтор недопустимПочему это предотвращает дубликаты
Молча проглоченный UNKNOWN — именно тот источник, откуда берутся дублирующие эффекты. Если код принимает неопределённость за сбой и повторяет запрос, клиент платит дважды. Davirix делает неопределённое состояние явным и по умолчанию неповторяемым, поэтому безопасный путь совпадает с путём по умолчанию.
Верификация — то, что придаёт смысл журналу аудита
Журнал, фиксирующий намерение, ничего не доказывает. Поскольку каждая операция несёт состояние, подтверждённое источником, журнал Davirix фиксирует то, что действительно произошло, — именно эту версию запрашивают регуляторы и риск-комитеты.
Прочитайте правило в документации
Полная спецификация, включая поведение сверки и ключи идемпотентности, — в документации.