{
  "ok": true,
  "contractId": "local.castermarketingagent-static-shell-isolation.v0",
  "status": "blocked_external",
  "mode": "live_vercel_static_castermarketingagent_with_runtime_blocker_gates",
  "publicReadinessStatus": "blocked_external",
  "runtimeVisibilityStatus": "passed",
  "localOnly": false,
  "staticFallback": true,
  "writeAccepted": false,
  "liveMutationAllowed": false,
  "productionReady": false,
  "commercialReady": false,
  "acceptedAsProductionEvidence": false,
  "surfaces": {
    "web": "/castermarketingagent",
    "miniapp": "/miniapps/castermarketingagent",
    "source": "/api/farcaster-marketing-agent",
    "api": [
      "/api/castermarketingagent/overview",
      "/api/castermarketingagent/promos",
      "/api/castermarketingagent/channel-preview",
      "/api/castermarketingagent/dry-run",
      "/api/castermarketingagent/tick",
      "/api/castermarketingagent/post-slots",
      "/api/castermarketingagent/casterchain-agent",
      "/api/castermarketingagent/castrend-agent",
      "/api/castermarketingagent/signers",
      "/api/castermarketingagent/hub-submit",
      "/api/castermarketingagent/hypersnap",
      "/api/castermarketingagent/owned-index-lock",
      "/api/castermarketingagent/postgres-idempotency",
      "/api/castermarketingagent/rate-limits",
      "/api/castermarketingagent/queue",
      "/api/castermarketingagent/qstorage",
      "/api/castermarketingagent/event-log",
      "/api/castermarketingagent/rollback",
      "/api/castermarketingagent/miniapp",
      "/api/castermarketingagent/api"
    ],
    "status": "/api/castermarketingagent/status"
  },
  "metrics": [
    {
      "label": "Promos",
      "value": "read-only",
      "status": "blocked_external"
    },
    {
      "label": "Dry run",
      "value": "disabled",
      "status": "blocked_external"
    },
    {
      "label": "Cast publish",
      "value": "disabled",
      "status": "blocked_external"
    },
    {
      "label": "Storage",
      "value": "no writes",
      "status": "blocked_external"
    }
  ],
  "lanes": [
    {
      "id": "promos",
      "title": "Promos and channel preview",
      "summary": "Read-only shell for marketing promo plans, channel preview, post slots, and status visibility. Live processing stays disabled until strict runtime evidence passes.",
      "status": "blocked_external"
    },
    {
      "id": "dry-run",
      "title": "Dry run and tick",
      "summary": "Dry-run and tick surfaces are visible as contracts only; the deployed static fallback cannot call the live agent tick route or mutate locks.",
      "status": "blocked_external"
    },
    {
      "id": "publish",
      "title": "Signers, Hub, and casts",
      "summary": "Casterchain and Castrend signer custody, Farcaster Hub submission, and cast publishing require accepted credentials and deterministic evidence.",
      "status": "blocked_external"
    },
    {
      "id": "proofs",
      "title": "Queue, idempotency, QStorage, event log, and rollback",
      "summary": "Queue dispatch, owned-index locks, Postgres idempotency, QStorage publication, append-only Caster event log, and rollback require accepted evidence.",
      "status": "blocked_external"
    }
  ],
  "blockers": [
    "No accepted full Next Caster Marketing Agent build/typecheck receipt exists for this standalone fallback.",
    "No accepted shared Reown identity, wallet auth, Farcaster mini app runtime, cron, status, promos, channel preview, dry-run, tick, signer, Hub submit, Hypersnap, owned-index lock, Postgres idempotency, queue, rate-limit, QStorage, event log, or rollback runtime receipt exists.",
    "No signed @casterchain Farcaster accountAssociation exists for castermarketingagent.vercel.app.",
    "No marketing tick, promo publish, cast publish, signer use, Hub submit, Hypersnap mutation, owned-index lock mutation, Postgres idempotency write, queue dispatch, QStorage write, event-log append, rollback, wallet signature, public announcement, or production datastore mutation is allowed from this fallback."
  ]
}
