{"record":{"id":"a2f209efbab1ecd8","repo":"jdx/mise","slug":"the-signed-release-list-of-packslip-project-disa","errorCode":null,"errorMessage":"the signed release list of packslip:{project} disappeared; restore the list or explicitly forget this project's packslip pin","messagePattern":"the signed release list of packslip:(.+?) disappeared; restore the list or explicitly forget this project's packslip pin","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/packslip_pins.rs","lineNumber":233,"sourceCode":"        );\n    }\n    if pins.sequences.get(project) != Some(&sequence) {\n        pins.sequences.insert(project.to_string(), sequence);\n        save(path, &pins)?;\n    }\n    Ok(())\n}\n\n/// An absent supplementary list is allowed only before this machine has\n/// accepted one. Its disappearance must not undo signed withdrawals.\npub(crate) fn check_missing_list(project: &str) -> Result<()> {\n    check_missing_list_at(&pins_file(), project)\n}\n\nfn check_missing_list_at(path: &Path, project: &str) -> Result<()> {\n    let _lock = locked(path)?;\n    if load(path)?.sequences.contains_key(project) {\n        bail!(\n            \"the signed release list of packslip:{project} disappeared; restore the list or explicitly forget this project's packslip pin\"\n        );\n    }\n    Ok(())\n}\n\n/// Every pin, by project.\npub(crate) fn list() -> Result<BTreeMap<String, Pin>> {\n    Ok(load(&pins_file())?.pins)\n}\n\n/// Drop a project's pin and sequence, so the next release accepted sets\n/// them again. Returns whether there was one.\npub(crate) fn forget(project: &str) -> Result<bool> {\n    forget_at(&pins_file(), project)\n}\n\npub(crate) fn forget_at(path: &Path, project: &str) -> Result<bool> {","sourceCodeStart":215,"sourceCodeEnd":251,"githubUrl":"https://github.com/jdx/mise/blob/afd2eddd3a50c16190efc1c7e94404b48f72af57/src/packslip_pins.rs#L215-L251","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","solutions":["Restore the signed release list at the expected upstream location","Run the command that explicitly forgets the project's packslip pin (e.g. remove the pins entry via the documented reset flow)","Fix the project name/URL typo causing the 404","Re-point mise at the correct registry host"],"exampleFix":"// before: stale pin for a removed project\nmise install aqua:org/removed-tool   # errors\n// after: explicitly forget the pin\nmise config reset packslip-pin org/removed-tool   # or delete the pins entry for that project\nmise install aqua:org/removed-tool","handlingStrategy":"validation","validationCode":"if pins_file_has_sequence(project) && head_request(list_url(project)).status == 404 {\n    eprintln!(\"{project} list is gone; restore it or forget the pin before running install\");\n}","typeGuard":null,"tryCatchPattern":"match result {\n    Err(e) if e.to_string().contains(\"disappeared\") => {\n        forget_packslip_pin(project)?; // only if removal is intentional\n    }\n    other => other?,\n}","preventionTips":["Verify the upstream list URL still resolves before upgrading mise","Forget pins for projects you know were removed from the registry","Check for project renames in registry changelogs","Fix project-name typos before first install so no stale pin is created"],"tags":["security","packslip","registry","missing-file"],"backgroundTag":"resource-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"}