[
  {
    "id": "my-2669-assigned-batch",
    "label": "MY-2669 staged Leonida Ledger batch",
    "status": "deploy-queued",
    "localState": "built and validation-ready",
    "batchSize": 5,
    "batchItems": [
      {
        "order": 1,
        "id": "homepage-fake-premiere-countdown",
        "route": "/",
        "exportRoute": "/data/homepage-fake-premiere-countdown-provenance-boundary-checks.json",
        "postApprovalLiveCheck": {
          "visibleMarker": "Premiere countdowns are prompts, not GTA 6 proof",
          "dataMarker": "Fake premiere clock",
          "evidence": "After David-approved deploy, verify the canonical homepage renders the premiere-countdown boundary and the canonical JSON route returns the three countdown provenance rows."
        },
        "artifact": "artifacts/MY-2669-homepage-deepfake-trailer-validation-gate-2026-06-13.md",
        "scope": "Preserve fake premiere countdown provenance as prompt-only evidence for the staged homepage media-safety batch.",
        "localGate": "npm run build && npm run validate",
        "status": "built-green-deploy-queued",
        "notProofOf": [
          "production deploy",
          "live URL state",
          "new official trailer",
          "public announcement",
          "external system mutation"
        ],
        "approvalBoundary": "Deploy only after David approval and separate production verification."
      },
      {
        "order": 2,
        "id": "homepage-deepfake-trailer",
        "route": "/",
        "exportRoute": "/data/homepage-deepfake-trailer-provenance-boundary-checks.json",
        "postApprovalLiveCheck": {
          "visibleMarker": "Deepfake trailers are prompts, not GTA 6 proof",
          "dataMarker": "Synthetic trailer cut",
          "evidence": "After David-approved deploy, verify the canonical homepage renders the deepfake-trailer boundary and the canonical JSON route returns the three synthetic-media provenance rows."
        },
        "artifact": "artifacts/MY-2669-homepage-deepfake-trailer-validation-gate-2026-06-13.md",
        "scope": "Keep synthetic trailer cuts, voice-cloned narration, and AI remasters out of source-backed GTA 6 claims.",
        "localGate": "npm run build && npm run validate",
        "status": "built-green-deploy-queued",
        "notProofOf": [
          "production deploy",
          "live URL state",
          "new official trailer",
          "voice or cast confirmation",
          "external system mutation"
        ],
        "approvalBoundary": "Deploy only after David approval and separate production verification."
      },
      {
        "order": 3,
        "id": "homepage-livestream-mirror",
        "route": "/",
        "exportRoute": "/data/homepage-livestream-mirror-provenance-boundary-checks.json",
        "postApprovalLiveCheck": {
          "visibleMarker": "Mirrored streams are prompts, not GTA 6 proof",
          "dataMarker": "Reuploaded premiere snippet",
          "evidence": "After David-approved deploy, verify the canonical homepage renders the livestream-mirror boundary and the canonical JSON route returns the three mirror/reupload provenance rows."
        },
        "artifact": "artifacts/MY-2669-homepage-deepfake-trailer-validation-gate-2026-06-13.md",
        "scope": "Treat watch-party mirrors, reposted streams, and restream clips as routing prompts until public official source wording is checked.",
        "localGate": "npm run build && npm run validate",
        "status": "built-green-deploy-queued",
        "notProofOf": [
          "production deploy",
          "live URL state",
          "new livestream",
          "official media confirmation",
          "external system mutation"
        ],
        "approvalBoundary": "Deploy only after David approval and separate production verification."
      },
      {
        "order": 4,
        "id": "homepage-cropped-screenshot",
        "route": "/",
        "exportRoute": "/data/homepage-cropped-screenshot-provenance-boundary-checks.json",
        "postApprovalLiveCheck": {
          "visibleMarker": "Cropped screenshots are prompts, not GTA 6 proof",
          "dataMarker": "Edited crop card",
          "evidence": "After David-approved deploy, verify the canonical homepage renders the cropped-screenshot boundary and the canonical JSON route returns the three crop/context provenance rows."
        },
        "artifact": "artifacts/MY-2669-homepage-deepfake-trailer-validation-gate-2026-06-13.md",
        "scope": "Keep contextless cropped screenshots and image snippets from becoming GTA 6 proof without upstream public evidence.",
        "localGate": "npm run build && npm run validate",
        "status": "built-green-deploy-queued",
        "notProofOf": [
          "production deploy",
          "live URL state",
          "new screenshot",
          "official feature confirmation",
          "external system mutation"
        ],
        "approvalBoundary": "Deploy only after David approval and separate production verification."
      },
      {
        "order": 5,
        "id": "homepage-comment-screenshot",
        "route": "/",
        "exportRoute": "/data/homepage-comment-screenshot-provenance-boundary-checks.json",
        "postApprovalLiveCheck": {
          "visibleMarker": "Comment screenshots are prompts, not GTA 6 proof",
          "dataMarker": "Copied comment chain",
          "evidence": "After David-approved deploy, verify the canonical homepage renders the comment-screenshot boundary and the canonical JSON route returns the three comment provenance rows."
        },
        "artifact": "artifacts/MY-2669-homepage-deepfake-trailer-validation-gate-2026-06-13.md",
        "scope": "Keep comment screenshots, pinned reply crops, and copied chains as untrusted prompts until source context is visible.",
        "localGate": "npm run build && npm run validate",
        "status": "built-green-deploy-queued",
        "notProofOf": [
          "production deploy",
          "live URL state",
          "official comment",
          "support or platform confirmation",
          "external system mutation"
        ],
        "approvalBoundary": "Deploy only after David approval and separate production verification."
      }
    ],
    "gateCount": 7,
    "sevenGateEvidence": [
      {
        "order": 1,
        "id": "validate-launch-contract",
        "command": "npm run validate",
        "status": "green-before-deploy-queue",
        "proofScope": "Local generated-output/read-only gate for the staged batch handoff; not live production evidence.",
        "expectedOutputs": [
          "terminal validation receipt",
          "non-zero exit on missing route/export/contract fields"
        ],
        "blocksHandoffIf": [
          "any required route, metadata tag, JSON export, source reference, or governance contract fails"
        ],
        "notProofOf": [
          "production deploy",
          "live URL state",
          "git movement",
          "credential-backed verification",
          "external system mutation"
        ],
        "localSafe": true,
        "mutatesExternalSystems": false,
        "approvalBoundary": "David approval is required before this green local gate can support production deploy, public announcement, account action, purchase, credential use, or external mutation."
      },
      {
        "order": 2,
        "id": "content-workflow-export",
        "command": "npm run content:validate",
        "status": "green-before-deploy-queue",
        "proofScope": "Local generated-output/read-only gate for the staged batch handoff; not live production evidence.",
        "expectedOutputs": [
          "dist/data/cms-articles.json"
        ],
        "blocksHandoffIf": [
          "markdown front matter or brief records are invalid",
          "CMS export cannot be generated"
        ],
        "notProofOf": [
          "production deploy",
          "live URL state",
          "git movement",
          "credential-backed verification",
          "external system mutation"
        ],
        "localSafe": true,
        "mutatesExternalSystems": false,
        "approvalBoundary": "David approval is required before this green local gate can support production deploy, public announcement, account action, purchase, credential use, or external mutation."
      },
      {
        "order": 3,
        "id": "local-link-verification",
        "command": "npm run verify:links",
        "status": "green-before-deploy-queue",
        "proofScope": "Local generated-output/read-only gate for the staged batch handoff; not live production evidence.",
        "expectedOutputs": [
          "artifacts/link-check/link-check-report.json"
        ],
        "blocksHandoffIf": [
          "any local link or asset reference is broken"
        ],
        "notProofOf": [
          "production deploy",
          "live URL state",
          "git movement",
          "credential-backed verification",
          "external system mutation"
        ],
        "localSafe": true,
        "mutatesExternalSystems": false,
        "approvalBoundary": "David approval is required before this green local gate can support production deploy, public announcement, account action, purchase, credential use, or external mutation."
      },
      {
        "order": 4,
        "id": "official-source-freshness",
        "command": "npm run verify:sources",
        "status": "green-before-deploy-queue",
        "proofScope": "Local generated-output/read-only gate for the staged batch handoff; not live production evidence.",
        "expectedOutputs": [
          "artifacts/source-freshness/source-freshness-report.json"
        ],
        "blocksHandoffIf": [
          "a required official source check fails",
          "a source change is detected but correction/source review work is not complete"
        ],
        "notProofOf": [
          "production deploy",
          "live URL state",
          "git movement",
          "credential-backed verification",
          "external system mutation"
        ],
        "localSafe": true,
        "mutatesExternalSystems": false,
        "approvalBoundary": "David approval is required before this green local gate can support production deploy, public announcement, account action, purchase, credential use, or external mutation."
      },
      {
        "order": 5,
        "id": "editorial-audit",
        "command": "npm run audit:editorial",
        "status": "green-before-deploy-queue",
        "proofScope": "Local generated-output/read-only gate for the staged batch handoff; not live production evidence.",
        "expectedOutputs": [
          "artifacts/editorial-audit/editorial-audit-report.json",
          "artifacts/editorial-audit/editorial-audit-summary.md"
        ],
        "blocksHandoffIf": [
          "required editorial markers are missing",
          "JSON export summaries are invalid",
          "warnings expose real launch-risk gaps"
        ],
        "notProofOf": [
          "production deploy",
          "live URL state",
          "git movement",
          "credential-backed verification",
          "external system mutation"
        ],
        "localSafe": true,
        "mutatesExternalSystems": false,
        "approvalBoundary": "David approval is required before this green local gate can support production deploy, public announcement, account action, purchase, credential use, or external mutation."
      },
      {
        "order": 6,
        "id": "launch-preflight-hardening",
        "command": "npm run verify:preflight",
        "status": "green-before-deploy-queue",
        "proofScope": "Local generated-output/read-only gate for the staged batch handoff; not live production evidence.",
        "expectedOutputs": [
          "artifacts/launch-preflight-hardening/launch-preflight-hardening-report.json",
          "artifacts/launch-preflight-hardening/launch-preflight-hardening-summary.md"
        ],
        "blocksHandoffIf": [
          "launch preflight groups are missing",
          "source receipt fields regress",
          "production smoke becomes part of local verify:all",
          "critical no-leaks/source-policy markers disappear"
        ],
        "notProofOf": [
          "production deploy",
          "live URL state",
          "git movement",
          "credential-backed verification",
          "external system mutation"
        ],
        "localSafe": true,
        "mutatesExternalSystems": false,
        "approvalBoundary": "David approval is required before this green local gate can support production deploy, public announcement, account action, purchase, credential use, or external mutation."
      },
      {
        "order": 7,
        "id": "visual-qa",
        "command": "npm run visual:qa",
        "status": "green-before-deploy-queue",
        "proofScope": "Local generated-output/read-only gate for the staged batch handoff; not live production evidence.",
        "expectedOutputs": [
          "artifacts/visual-qa/"
        ],
        "blocksHandoffIf": [
          "screenshots are blank",
          "mobile/desktop content overlaps",
          "major layout or hierarchy regressions remain unrecorded"
        ],
        "notProofOf": [
          "production deploy",
          "live URL state",
          "git movement",
          "credential-backed verification",
          "external system mutation"
        ],
        "localSafe": true,
        "mutatesExternalSystems": false,
        "approvalBoundary": "David approval is required before this green local gate can support production deploy, public announcement, account action, purchase, credential use, or external mutation."
      }
    ],
    "deploymentHandoff": {
      "shipAuthority": "David",
      "queueState": "deploy-queued",
      "liveProofStatus": "not-claimed",
      "nextPermittedAction": "David-approved deploy followed by separate production verification receipt",
      "blockedUntilApproval": [
        "wrangler deploy",
        "git movement",
        "credential-backed verification",
        "network smoke test",
        "public announcement"
      ],
      "approvedShipPlan": [
        {
          "order": 1,
          "id": "rerun-offline-gate",
          "command": "npm run build && npm run validate",
          "actor": "local operator before handoff",
          "requiresDavidApproval": false,
          "expectedEvidence": "Fresh local build and validation output attached to the handoff before any live movement.",
          "stopIfMissing": "Do not request deploy approval if either local gate fails or is skipped."
        },
        {
          "order": 2,
          "id": "record-david-approval",
          "command": "manual approval receipt outside this local run",
          "actor": "David",
          "requiresDavidApproval": true,
          "expectedEvidence": "Explicit David approval naming MY-2669, the five-item staged batch, and permission to ship production.",
          "stopIfMissing": "Keep the batch deploy-queued; do not run deploy, network smoke, public posts, or credential-backed checks."
        },
        {
          "order": 3,
          "id": "david-controlled-deploy",
          "command": "npm run deploy",
          "actor": "David or David-approved operator",
          "requiresDavidApproval": true,
          "expectedEvidence": "Production deploy output for leonidaledger.com after approval, not local dist output or preview-only proof.",
          "stopIfMissing": "Keep liveProofStatus not-claimed and preserve the deploy-queued receipt for the next local handoff."
        },
        {
          "order": 4,
          "id": "post-deploy-production-verification",
          "command": "npm run verify:production",
          "actor": "David-approved verifier",
          "requiresDavidApproval": true,
          "expectedEvidence": "Production verification receipt with canonical route statuses, staged markers, data markers, Lighthouse scores, and checkedAt timestamp.",
          "stopIfMissing": "Rollback or hold promotion; do not claim MY-2669 live proof from local files, cached screenshots, or pre-approval network checks."
        }
      ],
      "postApprovalProofRequired": [
        {
          "id": "canonical-homepage-smoke",
          "route": "/",
          "evidence": "200 response and visible staged media-safety boundary markers on the canonical homepage"
        },
        {
          "id": "readiness-json-smoke",
          "route": "/data/staged-batch-ship-readiness.json",
          "evidence": "MY-2669 receipt remains deploy-queued with five batch items and seven green local gates"
        },
        {
          "id": "answer-engine-packet-smoke",
          "route": "/data/answer-engine-packet.json",
          "evidence": "answer-engine packet still carries stagedBatchShipReadiness and preferred data route coverage"
        },
        {
          "id": "corrections-log-smoke",
          "route": "/data/corrections-log.json",
          "evidence": "corrections log includes the MY-2669 deploy-queue readiness receipt"
        },
        {
          "id": "lighthouse-regression-gate",
          "route": "/",
          "evidence": "Lighthouse 100s are not regressed after the David-approved production deploy"
        }
      ],
      "productionReceiptTemplate": {
        "id": "my-2669-post-approval-production-receipt-template",
        "status": "template-only-until-David-approved-deploy",
        "command": "npm run verify:production",
        "checkedAtFormat": "ISO-8601 UTC timestamp from the post-deploy verification run",
        "requiredOperatorNote": "Name the David approval receipt, production deploy output, live route checks, data marker checks, Lighthouse result, and rollback decision.",
        "liveRouteChecks": [
          {
            "order": 1,
            "id": "canonical-homepage",
            "canonicalUrl": "https://leonidaledger.com/",
            "requiredHttpStatus": 200,
            "requiredVisibleMarkers": [
              "Premiere countdowns are prompts, not GTA 6 proof",
              "Deepfake trailers are prompts, not GTA 6 proof",
              "Mirrored streams are prompts, not GTA 6 proof",
              "Cropped screenshots are prompts, not GTA 6 proof",
              "Comment screenshots are prompts, not GTA 6 proof"
            ],
            "requiredDataRoutes": [
              "/data/homepage-fake-premiere-countdown-provenance-boundary-checks.json",
              "/data/homepage-deepfake-trailer-provenance-boundary-checks.json",
              "/data/homepage-livestream-mirror-provenance-boundary-checks.json",
              "/data/homepage-cropped-screenshot-provenance-boundary-checks.json",
              "/data/homepage-comment-screenshot-provenance-boundary-checks.json"
            ],
            "rejects": [
              "local dist screenshot",
              "preview URL",
              "cached homepage",
              "missing staged marker"
            ]
          },
          {
            "order": 2,
            "id": "readiness-json",
            "canonicalUrl": "https://leonidaledger.com/data/staged-batch-ship-readiness.json",
            "requiredHttpStatus": 200,
            "requiredJsonIds": [
              "my-2669-assigned-batch",
              "offline-gate-evidence",
              "external-action-boundary"
            ],
            "requiredState": "deploy-queued with liveProofStatus not-claimed until the separate receipt is attached",
            "rejects": [
              "local JSON file",
              "missing five-item manifest",
              "missing seven-gate evidence"
            ]
          },
          {
            "order": 3,
            "id": "answer-engine-packet",
            "canonicalUrl": "https://leonidaledger.com/data/answer-engine-packet.json",
            "requiredHttpStatus": 200,
            "requiredJsonPath": "stagedBatchShipReadiness.receipts",
            "requiredState": "three receipts carry the same approval boundary and receipt template",
            "rejects": [
              "packet without stagedBatchShipReadiness",
              "packet without preferred data route"
            ]
          },
          {
            "order": 4,
            "id": "corrections-log",
            "canonicalUrl": "https://leonidaledger.com/data/corrections-log.json",
            "requiredHttpStatus": 200,
            "requiredCorrectionIds": [
              "my-2669-post-approval-receipt-template-2026-06-20",
              "my-2669-approved-ship-plan-validation-2026-06-20",
              "my-2669-staged-batch-deploy-queue-readiness-2026-06-19"
            ],
            "requiredState": "corrections log records the local-safe handoff and receipt-template changes",
            "rejects": [
              "production claim without correction trail",
              "missing MY-2669 handoff entries"
            ]
          }
        ],
        "lighthouseGate": {
          "route": "https://leonidaledger.com/",
          "requiredResult": "100s not regressed from the approved staged batch gate",
          "evidenceField": "lighthouseScores",
          "rejects": [
            "missing Lighthouse output",
            "local-only Lighthouse result used as production proof"
          ]
        },
        "rollbackDecision": {
          "requiredIfAnyCheckFails": true,
          "defaultAction": "Keep MY-2669 deploy-queued, do not claim production-live proof, and attach failing route/check evidence to the next local handoff."
        }
      },
      "postApprovalVerificationReceipt": {
        "requiredStatus": "production-verified-after-David-approved-deploy",
        "requiredCommand": "npm run verify:production",
        "requiredLiveRoutes": [
          "/",
          "/data/staged-batch-ship-readiness.json",
          "/data/answer-engine-packet.json",
          "/data/corrections-log.json"
        ],
        "requiredEvidenceFields": [
          "canonicalUrl",
          "httpStatus",
          "visibleMarker",
          "dataMarker",
          "lighthouseScores",
          "checkedAt"
        ],
        "forbiddenEvidence": [
          "local dist file",
          "preview-only URL",
          "cached screenshot",
          "unapproved deploy output",
          "network smoke before approval"
        ],
        "rollbackIfMissing": "Keep MY-2669 in deploy-queued state, do not claim live proof, and attach the failed live route/evidence field to the next local handoff."
      }
    },
    "safeLocalAction": "Keep the batch in a David-controlled deploy queue and expose the readiness receipt to generated data so future agents do not repeat or widen the work.",
    "requiredLocalGate": "npm run build && npm run validate",
    "localProof": [
      "dist regenerated locally",
      "seven local gates recorded as green before deploy queue",
      "JSON exports parse",
      "answer-engine packet includes readiness receipt",
      "validation gate preserves David approval boundary"
    ],
    "notProofOf": [
      "production deploy",
      "live URL state",
      "git push or commit",
      "credential-backed verification",
      "external system mutation"
    ],
    "handoffChecklist": [
      "Confirm offline gate output",
      "Keep status deploy-queued until David ships",
      "Run separate live verification only after approved deploy"
    ],
    "blockedActions": [
      "git operations",
      "production deploy",
      "credential use",
      "network calls",
      "external writes"
    ],
    "approvalBoundary": "David ships; this local receipt must not be treated as a production deploy, public announcement, account change, purchase, credential use, or external mutation."
  },
  {
    "id": "offline-gate-evidence",
    "label": "Offline gate evidence",
    "status": "required-before-handoff",
    "localState": "validation-gated",
    "batchSize": 5,
    "deploymentHandoff": {
      "shipAuthority": "David",
      "queueState": "local-gate-required",
      "liveProofStatus": "not-claimed",
      "nextPermittedAction": "Re-run npm run build && npm run validate before handoff if source or generated output changes",
      "blockedUntilApproval": [
        "wrangler deploy",
        "git movement",
        "credential-backed verification",
        "network smoke test",
        "public announcement"
      ],
      "approvedShipPlan": [
        {
          "order": 1,
          "id": "rerun-offline-gate",
          "command": "npm run build && npm run validate",
          "actor": "local operator before handoff",
          "requiresDavidApproval": false,
          "expectedEvidence": "Fresh local build and validation output attached to the handoff before any live movement.",
          "stopIfMissing": "Do not request deploy approval if either local gate fails or is skipped."
        },
        {
          "order": 2,
          "id": "record-david-approval",
          "command": "manual approval receipt outside this local run",
          "actor": "David",
          "requiresDavidApproval": true,
          "expectedEvidence": "Explicit David approval naming MY-2669, the five-item staged batch, and permission to ship production.",
          "stopIfMissing": "Keep the batch deploy-queued; do not run deploy, network smoke, public posts, or credential-backed checks."
        },
        {
          "order": 3,
          "id": "david-controlled-deploy",
          "command": "npm run deploy",
          "actor": "David or David-approved operator",
          "requiresDavidApproval": true,
          "expectedEvidence": "Production deploy output for leonidaledger.com after approval, not local dist output or preview-only proof.",
          "stopIfMissing": "Keep liveProofStatus not-claimed and preserve the deploy-queued receipt for the next local handoff."
        },
        {
          "order": 4,
          "id": "post-deploy-production-verification",
          "command": "npm run verify:production",
          "actor": "David-approved verifier",
          "requiresDavidApproval": true,
          "expectedEvidence": "Production verification receipt with canonical route statuses, staged markers, data markers, Lighthouse scores, and checkedAt timestamp.",
          "stopIfMissing": "Rollback or hold promotion; do not claim MY-2669 live proof from local files, cached screenshots, or pre-approval network checks."
        }
      ],
      "postApprovalProofRequired": [
        {
          "id": "canonical-homepage-smoke",
          "route": "/",
          "evidence": "200 response and visible staged media-safety boundary markers on the canonical homepage"
        },
        {
          "id": "readiness-json-smoke",
          "route": "/data/staged-batch-ship-readiness.json",
          "evidence": "MY-2669 receipt remains deploy-queued with five batch items and seven green local gates"
        },
        {
          "id": "answer-engine-packet-smoke",
          "route": "/data/answer-engine-packet.json",
          "evidence": "answer-engine packet still carries stagedBatchShipReadiness and preferred data route coverage"
        },
        {
          "id": "corrections-log-smoke",
          "route": "/data/corrections-log.json",
          "evidence": "corrections log includes the MY-2669 deploy-queue readiness receipt"
        },
        {
          "id": "lighthouse-regression-gate",
          "route": "/",
          "evidence": "Lighthouse 100s are not regressed after the David-approved production deploy"
        }
      ],
      "productionReceiptTemplate": {
        "id": "my-2669-post-approval-production-receipt-template",
        "status": "template-only-until-David-approved-deploy",
        "command": "npm run verify:production",
        "checkedAtFormat": "ISO-8601 UTC timestamp from the post-deploy verification run",
        "requiredOperatorNote": "Name the David approval receipt, production deploy output, live route checks, data marker checks, Lighthouse result, and rollback decision.",
        "liveRouteChecks": [
          {
            "order": 1,
            "id": "canonical-homepage",
            "canonicalUrl": "https://leonidaledger.com/",
            "requiredHttpStatus": 200,
            "requiredVisibleMarkers": [
              "Premiere countdowns are prompts, not GTA 6 proof",
              "Deepfake trailers are prompts, not GTA 6 proof",
              "Mirrored streams are prompts, not GTA 6 proof",
              "Cropped screenshots are prompts, not GTA 6 proof",
              "Comment screenshots are prompts, not GTA 6 proof"
            ],
            "requiredDataRoutes": [
              "/data/homepage-fake-premiere-countdown-provenance-boundary-checks.json",
              "/data/homepage-deepfake-trailer-provenance-boundary-checks.json",
              "/data/homepage-livestream-mirror-provenance-boundary-checks.json",
              "/data/homepage-cropped-screenshot-provenance-boundary-checks.json",
              "/data/homepage-comment-screenshot-provenance-boundary-checks.json"
            ],
            "rejects": [
              "local dist screenshot",
              "preview URL",
              "cached homepage",
              "missing staged marker"
            ]
          },
          {
            "order": 2,
            "id": "readiness-json",
            "canonicalUrl": "https://leonidaledger.com/data/staged-batch-ship-readiness.json",
            "requiredHttpStatus": 200,
            "requiredJsonIds": [
              "my-2669-assigned-batch",
              "offline-gate-evidence",
              "external-action-boundary"
            ],
            "requiredState": "deploy-queued with liveProofStatus not-claimed until the separate receipt is attached",
            "rejects": [
              "local JSON file",
              "missing five-item manifest",
              "missing seven-gate evidence"
            ]
          },
          {
            "order": 3,
            "id": "answer-engine-packet",
            "canonicalUrl": "https://leonidaledger.com/data/answer-engine-packet.json",
            "requiredHttpStatus": 200,
            "requiredJsonPath": "stagedBatchShipReadiness.receipts",
            "requiredState": "three receipts carry the same approval boundary and receipt template",
            "rejects": [
              "packet without stagedBatchShipReadiness",
              "packet without preferred data route"
            ]
          },
          {
            "order": 4,
            "id": "corrections-log",
            "canonicalUrl": "https://leonidaledger.com/data/corrections-log.json",
            "requiredHttpStatus": 200,
            "requiredCorrectionIds": [
              "my-2669-post-approval-receipt-template-2026-06-20",
              "my-2669-approved-ship-plan-validation-2026-06-20",
              "my-2669-staged-batch-deploy-queue-readiness-2026-06-19"
            ],
            "requiredState": "corrections log records the local-safe handoff and receipt-template changes",
            "rejects": [
              "production claim without correction trail",
              "missing MY-2669 handoff entries"
            ]
          }
        ],
        "lighthouseGate": {
          "route": "https://leonidaledger.com/",
          "requiredResult": "100s not regressed from the approved staged batch gate",
          "evidenceField": "lighthouseScores",
          "rejects": [
            "missing Lighthouse output",
            "local-only Lighthouse result used as production proof"
          ]
        },
        "rollbackDecision": {
          "requiredIfAnyCheckFails": true,
          "defaultAction": "Keep MY-2669 deploy-queued, do not claim production-live proof, and attach failing route/check evidence to the next local handoff."
        }
      },
      "postApprovalVerificationReceipt": {
        "requiredStatus": "production-verified-after-David-approved-deploy",
        "requiredCommand": "npm run verify:production",
        "requiredLiveRoutes": [
          "/",
          "/data/staged-batch-ship-readiness.json",
          "/data/answer-engine-packet.json",
          "/data/corrections-log.json"
        ],
        "requiredEvidenceFields": [
          "canonicalUrl",
          "httpStatus",
          "visibleMarker",
          "dataMarker",
          "lighthouseScores",
          "checkedAt"
        ],
        "forbiddenEvidence": [
          "local dist file",
          "preview-only URL",
          "cached screenshot",
          "unapproved deploy output",
          "network smoke before approval"
        ],
        "rollbackIfMissing": "Keep MY-2669 in deploy-queued state, do not claim live proof, and attach the failed live route/evidence field to the next local handoff."
      }
    },
    "safeLocalAction": "Regenerate dist, parse the JSON-LD/data exports, and keep the answer-engine packet aligned with the deploy-queued receipt before any handoff.",
    "requiredLocalGate": "npm run build && npm run validate",
    "localProof": [
      "build artifacts exist under dist",
      "required data export is present",
      "JSON-LD remains parseable",
      "site validation passes offline"
    ],
    "notProofOf": [
      "production deploy",
      "Lighthouse live score",
      "post-deploy smoke test",
      "search indexing",
      "external announcement"
    ],
    "handoffChecklist": [
      "Attach local gate result to handoff",
      "Do not substitute local files for live proof",
      "Re-run production checks after David-approved deploy"
    ],
    "blockedActions": [
      "skipping failed local gates",
      "claiming live proof from local output",
      "using network-only verification as a substitute",
      "production deploy"
    ],
    "approvalBoundary": "Local gates can prove generated output integrity only; production status still requires David-approved deploy and live verification."
  },
  {
    "id": "external-action-boundary",
    "label": "External action boundary",
    "status": "approval-gated",
    "localState": "local-only",
    "batchSize": 5,
    "deploymentHandoff": {
      "shipAuthority": "David",
      "queueState": "approval-gated",
      "liveProofStatus": "not-claimed",
      "nextPermittedAction": "Stop local work and wait for explicit David approval before any external action",
      "blockedUntilApproval": [
        "wrangler deploy",
        "git movement",
        "credential-backed verification",
        "network smoke test",
        "public announcement"
      ],
      "approvedShipPlan": [
        {
          "order": 1,
          "id": "rerun-offline-gate",
          "command": "npm run build && npm run validate",
          "actor": "local operator before handoff",
          "requiresDavidApproval": false,
          "expectedEvidence": "Fresh local build and validation output attached to the handoff before any live movement.",
          "stopIfMissing": "Do not request deploy approval if either local gate fails or is skipped."
        },
        {
          "order": 2,
          "id": "record-david-approval",
          "command": "manual approval receipt outside this local run",
          "actor": "David",
          "requiresDavidApproval": true,
          "expectedEvidence": "Explicit David approval naming MY-2669, the five-item staged batch, and permission to ship production.",
          "stopIfMissing": "Keep the batch deploy-queued; do not run deploy, network smoke, public posts, or credential-backed checks."
        },
        {
          "order": 3,
          "id": "david-controlled-deploy",
          "command": "npm run deploy",
          "actor": "David or David-approved operator",
          "requiresDavidApproval": true,
          "expectedEvidence": "Production deploy output for leonidaledger.com after approval, not local dist output or preview-only proof.",
          "stopIfMissing": "Keep liveProofStatus not-claimed and preserve the deploy-queued receipt for the next local handoff."
        },
        {
          "order": 4,
          "id": "post-deploy-production-verification",
          "command": "npm run verify:production",
          "actor": "David-approved verifier",
          "requiresDavidApproval": true,
          "expectedEvidence": "Production verification receipt with canonical route statuses, staged markers, data markers, Lighthouse scores, and checkedAt timestamp.",
          "stopIfMissing": "Rollback or hold promotion; do not claim MY-2669 live proof from local files, cached screenshots, or pre-approval network checks."
        }
      ],
      "postApprovalProofRequired": [
        {
          "id": "canonical-homepage-smoke",
          "route": "/",
          "evidence": "200 response and visible staged media-safety boundary markers on the canonical homepage"
        },
        {
          "id": "readiness-json-smoke",
          "route": "/data/staged-batch-ship-readiness.json",
          "evidence": "MY-2669 receipt remains deploy-queued with five batch items and seven green local gates"
        },
        {
          "id": "answer-engine-packet-smoke",
          "route": "/data/answer-engine-packet.json",
          "evidence": "answer-engine packet still carries stagedBatchShipReadiness and preferred data route coverage"
        },
        {
          "id": "corrections-log-smoke",
          "route": "/data/corrections-log.json",
          "evidence": "corrections log includes the MY-2669 deploy-queue readiness receipt"
        },
        {
          "id": "lighthouse-regression-gate",
          "route": "/",
          "evidence": "Lighthouse 100s are not regressed after the David-approved production deploy"
        }
      ],
      "productionReceiptTemplate": {
        "id": "my-2669-post-approval-production-receipt-template",
        "status": "template-only-until-David-approved-deploy",
        "command": "npm run verify:production",
        "checkedAtFormat": "ISO-8601 UTC timestamp from the post-deploy verification run",
        "requiredOperatorNote": "Name the David approval receipt, production deploy output, live route checks, data marker checks, Lighthouse result, and rollback decision.",
        "liveRouteChecks": [
          {
            "order": 1,
            "id": "canonical-homepage",
            "canonicalUrl": "https://leonidaledger.com/",
            "requiredHttpStatus": 200,
            "requiredVisibleMarkers": [
              "Premiere countdowns are prompts, not GTA 6 proof",
              "Deepfake trailers are prompts, not GTA 6 proof",
              "Mirrored streams are prompts, not GTA 6 proof",
              "Cropped screenshots are prompts, not GTA 6 proof",
              "Comment screenshots are prompts, not GTA 6 proof"
            ],
            "requiredDataRoutes": [
              "/data/homepage-fake-premiere-countdown-provenance-boundary-checks.json",
              "/data/homepage-deepfake-trailer-provenance-boundary-checks.json",
              "/data/homepage-livestream-mirror-provenance-boundary-checks.json",
              "/data/homepage-cropped-screenshot-provenance-boundary-checks.json",
              "/data/homepage-comment-screenshot-provenance-boundary-checks.json"
            ],
            "rejects": [
              "local dist screenshot",
              "preview URL",
              "cached homepage",
              "missing staged marker"
            ]
          },
          {
            "order": 2,
            "id": "readiness-json",
            "canonicalUrl": "https://leonidaledger.com/data/staged-batch-ship-readiness.json",
            "requiredHttpStatus": 200,
            "requiredJsonIds": [
              "my-2669-assigned-batch",
              "offline-gate-evidence",
              "external-action-boundary"
            ],
            "requiredState": "deploy-queued with liveProofStatus not-claimed until the separate receipt is attached",
            "rejects": [
              "local JSON file",
              "missing five-item manifest",
              "missing seven-gate evidence"
            ]
          },
          {
            "order": 3,
            "id": "answer-engine-packet",
            "canonicalUrl": "https://leonidaledger.com/data/answer-engine-packet.json",
            "requiredHttpStatus": 200,
            "requiredJsonPath": "stagedBatchShipReadiness.receipts",
            "requiredState": "three receipts carry the same approval boundary and receipt template",
            "rejects": [
              "packet without stagedBatchShipReadiness",
              "packet without preferred data route"
            ]
          },
          {
            "order": 4,
            "id": "corrections-log",
            "canonicalUrl": "https://leonidaledger.com/data/corrections-log.json",
            "requiredHttpStatus": 200,
            "requiredCorrectionIds": [
              "my-2669-post-approval-receipt-template-2026-06-20",
              "my-2669-approved-ship-plan-validation-2026-06-20",
              "my-2669-staged-batch-deploy-queue-readiness-2026-06-19"
            ],
            "requiredState": "corrections log records the local-safe handoff and receipt-template changes",
            "rejects": [
              "production claim without correction trail",
              "missing MY-2669 handoff entries"
            ]
          }
        ],
        "lighthouseGate": {
          "route": "https://leonidaledger.com/",
          "requiredResult": "100s not regressed from the approved staged batch gate",
          "evidenceField": "lighthouseScores",
          "rejects": [
            "missing Lighthouse output",
            "local-only Lighthouse result used as production proof"
          ]
        },
        "rollbackDecision": {
          "requiredIfAnyCheckFails": true,
          "defaultAction": "Keep MY-2669 deploy-queued, do not claim production-live proof, and attach failing route/check evidence to the next local handoff."
        }
      },
      "postApprovalVerificationReceipt": {
        "requiredStatus": "production-verified-after-David-approved-deploy",
        "requiredCommand": "npm run verify:production",
        "requiredLiveRoutes": [
          "/",
          "/data/staged-batch-ship-readiness.json",
          "/data/answer-engine-packet.json",
          "/data/corrections-log.json"
        ],
        "requiredEvidenceFields": [
          "canonicalUrl",
          "httpStatus",
          "visibleMarker",
          "dataMarker",
          "lighthouseScores",
          "checkedAt"
        ],
        "forbiddenEvidence": [
          "local dist file",
          "preview-only URL",
          "cached screenshot",
          "unapproved deploy output",
          "network smoke before approval"
        ],
        "rollbackIfMissing": "Keep MY-2669 in deploy-queued state, do not claim live proof, and attach the failed live route/evidence field to the next local handoff."
      }
    },
    "safeLocalAction": "Record that deployment, git movement, credentials, newsletter/social sends, and account mutations are intentionally outside this run.",
    "requiredLocalGate": "npm run build && npm run validate",
    "localProof": [
      "external actions are enumerated as blocked",
      "approval boundary is explicit",
      "David-controlled ship step remains separate"
    ],
    "notProofOf": [
      "production deploy",
      "wrangler deploy",
      "DNS/account change",
      "newsletter send",
      "social post",
      "purchase or paid service action"
    ],
    "handoffChecklist": [
      "Leave external actions blocked in local receipt",
      "Require explicit approval before any live movement",
      "Create a separate production verification receipt after shipping"
    ],
    "blockedActions": [
      "production deploy",
      "wrangler deploy",
      "git commit or push",
      "credential-backed checks",
      "social/newsletter send",
      "DNS or account changes"
    ],
    "approvalBoundary": "Any movement from deploy-queued to live requires David approval and a separate production verification receipt."
  }
]
