{"exportedAt":"2026-06-05T20:50:47.636Z","snapshot":{"timestamp":"2026-06-05T20:50:47.637Z","checkedAt":"2026-06-05T20:50:47.637Z","appVersion":"0.1.0","runtime":"production","productionReady":false,"demoReady":true,"persistenceMode":"db","missingEnv":["APP_URL or NEXT_PUBLIC_APP_URL","GITHUB_CLIENT_ID","GITHUB_CLIENT_SECRET","GITHUB_OAUTH_REDIRECT_URI","GITHUB_TOKEN_ENCRYPTION_KEY"],"missingTables":[],"writeReadProof":{"status":"dry_run","mutationRequired":true,"endpoint":"/api/glasses/db/persistence-proof","note":"Read-only DB proof completed without writing records. POST /api/glasses/db/persistence-proof with mutate=true when an approved write/read proof is needed."},"runtimeReadiness":{"productionSafe":false,"safeToDemo":true,"safeForProduction":false,"verdict":"ready_for_demo"},"proofReadiness":{"overallScore":88,"checks":[{"id":"app-registry-10","label":"App registry includes the 10 canonical apps","passed":true,"severity":"blocker","status":"pass","detail":"11 registry entries available, including the canonical 10-app ecosystem."},{"id":"github-oauth-config","label":"GitHub OAuth config present or optional","passed":false,"severity":"warning","status":"warn","detail":"GitHub OAuth may be optional for registry-only proof runs."},{"id":"db-persistence","label":"DB persistence configured","passed":true,"severity":"blocker","status":"pass","detail":"Supabase/Postgres database URL configured."},{"id":"live-session-persistence","label":"Live session persistence configured","passed":true,"severity":"blocker","status":"pass","detail":"Live sessions can use DB."},{"id":"embeddings-known","label":"Embeddings status known","passed":true,"severity":"info","status":"pass","detail":"Embeddings disabled; keyword fallback remains available."},{"id":"phone-signing-secret","label":"Phone bridge signing secret configured","passed":true,"severity":"warning","status":"pass","detail":"Production should configure GLASSES_BRIDGE_SIGNING_SECRET."},{"id":"device-token-auth","label":"Device token auth working","passed":true,"severity":"blocker","status":"pass","detail":"Device token auth helpers and tests are in place."},{"id":"browser-hud","label":"Browser HUD available","passed":true,"severity":"blocker","status":"pass","detail":"Browser HUD adapter is the guaranteed fallback."},{"id":"phone-bridge-route","label":"Phone bridge route available","passed":true,"severity":"warning","status":"pass","detail":"/phone-bridge is built as a PWA/native-ready runtime."},{"id":"even-g2-not-configured","label":"Even G2 honestly not_configured","passed":true,"severity":"blocker","status":"pass","detail":"Even G2 status: not_configured."},{"id":"capacitor-prepared","label":"Capacitor prepared but native not deployed","passed":true,"severity":"info","status":"pass","detail":"Capacitor config exists; native app is not deployed."},{"id":"status-secrets-safe","label":"No secret values exposed in status APIs","passed":true,"severity":"blocker","status":"pass","detail":"Status APIs return booleans and modes, not raw secret values."},{"id":"supabase-persistence-required","label":"Supabase persistence required","passed":true,"severity":"blocker","status":"pass","detail":"GitHub knowledge, live sessions, and phone bridge storage require Supabase/Postgres persistence."},{"id":"db-migrations-expected","label":"DB migrations expected","passed":true,"severity":"warning","status":"pass","detail":"Migration SQL files exist; applied state requires manual verification because migration tracking is not wired."},{"id":"github-token-encryption","label":"GitHub token encryption configured","passed":false,"severity":"warning","status":"warn","detail":"GITHUB_TOKEN_ENCRYPTION_KEY is required before production GitHub OAuth token storage."},{"id":"phone-bridge-session-storage","label":"Phone bridge session token storage configured","passed":true,"severity":"blocker","status":"pass","detail":"Phone bridge session token storage is DB-backed."},{"id":"proof-mutation-disabled","label":"Proof mutation disabled by default","passed":true,"severity":"warning","status":"pass","detail":"GLASSES_PROOF_MUTATION_ENABLED should stay disabled except for controlled proof runs."}],"blockers":[],"warnings":[{"id":"github-oauth-config","label":"GitHub OAuth config present or optional","passed":false,"severity":"warning","status":"warn","detail":"GitHub OAuth may be optional for registry-only proof runs."},{"id":"github-token-encryption","label":"GitHub token encryption configured","passed":false,"severity":"warning","status":"warn","detail":"GITHUB_TOKEN_ENCRYPTION_KEY is required before production GitHub OAuth token storage."}],"nextRecommendedAction":"GitHub OAuth may be optional for registry-only proof runs."},"productionEnv":{"productionSafe":false,"configuredKeys":["NODE_ENV","DATABASE_URL or DIRECT_DATABASE_URL","GLASSES_BRIDGE_SIGNING_SECRET","OPENAI_API_KEY"],"missingKeys":["APP_URL or NEXT_PUBLIC_APP_URL","GITHUB_CLIENT_ID","GITHUB_CLIENT_SECRET","GITHUB_OAUTH_REDIRECT_URI","GITHUB_TOKEN_ENCRYPTION_KEY","GITHUB_KNOWLEDGE_EMBEDDINGS_ENABLED","GITHUB_KNOWLEDGE_EMBEDDING_MODEL","GITHUB_KNOWLEDGE_EMBEDDING_DIMENSIONS","GOOGLE_MAPS_API_KEY","GLASSES_BRIDGE_WS_URL","NEXT_PUBLIC_GLASSES_BRIDGE_WS_URL","GLASSES_PROOF_MUTATION_ENABLED"],"warnings":["APP_URL is missing.","NEXT_PUBLIC_APP_URL is missing.","Embeddings are disabled; retrieval will use registry and keyword fallback.","Google Maps is not configured; Maps Context will show setup guidance instead of live places/routes.","WebSocket bridge is not configured; phone bridge delivery remains polling/stored-pending."],"blockers":["APP_URL or NEXT_PUBLIC_APP_URL is required in production.","GITHUB_CLIENT_ID is required in production.","GITHUB_CLIENT_SECRET is required in production.","GITHUB_OAUTH_REDIRECT_URI is required in production.","GITHUB_TOKEN_ENCRYPTION_KEY is required in production."]},"persistenceModes":{"githubKnowledge":{"persistenceMode":"db","productionAllowed":true,"warning":null},"liveSessions":{"persistenceMode":"db","productionAllowed":true,"warning":null},"phoneBridge":{"persistenceMode":"db","productionAllowed":true,"warning":null}},"migrationReadiness":{"trackingAvailable":false,"status":"manual_verification_required","items":[{"id":"github-knowledge","file":"005_github_knowledge.sql","required":true,"exists":true,"status":"manual_verification_required","note":"SQL file exists, but this project has no migration tracking table check here. Manual verification required."},{"id":"github-knowledge-embeddings","file":"006_github_knowledge_embeddings.sql","required":false,"exists":true,"status":"optional","note":"SQL file exists, but this project has no migration tracking table check here. Manual verification required."},{"id":"live-sessions","file":"007_glasses_live_sessions.sql","required":true,"exists":true,"status":"manual_verification_required","note":"SQL file exists, but this project has no migration tracking table check here. Manual verification required."},{"id":"phone-bridge","file":"008_phone_bridge.sql","required":true,"exists":true,"status":"manual_verification_required","note":"SQL file exists, but this project has no migration tracking table check here. Manual verification required."},{"id":"copilot-learning","file":"009_copilot_learning.sql","required":true,"exists":true,"status":"manual_verification_required","note":"SQL file exists, but this project has no migration tracking table check here. Manual verification required."},{"id":"github-knowledge-production-upgrade","file":"010_github_knowledge_production_upgrade.sql","required":true,"exists":true,"status":"manual_verification_required","note":"SQL file exists, but this project has no migration tracking table check here. Manual verification required."}],"summary":"Migration SQL files exist; applied state requires manual verification because migration tracking is not wired."},"dbConnectivityProof":{"checkedAt":"2026-06-05T20:50:47.637Z","databaseConfigured":true,"demoReady":true,"persistenceMode":"db","connected":true,"selectOneOk":true,"dbFailureCategory":null,"requiredTablesPresent":true,"requiredTables":["github_connections","github_repositories","github_indexed_files","github_knowledge_chunks","glasses_transcript_sessions","glasses_transcript_segments","glasses_live_cues","glasses_bridge_pairing_sessions","glasses_bridge_devices","glasses_bridge_messages","user_learning_profiles","user_memory_cards","copilot_feedback_events","copilot_learning_summaries","interview_copilot_simulator_states","glasses_app_state_items"],"missingTables":[],"optionalTablesPresent":["github_knowledge_chunks.embedding"],"embeddingSupport":{"pgvectorExtensionAvailable":true,"embeddingColumnPresent":true},"migrationTrackingAvailable":false,"manualVerificationRequired":true,"manualVerificationAcknowledged":false,"productionReady":false,"writeReadProof":{"status":"dry_run","mutationRequired":true,"endpoint":"/api/glasses/db/persistence-proof","note":"Read-only DB proof completed without writing records. POST /api/glasses/db/persistence-proof with mutate=true when an approved write/read proof is needed."},"missingEnv":[],"blockers":[],"warnings":["Migration tracking is unavailable; set GLASSES_MIGRATIONS_MANUALLY_VERIFIED=true only after manually verifying applied migrations."]},"persistenceWriteReadProof":{"status":"not_run","mutationRequired":true,"note":"Run POST /api/glasses/db/persistence-proof with explicit mutation enabled to prove write/read persistence."},"bridgeReadiness":{"signingConfigured":true,"websocketConfigured":false,"deliveryMode":"polling"},"phoneCompanionReadiness":{"pwaReady":true,"nativeRuntimeDetected":false,"nativeDeploymentStatus":"not_started"},"deviceReadiness":{"browserHudAvailable":true,"mockDeviceAvailable":true,"evenG2Status":"not_configured","externalHardwareConnected":false},"blockers":["APP_URL or NEXT_PUBLIC_APP_URL is required in production.","GITHUB_CLIENT_ID is required in production.","GITHUB_CLIENT_SECRET is required in production.","GITHUB_OAUTH_REDIRECT_URI is required in production.","GITHUB_TOKEN_ENCRYPTION_KEY is required in production.","Migration application is not tracked or manually acknowledged.","Migration application requires tracking or GLASSES_MIGRATIONS_MANUALLY_VERIFIED=true."],"warnings":["APP_URL is missing.","NEXT_PUBLIC_APP_URL is missing.","Embeddings are disabled; retrieval will use registry and keyword fallback.","Google Maps is not configured; Maps Context will show setup guidance instead of live places/routes.","WebSocket bridge is not configured; phone bridge delivery remains polling/stored-pending.","GitHub OAuth may be optional for registry-only proof runs.","GITHUB_TOKEN_ENCRYPTION_KEY is required before production GitHub OAuth token storage.","Migration SQL files exist; applied state requires manual verification because migration tracking is not wired.","Embeddings are disabled or not configured; keyword fallback is active.","Migration tracking is unavailable; set GLASSES_MIGRATIONS_MANUALLY_VERIFIED=true only after manually verifying applied migrations."],"routeHealthSummary":[{"path":"/api/glasses/runtime/readiness","expected":"json","requiredFor":"production"},{"path":"/api/glasses/db/proof","expected":"json","requiredFor":"production"},{"path":"/api/glasses/db/persistence-proof","expected":"json","requiredFor":"production"},{"path":"/api/glasses/live/proof","expected":"json","requiredFor":"demo"},{"path":"/api/glasses/proof/readiness","expected":"json","requiredFor":"demo"},{"path":"/api/glasses/github/status","expected":"json","requiredFor":"diagnostic"},{"path":"/api/glasses/github/embeddings/status","expected":"json","requiredFor":"diagnostic"},{"path":"/api/glasses/bridge/runtime/status","expected":"json","requiredFor":"demo"},{"path":"/api/glasses/device/status","expected":"json","requiredFor":"demo"},{"path":"/api/glasses/device/bridge/status","expected":"json","requiredFor":"diagnostic"},{"path":"/api/glasses/live/stream","expected":"sse","requiredFor":"diagnostic"},{"path":"/dashboard/glasses-copilot/proof","expected":"html","requiredFor":"demo"},{"path":"/dashboard/glasses-copilot/operations","expected":"html","requiredFor":"demo"},{"path":"/phone-bridge","expected":"html","requiredFor":"demo"}],"notes":["No raw environment values or secrets are included.","Migration application is not faked; manual verification remains required until DB migration tracking is wired.","Even G2 is not connected; Browser HUD and phone PWA remain the working display targets."]},"notes":["This export is sanitized and contains no raw secrets.","Route health is reported by the smoke script when run against a deployed BASE_URL."]}