{"record":{"id":"5809ff3d1027d0e6","repo":"astrid-runtime/astrid","slug":"source-path-does-not-exist-source-5809ff","errorCode":null,"errorMessage":"source path does not exist: {source}","messagePattern":"source path does not exist: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/astrid-cli/src/commands/capsule/install_daemon.rs","lineNumber":404,"sourceCode":"                .await?\n        };\n        crate::admin_client::into_result(response)?;\n    }\n    Ok(())\n}\n\nfn load_source_manifest(source: &str) -> anyhow::Result<CapsuleManifest> {\n    let source = source.strip_prefix(\"file://\").unwrap_or(source);\n    let path = Path::new(source);\n    if path.is_dir() {\n        return astrid_capsule::discovery::load_manifest(&path.join(\"Capsule.toml\"))\n            .map_err(Into::into);\n    }\n    if path.is_file() {\n        return astrid_capsule_install::read_archive_manifest(path)\n            .with_context(|| format!(\"read Capsule.toml from {}\", path.display()));\n    }\n    bail!(\"source path does not exist: {source}\")\n}\n\nfn validate_values(\n    manifest: &CapsuleManifest,\n    items: &[String],\n) -> anyhow::Result<Vec<DaemonEnvValue>> {\n    let mut parsed = HashMap::new();\n    for item in items {\n        let (key, value) = item\n            .split_once('=')\n            .ok_or_else(|| anyhow::anyhow!(\"--var must be KEY=VALUE (got {item:?})\"))?;\n        if key.is_empty() || key.contains('\\0') || key.contains(':') {\n            bail!(\"--var has an invalid key (got {key:?})\");\n        }\n        if parsed.insert(key.to_owned(), value.to_owned()).is_some() {\n            bail!(\"--var '{key}' was supplied more than once\");\n        }\n    }","sourceCodeStart":386,"sourceCodeEnd":422,"githubUrl":"https://github.com/astrid-runtime/astrid/blob/affd8760f44190dbdfbec23403f4c4b642c33112/crates/astrid-cli/src/commands/capsule/install_daemon.rs#L386-L422","documentation":"load_source_manifest resolves the --source path: if it's a file it reads the capsule archive manifest, if it's a directory it reads Capsule.toml there, and if the path doesn't exist at all it bails. The install was pointed at a nonexistent source path.","triggerScenarios":"Running capsule install with a --source argument whose path is missing (typo, deleted build output, wrong working directory, or a path that failed to build).","commonSituations":"Pointing at a .wasm/archive that was never built or was cleaned; typos in the path; running from a different directory in CI; stale path after a refactor.","solutions":["Verify the path exists: ls <source> before installing.","Build the capsule first so the archive/Capsule.toml is produced.","Run the command from the capsule project root or pass an absolute path.","Fix typos in the --source flag."],"exampleFix":"// before\nastrid capsule install --source ./target/capsule.wasm\n// after\nls ./target/capsule.wasm  # confirm it exists after `astrid capsule build`\nastrid capsule install --source ./target/debug/capsule.wasm","handlingStrategy":"validation","validationCode":"if !std::path::Path::new(source).exists() { eprintln!(\"source missing: {source}\"); std::process::exit(1); }","typeGuard":null,"tryCatchPattern":"on 'source path does not exist', fail fast in the script before invoking install; do not retry.","preventionTips":["Run `astrid capsule build` before install in CI.","Use absolute paths for --source.","Verify build artifacts weren't cleaned between build and install steps."],"tags":["filesystem","path","cli","not-found"],"backgroundTag":"file-not-found","analyzedSha":"affd8760f44190dbdfbec23403f4c4b642c33112","analyzedAt":"2026-09-09T21:28:12.402Z","contentChangedAt":"2026-09-09T21:28:12.402Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}