jdx/mise · error

the packslip lists and for this host and mise will not…

Error message

the packslip lists {a} and {b} for this host and mise will not guess between them{hint}

What it means

packslip's select_artifact wraps packslip::select_artifact artifact selection. When the release manifest lists two artifacts that both match the host and mise's strict criteria, Selection::Ambiguous(a, b) is returned and mise refuses to guess between them, optionally appending a hint to set the `variant` option explicitly.

Solutions

  1. Set the `variant` tool option to one of the listed variants, e.g. `packslip:owner/repo = { version = "x", variant = "<variant-name>" }`.
  2. Check the release manifest to see what distinguishes the two artifacts and pick the one intended for your platform.
  3. If the ambiguity is a manifest bug, ask the project to fix its packslip manifest, or pin a different version whose manifest is unambiguous.

Example fix

// before (mise.toml)
[tools]
"packslip:owner/repo" = "1.2.3"  # two matching artifacts

// after
[tools]
"packslip:owner/repo" = { version = "1.2.3", variant = "v3" }
Defensive patterns

Strategy: validation

Validate before calling

# inspect the manifest's artifacts for your host and pick a variant up front
mise ls-remote 'packslip:owner/repo'  # then set variant explicitly if multiple artifacts match

Prevention

When it happens

Trigger: Installing a packslip tool whose signed manifest contains two eligible artifacts for the current platform/arch (e.g. two gnu-libc builds differing only in an unlisted variant), with no `variant` option set to disambiguate.

Common situations: Projects publishing dual-variant releases (e.g. baseline vs v3-architecture x86_64 builds, or two musl variants) where the host matches both; ambiguous musl fallback on a gnu host.

Related errors


AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17). Data as JSON: /api/errors/3870c45469d7e2fd. Report an issue: GitHub.

Appendix: source

Thrown at src/backend/packslip.rs:338

    host: &HostPlatform,
    variant: Option<&str>,
) -> Result<&'a Artifact> {
    let strict = host.as_host();
    let variants = artifacts
        .iter()
        .filter_map(|a| a.variant.as_deref())
        .unique()
        .join(", ");
    let hint = match variant {
        Some(v) => format!(" with variant {v:?}"),
        None if !variants.is_empty() => {
            format!("; set `variant` to one of {variants} if one of those is meant for you")
        }
        None => String::new(),
    };
    match packslip::select_artifact(artifacts, &strict, variant, &FORMAT_PREFERENCE) {
        Ok(artifact) => return Ok(artifact),
        Err(Selection::Ambiguous(a, b)) => bail!(
            "the packslip lists {a} and {b} for this host and mise will not guess between them{hint}"
        ),
        Err(Selection::NoMatch) => {}
    }
    if host.libc.as_deref() == Some("gnu") {
        let musl = Host {
            libc: Some("musl"),
            ..strict
        };
        match packslip::select_artifact(artifacts, &musl, variant, &FORMAT_PREFERENCE) {
            Ok(artifact) => {
                debug!(
                    "no gnu build fits this host; taking the musl build {}, which is static",
                    artifact.name
                );
                return Ok(artifact);
            }
            Err(Selection::Ambiguous(a, b)) => bail!(

View on GitHub (pinned to 533346cc37)