Суть
Идемпотентность отвечает на вопрос «что будет, если повторить». Граница отката — на другой: что будет, если понадобится отменить. Это разные свойства, и наличие первого не даёт второго: повторно безопасный вызов может быть при этом абсолютно необратимым.
Для каждой возможности записи заранее определяется пять вещей:
- можно ли отменить действие;
- можно ли безопасно повторить его;
- где проходит точка невозврата;
- какое компенсирующее действие допустимо;
- когда нужна ручная сверка.
Компенсация вместо отмены — это и есть сага
Во внешнем мире отмены часто не существует: письмо отправлено, платёж проведён, запись в чужой системе создана. Тогда откат заменяется компенсирующим действием — вторым действием, приводящим систему к приемлемому состоянию: письмо-опровержение, возврат средств, закрытие созданного тикета с пометкой.
Это классическая сага: цепочка шагов, где у каждого есть своя компенсация, и при сбое на шаге N выполняются компенсации шагов N−1 … 1 в обратном порядке. Существенное отличие от транзакции — компенсация не восстанавливает исходное состояние, а создаёт новое, наблюдаемо приемлемое. Клиент увидел ошибочное письмо; опровержение это не отменяет, а лишь исправляет последствия.
Отсюда практическое требование: компенсирующее действие проектируется вместе с основным, а не дописывается после первого инцидента, и его наличие фиксируется в контракте возможности (Tool Catalog).
Решение после побочного эффекта
Слой выполнения после операции записи различает четыре ветки:
| Исход | Ветка |
|---|---|
| Успех | Сохранить результат и продолжить |
| Ошибка, допускающая повтор | Повторить по политике с экспоненциальной задержкой |
| Неизвестный побочный эффект | Сверить состояние или запросить проверку человеком |
| Ошибка валидации или доступа | Остановиться и показать ошибку |
Третья ветка — та, ради которой всё это и строится (Idempotency For Agents).
Связь с подтверждением и сдерживанием
Действие вне границы отката — кандидат на обязательное подтверждение независимо от его формального класса риска, потому что цена ошибки там не ограничена сверху (Approval Path).
Граница отката входит и в пять архитектурных пределов сдерживания: «что можно откатить без восстановления всей системы» — один из вопросов, на которые среда обязана отвечать до запуска, а не после (Capability Containment).
Связано с
- Idempotency For Agents — безопасность повтора против возможности отмены
- Capability Containment — граница отката как один из пяти пределов среды
- Approval Path — почему необратимое требует подтверждения
- Tool Catalog — где хранится операционная семантика возможности
- Tool Gateway — где решение принимается до исполнения
- Human in the Loop — гейт ставится именно на необратимое
- IaC CICD AI — атомарный откат релиза как та же дисциплина уровнем выше