{"record":{"id":"f4a0b67a5bc76caa","repo":"jdx/mise","slug":"unsupported-lockfile-format","errorCode":null,"errorMessage":"unsupported lockfile format {}","messagePattern":"unsupported lockfile format (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/lockfile.rs","lineNumber":4679,"sourceCode":"                LockfileTool {\n                    version: t\n                        .remove(\"version\")\n                        .map(|v| v.try_into())\n                        .transpose()?\n                        .unwrap_or_default(),\n                    backend: t\n                        .remove(\"backend\")\n                        .map(|v| v.try_into())\n                        .transpose()?\n                        .unwrap_or_default(),\n                    specifiers,\n                    options,\n                    platforms,\n                    aube,\n                    uv,\n                }\n            }\n            _ => bail!(\"unsupported lockfile format {}\", value),\n        };\n        Ok(tool)\n    }\n}\n\nimpl LockfileTool {\n    fn into_toml_value(self, include_specifiers: bool) -> toml::Value {\n        let mut table = toml::Table::new();\n        table.insert(\"version\".to_string(), self.version.into());\n        if let Some(backend) = self.backend {\n            table.insert(\"backend\".to_string(), backend.into());\n        }\n        if include_specifiers && !self.specifiers.is_empty() {\n            table.insert(\n                \"specifiers\".to_string(),\n                self.specifiers.into_iter().collect::<Vec<_>>().into(),\n            );\n        }","sourceCodeStart":4661,"sourceCodeEnd":4697,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/lockfile.rs#L4661-L4697","documentation":"While deserializing a `LockfileTool` from a lockfile document, mise switches on a format/version discriminator stored per tool entry. Any value other than the recognized lockfile formats hits this bail, meaning the file was written by a newer (or otherwise unrecognized) mise format than this binary understands.","triggerScenarios":"Reading a mise.lock (or monorepo root lockfile) produced by a newer mise release whose per-tool format tag is unknown to the running binary; a hand-edited lockfile with a corrupted format field; truncated/corrupted file content after a failed write.","commonSituations":"Rolling back mise (downgrade) after a teammate upgraded lockfile formats; switching branches between lockfile format generations with an older mise on PATH; partially synced lockfiles in CI caches.","solutions":["Upgrade mise to the version that wrote the lockfile (the format tag is newer than your binary supports).","If you must stay on the older mise, regenerate the lockfile with that version: delete the lockfile and run `mise lock`.","Restore the lockfile from git or a backup if the format field was corrupted by editing or a partial write."],"exampleFix":"// before: older mise cannot read the new format\nmise install   # unsupported lockfile format 2\n// after\nmise self-update && mise install","handlingStrategy":"fallback","validationCode":"null","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep mise updated on all machines that touch the repo's lockfile.","Do not downgrade mise below the version that wrote the current lockfile format.","Restore lockfiles from git if a manual edit corrupts the format field."],"tags":["lockfile","format-version","deserialization","backward-compatibility"],"backgroundTag":"unsupported-config-value","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"}