{"record":{"id":"52749c59168e2ea5","repo":"pbakaus/impeccable","slug":"impeccable-live-resolved-app-root-does-not-exist","errorCode":null,"errorMessage":"[impeccable live] resolved app root does not exist: {} (stale roots manifest? re-run the live boot, or pass --target <path>)\n","messagePattern":"\\[impeccable live\\] resolved app root does not exist: (.+?) \\(stale roots manifest\\? re-run the live boot, or pass --target <path>\\)\n","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/live/src/roots.rs","lineNumber":503,"sourceCode":"/// the process must exit with that code (the message is already on stderr);\n/// `Ok(None)` is the selection-ambiguity case (stay put).\npub fn enter_live_root(args: &mut Vec<String>, io: &mut Io) -> Result<Option<RootsManifest>, i32> {\n    let target = match consume_target_arg(args) {\n        Ok(t) => t,\n        Err(msg) => {\n            io.err(&format!(\"[impeccable live] {}\\n\", msg));\n            return Err(1);\n        }\n    };\n    let cwd = io.cwd.to_string_lossy().into_owned();\n    let resolved = resolve_live_roots(&cwd, target.as_deref(), io);\n    let Some(manifest) = resolved.manifest else {\n        return Ok(None);\n    };\n    let app_root = manifest.app_root.clone();\n    if jsp::resolve(&cwd, &[]) != jsp::resolve(&app_root, &[]) {\n        if !is_dir(&app_root) {\n            io.err(&format!(\n                \"[impeccable live] resolved app root does not exist: {} (stale roots manifest? re-run the live boot, or pass --target <path>)\\n\",\n                app_root\n            ));\n            return Err(1);\n        }\n        io.cwd = std::path::PathBuf::from(&app_root);\n    }\n    Ok(Some(manifest))\n}\n","sourceCodeStart":485,"sourceCodeEnd":513,"githubUrl":"https://github.com/pbakaus/impeccable/blob/2bc2879276c1f321a53c4ca99d3371e411329b52/crates/live/src/roots.rs#L485-L513","documentation":"After resolving the live roots manifest, `enter_live_root` checks that the resolved app_root directory actually exists before switching the process cwd into it. When the manifest points at a directory that is gone, it prints this message and exits 1 — the manifest is stale, likely because the app directory was moved, renamed, or deleted after the previous live boot.","triggerScenarios":"Running `impeccable live` when a previously written roots manifest references an app_root path that no longer is a directory — directory renamed/moved/deleted, or running from a different machine/checkout that reused the manifest.","commonSituations":"Renaming a project folder between live sessions; switching git branches that moved the app; deleting a sub-app that an old manifest still references; a CI/copy of the repo carrying a manifest with absolute paths from another location.","solutions":["Re-run the live boot (`impeccable live`) to regenerate the roots manifest.","Pass an explicit existing path: `impeccable live --target ./correct/app/path`.","Delete the stale roots manifest file (in the project where live stored it) and boot live again.","Verify the app root exists: `ls <app_root>` — if not, fix or move the project back to that path."],"exampleFix":"// before (stale manifest path)\nimpeccable live   # resolves app_root ./old-frontend (deleted)\n// after\nimpeccable live --target ./frontend\n","handlingStrategy":"validation","validationCode":"[ -d ./my-app ] && impeccable live --target ./my-app || echo 'app root missing - re-run live boot from the project'","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Re-run the live boot after moving or renaming project directories.","Pass an explicit --target instead of relying on a possibly stale manifest.","Delete the roots manifest when project layout changes.","Avoid reusing manifests across machines or relocated checkouts."],"tags":["stale-state","live-mode","directory","manifest"],"backgroundTag":"directory-not-found","analyzedSha":"2bc2879276c1f321a53c4ca99d3371e411329b52","analyzedAt":"2026-09-08T04:51:14.109Z","contentChangedAt":"2026-09-08T04:51:14.109Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}