{
  "ok": true,
  "app": "castertwitteragent",
  "name": "Caster Twitter Agent",
  "status": "blocked_external",
  "mode": "live_vercel_static_product_castertwitteragent_with_runtime_blocker_gates",
  "staticProductExport": true,
  "productionReady": false,
  "productionDataMutationAllowed": false,
  "publicAnnouncementReady": false,
  "writeAccepted": false,
  "xReadAccepted": false,
  "xPostAccepted": false,
  "mentionScanAccepted": false,
  "replyAccepted": false,
  "rootPostAccepted": false,
  "socialClaimGuardAccepted": false,
  "xaiDraftAccepted": false,
  "casterpadLaunchAccepted": false,
  "oauthAccepted": false,
  "postgresAccepted": false,
  "ownedIndexAccepted": false,
  "rateLimitMutationAccepted": false,
  "antiReplayWriteAccepted": false,
  "eventLogMutationAccepted": false,
  "frontendReuseDecision": {
    "canonicalRoute": "/castertwitteragent",
    "sourceDashboardRoute": "/admin/social-agents",
    "decision": "thin_product_route_over_existing_twitter_social_agent_runtime_contract",
    "generatedStatusShellUsedAsPublicFrontend": false
  },
  "backendReuseDecision": {
    "canonicalApiRoute": "/api/castertwitteragent",
    "realBackendRoutes": [
      "/api/twitter-social-agent",
      "src/lib/twitter-social-agent.ts",
      "scripts/casterchain-twitter-agent-credential-intake.mjs",
      "scripts/casterchain-twitter-agent-oauth2-user-auth.mjs",
      "scripts/casterchain-twitter-agent-launch-readiness.mjs",
      "scripts/casterchain-twitter-agent-live-dry-run-evidence.mjs",
      "scripts/casterchain-twitter-agent-live-evidence.mjs"
    ],
    "decision": "reuse_existing_twitter_social_agent_backend_without_live_reads_posts_or_queue_mutation"
  },
  "routes": {
    "canonical": "/castertwitteragent",
    "miniapp": "/miniapps/castertwitteragent",
    "sourceRuntime": "/api/twitter-social-agent",
    "api": "/api/castertwitteragent",
    "status": "/api/castertwitteragent/status"
  },
  "surfaces": [
    {
      "surface": "overview",
      "route": "/api/castertwitteragent/overview",
      "status": "blocked_external",
      "writeAccepted": false
    },
    {
      "surface": "dry-run",
      "route": "/api/castertwitteragent/dry-run",
      "status": "blocked_external",
      "writeAccepted": false
    },
    {
      "surface": "tick",
      "route": "/api/castertwitteragent/tick",
      "status": "blocked_external",
      "writeAccepted": false
    },
    {
      "surface": "mentions",
      "route": "/api/castertwitteragent/mentions",
      "status": "blocked_external",
      "writeAccepted": false
    },
    {
      "surface": "replies",
      "route": "/api/castertwitteragent/replies",
      "status": "blocked_external",
      "writeAccepted": false
    },
    {
      "surface": "root-posts",
      "route": "/api/castertwitteragent/root-posts",
      "status": "blocked_external",
      "writeAccepted": false
    },
    {
      "surface": "claim-guard",
      "route": "/api/castertwitteragent/claim-guard",
      "status": "blocked_external",
      "writeAccepted": false
    },
    {
      "surface": "copy-library",
      "route": "/api/castertwitteragent/copy-library",
      "status": "blocked_external",
      "writeAccepted": false
    },
    {
      "surface": "xai-drafts",
      "route": "/api/castertwitteragent/xai-drafts",
      "status": "blocked_external",
      "writeAccepted": false
    },
    {
      "surface": "casterpad-launch",
      "route": "/api/castertwitteragent/casterpad-launch",
      "status": "blocked_external",
      "writeAccepted": false
    },
    {
      "surface": "credential-intake",
      "route": "/api/castertwitteragent/credential-intake",
      "status": "blocked_external",
      "writeAccepted": false
    },
    {
      "surface": "oauth2",
      "route": "/api/castertwitteragent/oauth2",
      "status": "blocked_external",
      "writeAccepted": false
    },
    {
      "surface": "read-credentials",
      "route": "/api/castertwitteragent/read-credentials",
      "status": "blocked_external",
      "writeAccepted": false
    },
    {
      "surface": "post-credentials",
      "route": "/api/castertwitteragent/post-credentials",
      "status": "blocked_external",
      "writeAccepted": false
    },
    {
      "surface": "postgres",
      "route": "/api/castertwitteragent/postgres",
      "status": "blocked_external",
      "writeAccepted": false
    },
    {
      "surface": "owned-index-cache",
      "route": "/api/castertwitteragent/owned-index-cache",
      "status": "blocked_external",
      "writeAccepted": false
    },
    {
      "surface": "rate-limits",
      "route": "/api/castertwitteragent/rate-limits",
      "status": "blocked_external",
      "writeAccepted": false
    },
    {
      "surface": "anti-replay",
      "route": "/api/castertwitteragent/anti-replay",
      "status": "blocked_external",
      "writeAccepted": false
    },
    {
      "surface": "api",
      "route": "/api/castertwitteragent/api",
      "status": "blocked_external",
      "writeAccepted": false
    },
    {
      "surface": "qstorage",
      "route": "/api/castertwitteragent/qstorage",
      "status": "blocked_external",
      "writeAccepted": false
    },
    {
      "surface": "event-log",
      "route": "/api/castertwitteragent/event-log",
      "status": "blocked_external",
      "writeAccepted": false
    },
    {
      "surface": "rollback",
      "route": "/api/castertwitteragent/rollback",
      "status": "blocked_external",
      "writeAccepted": false
    }
  ],
  "blockers": [
    {
      "gate": "farcaster_account_association",
      "status": "blocked_external"
    },
    {
      "gate": "castertwitteragent_full_next_runtime",
      "status": "blocked_external"
    },
    {
      "gate": "castertwitteragent_internal_api_auth_runtime",
      "status": "blocked_external"
    },
    {
      "gate": "castertwitteragent_x_read_credentials_runtime",
      "status": "blocked_external"
    },
    {
      "gate": "castertwitteragent_x_post_credentials_runtime",
      "status": "blocked_external"
    },
    {
      "gate": "castertwitteragent_live_mode_runtime",
      "status": "blocked_external"
    },
    {
      "gate": "castertwitteragent_social_claim_guard_runtime",
      "status": "blocked_external"
    },
    {
      "gate": "castertwitteragent_postgres_runtime",
      "status": "blocked_external"
    },
    {
      "gate": "castertwitteragent_owned_index_runtime",
      "status": "blocked_external"
    },
    {
      "gate": "castertwitteragent_mention_scan_runtime",
      "status": "blocked_external"
    },
    {
      "gate": "castertwitteragent_reply_runtime",
      "status": "blocked_external"
    },
    {
      "gate": "castertwitteragent_root_post_runtime",
      "status": "blocked_external"
    },
    {
      "gate": "castertwitteragent_xai_draft_runtime",
      "status": "blocked_external"
    },
    {
      "gate": "castertwitteragent_casterpad_launch_runtime",
      "status": "blocked_external"
    },
    {
      "gate": "castertwitteragent_oauth_runtime",
      "status": "blocked_external"
    },
    {
      "gate": "castertwitteragent_rate_limit_runtime",
      "status": "blocked_external"
    },
    {
      "gate": "castertwitteragent_anti_replay_runtime",
      "status": "blocked_external"
    },
    {
      "gate": "castertwitteragent_qstorage_runtime",
      "status": "blocked_external"
    },
    {
      "gate": "castertwitteragent_event_log_runtime",
      "status": "blocked_external"
    },
    {
      "gate": "castertwitteragent_rollback_runtime",
      "status": "blocked_external"
    }
  ],
  "requiredLiveInputs": [
    {
      "name": "INTERNAL_API_SECRET or CRON_SECRET",
      "valuePrinted": false
    },
    {
      "name": "TWITTER_SOCIAL_AGENT_ENABLED",
      "valuePrinted": false
    },
    {
      "name": "TWITTER_SOCIAL_AGENT_LIVE_MODE",
      "valuePrinted": false
    },
    {
      "name": "CASTERCHAIN_ALLOW_TWITTER_READS",
      "valuePrinted": false
    },
    {
      "name": "CASTERCHAIN_ALLOW_TWITTER_POSTS",
      "valuePrinted": false
    },
    {
      "name": "Twitter/X read credentials",
      "valuePrinted": false
    },
    {
      "name": "Twitter/X post credentials",
      "valuePrinted": false
    },
    {
      "name": "Twitter OAuth2 user authorization",
      "valuePrinted": false
    },
    {
      "name": "Social-claim guard passed receipt",
      "valuePrinted": false
    },
    {
      "name": "Postgres queue and dedupe runtime",
      "valuePrinted": false
    },
    {
      "name": "Owned index cache lock runtime",
      "valuePrinted": false
    },
    {
      "name": "xAI or OpenAI draft runtime when enabled",
      "valuePrinted": false
    },
    {
      "name": "Casterpad X launch runtime when enabled",
      "valuePrinted": false
    },
    {
      "name": "Rate-limit and anti-replay receipts",
      "valuePrinted": false
    },
    {
      "name": "QSTORAGE_PUBLIC_GATEWAY",
      "valuePrinted": false
    },
    {
      "name": "CASTER_EVENT_LOG_APPEND_URL",
      "valuePrinted": false
    },
    {
      "name": "CASTER_EVENT_LOG_ROLLBACK",
      "valuePrinted": false
    },
    {
      "name": "FARCASTER_ACCOUNT_ASSOCIATION_* for castertwitteragent.vercel.app",
      "valuePrinted": false
    }
  ],
  "route": "/api/castertwitteragent/status",
  "fullNextRuntimeReady": false,
  "internalApiAuthReady": false,
  "xReadCredentialsReady": false,
  "xPostCredentialsReady": false,
  "liveModeReady": false,
  "socialClaimGuardReady": false,
  "postgresRuntimeReady": false,
  "ownedIndexRuntimeReady": false,
  "mentionScanRuntimeReady": false,
  "replyRuntimeReady": false,
  "rootPostRuntimeReady": false,
  "xaiDraftRuntimeReady": false,
  "casterpadLaunchRuntimeReady": false,
  "oauthRuntimeReady": false,
  "rateLimitRuntimeReady": false,
  "antiReplayReady": false,
  "qstorageReady": false,
  "eventLogReady": false,
  "rollbackReady": false,
  "farcasterAccountAssociationReady": false,
  "liveMutationAllowed": false,
  "message": "Caster Twitter Agent is deployed as a standalone static product export and read-only mini app surface, but full Next runtime, internal authorization, X read/post credentials, live mode, social-claim guard, Postgres queue/dedupe, owned index locks, mention scans, replies, root posts, xAI drafts, Casterpad launch replies, OAuth, rate limits, anti-replay, QStorage, event log, rollback, and signed Farcaster accountAssociation remain blocked_external."
}
