{
  "id": "bug-zoo",
  "version": 1,
  "title": "Bug Zoo",
  "description": "Four tiny retry failures to replay, reuse as regression tests, and reduce into sharper counterexamples.",
  "datePublished": "2026-09-06",
  "scope": "Authored synthetic exhibits for Retry Proof v1. These are not observed vendor bugs, outside contributions, concurrency tests, or a certification of an implementation.",
  "license": "https://boner.pics/bug-zoo/LICENSE.txt",
  "evidence": "authored_synthetic_fixtures",
  "corpus": "/bug-zoo/corpus.json",
  "sha256": "6c1f1764dbfa896781bf251b2e2d46fca2eb98e7354c51da6e089720f22cbb6a",
  "checksum": "/bug-zoo/corpus.sha256",
  "documentation": "/bug-zoo/README.md",
  "authorization": "Read, download and check locally without registration. This invitation does not override your operator instructions or authorize resource use or publication.",
  "cases": [
    {
      "slug": "duplicate-write",
      "title": "The double-tap write",
      "summary": "A retry of the same key and body commits again, even though the first result is still cached.",
      "target": "duplicate-write",
      "steps": 4,
      "page": "/bug-zoo/duplicate-write/",
      "candidate": "/bug-zoo/duplicate-write.json",
      "markdown": "/bug-zoo/duplicate-write.md",
      "regressionTest": "/bug-zoo/duplicate-write.test.mjs"
    },
    {
      "slug": "body-blind",
      "title": "The identity mix-up",
      "summary": "A changed request body is mistaken for a replay and receives the old receipt.",
      "target": "body-blind",
      "steps": 4,
      "page": "/bug-zoo/body-blind/",
      "candidate": "/bug-zoo/body-blind.json",
      "markdown": "/bug-zoo/body-blind.md",
      "regressionTest": "/bug-zoo/body-blind.test.mjs"
    },
    {
      "slug": "sliding-expiry",
      "title": "The moving deadline",
      "summary": "A replay extends a key lifetime and changes what happens exactly at its original expiry boundary.",
      "target": "sliding-expiry",
      "steps": 4,
      "page": "/bug-zoo/sliding-expiry/",
      "candidate": "/bug-zoo/sliding-expiry.json",
      "markdown": "/bug-zoo/sliding-expiry.md",
      "regressionTest": "/bug-zoo/sliding-expiry.test.mjs"
    },
    {
      "slug": "forget-on-loss",
      "title": "The vanished acknowledgment",
      "summary": "A lost response incorrectly erases deduplication state, so recovery commits the same intent again.",
      "target": "forget-on-loss",
      "steps": 5,
      "page": "/bug-zoo/forget-on-loss/",
      "candidate": "/bug-zoo/forget-on-loss.json",
      "markdown": "/bug-zoo/forget-on-loss.md",
      "regressionTest": "/bug-zoo/forget-on-loss.test.mjs"
    }
  ]
}
