{"record":{"id":"17dced8d664ff784","repo":"jdx/mise","slug":"unrecognized-attested-by-s-in-lockfile","errorCode":null,"errorMessage":"unrecognized attested_by {s:?} in lockfile","messagePattern":"unrecognized attested_by (.+?) in lockfile","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/lockfile.rs","lineNumber":704,"sourceCode":"                };\n                let provenance_verified = provenance.is_some()\n                    && matches!(\n                        t.remove(\"provenance_verified\"),\n                        Some(toml::Value::Boolean(true))\n                    );\n                let github_attestations = if provenance.is_some() {\n                    None\n                } else {\n                    github_attestations\n                };\n                let signer = match t.remove(\"signer\") {\n                    Some(toml::Value::String(s)) => Some(s),\n                    _ => None,\n                };\n                let attested_by = match t.remove(\"attested_by\") {\n                    Some(toml::Value::String(s)) if s == \"repackager\" => Some(s),\n                    Some(toml::Value::String(s)) => {\n                        bail!(\"unrecognized attested_by {s:?} in lockfile\")\n                    }\n                    _ => None,\n                };\n                let additional_artifacts = match t.remove(\"additional_artifacts\") {\n                    Some(toml::Value::Array(values)) => values\n                        .into_iter()\n                        .map(|value| value.try_into().map_err(Report::from))\n                        .collect::<Result<Vec<ArtifactInfo>>>()?,\n                    Some(_) => bail!(\"additional_artifacts must be an array in lockfile\"),\n                    None => Vec::new(),\n                };\n                Ok(PlatformInfo {\n                    install,\n                    checksum,\n                    size,\n                    url,\n                    url_api,\n                    conda_deps,","sourceCodeStart":686,"sourceCodeEnd":722,"githubUrl":"https://github.com/jdx/mise/blob/afd2eddd3a50c16190efc1c7e94404b48f72af57/src/lockfile.rs#L686-L722","documentation":"When parsing the lockfile entry, the optional 'attested_by' key must be either absent or the exact string \"repackager\". Any other string is rejected so unknown attestation sources are not silently accepted.","triggerScenarios":"Hand-editing mise.lock and setting attested_by to any value other than \"repackager\"; a lockfile written by a newer mise with a new attestation source this version doesn't know; corruption or bad merge.","commonSituations":"Manual edits, merge-conflict resolution, or downgrading mise below a version that introduced a new attested_by value.","solutions":["Set attested_by = \"repackager\" or remove the key from the mise.lock entry.","Regenerate the lockfile entry with `mise lock` after fixing.","Upgrade mise if the value originated from a newer release that supports it."],"exampleFix":"// before (mise.lock)\nattested_by = \"custom-builder\"\n// after\nattested_by = \"repackager\"","handlingStrategy":"validation","validationCode":"grep -n 'attested_by' mise.lock | grep -v '\"repackager\"' && echo \"invalid attested_by value\" || true","typeGuard":null,"tryCatchPattern":"// catch\nif err.contains(\"unrecognized attested_by\") {\n    remove_key_or_relock(\"attested_by\");\n}","preventionTips":["Do not hand-edit mise.lock attestation keys; let mise write them.","Re-lock after merge conflicts instead of merging attestation lines manually.","Upgrade mise if a lockfile from a newer version introduces new values."],"tags":["lockfile","config","validation","attestation"],"backgroundTag":"invalid-enum-value","analyzedSha":"afd2eddd3a50c16190efc1c7e94404b48f72af57","analyzedAt":"2026-09-09T01:38:25.179Z","contentChangedAt":"2026-09-09T01:38:25.179Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}