{"record":{"id":"72135518e2d8510f","repo":"jdx/mise","slug":"artifact-bundle-executable-does-not-exist","errorCode":null,"errorMessage":"artifact bundle executable does not exist: {}","messagePattern":"artifact bundle executable does not exist: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/backend/spm.rs","lineNumber":1017,"sourceCode":") -> eyre::Result<Vec<ArtifactBundleBinary>> {\n    let mut binaries = vec![];\n    for bundle in artifactbundle_dirs(extract_dir)? {\n        let info = file::read_to_string(bundle.join(\"info.json\"))?;\n        let manifest = serde_json::from_str::<ArtifactBundleInfo>(&info)\n            .wrap_err(\"Failed to parse artifact bundle info.json\")?;\n        for (name, artifact) in manifest.artifacts {\n            if artifact.r#type != \"executable\" {\n                continue;\n            }\n            for variant in artifact.variants {\n                if variant\n                    .supported_triples\n                    .iter()\n                    .any(|triple| target_triples.contains(triple))\n                {\n                    let path = bundle.join(&variant.path);\n                    if !path.is_file() {\n                        bail!(\n                            \"artifact bundle executable does not exist: {}\",\n                            path.display()\n                        );\n                    }\n                    binaries.push(ArtifactBundleBinary {\n                        name: name.clone(),\n                        path,\n                    });\n                    break;\n                }\n            }\n        }\n    }\n    Ok(binaries)\n}\n\nfn artifactbundle_dirs(extract_dir: &Path) -> eyre::Result<Vec<PathBuf>> {\n    let mut bundles = vec![];","sourceCodeStart":999,"sourceCodeEnd":1035,"githubUrl":"https://github.com/jdx/mise/blob/afd2eddd3a50c16190efc1c7e94404b48f72af57/src/backend/spm.rs#L999-L1035","documentation":"Inside a downloaded artifact bundle, mise locates each expected binary via the bundle's info.json variant matching the host triple. If the referenced executable file is missing on disk (bundle layout differs from manifest, or a corrupted/partial download), artifactbundle_binaries fails rather than installing a broken tool.","triggerScenarios":"try_install_artifactbundle processes a bundle whose variant.path entry points to a non-existent file — typically a malformed info.json, a re-zipped bundle missing files, or a truncated download.","commonSituations":"Upstream published an artifact bundle with incorrect info.json paths; proxy/cache stripped files from the zip; manually edited bundle; extraction tool skipped symlinks.","solutions":["Re-download/re-install the version (delete the cached install dir and run mise install again) to rule out a corrupted download","Report the broken info.json/asset to the upstream project and pin an earlier working version meanwhile","Verify the bundle manually: unzip it and check the path listed in info.json exists and is a file"],"exampleFix":"// shell\nrm -rf ~/.local/share/mise/installs/spm-owner-repo/1.2.3\nmise install spm:owner/repo@1.2.3   # fresh download, rules out corruption","handlingStrategy":"fallback","validationCode":"# Validate a downloaded bundle before trusting it\nunzip -t pkg.artifactbundle.zip && \\\nunzip -p pkg.artifactbundle.zip info.json | jq -e '.variants[].path'","typeGuard":null,"tryCatchPattern":"match install {\n    Err(e) if e.contains(\"artifact bundle executable does not exist\") => {\n        // purge cache, retry once, else pin previous version\n    }\n    other => other,\n}","preventionTips":["Clear the cached bundle and retry once on first occurrence (rules out partial download)","Verify upstream info.json paths match the actual zip layout before adopting a new version","Pin the last known-good version and file an upstream issue about the broken bundle"],"tags":["swift","spm","artifactbundle","file-not-found"],"backgroundTag":"file-not-found","analyzedSha":"afd2eddd3a50c16190efc1c7e94404b48f72af57","analyzedAt":"2026-09-09T01:38:25.179Z","contentChangedAt":"2026-09-09T01:38:25.179Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}