{
  "ok": true,
  "contractId": "local.castermessages-static-shell-isolation.v0",
  "status": "blocked_external",
  "mode": "live_vercel_static_castermessages_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": "/castermessages",
    "miniapp": "/miniapps/castermessages",
    "sourceConversation": "/dm/[user]",
    "sourceMessages": "/messages",
    "sourceApi": "/api/messages",
    "api": [
      "/api/castermessages/overview",
      "/api/castermessages/inbox",
      "/api/castermessages/thread",
      "/api/castermessages/compose",
      "/api/castermessages/attachments",
      "/api/castermessages/encryption",
      "/api/castermessages/privacy",
      "/api/castermessages/realtime",
      "/api/castermessages/notifications",
      "/api/castermessages/moderation",
      "/api/castermessages/qstorage",
      "/api/castermessages/event-log",
      "/api/castermessages/rollback"
    ],
    "status": "/api/castermessages/status"
  },
  "metrics": [
    {
      "label": "Inbox",
      "value": "read-only",
      "status": "blocked_external"
    },
    {
      "label": "Threads",
      "value": "blocked",
      "status": "blocked_external"
    },
    {
      "label": "Realtime",
      "value": "no publish",
      "status": "blocked_external"
    },
    {
      "label": "Storage",
      "value": "no writes",
      "status": "blocked_external"
    }
  ],
  "lanes": [
    {
      "id": "inbox",
      "title": "Inbox and threads",
      "summary": "Read-only shell for /messages, /dm/[user], conversation state, and source route wiring.",
      "status": "blocked_external"
    },
    {
      "id": "compose",
      "title": "Compose and attachments",
      "summary": "Message send, attachment upload, media persistence, and delivery receipts stay blocked until strict runtime evidence passes.",
      "status": "blocked_external"
    },
    {
      "id": "privacy",
      "title": "Privacy and encryption",
      "summary": "Shared Reown identity, wallet auth, key custody, consent, and moderation gates are visible as contracts only.",
      "status": "blocked_external"
    },
    {
      "id": "proofs",
      "title": "Realtime, QStorage, event log, and rollback",
      "summary": "Realtime fanout, notifications, QStorage snapshots, append-only event log, and rollback require accepted receipts.",
      "status": "blocked_external"
    }
  ],
  "blockers": [
    "No accepted full Next Caster Messages build/typecheck receipt exists for this standalone fallback.",
    "No accepted shared Reown identity, wallet auth, Farcaster mini app runtime, message store, inbox, thread, compose, attachment, encryption key custody, privacy consent, realtime delivery, notification fanout, moderation, QStorage, event log, or rollback runtime receipt exists.",
    "No signed @casterchain Farcaster accountAssociation exists for castermessages.vercel.app.",
    "No message send, inbox write, thread write, attachment upload, encryption key mutation, notification fanout, realtime publish, moderation mutation, QStorage write, event-log append, rollback, wallet signature, public announcement, or production datastore mutation is allowed from this fallback."
  ]
}
