{
  "title": "Retrying a purchase preserves exactly one charge",
  "goal": "After an accepted sandbox payment loses its response, retrying the same order completes the purchase with exactly one accepted charge.",
  "steps": [
    {
      "description": "Open a fresh unpaid order in the approved payment sandbox.",
      "thinking": "Use a unique synthetic order and sandbox payment method so charges can be reconciled.",
      "action": "navigate",
      "target": "Sandbox checkout",
      "value": "/sandbox/checkout",
      "expected": "The unpaid order is ready and has no accepted charges."
    },
    {
      "description": "Arm the approved fault control to drop the response after acceptance, then submit payment.",
      "thinking": "Exercise an ambiguous response without blocking the original charge from being accepted.",
      "action": "click",
      "target": "Pay now",
      "expected": "The sandbox records one accepted charge while the client offers recovery."
    },
    {
      "description": "Retry payment for the same order and wait for reconciliation.",
      "thinking": "A retry must preserve the order identity rather than create a second charge.",
      "action": "click",
      "target": "Retry payment",
      "expected": "The purchase completes for the original order."
    },
    {
      "description": "Compare the final order and payment records after the agreed observation window.",
      "thinking": "A success screen alone cannot rule out a duplicate charge.",
      "action": "assert",
      "target": "Sandbox order and accepted-charge records",
      "expected": "The order is complete with exactly one accepted charge and no duplicate order."
    }
  ]
}
