{"record":{"id":"42576b190b02092f","repo":"jdx/mise","slug":"unsupported-asset-info-format","errorCode":null,"errorMessage":"unsupported asset info format","messagePattern":"unsupported asset info format","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/lockfile.rs","lineNumber":891,"sourceCode":"                Ok(PlatformInfo {\n                    install,\n                    checksum,\n                    size,\n                    url,\n                    url_api,\n                    conda_deps,\n                    pkgx_deps,\n                    pkgx_provides,\n                    pkgx_runtime_env,\n                    provenance,\n                    provenance_verified,\n                    github_attestations,\n                    signer,\n                    attested_by,\n                    additional_artifacts,\n                })\n            }\n            _ => bail!(\"unsupported asset info format\"),\n        }\n    }\n}\n\nimpl From<PlatformInfo> for toml::Value {\n    fn from(platform_info: PlatformInfo) -> Self {\n        let mut table = toml::Table::new();\n        if let Some(install) = platform_info.install {\n            table.insert(\"install\".to_string(), install.into());\n        }\n        if let Some(checksum) = platform_info.checksum {\n            table.insert(\"checksum\".to_string(), checksum.into());\n        }\n        if let Some(url) = platform_info.url {\n            table.insert(\"url\".to_string(), url.into());\n        }\n        if let Some(url_api) = platform_info.url_api {\n            table.insert(\"url_api\".to_string(), url_api.into());","sourceCodeStart":873,"sourceCodeEnd":909,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/lockfile.rs#L873-L909","documentation":"The lockfile parser converts the `[install]`-style per-platform asset table of a tool entry into a PlatformInfo struct. The outer value must be a TOML table matching the expected asset-info layout; any other TOML type (or an unrecognized top-level shape) triggers this bail, since the parser cannot interpret the entry as installable asset metadata.","triggerScenarios":"Parsing a mise.lock tool platform entry whose value is not a table with the expected keys (e.g. a bare string, integer, or array) — produced by a newer mise format, corruption, or hand editing.","commonSituations":"Lockfiles written by future mise versions with a redesigned platform-info format; manual edits that replaced a table with a scalar; truncated or merge-damaged lockfiles.","solutions":["Upgrade mise to the version matching the lockfile format.","Delete the affected tool entries from mise.lock and re-run `mise lock` to regenerate them in the current format.","Restore the lockfile from version control."],"exampleFix":"// before (mise.lock)\n[tools.uv.platforms.linux-x64]\ninstall = \"uv-binary\"  # corrupted/scalar shape\n\n// after: remove the entry and regenerate\n# mise lock","handlingStrategy":"validation","validationCode":"const entry = doc.get('tools')?.flatMap(t => t.get('platforms'));\nconst bad = entry?.filter(e => typeof e.value !== 'object' || Array.isArray(e.value));\nif (bad?.length) throw new Error('platform asset entries must be tables');","typeGuard":"function isTable(v) { return typeof v === 'object' && v !== null && !Array.isArray(v); }","tryCatchPattern":null,"preventionTips":["Regenerate malformed entries with `mise lock` instead of editing.","Keep mise binaries at the same version across environments.","Back up mise.lock in VCS so corrupted entries can be reverted."],"tags":["lockfile","parsing","toml","config"],"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"}