{"record":{"id":"b383062ba1eda123","repo":"jdx/mise","slug":"no-matching-interrupted-operation-mise-dot-history-pending","errorCode":null,"errorMessage":"no matching interrupted operation; `mise dot history --pending` lists them","messagePattern":"no matching interrupted operation; `mise dot history --pending` lists them","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/cli/dotfiles/recover.rs","lineNumber":58,"sourceCode":"\n    fn recover(self, tracked: &TrackedSet) -> Result<()> {\n        let store = Store::open()?;\n        let _lock = scope::recovery_lock(&store)?;\n        let pending = store::list_pending_in(store.state_dir())?;\n        if pending.is_empty() {\n            info!(\"dotfiles: no interrupted operations\");\n            return Ok(());\n        }\n        let selected = pending\n            .iter()\n            .filter(|(_, record)| {\n                self.operation.as_ref().is_none_or(|selector| {\n                    matches_operation(selector, record.id, &record.checkpoint.uuid)\n                })\n            })\n            .collect::<Vec<_>>();\n        if selected.is_empty() {\n            bail!(\"no matching interrupted operation; `mise dot history --pending` lists them\");\n        }\n        for (_, record) in &selected {\n            miseprintln!(\"Interrupted operation {}\", record.checkpoint.uuid);\n            if let Some(operation) = &record.checkpoint.operation {\n                let paths = operation\n                    .journal\n                    .iter()\n                    .filter_map(|entry| match entry {\n                        JournalEntry::PathChanged { path, .. } => Some(path),\n                        _ => None,\n                    })\n                    .collect::<BTreeSet<_>>();\n                for path in paths {\n                    miseprintln!(\"  {}\", crate::file::display_path(path));\n                }\n            }\n        }\n        if selected.len() > 1 && (self.keep_current || self.operation.is_some()) {","sourceCodeStart":40,"sourceCodeEnd":76,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/cli/dotfiles/recover.rs#L40-L76","documentation":"`mise dot recover` filters pending (interrupted) operation records by the optional operation selector; if no pending record matches, it bails and points the user at `mise dot history --pending` to list available identifiers.","triggerScenarios":"Running `mise dot recover [operation]` when the `selected` list is empty: no interrupted operations exist at all, or the supplied id/uuid does not match any pending record (typo, operation already recovered/discarded).","commonSituations":"Recovering after all pending operations were already handled; stale script referencing an old checkpoint uuid; running recover on a machine with no interrupted operations; UUID typo.","solutions":["Run `mise dot history --pending` to list actual interrupted operations and their identifiers","Copy the exact operation id/uuid from that listing into `mise dot recover <id>`","If there are no pending operations, nothing needs recovery — the command correctly reports none","Ensure the operation wasn't already recovered or discarded"],"exampleFix":"# before\nmise dot recover abc123  # typo'd uuid\n# after\nmise dot history --pending\nmise dot recover 3f2a...  # exact uuid from listing","handlingStrategy":"validation","validationCode":"pending=$(mise dot history --pending)\necho \"$pending\"  # pick the exact id before recovering","typeGuard":null,"tryCatchPattern":"if ! mise dot recover \"$OP_ID\" 2>/dev/null; then\n  mise dot history --pending\nfi","preventionTips":["Copy identifiers directly from `mise dot history --pending` output","Recover pending operations promptly before they are cleaned up","Never hardcode checkpoint uuids in scripts; read them dynamically","Check pending list before assuming an operation is still pending"],"tags":["cli","dotfiles","recovery","not-found","selection"],"backgroundTag":"record-not-found","analyzedSha":"533346cc374382b41ec5ff70536252b2e96e725c","analyzedAt":"2026-09-17T13:35:38.149Z","contentChangedAt":"2026-09-17T13:35:38.149Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}