pbakaus/impeccable · error

[impeccable live] resolved app root does not exist: {} (stal

Error message

[impeccable live] resolved app root does not exist: {} (stale roots manifest? re-run the live boot, or pass --target <path>)

What it means

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.

Source

Thrown at crates/live/src/roots.rs:503

/// the process must exit with that code (the message is already on stderr);
/// `Ok(None)` is the selection-ambiguity case (stay put).
pub fn enter_live_root(args: &mut Vec<String>, io: &mut Io) -> Result<Option<RootsManifest>, i32> {
    let target = match consume_target_arg(args) {
        Ok(t) => t,
        Err(msg) => {
            io.err(&format!("[impeccable live] {}\n", msg));
            return Err(1);
        }
    };
    let cwd = io.cwd.to_string_lossy().into_owned();
    let resolved = resolve_live_roots(&cwd, target.as_deref(), io);
    let Some(manifest) = resolved.manifest else {
        return Ok(None);
    };
    let app_root = manifest.app_root.clone();
    if jsp::resolve(&cwd, &[]) != jsp::resolve(&app_root, &[]) {
        if !is_dir(&app_root) {
            io.err(&format!(
                "[impeccable live] resolved app root does not exist: {} (stale roots manifest? re-run the live boot, or pass --target <path>)\n",
                app_root
            ));
            return Err(1);
        }
        io.cwd = std::path::PathBuf::from(&app_root);
    }
    Ok(Some(manifest))
}

View on GitHub (pinned to 2bc2879276)

Solutions

  1. Re-run the live boot (`impeccable live`) to regenerate the roots manifest.
  2. Pass an explicit existing path: `impeccable live --target ./correct/app/path`.
  3. Delete the stale roots manifest file (in the project where live stored it) and boot live again.
  4. Verify the app root exists: `ls <app_root>` — if not, fix or move the project back to that path.

Example fix

// before (stale manifest path)
impeccable live   # resolves app_root ./old-frontend (deleted)
// after
impeccable live --target ./frontend
Defensive patterns

Strategy: validation

Validate before calling

[ -d ./my-app ] && impeccable live --target ./my-app || echo 'app root missing - re-run live boot from the project'

Prevention

When it happens

Trigger: 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.

Common situations: 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.

Related errors


AI-assisted analysis of pbakaus/impeccable@2bc2879276 (2026-09-08). Data as JSON: /api/errors/52749c59168e2ea5. Report an issue: GitHub.