{"status":"ok","environment":{"appEnv":"staging","nodeEnv":"production","productionLike":true,"nodeVersion":"26.5.0"},"services":{"app":"healthy","appBaseUrl":"configured","database":"healthy","queue":"database_worker_healthy","firebase":"configured","activeOrganizationSession":"configured","encryption":"configured","webhooks":"configured","prisma":"^7.8.0"},"publicHosts":["app-staging.thelockmanager.com","api-staging.thelockmanager.com"],"runtime":{"nodeVersion":"26.5.0","nodeMajor":26,"supportedProductionNodeVersion":"26.5.0","prismaVersion":"^7.8.0","prismaMajor":7,"productionSupported":true,"message":"Node 26.5.0 is on the repository's maintained-LTS production runtime policy. Use the repository-pinned Node 26.5.0 runtime for local, CI, staging, and production environments."},"readiness":[{"key":"database","ok":true,"message":"DATABASE_URL is required for staging/production."},{"key":"firebase","ok":true,"message":"FIREBASE_PROJECT_ID is required before authenticated production routes are enabled."},{"key":"active-organization-session","ok":true,"message":"ACTIVE_ORGANIZATION_SESSION_SECRET_BASE64 is required before session-backed active-organization switching can run in staging/production."},{"key":"active-organization-session-secret","ok":true,"message":"Active-organization session secret format is checked when configured."},{"key":"encryption","ok":true,"message":"ENCRYPTION_KEY_REF and ENCRYPTION_KEY_BASE64 are required before storing provider credentials or guest secrets."},{"key":"encryption-key-material","ok":true,"message":"Encryption key material format is checked when configured."},{"key":"queue","ok":true,"message":"Staging/production currently support only QUEUE_DRIVER=database because the dedicated database-worker runtime is the only implemented durable queue path."},{"key":"app-base-url","ok":true,"message":"APP_BASE_URL is required so the Cloudflare-routed operator/guest host is explicit in staging/production."},{"key":"app-base-url-https","ok":true,"message":"APP_BASE_URL must use https in staging/production."},{"key":"webhooks","ok":true,"message":"PUBLIC_WEBHOOK_BASE_URL is required before accepting provider webhooks."},{"key":"webhook-https","ok":true,"message":"PUBLIC_WEBHOOK_BASE_URL must use https in staging/production."},{"key":"prototype-routes","ok":true,"message":"Prototype/mock routes must remain disabled in staging/production."},{"key":"guesty-unsigned-webhooks","ok":true,"message":"ALLOW_UNSIGNED_GUESTY_WEBHOOKS must remain false in staging/production because Guesty exposes a webhook signing secret but does not publicly document the delivery signature header, canonical signed bytes, encoding, timestamp/replay contract, or rotation behavior."},{"key":"controller-target-allowlist","ok":true,"message":"Persisted controller-backed Home Assistant and direct-provider execution require PROVIDER_TEST_ALLOWED_HOSTS so saved controller URLs can be revalidated before provider calls."},{"key":"provider-connection-tests","ok":true,"message":"Provider connection tests are disabled by default."},{"key":"public-host-allowlist","ok":true,"message":"ALLOWED_PUBLIC_HOSTS must list every Cloudflare-routed public hostname that may reach this environment."},{"key":"public-host-coverage","ok":true,"message":"All public base URLs are covered by the declared host allowlist."},{"key":"public-host-locality","ok":true,"message":"Public base URLs are not using localhost-style hostnames."},{"key":"database-routes-auth","ok":true,"message":"Database-backed application routes require verified Firebase bearer tokens plus tenant membership records."},{"key":"runtime-support","ok":true,"message":"Node 26.5.0 is on the repository's maintained-LTS production runtime policy. Use the repository-pinned Node 26.5.0 runtime for local, CI, staging, and production environments."},{"key":"database-connectivity","ok":true,"message":"PostgreSQL is reachable and the core application schema is queryable."},{"key":"database-queue-connectivity","ok":true,"message":"Database queue tables are reachable through the Prisma worker boundary."},{"key":"database-worker-heartbeat","ok":true,"message":"Dedicated database worker heartbeat is fresh from staywise-staging-worker-1."}],"timestamp":"2026-07-18T02:43:49.102Z","requestId":"4d33748a-f472-46c2-a5c5-04b9c7672356"}