{"record":{"id":"d869a179e13032ad","repo":"BigPizzaV3/CodexPlusPlus","slug":"dream-skin-runtime","errorCode":null,"errorMessage":"{}","messagePattern":"\\{\\}","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/codex-plus-core/src/dream_skin_runtime.rs","lineNumber":293,"sourceCode":"        live_applied,\n        checks,\n    }\n}\n\npub async fn apply_dream_skin_live(\n    debug_port: u16,\n    helper_port: u16,\n) -> anyhow::Result<DreamSkinRuntimeStatus> {\n    let settings = SettingsStore::default().load()?;\n    if !settings.enhancements_enabled || !settings.codex_app_dream_skin_enabled {\n        bail!(\"Dream Skin is not enabled\");\n    }\n    if settings.codex_app_dream_skin_paused {\n        bail!(\"Dream Skin is paused\");\n    }\n    let identity = platform_identity_check(&settings.codex_app_path);\n    if identity.level == DreamSkinCheckLevel::Fail {\n        bail!(\"{}\", identity.message);\n    }\n    let target = primary_target(debug_port).await?;\n    let websocket = target\n        .web_socket_debugger_url\n        .as_deref()\n        .context(\"Codex renderer has no WebSocket URL\")?;\n    let probe = crate::assets::dream_skin_live_update_probe_script();\n    let live_probe = crate::bridge::evaluate_script(websocket, &probe)\n        .await\n        .ok()\n        .and_then(|response| {\n            response\n                .pointer(\"/result/result/value\")\n                .and_then(Value::as_str)\n                .map(str::to_string)\n        });\n    let live_signatures = live_probe.as_deref().and_then(|value| {\n        serde_json::from_str::<Value>(value).ok().map(|parsed| {","sourceCodeStart":275,"sourceCodeEnd":311,"githubUrl":"https://github.com/BigPizzaV3/CodexPlusPlus/blob/b1ed92e5e4a2d74095d4b8db5af43cef7acba9c6/crates/codex-plus-core/src/dream_skin_runtime.rs#L275-L311","documentation":"After the enabled/paused gates, apply_dream_skin_live runs platform_identity_check on the configured codex_app_path. If the check level is DreamSkinCheckLevel::Fail, the library bails with the identity check's own message (bail!(\"{}\", identity.message)). The error text is therefore dynamic and describes why the target app failed platform/identity verification (wrong path, not the expected app binary, unsupported platform, etc.).","triggerScenarios":"Calling apply_dream_skin_live when platform_identity_check(&settings.codex_app_path) returns level == DreamSkinCheckLevel::Fail — e.g. codex_app_path points to a missing, renamed, or non-Codex binary, or the platform is unsupported.","commonSituations":"Codex app updated/moved so the saved path no longer matches; user pointed codex_app_path at the wrong executable; running on an OS/arch the identity check rejects; version change altering app identity signatures.","solutions":["Read the actual identity.message in the error output — it names the exact failure reason.","Verify settings.codex_app_path points to the real, current Codex app executable.","Re-select/refresh the app path in the manager so the identity check passes.","Confirm your platform/OS build is supported by the Dream Skin runtime.","Re-run apply_dream_skin_live after fixing the path/platform issue."],"exampleFix":"// before: stale path\n{\"codex_app_path\": \"/Applications/Codex-old.app/Contents/MacOS/Codex\"}\n// after: current app path\n{\"codex_app_path\": \"/Applications/Codex.app/Contents/MacOS/Codex\"}","handlingStrategy":"try-catch","validationCode":"let settings = SettingsStore::default().load()?;\nlet identity = platform_identity_check(&settings.codex_app_path);\nif identity.level == DreamSkinCheckLevel::Fail {\n    anyhow::bail!(\"precheck failed: {}\", identity.message);\n}","typeGuard":"fn identity_ok(level: &DreamSkinCheckLevel) -> bool {\n    !matches!(level, DreamSkinCheckLevel::Fail)\n}","tryCatchPattern":"match apply_dream_skin_live(port, helper).await {\n    Err(e) => eprintln!(\"identity/live-apply failed: {e}\") /* message includes identity.message */,\n    ok => ok,\n}","preventionTips":["Run platform_identity_check before live apply to get the precise failure message.","Re-detect the Codex app path after every app update.","Verify the codex_app_path exists and is the expected binary before configuring."],"tags":["dream-skin","platform-check","identity"],"backgroundTag":"unsupported-platform","analyzedSha":"b1ed92e5e4a2d74095d4b8db5af43cef7acba9c6","analyzedAt":"2026-09-19T23:35:21.129Z","contentChangedAt":"2026-09-19T23:35:21.129Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}