Saga/補償アクション × エージェント
記事状態: 公開 · 最終確認: 2026-10-05
要点
Agentの複数副作用を「失敗したら逆操作する」だけでSagaとみなしません。各stepを事前にcompensable/pivot/retriableへ分類し、forward resultとdownstream 操作内容 IDをdurableに記録します。未確認事項は照会/reconciliationしてから回復方向を決め、取り消し・埋め合わせ処理自体もidempotent・再試行可能・監査可能にします。補償はACID 以前の状態へ戻す操作でも完全な原状回復保証でもありません。
現在の判断
Agentの複数副作用を「失敗したら逆操作する」だけでSagaとみなしません。各stepを事前にcompensable/pivot/retriableへ分類し、forward resultとdownstream 操作内容 IDをdurableに記録します。未確認事項は照会/reconciliationしてから回復方向を決め、取り消し・埋め合わせ処理自体もidempotent・再試行可能・監査可能にします。補償はACID 以前の状態へ戻す操作でも完全な原状回復保証でもありません。
どこまで当てはまるか
Saga/補償アクション × エージェント
詳しく理解する
要点と前提
Agentが複数の外部システムへ副作用を出す処理では、途中失敗時に「逆のツールを呼ぶ」だけでは安全な以前の状態へ戻す操作になりません。既にcommitされた外部操作はACID transactionのように自動取消されず、回復はdomain-specificなcompensating actionまたはforward 復旧として設計します。
STEP CLASSIFICATION
実行前に各stepを COMPENSABLE、PIVOT、RETRIABLE/FORWARD_ONLY に分類します。失敗後にLLMが即興で分類・取消方法を決める設計は避けます。pivotを越えた後は、原則として後続をretriable/forward 復旧として設計します。
永続ジャーナル
処理の流れ ID、step ID、操作内容 主体の識別、request 内容を照合する識別値、実行前の条件、downstream 操作内容 ID、観測済み outcome、取り消し・埋め合わせ処理 definition/バージョン、認可/承認 文脈・入力情報、timestampをdurableに記録します。次stepへ進む前に結果の照合可能な状態を作ります。
補償はビジネス上のアクションである
補償は元操作の数学的な逆関数ではありません。返金手数料、取消不能な通知、外部settlement、法的記録、物理作業などでは完全な原状回復が不可能です。補償後の業務上必ず守る条件と残留影響を明示します。
取り消し・埋め合わせ処理 CAN FAIL
補償処理(取り消し・埋め合わせ処理)にも、タイムアウト、リトライ、同じ要求の再送で処理を重複させない仕組み(重複実行を防ぐ性質)、前提条件、認可、およびデッドレター/手動エスカレーションが必要です。補償の進捗を永続的に記録し、同じ補償が再実行されても追加の副作用を起こさない境界を設計します。
REGISTRATION ORDER
forward action(先行アクション)が「副作用を起こした後にタイムアウトまたは失敗を返す」可能性がある場合、取り消し・埋め合わせ処理 intent(補償の意図)をforward call(先行呼び出し)より後にのみ記録すると、クラッシュウィンドウ(不整合が発生する時間的隙間)が生じます。一方で、forward actionが実行されなかった場合にも補償処理が誤作動しないよう、補償処理はダウンストリームの状態を照合して、安全にno-op(何もしない)ができる設計にします。
同時実行数 AND ISOLATION
SagaはACID isolationを自動提供しません。並行処理の流れが中間状態を観測・変更できるため、resource バージョン/ETag、reservation、意味上の lock、workflow-specific 状態等を利用し、要再確認 取り消し・埋め合わせ処理が新しい正当な変更を消さないようにします。
AGENT POLICY 適用限界
LLMは、事前定義された回復ポリシーの選択や、人間へのエスカレーション理由の生成には利用できます。しかし、返金、削除、キャンセル、権限変更などの影響が大きい補償処理について、失敗時に未承認のまま新規に生成させることはありません。補償処理の実行時にも、現在の実行主体、組織の利用環境、対象、ポリシーを独立して検証します。
OPERATING TEST
フォワードコール前、リモートコミット後かつレスポンス前、レスポンス後かつジャーナル記録前、補償処理(取り消し・埋め合わせ処理)の途中、補償処理のコミット後かつレスポンス前、ピボット後、並行Saga、認証情報の失効、および古いバージョン(要再確認 バージョン)の状態で障害注入(fault injection)を行います。ワークフローの成功率だけでなく、重複したフォワード/補償処理、未確認事項状態での滞留、結果の照合(reconciliation)の成功、手動によるエスカレーション、およびビジネス不変条件(業務上必ず守る条件)の復旧を測定します。
まだ確認できていないこと
- EA-242-UNKNOWN-01
処理待ち時間の上限、disconnect、worker crashでは、remote 外部への変更・送信がcommit済みでもresponseだけ失われる場合があります。
UNKNOWNをFAILEDと同一視せず、状態/query endpointやdownstream 操作内容 IDでreconcileしてから、forward 再試行か取り消し・埋め合わせ処理かを決定します。 - EA-242-UNKNOWN-02
対象処理の流れ engine、ツール graph、downstream 重複実行を防ぐ性質/状態 API、取り消し・埋め合わせ処理定義、pivot rule、認可/承認 lifetime、処理の流れ versioning、outbox/inbox、保持期間・保持方針、同時実行数 policy、irreversible-action policy、human escalation SLAは未確認です。
根拠資料
- 研究資料研究資料
E1 Microsoft Azure Architecture Center, Saga 分散トランザクションパターン, アクセス日 2026-10-05,
確認上の限界
元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
- 研究資料研究資料
E2 Microsoft Azure Architecture Center, Compensating Transaction pattern, アクセス日 2026-10-05,
確認上の限界
元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
- 研究資料研究資料
E3 AWS Prescriptive Guidance, Saga 複数工程の制御 pattern, 参照日 2026-10-05,
確認上の限界
元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
- 研究資料研究資料
E4 AWS Prescriptive Guidance, Saga patterns, 参照日 2026-10-05,
確認上の限界
元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
- 研究資料研究資料
E5 Chris Richardson, microservices.io Pattern: Saga, アクセス日: 2026-10-05,
確認上の限界
元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
- 研究資料研究資料
E6 Temporal Community, Saga 取り消し・埋め合わせ処理 失敗/再試行 discussion, 2021, 参照日 2026-10-05,
確認上の限界
元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
- 研究資料研究資料
E7 Temporal Community, saga 取り消し・埋め合わせ処理 registration ordering, 2026-06-10, 閲覧日 2026-10-05,
確認上の限界
元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
更新履歴
EA-242-FIRST-20261005: 正式な 監査/publication 対応付け
出典ID・検証情報・機械可読データ
根拠の種類と情報の鮮度は、ラベルとアイコンで確認できます。
- 記事ID
- EA-242
- 最終確認日
- 2026-10-05
- 提供元・モデル・プラン・利用環境
- —
- 対象地域
- —
元資料の全文と収録照合記録
要点と前提
Agentが複数の外部システムへ副作用を出す処理では、途中失敗時に「逆のtoolを呼ぶ」だけでは安全なrollbackになりません。既にcommitされた外部操作はACID transactionのように自動取消されず、回復はdomain-specificなcompensating actionまたはforward recoveryとして設計します。
STEP CLASSIFICATION
実行前に各stepを COMPENSABLE、PIVOT、RETRIABLE/FORWARD_ONLY に分類します。失敗後にLLMが即興で分類・取消方法を決める設計は避けます。pivotを越えた後は、原則として後続をretriable/forward recoveryとして設計します。
DURABLE JOURNAL
workflow ID、step ID、operation identity、request fingerprint、precondition、downstream operation ID、observed outcome、compensation definition/version、authorization/approval context、timestampをdurableに記録します。次stepへ進む前にreadback可能な状態を作ります。
UNKNOWN IS NOT FAILED
timeout、disconnect、worker crashでは、remote side effectがcommit済みでもresponseだけ失われる場合があります。UNKNOWN を FAILED と同一視せず、status/query endpointやdownstream operation IDでreconcileしてから、forward retryかcompensationかを決定します。
COMPENSATION IS A BUSINESS ACTION
補償は元操作の数学的な逆関数ではありません。返金手数料、取消不能な通知、外部settlement、法的記録、物理作業などでは完全な原状回復が不可能です。補償後のbusiness invariantと残留影響を明示します。
COMPENSATION CAN FAIL
compensationにもtimeout、retry、idempotency、precondition、authorization、dead-letter/manual escalationが必要です。補償の進捗をdurableに記録し、同じ補償が再実行されても追加副作用を起こさない境界を設計します。
REGISTRATION ORDER
forward actionが「副作用を起こした後にtimeout/failureを返す」可能性がある場合、compensation intentをforward callより後だけに記録するとcrash windowができます。一方、forward actionが実行されなかった場合にも補償が誤作用しないよう、compensationはdownstream stateを照合して安全にno-opできる設計にします。
CONCURRENCY AND ISOLATION
SagaはACID isolationを自動提供しません。並行workflowが中間状態を観測・変更できるため、resource version/ETag、reservation、semantic lock、workflow-specific state等を利用し、stale compensationが新しい正当な変更を消さないようにします。
AGENT POLICY BOUNDARY
LLMは、事前定義された回復policyの選択や人間へのescalation理由生成には利用できます。しかし、refund、delete、cancel、permission変更等の高影響compensationを、失敗時に未承認で新規生成させません。compensation実行時も現在のprincipal/tenant/target/policyを独立検証します。
OPERATING TEST
forward call前、remote commit後response前、response後journal前、compensation途中、compensation commit後response前、pivot後、並行saga、credential失効、stale versionでfault injectionします。workflow成功率だけでなく、duplicate forward/compensation、UNKNOWN滞留、reconciliation成功、manual escalation、business invariant restorationを測定します。
SAFE WORDING
Agentの複数副作用を「失敗したら逆操作する」だけでSagaとみなしません。各stepを事前にcompensable/pivot/retriableへ分類し、forward resultとdownstream operation IDをdurableに記録します。UNKNOWNは照会/reconciliationしてから回復方向を決め、compensation自体もidempotent・再試行可能・監査可能にします。補償はACID rollbackでも完全な原状回復保証でもありません。
OPEN UNKNOWN
対象workflow engine、tool graph、downstream idempotency/status API、compensation定義、pivot rule、authorization/approval lifetime、workflow versioning、outbox/inbox、retention、concurrency policy、irreversible-action policy、human escalation SLAは未確認です。
EA-242-CURRENT-APPROVAL研究資料研究資料根拠の出所: AUDITED_CANONICAL_RESEARCH_PACKET現行本文の監査・revision対応
- 裏付ける内容
- 現行台帳のAUDIT_PASSと候補・revision・本文ハッシュの対応を確認しています。
- 確認日
- —
- 出典・実験ID
- CANDIDATE-EA242-FIRST-20261005-C1
- 検証箇所
- 1KqhJtiSb2S84rWmeYVwKcT_76dBwZ_B0ZZuAWQqH0rQ · EA_REVISION_LEDGER!A45:U45 · EA-242-FIRST-20261005
- 適用範囲
- —
- 出典・来歴
- CURRENT_CANONICAL_APPROVAL_READBACK
- 限界
- 監査状態と来歴の記録です。外部根拠の最新性や本文の全主張を追加保証しません。
EA-242-CURRENT-BODY-READBACK実装資料実装資料根拠の出所: IMPLEMENTATION_READBACK現行本文の収録照合
- 裏付ける内容
- 公開生成入力の本文SHA-256が、監査済み候補に結び付いたハッシュと一致しています。
- 確認日
- 2026-10-12
- 出典・実験ID
- BODY-SHA256:c0f1d29586c302301d41cce938b54eb49fd4f5185992f54357ab83e646b30276
- 検証箇所
- content/staging/EA-242.md · c0f1d29586c302301d41cce938b54eb49fd4f5185992f54357ab83e646b30276 · EA-242-FIRST-20261005
- 適用範囲
- —
- 出典・来歴
- CURRENT_APPROVED_BODY_HASH_MATCH
- 限界
- 本文の同一性の検査です。外部システムの挙動や全主張の真偽を実証したものではありません。
EVD-EA-242-URL-213C84BC0FEA研究資料研究資料根拠の出所: SOURCE_PACKET_REFERENCEE1 Microsoft Azure Architecture Center, Saga distributed transactions pattern, accessed 2026-10-05,
- 裏付ける内容
- —
- 確認日
- —
- 出典・実験ID
- SRC-EA-242-URL-213C84BC0FEA
- 検証箇所
- EVIDENCE TABLE · E1 Microsoft Azure Architecture Center, Saga distributed transactions pattern, accessed 2026-10-05, https://learn.microsoft.com/en-us/azure/architecture/patterns/saga
- 適用範囲
- EVIDENCE TABLE
- 出典・来歴
- SOURCE_PACKET_REFERENCE_PROJECTED
- 限界
- 元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
EVD-EA-242-URL-2384C86AB18F研究資料研究資料根拠の出所: SOURCE_PACKET_REFERENCEE2 Microsoft Azure Architecture Center, Compensating Transaction pattern, accessed 2026-10-05,
- 裏付ける内容
- —
- 確認日
- —
- 出典・実験ID
- SRC-EA-242-URL-2384C86AB18F
- 検証箇所
- EVIDENCE TABLE · E2 Microsoft Azure Architecture Center, Compensating Transaction pattern, accessed 2026-10-05, https://learn.microsoft.com/ja-jp/azure/architecture/patterns/compensating-transaction
- 適用範囲
- EVIDENCE TABLE
- 出典・来歴
- SOURCE_PACKET_REFERENCE_PROJECTED
- 限界
- 元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
EVD-EA-242-URL-653F8C3CC5A9研究資料研究資料根拠の出所: SOURCE_PACKET_REFERENCEE3 AWS Prescriptive Guidance, Saga orchestration pattern, accessed 2026-10-05,
- 裏付ける内容
- —
- 確認日
- —
- 出典・実験ID
- SRC-EA-242-URL-653F8C3CC5A9
- 検証箇所
- EVIDENCE TABLE · E3 AWS Prescriptive Guidance, Saga orchestration pattern, accessed 2026-10-05, https://docs.aws.amazon.com/prescriptive-guidance/latest/cloud-design-patterns/saga-orchestration.html
- 適用範囲
- EVIDENCE TABLE
- 出典・来歴
- SOURCE_PACKET_REFERENCE_PROJECTED
- 限界
- 元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
EVD-EA-242-URL-ACED6E3D09AD研究資料研究資料根拠の出所: SOURCE_PACKET_REFERENCEE4 AWS Prescriptive Guidance, Saga patterns, accessed 2026-10-05,
- 裏付ける内容
- —
- 確認日
- —
- 出典・実験ID
- SRC-EA-242-URL-ACED6E3D09AD
- 検証箇所
- EVIDENCE TABLE · E4 AWS Prescriptive Guidance, Saga patterns, accessed 2026-10-05, https://docs.aws.amazon.com/prescriptive-guidance/latest/cloud-design-patterns/saga-patterns.html
- 適用範囲
- EVIDENCE TABLE
- 出典・来歴
- SOURCE_PACKET_REFERENCE_PROJECTED
- 限界
- 元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
EVD-EA-242-URL-78BD767B100B研究資料研究資料根拠の出所: SOURCE_PACKET_REFERENCEE5 Chris Richardson, microservices.io Pattern: Saga, accessed 2026-10-05,
- 裏付ける内容
- —
- 確認日
- —
- 出典・実験ID
- SRC-EA-242-URL-78BD767B100B
- 検証箇所
- EVIDENCE TABLE · E5 Chris Richardson, microservices.io Pattern: Saga, accessed 2026-10-05, https://microservices.io/patterns/data/saga.html
- 適用範囲
- EVIDENCE TABLE
- 出典・来歴
- SOURCE_PACKET_REFERENCE_PROJECTED
- 限界
- 元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
EVD-EA-242-URL-A8538CCBCB1A研究資料研究資料根拠の出所: SOURCE_PACKET_REFERENCEE6 Temporal Community, Saga compensation failure/retry discussion, 2021, accessed 2026-10-05,
- 裏付ける内容
- —
- 確認日
- —
- 出典・実験ID
- SRC-EA-242-URL-A8538CCBCB1A
- 検証箇所
- EVIDENCE TABLE · E6 Temporal Community, Saga compensation failure/retry discussion, 2021, accessed 2026-10-05, https://community.temporal.io/t/exception-in-saga-compensation-and-multiple-retries-even-though-retry-count-is-1/3562
- 適用範囲
- EVIDENCE TABLE
- 出典・来歴
- SOURCE_PACKET_REFERENCE_PROJECTED
- 限界
- 元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
EVD-EA-242-URL-FF4E5883526D研究資料研究資料根拠の出所: SOURCE_PACKET_REFERENCEE7 Temporal Community, saga compensation registration ordering, 2026-06-10, accessed 2026-10-05,
- 裏付ける内容
- —
- 確認日
- —
- 出典・実験ID
- SRC-EA-242-URL-FF4E5883526D
- 検証箇所
- EVIDENCE TABLE · E7 Temporal Community, saga compensation registration ordering, 2026-06-10, accessed 2026-10-05, https://community.temporal.io/t/saga-pattern-in-typescript/19615
- 適用範囲
- EVIDENCE TABLE
- 出典・来歴
- SOURCE_PACKET_REFERENCE_PROJECTED
- 限界
- 元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
- 出典ID
- CANDIDATE-EA242-FIRST-20261005-C1, BODY-SHA256:c0f1d29586c302301d41cce938b54eb49fd4f5185992f54357ab83e646b30276, SRC-EA-242-URL-213C84BC0FEA, SRC-EA-242-URL-2384C86AB18F, SRC-EA-242-URL-653F8C3CC5A9, SRC-EA-242-URL-ACED6E3D09AD, SRC-EA-242-URL-78BD767B100B, SRC-EA-242-URL-A8538CCBCB1A, SRC-EA-242-URL-FF4E5883526D
- 追跡中のUNKNOWN ID
- EA-242-UNKNOWN-01, EA-242-UNKNOWN-02
- 再確認のきっかけ
- 正式な 改訂版/publication 状態 change · 本文 成果物 hash change · 出典 現行性 change · new contradiction or 実装 結果の照合
機械検査: 通過 — 機械検査の結果です。情報の正確性や実行の承認を保証するものではありません。
同じ記事IDの機械可読データです。