{
  "schema": "ai-02-decision-v1",
  "owner_role": "synthetic-webhook-contract-owner",
  "status": "accepted-for-synthetic-contract",
  "selected": "comprehension-preserving",
  "evidence": ["first_delivery", "exact_duplicate", "transition_failure_then_retry", "receipt_failure_then_retry", "conflicting_payload", "review-consistency", "mutation-suite"],
  "reasoning": "The receipt and credit share one synthetic transactional resource. The selected patch makes their commit and rollback boundary explicit and preserves retry eligibility after either injected failure.",
  "alternatives": [
    {
      "name": "database unique constraint and transaction",
      "disposition": "production analogue",
      "consequence": "enforces receipt uniqueness and atomic domain state in the shared database"
    },
    {
      "name": "inbox plus asynchronous processing",
      "disposition": "credible when acknowledgement cannot wait",
      "consequence": "moves acceptance and business completion into separate observable contracts"
    },
    {
      "name": "provider idempotency plus reconciliation",
      "disposition": "insufficient alone",
      "consequence": "can reduce duplicate requests but local state still needs detection and repair"
    },
    {
      "name": "compensation or operator repair",
      "disposition": "required when atomic storage is impossible",
      "consequence": "accepts a visible failure window and adds reconciliation ownership"
    }
  ],
  "unresolved": [
    "real provider acknowledgement deadline",
    "real storage and ownership boundaries",
    "external side effects outside the transaction"
  ],
  "reversal_conditions": [
    "receipt and business state use different authorities",
    "provider acknowledgement cannot wait for the transition",
    "throughput requires asynchronous admission",
    "a required side effect cannot join the transaction"
  ],
  "authority": "The synthetic owner made this bounded decision; neither candidate artifact authorizes it.",
  "provenance": "synthetic decision; not Brian's architecture or preference"
}
