{
  "format": "agent-article-v0",
  "article_id": "EA-285",
  "canonical_url": "/tools/ea-285-human-escalation-policy-handoff-design",
  "page_type": "reference",
  "claim_ids": [],
  "evidence_ids": [
    "EVD-EA-285-URL-361154BF10A0",
    "EVD-EA-285-URL-B7E505640043",
    "EVD-EA-285-URL-7DD57631BD24",
    "EVD-EA-285-URL-FB87768384BB",
    "EA-285-CURRENT-APPROVAL",
    "EA-285-CURRENT-BODY-READBACK"
  ],
  "unknown_ids": [
    "EA-285-UNKNOWN-01"
  ],
  "operational_object_ids": [],
  "provider": [],
  "models": [],
  "plans": [],
  "surfaces": [],
  "regions": [],
  "current_status": "CURRENT",
  "observation_status": "SPEC_ONLY",
  "freshness": "CURRENT",
  "last_verified": "2026-10-22",
  "supersedes": [],
  "superseded_by": [],
  "provenance": [
    "MANUAL-EA285-DRAIN-20261022-C1",
    "SRC-EA-285-URL-361154BF10A0",
    "SRC-EA-285-URL-B7E505640043",
    "SRC-EA-285-URL-7DD57631BD24",
    "SRC-EA-285-URL-FB87768384BB",
    "BODY-SHA256:427f7ab1bafa25e64b97fda11f7de0ed7b1dc5bdfc014db6d1d4197160efc2fa"
  ],
  "article_sources": [
    {
      "id": "EVD-EA-285-URL-361154BF10A0",
      "evidence_class": "RESEARCH",
      "title": "[S1] Camunda 8.9 User task lifecycle:",
      "href": "https://docs.camunda.io/docs/8.9/apis-tools/frontend-development/task-applications/user-task-lifecycle/",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-285-URL-361154BF10A0"
      ],
      "supporting_locators": [
        "出典・provenance",
        "S1",
        "- [S1] Camunda 8.9 User task lifecycle: https://docs.camunda.io/docs/8.9/apis-tools/frontend-development/task-applications/user-task-lifecycle/"
      ],
      "scope": "出典・provenance",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EVD-EA-285-URL-B7E505640043",
      "evidence_class": "RESEARCH",
      "title": "[S2] AWS Step Functions Integration Patterns, Wait for Callback:",
      "href": "https://docs.aws.amazon.com/step-functions/latest/dg/connect-to-resource.html",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-285-URL-B7E505640043"
      ],
      "supporting_locators": [
        "出典・provenance",
        "S2",
        "- [S2] AWS Step Functions Integration Patterns, Wait for Callback: https://docs.aws.amazon.com/step-functions/latest/dg/connect-to-resource.html"
      ],
      "scope": "出典・provenance",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EVD-EA-285-URL-7DD57631BD24",
      "evidence_class": "RESEARCH",
      "title": "[S3] LangGraph Interrupts:",
      "href": "https://docs.langchain.com/oss/python/langgraph/interrupts",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-285-URL-7DD57631BD24"
      ],
      "supporting_locators": [
        "出典・provenance",
        "S3",
        "- [S3] LangGraph Interrupts: https://docs.langchain.com/oss/python/langgraph/interrupts"
      ],
      "scope": "出典・provenance",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EVD-EA-285-URL-FB87768384BB",
      "evidence_class": "RESEARCH",
      "title": "歴史的所在記録:",
      "href": "https://docs.google.com/document/d/1Vd0BP7G2UyPDRQs_-8dPvTgQ78Tk6kcVGuMJjqNdr84/edit",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-285-URL-FB87768384BB"
      ],
      "supporting_locators": [
        "出典・provenance",
        "- 歴史的所在記録: https://docs.google.com/document/d/1Vd0BP7G2UyPDRQs_-8dPvTgQ78Tk6kcVGuMJjqNdr84/edit"
      ],
      "scope": "出典・provenance",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EA-285-CURRENT-APPROVAL",
      "evidence_class": "RESEARCH",
      "title": "現行本文の監査・revision対応",
      "supports": [
        "現行台帳のAUDIT_PASSと候補・revision・本文ハッシュの対応を確認しています。"
      ],
      "limit": "監査状態と来歴の記録です。外部根拠の最新性や本文の全主張を追加保証しません。",
      "origin_class": "AUDITED_CANONICAL_RESEARCH_PACKET",
      "source_or_experiment_ids": [
        "MANUAL-EA285-DRAIN-20261022-C1"
      ],
      "supporting_locators": [
        "1KqhJtiSb2S84rWmeYVwKcT_76dBwZ_B0ZZuAWQqH0rQ/EA_REVISION_LEDGER#ea_id=EA-285&revision_id=EA-285-RESEARCH-20261022-R1&candidate_id=MANUAL-EA285-DRAIN-20261022-C1",
        "EA-285-RESEARCH-20261022-R1"
      ],
      "provenance_status": "CURRENT_CANONICAL_APPROVAL_READBACK"
    },
    {
      "id": "EA-285-CURRENT-BODY-READBACK",
      "evidence_class": "IMPL",
      "title": "現行本文の収録照合",
      "supports": [
        "公開生成入力の本文SHA-256が、監査済み候補に結び付いたハッシュと一致しています。"
      ],
      "limit": "本文の同一性の検査です。外部システムの挙動や全主張の真偽を実証したものではありません。",
      "checked_at": "2026-10-22",
      "origin_class": "IMPLEMENTATION_READBACK",
      "source_or_experiment_ids": [
        "BODY-SHA256:427f7ab1bafa25e64b97fda11f7de0ed7b1dc5bdfc014db6d1d4197160efc2fa"
      ],
      "supporting_locators": [
        "content/staging/EA-285.md",
        "427f7ab1bafa25e64b97fda11f7de0ed7b1dc5bdfc014db6d1d4197160efc2fa",
        "EA-285-RESEARCH-20261022-R1"
      ],
      "provenance_status": "CURRENT_APPROVED_BODY_HASH_MATCH"
    }
  ],
  "research_sections": [
    {
      "heading": "要点と前提",
      "text": "AIから人へのエスカレーションは、AIが処理を続けられない、続けるべきでない、または別の権限が必要になったときに、判断と作業の責任を引き継ぐ仕組みである。「担当者に通知しました」という文だけでは引継ぎは完了しない。何を止め、何を保持し、誰が受領し、何を判断すれば再開または終了できるかを決める必要がある。\n\n対象は低い回答確信度だけではない。認可不足、根拠の矛盾、利用者の異議、外部処理の成否不明、期限超過、予算超過、障害も含む。AIが推定する自信の点数と、業務上の損失や権限条件を混同しない。モデルが「確信している」と答えても、許可のない操作を進めてよい理由にはならない。"
    },
    {
      "heading": "方針は発火条件と停止範囲を対にする",
      "text": "| 発火条件 | まず制御すること | 人が決めること |\n|---|---|---|\n| 根拠不足・矛盾 | 推測の確定回答を止め、参照済み根拠を保持 | 追加資料、限定回答、回答断念 |\n| 権限・承認不足 | 対象操作を止める。資格情報を自動で拡大しない | 適格な承認者への移管、拒否 |\n| 外部操作の成否不明 | 同じ副作用の再試行を止める | 外部結果の照合、再実行・補償 |\n| 利用者の異議・訂正 | 問題の回答・処理を特定し、変更履歴を残す | 訂正、調査、説明、業務の継続可否 |\n| 障害・時間・費用の上限 | 指定範囲を停止・縮退する | 復旧、代替手順、取消し |\n\nこれは設計例であり、どの閾値で人へ渡すかは業務別に定める。停止範囲も、問題のあるツールだけ止めるのか、会話全体を保留するのか、利用者への一次案内は続けるのかを明示する。根拠不足の問合せを人へ回す間も、エージェントが裏で推測回答や外部送信を続ければ、引継ぎの意味が失われる。"
    },
    {
      "heading": "受領可能な相手を決める",
      "text": "担当先は単なる宛先一覧ではなく、業務範囲、必要権限、稼働時間、応答期限、代理経路を持つ。特定個人だけへ通知して不在で止まる構成を避け、担当チームと現在の受領者を分ける。別部署に渡す場合には、必要な資料への閲覧権限も揃える。判断の責任だけ渡し、根拠が読めない状態にしない。\n\n一方、引継ぎのために全会話や機密添付を広い通知先へ複写する必要はない。通知は案件ID、分類、緊急度、期限などへ絞り、認証された作業画面から必要な資料を取得させる。テナントや利用目的を維持し、転送先のチケット、メール、ログも保持・削除の対象にする。\n\nCamunda 8.9の資料は、タスクの割当てと作業状態を別に扱い、割り当てられていても直ちに作業されるとは限らないことを説明する。[S1] この区別は、人への引継ぎにも当てはまる。担当者名が付いたことを受領・着手の証拠にせず、受領確認と作業開始を記録できるようにする。"
    },
    {
      "heading": "引継ぎパケットの最小構成",
      "text": "案件ID、利用者の目的、停止理由、現在の状態、最後に確認した事実、未確認点、実施済み操作、外部操作ID、現在の担当、期限、求める判断を揃える。モデルによる要約を付ける場合も、事実、推定、利用者の発言を区別し、原資料へ辿れるようにする。要約が誤っていれば人の判断も誤るため、要約だけを唯一の証拠にしない。\n\n重要なのは「次の人に何をしてほしいか」である。「確認お願いします」だけでは、承認、原因調査、利用者への連絡、再実行のどれかが分からない。依頼を具体的な判断と完了条件へ結び付ける。現在の状態を変える必要があるときは、提案する操作とその版を示す。"
    },
    {
      "heading": "通知から完了までの状態を閉じる",
      "text": "推奨する流れは、案件の永続保存、配送、受領、判断・作業、結果保存、AI側への反映、利用者への結果提示である。配送できなければ再配送または代替経路へ進める。受領されない場合と、受領後に進まない場合は別に監視し、期限に応じて次の担当へ上げる。通知システムの配達成功を業務完了へ転用しない。\n\nAWS Step Functionsのcallbackは外部からtask tokenが返るまで待つ構成を提供し、heartbeatやtimeoutの設定も待機設計の一部になる。[S2] ただしtoken返却は、引継ぎ内容が正しく理解された証拠とは限らない。業務側では受領者、決定、判断対象の版、認可を検証する。待機している実行を維持できることと、適格な人が応答する体制は別の要件である。\n\n応答期限を超えた場合に、既定で許可して再開することは避ける。処理の取消し、安全な縮退、別担当への移管など、業務上妥当な既定動作を定める。利用者には、待ち状態、停止した範囲、次に確認できる時点を示す。根拠のない完了予定時刻をAIが生成しないようにする。"
    },
    {
      "heading": "AIへ戻すときにも制御が必要",
      "text": "人の返答は自由文だけでなく、承認・拒否・修正・追加資料・手作業で完了などの決定として保存する。手作業で外部操作を済ませたなら、その結果と外部IDを渡し、AIが同じ操作を再実行しないようにする。修正が必要なら新しい候補を作り、以前の承認を別の対象へ流用しない。\n\nLangGraphのinterruptは保存状態からの再開を提供するが、ノードの再実行を伴うため、前段の副作用には冪等性や分離が必要である。[S3] 人が決定を返した瞬間に、外部処理が一度だけ完了するという保証ではない。再開時には、現在も権限と前提が有効か、案件がすでに解決済みではないかを照合する。\n\nAIが再開できない場合にも、人が解決した成果を失わないようにする。案件の状態と結果を別の永続記録へ持ち、再開処理が失敗しても再通知や全再調査へ戻さない。案件が取消しになった後の遅い返答は記録として保持しても、そのまま実行許可にしない。"
    },
    {
      "heading": "人へ回し過ぎる失敗と、回さない失敗",
      "text": "閾値を過度に厳しくすると、人の待ち行列が膨らみ、重大案件も埋もれる。反対に、AIの自信だけで人への移管を減らすと、権限違反や成否不明の外部操作を見逃す。案件数だけでなく、分類別の未受領時間、解決時間、誤った配送、再エスカレーション、重大失敗を観測する。\n\n人が介在すれば自動的に判断が改善するわけでもない。不明点の隠れた要約、過剰な通知、判断時間の不足は、自動承認に近い運用を生む。代表ケースを使って、受領者が次の行動と停止理由を理解できるかを確認し、誤った引継ぎを検知する経路を用意する。"
    },
    {
      "heading": "OPEN_UNKNOWN",
      "text": "- 対象業務の閾値、営業時間、当番・代理、必要権限、応答期限、停止・補償手順は未取得。\n- 配送失敗、未受領、不在、移管、期限切れ、手作業完了、AI再開、二重実行防止の実試験はNOT_RUN。\n- 旧EA-285記録はLuna成果の所在確認のみ。完成先行本文は確認できず、旧記録を保持した新候補とする。"
    },
    {
      "heading": "SAFE_WORDING",
      "text": "「停止範囲と責任者を定め、受領・判断・結果・再開を証拠で接続する」。一方、「メールしたので引継ぎ完了」「担当名があるので着手済み」「人の返答を受ければ無条件に再開」「判断を渡したのでAI側の責任は終了」とはしない。"
    },
    {
      "heading": "出典・provenance",
      "text": "2026-10-22に一次資料を確認。表・引継ぎ項目・監視と受入れは本稿の設計提案。\n\n- [S1] Camunda 8.9 User task lifecycle: https://docs.camunda.io/docs/8.9/apis-tools/frontend-development/task-applications/user-task-lifecycle/ （割当てと作業状態の区別）\n- [S2] AWS Step Functions Integration Patterns, Wait for Callback: https://docs.aws.amazon.com/step-functions/latest/dg/connect-to-resource.html （外部応答待機とtimeout／heartbeat）\n- [S3] LangGraph Interrupts: https://docs.langchain.com/oss/python/langgraph/interrupts （状態保存・再開の境界）\n- 歴史的所在記録: https://docs.google.com/document/d/1Vd0BP7G2UyPDRQs_-8dPvTgQ78Tk6kcVGuMJjqNdr84/edit 、2026-09-18 11:20 JST RUN、EA-285見出し、台帳locator t.0:23385–25569、ARTIFACT_INDEX!261。新しい調査条件や停止条件をタスク本文へ追加していない。"
    }
  ],
  "human_url": "/tools/ea-285-human-escalation-policy-handoff-design",
  "markdown_url": "/agent/article.md?path=%2Ftools%2Fea-285-human-escalation-policy-handoff-design",
  "json_url": "/agent/article.json?path=%2Ftools%2Fea-285-human-escalation-policy-handoff-design"
}