jdx/mise · error

the signed release list of packslip:{project} disappeared; r

Error message

the signed release list of packslip:{project} disappeared; restore the list or explicitly forget this project's packslip pin

What it means

mise remembers that a project's signed packslip release list was accepted (an entry exists in the pins file). If the list later cannot be found at all, this error fires rather than silently treating the absence as 'no releases', because a missing list would drop recorded yanks.

Source

Thrown at src/packslip_pins.rs:233

        );
    }
    if pins.sequences.get(project) != Some(&sequence) {
        pins.sequences.insert(project.to_string(), sequence);
        save(path, &pins)?;
    }
    Ok(())
}

/// An absent supplementary list is allowed only before this machine has
/// accepted one. Its disappearance must not undo signed withdrawals.
pub(crate) fn check_missing_list(project: &str) -> Result<()> {
    check_missing_list_at(&pins_file(), project)
}

fn check_missing_list_at(path: &Path, project: &str) -> Result<()> {
    let _lock = locked(path)?;
    if load(path)?.sequences.contains_key(project) {
        bail!(
            "the signed release list of packslip:{project} disappeared; restore the list or explicitly forget this project's packslip pin"
        );
    }
    Ok(())
}

/// Every pin, by project.
pub(crate) fn list() -> Result<BTreeMap<String, Pin>> {
    Ok(load(&pins_file())?.pins)
}

/// Drop a project's pin and sequence, so the next release accepted sets
/// them again. Returns whether there was one.
pub(crate) fn forget(project: &str) -> Result<bool> {
    forget_at(&pins_file(), project)
}

pub(crate) fn forget_at(path: &Path, project: &str) -> Result<bool> {

View on GitHub (pinned to afd2eddd3a)

Solutions

  1. Restore the signed release list at the expected upstream location
  2. Run the command that explicitly forgets the project's packslip pin (e.g. remove the pins entry via the documented reset flow)
  3. Fix the project name/URL typo causing the 404
  4. Re-point mise at the correct registry host

Example fix

// before: stale pin for a removed project
mise install aqua:org/removed-tool   # errors
// after: explicitly forget the pin
mise config reset packslip-pin org/removed-tool   # or delete the pins entry for that project
mise install aqua:org/removed-tool
Defensive patterns

Strategy: validation

Validate before calling

if pins_file_has_sequence(project) && head_request(list_url(project)).status == 404 {
    eprintln!("{project} list is gone; restore it or forget the pin before running install");
}

Try / catch

match result {
    Err(e) if e.to_string().contains("disappeared") => {
        forget_packslip_pin(project)?; // only if removal is intentional
    }
    other => other?,
}

Prevention

When it happens

Trigger: check_missing_list_at is called during packslip verification while the pins file still contains a sequence entry for the project but the upstream list now returns 404 or is otherwise unavailable.

Common situations: A registry removed or renamed its release list file; a tool was removed from the registry; a typo in the project name after the project was previously verified; network path serves 404 for an existing list.

Understand the failure class

Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.

Related errors


AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09). Data as JSON: /api/errors/a2f209efbab1ecd8. Report an issue: GitHub.