jdx/mise · error

unsupported asset info format

Error message

unsupported asset info format

What it means

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".

Source

Thrown at src/lockfile.rs:681

                    None => Vec::new(),
                };
                Ok(PlatformInfo {
                    install,
                    checksum,
                    size,
                    url,
                    url_api,
                    conda_deps,
                    pkgx_deps,
                    pkgx_provides,
                    pkgx_runtime_env,
                    provenance,
                    provenance_verified,
                    github_attestations,
                    additional_artifacts,
                })
            }
            _ => bail!("unsupported asset info format"),
        }
    }
}

impl From<PlatformInfo> for toml::Value {
    fn from(platform_info: PlatformInfo) -> Self {
        let mut table = toml::Table::new();
        if let Some(install) = platform_info.install {
            table.insert("install".to_string(), install.into());
        }
        if let Some(checksum) = platform_info.checksum {
            table.insert("checksum".to_string(), checksum.into());
        }
        if let Some(url) = platform_info.url {
            table.insert("url".to_string(), url.into());
        }
        if let Some(url_api) = platform_info.url_api {
            table.insert("url_api".to_string(), url_api.into());

View on GitHub (pinned to 6f52dcdf99)

Solutions

  1. Regenerate the lockfile: rm mise.lock && mise lock.
  2. Upgrade mise so writer and reader formats match.
  3. Do not hand-edit mise.lock entries.

Example fix

# before (mise.lock, hand-edited scalar entry)
[tools.mytool.1.0.0.linux-x64]
sha = 12345

# after — let mise regenerate the entry
$ rm mise.lock && mise lock
Defensive patterns

Strategy: validation

Validate before calling

# CI guard: every tools.<name> entry must be a string or a table
python3 -c "
import tomllib
for entries in tomllib.load(open('mise.lock', 'rb')).get('tools', {}).values():
    if not isinstance(entries, list):
        raise SystemExit('tools entry must be an array')
    for e in entries:
        for p in (e.get('platforms') or {}).values():
            if not isinstance(p, (str, dict)):
                raise SystemExit('platform entry must be a string or table: %r' % p)
"

Try / catch

"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.

Prevention

When it happens

Trigger: A tools.<name>.<version> platform value that is an integer, boolean, or array — hand edits, or a writer format this build does not understand.

Common situations: Hand-editing lockfiles and replacing an entry with a scalar; lockfiles from a much newer/older mise format.

Related errors


AI-assisted analysis of jdx/mise@6f52dcdf99 (2026-08-22). Data as JSON: /api/errors/42576b190b02092f. Report an issue: GitHub.