{"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":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/lockfile.rs","lineNumber":861,"sourceCode":"                    }\n                    _ => None,\n                };\n                let provenance_verified = t\n                    .remove(\"provenance_verified\")\n                    .and_then(|value| value.as_bool());\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":843,"sourceCodeEnd":879,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/lockfile.rs#L843-L879","documentation":"A tool entry's `attested_by` field in mise.lock may only be the literal string \"repackager\" — the only attesting party the parser knows. Any other string (from a newer mise or manual edit) causes a hard parse failure so unknown attestation claims are never silently accepted.","triggerScenarios":"Parsing a mise.lock tool entry with `attested_by = \"<value other than repackager>\"` — written by a newer mise introducing a new attester, or set by hand.","commonSituations":"Downgrading mise after using a newer version that records a new attester; hand-editing lockfile provenance; sharing lockfiles across mise versions.","solutions":["Upgrade mise to the latest version so the new attested_by value is recognized.","Change the value to \"repackager\" or remove the attested_by key from the tool entry in mise.lock.","Regenerate the lockfile with `mise lock` to produce valid attestation metadata."],"exampleFix":"// before (mise.lock)\nattested_by = \"custom-signer\"\n\n// after\nattested_by = \"repackager\"","handlingStrategy":"validation","validationCode":"const vals = doc.get('tools')?.flatMap(t => t.get('attested_by')).filter(Boolean);\nconst bad = vals.filter(s => s !== 'repackager');\nif (bad.length) throw new Error('unsupported attested_by: ' + bad);","typeGuard":"function isAttestedBy(v) { return v === 'repackager'; }","tryCatchPattern":null,"preventionTips":["Don't manually set attested_by; it's written by mise during locking.","Keep mise versions aligned across the team.","If you need a different attester, file an upstream feature request instead of editing the lockfile."],"tags":["lockfile","parsing","attestations","config"],"backgroundTag":"invalid-enum-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"}