Switchback release rehearsal

Decision: BLOCK

Expected: 20 parts. Old app after rollback: 110 parts.

Run: 108960f5f7da · SHA-256 checksum: f9207ea153b7e878c938576faa74db0f238ad9d6a5e6244d837bfdc6361477dc

Strategy exercised: unsafe · Commit: eef3d44d332a4ca93b8f06083ff1ab568072f7eb · release.py SHA-256: e7ec2a348aed6d67…

CheckResultExpectedObserved
Old version is healthy before candidate rolloutPASS1010
Retry across versions is idempotentPASSTrueTrue
Candidate v2 reads correct partsPASS2020
Old v1 reads candidate-written records safelyFAIL20110
Rollback preserves business quantityFAIL20110
Accepted receipt count did not change on retryPASS22
Stored legacy quantity has carton semantics (108960f5f7da-old-1)PASS11
Stored legacy quantity has carton semantics (108960f5f7da-new-1)FAIL110

Actual API operations

[
  {
    "operation": "old v1 accepts first carton",
    "response": {
      "event_id": "108960f5f7da-old-1",
      "accepted_parts": 10,
      "replayed": false,
      "served_by": "v1"
    }
  },
  {
    "operation": "v2 candidate accepts second carton",
    "response": {
      "event_id": "108960f5f7da-new-1",
      "accepted_parts": 10,
      "replayed": false,
      "served_by": "v2"
    }
  },
  {
    "operation": "v1 retries the candidate receipt",
    "response": {
      "event_id": "108960f5f7da-new-1",
      "accepted_parts": 10,
      "replayed": true,
      "served_by": "v1"
    }
  },
  {
    "operation": "mixed rollout: v2 reads both receipts",
    "response": {
      "sku": "SB108960F5F7DA",
      "parts": 20,
      "receipts": 2,
      "served_by": "v2"
    }
  },
  {
    "operation": "mixed rollout: v1 reads v2 data",
    "response": {
      "sku": "SB108960F5F7DA",
      "parts": 110,
      "receipts": 2,
      "served_by": "v1"
    }
  },
  {
    "operation": "ROLLBACK: all inventory traffic returns to v1",
    "response": {
      "sku": "SB108960F5F7DA",
      "parts": 110,
      "receipts": 2,
      "served_by": "v1"
    }
  }
]

Only the named SKU and test event sequence were checked. Not a guarantee of universal rollback safety.