{
  "format": "agent-article-v0",
  "article_id": "EA-247",
  "canonical_url": "/tools/ea-247-retry-budget-backoff-fallback-correctness",
  "page_type": "reference",
  "claim_ids": [],
  "evidence_ids": [
    "EA-247-CURRENT-APPROVAL",
    "EA-247-CURRENT-BODY-READBACK"
  ],
  "unknown_ids": [
    "EA-247-UNKNOWN-01"
  ],
  "operational_object_ids": [],
  "provider": [],
  "models": [],
  "plans": [],
  "surfaces": [],
  "regions": [],
  "current_status": "CURRENT",
  "observation_status": "SPEC_ONLY",
  "freshness": "CURRENT",
  "last_verified": "2026-10-05",
  "supersedes": [],
  "superseded_by": [],
  "provenance": [
    "CANDIDATE-EA247-FIRST-20261005-C2-RESCUE20261013",
    "BODY-SHA256:fec3689440b3d2d7e7919146446978ac1507ad55d4b5174571bb4e05b32d0bf5"
  ],
  "article_sources": [
    {
      "id": "EA-247-CURRENT-APPROVAL",
      "evidence_class": "RESEARCH",
      "title": "現行本文の監査・revision対応",
      "supports": [
        "現行台帳のAUDIT_PASSと候補・revision・本文ハッシュの対応を確認しています。"
      ],
      "limit": "監査状態と来歴の記録です。外部根拠の最新性や本文の全主張を追加保証しません。",
      "origin_class": "AUDITED_CANONICAL_RESEARCH_PACKET",
      "source_or_experiment_ids": [
        "CANDIDATE-EA247-FIRST-20261005-C2-RESCUE20261013"
      ],
      "supporting_locators": [
        "1KqhJtiSb2S84rWmeYVwKcT_76dBwZ_B0ZZuAWQqH0rQ",
        "EA_REVISION_LEDGER!A50:U50",
        "EA-247-FIRST-20261005"
      ],
      "provenance_status": "CURRENT_CANONICAL_APPROVAL_READBACK"
    },
    {
      "id": "EA-247-CURRENT-BODY-READBACK",
      "evidence_class": "IMPL",
      "title": "現行本文の収録照合",
      "supports": [
        "公開生成入力の本文SHA-256が、監査済み候補に結び付いたハッシュと一致しています。"
      ],
      "limit": "本文の同一性の検査です。外部システムの挙動や全主張の真偽を実証したものではありません。",
      "checked_at": "2026-10-13",
      "origin_class": "IMPLEMENTATION_READBACK",
      "source_or_experiment_ids": [
        "BODY-SHA256:fec3689440b3d2d7e7919146446978ac1507ad55d4b5174571bb4e05b32d0bf5"
      ],
      "supporting_locators": [
        "content/staging/EA-247.md",
        "fec3689440b3d2d7e7919146446978ac1507ad55d4b5174571bb4e05b32d0bf5",
        "EA-247-FIRST-20261005"
      ],
      "provenance_status": "CURRENT_APPROVED_BODY_HASH_MATCH"
    }
  ],
  "research_sections": [
    {
      "heading": "PUBLIC_CLAIM",
      "text": "Retryは各layerの「最大N回」ではなく、original user/workflow requestに対するend-to-end budgetとして管理します。budgetにはtotal downstream attemptsだけでなく、wall-clock deadline、token/compute/API cost、side-effect riskを含めます。"
    },
    {
      "heading": "RETRY_OWNERSHIP",
      "text": "SDK、orchestrator、service、tool clientがそれぞれ自動retryを持つ場合、全layerで独立にretryしません。Amazonの分散システム運用例では、5層のcall stackで各layerが3 attemptsを行うと、最下流databaseへのloadが最大243倍に増幅し得ます。retry ownerを一つまたは明示的に調整された少数layerへ固定し、original request IDでtotal attemptsを数えます。"
    },
    {
      "heading": "RETRYABILITY",
      "text": "同じrequestを再送すれば成功する可能性があるtransient failureだけをretry候補にします。429、408、5xx、network errorは候補ですが、status codeだけで無条件にretryしません。provider/product guidance、Retry-After、quota、operation semantics、残deadlineを確認します。invalid credential、schema invalid、unsupported operation、明示的policy denial等を同じ入力でblind retryしません。"
    },
    {
      "heading": "BACKOFF_AND_JITTER",
      "text": "retry間隔はbounded exponential backoffを基本とし、jitterで同期再試行を分散します。backoffだけでは十分ではありません。最大attempt、最大backoff、end-to-end deadlineをcapし、deadline内に意味のあるresponseを返せないretryを開始しません。"
    },
    {
      "heading": "SDK_AUTO_RETRY",
      "text": "GenAI SDKやcloud client libraryには既定の自動retryが存在する場合があります。2026-10-05時点のGoogle Gemini Enterprise Agent Platform documentationでは、Gen AI SDK clientがtransient timeout/network/429/5xxにexponential-backoff retryを持ち、Python例では最大4 retries、初期待機約1秒、最大約60秒と説明されています。この既定値を全SDK/versionへ一般化せず、実際のclient/version/configurationをinventoryします。上位orchestratorのretryと二重化しないようtotal budgetへ算入します。"
    },
    {
      "heading": "IDEMPOTENCY_AND_PRECONDITIONS",
      "text": "retry安全性はoperation固有です。Google Cloud Storageでは一部mutationがgeneration/metageneration preconditionを付けた場合にconditionally idempotentになります。client libraryごとにretry defaultも異なります。「cloud APIだからretry可能」と一般化せず、operationごとのidempotency、precondition、request tokenを固定します。"
    },
    {
      "heading": "AMBIGUOUS_SIDE_EFFECT",
      "text": "timeoutやconnection lossはremote operationが実行されなかった証明ではありません。payment、email、ticket update、resource creation等ではstable idempotency/operation keyを維持し、authoritative status APIまたはresource readbackで既済みか確認します。remote commit後response lossの可能性がある状態をblind retryしません。"
    },
    {
      "heading": "FALLBACK_CORRECTNESS",
      "text": "fallback responseが返ったことをavailability successと同義にしません。別model、別provider、cache、retrieval-off、tool-less responseでは、freshness、quality、tool capability、structured-output contract、policy、data residencyが変わり得ます。fallback routeには最低限、required capability、freshness bound、policy/data classification、residency、output contract、残deadlineをpreconditionとして持たせます。条件を満たさないfallbackは、エラーを隠す代替成功経路として使いません。"
    },
    {
      "heading": "DEADLINE_AND_COST",
      "text": "retry/fallbackをoriginal requestの残deadlineと残cost budgetに従わせます。attemptごとにdeadline remainingとtoken/API costを更新し、成功確率があってもuser-visible deadlineを超えるretryやfallbackは開始しません。background recoveryが必要ならinteractive requestとは別workflowへ切り離します。"
    },
    {
      "heading": "OBSERVABILITY",
      "text": "original request IDに対してtotal attempts、retry layer/owner、provider/model/tool、error class/status、backoff、deadline remaining、token/API cost、idempotency/operation key、authoritative readback、fallback route、final dispositionを記録します。retry amplification ratio、deadline exhaustion、cost amplification、fallback rate/quality、duplicate-side-effect incidentを監視します。"
    },
    {
      "heading": "FAILURE_ENVELOPE",
      "text": "nested SDK/orchestrator retry、retry storm、synchronized retry、cap plateau、Retry-After無視、quota exhaustion、invalid request retry、deadline overrun、token/cost amplification、timeout-after-commit、duplicate side effect、idempotency key loss、precondition omission、stale/low-capability fallback、policy/residency mismatch、fallback loop、telemetry gap、cancellation raceを想定します。"
    },
    {
      "heading": "IMPLEMENTATION_STATE",
      "text": "本項は2026-10-05時点のAmazon Builders' Library、Google Cloud Storage retry documentation、Gemini Enterprise Agent Platform retry documentationとbounded local fixtureに基づきます。production provider/tool mutationやoutage injectionは未実施です。"
    },
    {
      "heading": "SAFE_WORDING",
      "text": "Retryは各layerの回数設定ではなく、original requestに対するend-to-end attempt/deadline/cost budgetとして管理してください。Backoffとjitterはretry集中を緩和しますが、nested retry、non-idempotent side effect、deadline超過を自動的には防ぎません。SDKの自動retryを含むretry ownerを明示し、ambiguous side effectはreadback/reconciliationし、fallbackはcapability・freshness・policy・residencyを満たす場合だけ成功経路として扱います。"
    },
    {
      "heading": "OPEN_UNKNOWN",
      "text": "対象Agent runtime、provider/model/tool、SDK version/default retry、orchestrator retry、Retry-After処理、retry/deadline/token/cost budget、side-effect idempotency/status API、fallback route/capability、residency/policy、SLO、production failure distributionは未確認です。"
    },
    {
      "heading": "STOP_CONDITION",
      "text": "nested retry amplification、provider-specific idempotency、SDK auto-retry、deadline/cost budget、fallback semantic correctnessを監査可能な運用境界として固定します。"
    }
  ],
  "human_url": "/tools/ea-247-retry-budget-backoff-fallback-correctness",
  "markdown_url": "/agent/article.md?path=%2Ftools%2Fea-247-retry-budget-backoff-fallback-correctness",
  "json_url": "/agent/article.json?path=%2Ftools%2Fea-247-retry-budget-backoff-fallback-correctness"
}