{
  "schema": "vedokrok.public-item.v1",
  "release_id": "MHC-RPUB-20260920-75ad787a",
  "url": "/knowledge/treat-a-timeout-as-an-unknown-outcome-before-repeating-the-action",
  "id": "MHC-D-RESEARCH-0975",
  "version": "0.1.0",
  "title": "Treat a timeout as an unknown outcome before repeating the action",
  "summary": "No reply is not the same as no action.",
  "kind": "pattern",
  "body": "The receiver may have completed the operation while its response was lost. Preserve an unknown or pending state and reconcile using the operation's identity before creating a fresh request. Where a documented idempotent retry is available, follow that contract.",
  "limits": [
    "Reconciliation against stale or incomplete data can also mislead. Do not invent an automatic retry rule for an undocumented interface."
  ],
  "topics": [
    "work-01-reliable-changes"
  ],
  "intents": [],
  "source_ids": [
    "RS-ABFC60C5149B88E0"
  ],
  "evidence": [
    {
      "claim": "A request that receives no response may already have created its intended resource; blindly retrying can create additional effects.",
      "source_id": "RS-ABFC60C5149B88E0",
      "role": "supports",
      "note": "Reconciliation requires an authoritative receiver view and enough identity information to distinguish this operation from another.",
      "locator": "Retrying and side effects"
    }
  ],
  "use_when": [
    "A send, create or update request times out after leaving your application."
  ],
  "avoid_when": [
    "Reconciliation against stale or incomplete data can also mislead. Do not invent an automatic retry rule for an undocumented interface."
  ],
  "example": "An import request times out. Its run identifier reveals that the job is already processing, so a second import is not started.",
  "check": "The status distinguishes confirmed failure from an unconfirmed outcome.",
  "recognition": "No reply is not the same as no action.",
  "sources": [
    {
      "id": "RS-ABFC60C5149B88E0",
      "title": "Making retries safe with idempotent APIs",
      "url": "https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/"
    }
  ],
  "relations": [
    {
      "from": "MHC-D-RESEARCH-0975",
      "to": "MHC-D-RESEARCH-0976",
      "type": "useful_with",
      "url": "/knowledge/reuse-the-operation-identity-when-retrying-the-same-intent"
    }
  ],
  "collections": [
    {
      "id": "RC-8F91DD82E91EA56B",
      "title": "Find the failure without creating a second incident",
      "url": "/collections/find-the-failure-without-creating-a-second-incident"
    }
  ]
}
