Rollback Boundary

Черта, за которой действие перестаёт быть отменяемым. Опасно обнаруживать в инциденте, что операция «вообще-то неоткатываемая»: граница отката — часть контракта инструмента, а не то, что выясняют потом.

Суть

Идемпотентность отвечает на вопрос «что будет, если повторить». Граница отката — на другой: что будет, если понадобится отменить. Это разные свойства, и наличие первого не даёт второго: повторно безопасный вызов может быть при этом абсолютно необратимым.

Для каждой возможности записи заранее определяется пять вещей:

  • можно ли отменить действие;
  • можно ли безопасно повторить его;
  • где проходит точка невозврата;
  • какое компенсирующее действие допустимо;
  • когда нужна ручная сверка.

Компенсация вместо отмены — это и есть сага

Во внешнем мире отмены часто не существует: письмо отправлено, платёж проведён, запись в чужой системе создана. Тогда откат заменяется компенсирующим действием — вторым действием, приводящим систему к приемлемому состоянию: письмо-опровержение, возврат средств, закрытие созданного тикета с пометкой.

Это классическая сага: цепочка шагов, где у каждого есть своя компенсация, и при сбое на шаге 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 — атомарный откат релиза как та же дисциплина уровнем выше