{"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":681,"sourceCode":"                    None => Vec::new(),\n                };\n                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                    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":663,"sourceCodeEnd":699,"githubUrl":"https://github.com/jdx/mise/blob/6f52dcdf99e282ef7a7db68c81301fa4618d0f79/src/lockfile.rs#L663-L699","documentation":"A platform entry in mise.lock must be either a bare string (interpreted as just a checksum) or a table with the known keys (src/lockfile.rs:544-547 and the terminal match at src/lockfile.rs:681). Any other TOML type — integer, float, boolean, array — bails with \"unsupported asset info format\".","triggerScenarios":"A tools.<name>.<version> platform value that is an integer, boolean, or array — hand edits, or a writer format this build does not understand.","commonSituations":"Hand-editing lockfiles and replacing an entry with a scalar; lockfiles from a much newer/older mise format.","solutions":["Regenerate the lockfile: rm mise.lock && mise lock.","Upgrade mise so writer and reader formats match.","Do not hand-edit mise.lock entries."],"exampleFix":"# before (mise.lock, hand-edited scalar entry)\n[tools.mytool.1.0.0.linux-x64]\nsha = 12345\n\n# after — let mise regenerate the entry\n$ rm mise.lock && mise lock","handlingStrategy":"validation","validationCode":"# CI guard: every tools.<name> entry must be a string or a table\npython3 -c \"\nimport tomllib\nfor entries in tomllib.load(open('mise.lock', 'rb')).get('tools', {}).values():\n    if not isinstance(entries, list):\n        raise SystemExit('tools entry must be an array')\n    for e in entries:\n        for p in (e.get('platforms') or {}).values():\n            if not isinstance(p, (str, dict)):\n                raise SystemExit('platform entry must be a string or table: %r' % p)\n\"","typeGuard":null,"tryCatchPattern":"\"unsupported asset info format\" means a lockfile value has a wrong TOML type: regenerate the lockfile (rm mise.lock && mise lock) instead of patching the scalar; fail fast with a version-alignment hint if the lockfile is protected.","preventionTips":["Never hand-edit mise.lock entries; it is generated output.","Validate lockfile shape in CI with a TOML parser before running mise.","Align mise versions to avoid format drift."],"tags":["lockfile","parse","toml","type-error"],"backgroundTag":"invalid-lockfile-format","analyzedSha":"6f52dcdf99e282ef7a7db68c81301fa4618d0f79","analyzedAt":"2026-08-22T10:14:23.840Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}