{"record":{"id":"4d019982fe09fc83","repo":"jdx/mise","slug":"error-generate","errorCode":null,"errorMessage":"{error}","messagePattern":"\\{error\\}","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/lockfile/generate.rs","lineNumber":335,"sourceCode":"                    continue;\n                }\n                let key = platform.to_key();\n                let Some(info) = entry.platforms.get(&key) else {\n                    return Ok(false);\n                };\n                if !bindings_current || !can_reuse(info) {\n                    return Ok(false);\n                }\n                validate_provenance_settings(ba, tv, &key, info)?;\n                if let Some(error) = check_single_tool_provenance(\n                    Some(entries),\n                    &ba.short,\n                    &tv.version,\n                    &stored_backend,\n                    &key,\n                    info.provenance.as_ref(),\n                ) {\n                    bail!(\"{error}\");\n                }\n                covered.entry(index).or_default().insert(key);\n            }\n        }\n        // Extra versions, option variants, or platforms must still be pruned.\n        // Counting distinct entries also rejects duplicate version/option rows.\n        if covered.is_empty()\n            || covered.len() != entries.len()\n            || covered\n                .iter()\n                .any(|(index, keys)| keys.len() != entries[*index].platforms.len())\n        {\n            return Ok(false);\n        }\n    }\n    Ok(true)\n}\n","sourceCodeStart":317,"sourceCodeEnd":353,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/lockfile/generate.rs#L317-L353","documentation":"Inside the current-check phase of lockfile generation (`is_current`), mise validates that each stored lockfile entry still matches reality — including checking artifact integrity metadata such as stored backend, options key, and provenance against what the backend reports. When that per-entry validation returns an error, it is re-thrown verbatim here, marking the lockfile entry as not current so generation rebuilds it.","triggerScenarios":"Running a command whose current-lockfile check inspects cached artifacts/provenance when the stored metadata is stale or invalid — e.g. provenance URL/attestation fails validation, the stored backend id no longer matches, or artifact metadata fails integrity checks.","commonSituations":"Upgrading/downgrading tools that changed their release provenance format; manually tampered or partially restored lockfile sidecars; backend changes between mise versions altering how metadata is keyed.","solutions":["Read the inner `{error}` message — it names the specific validation (provenance, backend, or key) that failed.","Regenerate the affected entries with `mise lock` so fresh metadata and provenance are recorded.","Restore the lockfile/sidecars from git if they were manually edited, or upgrade mise if the backend's provenance format changed."],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":["Don't hand-edit lockfile sidecars or provenance metadata.","Regenerate the lockfile after upgrading tools or mise so stored metadata stays current.","Restore lockfile/sidecars from git if they appear tampered or partially synced."],"tags":["lockfile","provenance","validation","cache-staleness"],"backgroundTag":"checksum-mismatch","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"}