{"record":{"id":"a5dc5146cb32f4c8","repo":"jdx/mise","slug":"unsupported-number-in-aube-lockfile","errorCode":null,"errorMessage":"unsupported number in aube lockfile","messagePattern":"unsupported number in aube lockfile","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/lockfile.rs","lineNumber":177,"sourceCode":"            }\n        }\n    }\n}\n\nfn yaml_to_toml(value: serde_yaml::Value) -> Result<toml::Value> {\n    use serde_yaml::Value;\n    Ok(match value {\n        Value::Bool(value) => toml::Value::Boolean(value),\n        Value::Number(value) => {\n            if let Some(value) = value.as_i64() {\n                toml::Value::Integer(value)\n            } else if let Some(value) = value.as_f64() {\n                if !value.is_finite() {\n                    bail!(\"non-finite numbers cannot be represented in mise.lock\")\n                }\n                toml::Value::Float(value)\n            } else {\n                bail!(\"unsupported number in aube lockfile\")\n            }\n        }\n        Value::String(value) => toml::Value::String(value),\n        Value::Sequence(values) => toml::Value::Array(\n            values\n                .into_iter()\n                .map(yaml_to_toml)\n                .collect::<Result<_>>()?,\n        ),\n        Value::Mapping(values) => {\n            let mut table = toml::Table::new();\n            for (key, value) in values {\n                let Value::String(key) = key else {\n                    bail!(\"aube lockfile mapping keys must be strings\")\n                };\n                table.insert(key, yaml_to_toml(value)?);\n            }\n            toml::Value::Table(table)","sourceCodeStart":159,"sourceCodeEnd":195,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/lockfile.rs#L159-L195","documentation":"Thrown in the YAML->TOML conversion of the aube lockfile when a numeric value is neither an i64 nor an f64 (e.g. arbitrary-precision or overflow numbers outside both ranges). TOML can only hold integers and floats, so the value is unsupported.","triggerScenarios":"mise.lock's aube YAML contains a huge integer beyond i64 range or a number format serde_yaml maps to neither i64 nor f64.","commonSituations":"Hand-edited lockfile with an extremely large number; another tool writing YAML numbers that overflow 64-bit; corrupted lockfile.","solutions":["Correct the offending number to fit within 64-bit integer/float range","Restore mise.lock from git","Delete and regenerate the lockfile","Fix the generator writing oversized numbers into the lock"],"exampleFix":"// before\nbig: 99999999999999999999999999\n// after\nbig: 9999999999","handlingStrategy":"validation","validationCode":"# check numbers fit in 64-bit before committing the lock\nyq '[.. | numbers] | map(select(. > 9223372036854775807)) | length == 0' mise.lock","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep lockfile numeric values within 64-bit ranges","Fix generators that emit arbitrary-precision numbers","Regenerate the lockfile instead of editing numbers by hand"],"tags":["lockfile","yaml","toml","numbers"],"backgroundTag":"invalid-argument-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"}