{
  "schemaVersion": 1,
  "generatedAt": "2026-08-17T18:41:49.318Z",
  "generationKey": "e1de3785b174b180ff93a482a62b4420e133573167878f89c1ef507bf184921f",
  "metadataPayloadSha256": "80b54e3ec8335d60685212c14f5f219f57b4ef1925459dbd05f64589c100703f",
  "diagram": {
    "id": "warrant-change-request-flow-83bc93c5",
    "title": "Warrant — change request flow",
    "description": "The change-request state machine. Approve is claim-then-apply across transactions: the row flips to approved first, the edit runs second, and applied_at is stamped only after that commits. A failed apply reverts the row to open; a crash between the two leaves approved with a null applied_at, which a later approve resumes idempotently.",
    "status": "current",
    "canonicalAppearanceKey": "tsx:src/app/(docs)/docs/modules/warrant/page.tsx:changeRequestFlow#1"
  },
  "aliases": [],
  "concepts": [
    "Change request flow",
    "Modules",
    "Warrant"
  ],
  "keywords": [
    "applied_at still NULL",
    "stamp applied_at",
    "revision activity change_request:id",
    "audit change_request.approve",
    "POST /change-requests",
    "status: open",
    "owner / steward gate",
    "status → approved",
    "apply the edit",
    "apply throws",
    "status: rejected",
    "status: withdrawn",
    "POST /change-requests/:id/approve",
    "POST /change-requests/:id/reject",
    "POST /change-requests/:id/withdraw",
    "reviewer",
    "claim",
    "commit"
  ],
  "mermaid": {
    "type": "flowchart",
    "direction": "LR",
    "sourceSha256": "83bc93c5a053b8d8852d08f551771b1f9ca93f0a71a3776a31052956966b4211"
  },
  "provenance": [
    {
      "appearanceKey": "tsx:src/app/(docs)/docs/modules/warrant/page.tsx:changeRequestFlow#1",
      "surface": "route",
      "sourcePath": "src/app/(docs)/docs/modules/warrant/page.tsx",
      "line": 49,
      "route": "/docs/modules/warrant",
      "symbol": "changeRequestFlow",
      "caption": "The change-request state machine. Approve is claim-then-apply across transactions: the row flips to approved first, the edit runs second, and applied_at is stamped only after that commits. A failed apply reverts the row to open; a crash between the two leaves approved with a null applied_at, which a later approve resumes idempotently."
    }
  ],
  "embeddedMetadata": [
    {
      "sourcePath": "src/app/(docs)/docs/modules/warrant/page.tsx",
      "caption": "The change-request state machine. Approve is claim-then-apply across transactions: the row flips to approved first, the edit runs second, and applied_at is stamped only after that commits. A failed apply reverts the row to open; a crash between the two leaves approved with a null applied_at, which a later approve resumes idempotently."
    }
  ],
  "generation": {
    "application": {
      "name": "eli-ai",
      "version": "0.1.0"
    },
    "environment": {
      "node": "v26.3.1",
      "yarn": "4.17.1",
      "platform": "linux",
      "architecture": "x64",
      "containerImage": "playwright:v1.62.1-noble@sha256:c091b21d9fae78c76e85cd4356431e9b018402f172a214fc7d7a5e9a7e29d8ac+node:26.3.1-bookworm-slim@sha256:209558c3e5e40e8adff68959d3c2ba7cd73723e716d89196878a0c362fa1e109"
    },
    "packages": {
      "mermaid": "11.16.0",
      "mermaidCli": "11.16.0",
      "playwright": "1.62.1",
      "playwrightCore": "1.62.1",
      "puppeteer": "25.6.0",
      "puppeteerCore": "25.6.0"
    },
    "renderer": {
      "mermaidConfigSha256": "68c10966fe84406ee626034d58bfabd555df9f65f691204b7c46db24038da101",
      "themeCssSha256": "c80287a78d80ad63d27bd5ca348b2ef9a7e2f44da289e436be6484ea28a1b033",
      "browser": {
        "name": "chromium",
        "revision": "1234",
        "version": "151.0.7922.34",
        "executableSha256": "0b20b130e7edd9dd51873be867761295fe0cfad490c2b9a64f95bd3cfc08fa71"
      },
      "font": {
        "family": "Eli Diagram Inter Variable",
        "fileSha256": "3100e775e8616cd2611beecfa23a4263d7037586789b43f035236a2e6fbd4c62",
        "licenseSha256": "3b0a5fca3d17942cde889069889dedbbbd075e9b599968c82a95f4d944e9b345"
      }
    },
    "adapterVersions": {
      "diagramGenerator": "2",
      "drawioFlowchart": "1",
      "drawioSequence": "1",
      "drawioState": "1",
      "drawioGantt": "1"
    }
  },
  "artifacts": {
    "mmd": "/diagrams/warrant-change-request-flow-83bc93c5/warrant-change-request-flow-83bc93c5.mmd",
    "svg": "/diagrams/warrant-change-request-flow-83bc93c5/warrant-change-request-flow-83bc93c5.svg",
    "png": "/diagrams/warrant-change-request-flow-83bc93c5/warrant-change-request-flow-83bc93c5.png",
    "drawio": "/diagrams/warrant-change-request-flow-83bc93c5/warrant-change-request-flow-83bc93c5.drawio",
    "json": "/diagrams/warrant-change-request-flow-83bc93c5/warrant-change-request-flow-83bc93c5.json"
  },
  "artifactSha256": {
    "mmd": "03558537330f21e240c746f39ca8e086dfecdfeef029aba243c210ce5e63756b",
    "svg": "d7c9827bcd8553926671a8a37bb8ee8feac67c3659b9a2c52f48644267ff3172",
    "png": "ee31bcc733a7ef17fd989ee4bca409369f62d315eae10f65c03700a6252ddede",
    "drawio": "818828086766a3293b55be3b214b761149fafa2b5869fc864b32aad0ee5a3c09"
  }
}
