jdx/mise · error
the stamp list at is for , not
Error message
the stamp list at {url} is for {}, not {project} What it means
Raised by packslip_stamps::fetch after verifying a stamp list's signature when the list's predicate.project does not match the project that was requested. This guards against a host serving a validly signed but wrong-project list (e.g. a list for a different tool), which would corrupt stamp state.
Solutions
- Fix the stamper/list URL so it points at the list for the requested project.
- Check the project name in your tool request/config for typos vs what the host publishes.
- Ask the publisher to correct the URL or re-publish the list under the correct project path if the host misroutes.
Example fix
// before (mise.toml) stampers = ["example.com=https://example.com/lists/other-project/"] // after stampers = ["example.com=https://example.com/lists/my-project/"]
Defensive patterns
Strategy: validation
Validate before calling
// confirm the list URL's project segment matches the requested project
function urlMatchesProject(url, project) {
return decodeURIComponent(url).includes(`/${project}/`) ||
decodeURIComponent(url).endsWith(`/${project}`);
} Try / catch
try {
fetchStampList(host, project);
} catch (e) {
if (String(e).includes("is for") && String(e).includes("not")) {
throw new Error(`Stamper URL serves a different project's list; fix the URL for ${project}.`);
} else throw e;
} Prevention
- Copy stamper URLs exactly from the publisher's docs for the specific project.
- Don't reuse another project's stamper entry as a template without changing the project path.
- Verify redirects: ensure the host serves the requested project's list, not a redirect to another one.
When it happens
Trigger: Fetching the stamp list for `project` from a stamper's URL where verify_release_list succeeds but list.predicate.project differs — typically a URL template pointing at another project's list or a misconfigured stamper mapping.
Common situations: Copy-pasting a stamper/list URL from another project; a host redirect serving a different project's list; typos in the project name or URL path; a publisher re-pointing a URL at a different list without updating clients.
Related errors
- packslip.stampers entry
- packslip.stampers entry
- the release list at is for , not
- the release list in github.com/
- an exec entry with no command
AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17).
Data as JSON: /api/errors/d8c1a58cc4422c94.
Report an issue: GitHub.
Appendix: source
Thrown at src/packslip_stamps.rs:302
for stamper in &stampers {
let url = stamper.url(project);
let text = match HTTP_FETCH.get_text(&url).await {
Ok(text) => text,
Err(err) if is_not_found(&err) => {
missing_list(&stamper.host, project, &url)?;
debug!("{}: no stamp list for {project} at {url}", stamper.host);
stamps.hosts.push(stamper.host.clone());
continue;
}
Err(err) => {
return Err(err)
.wrap_err_with(|| format!("fetching the stamp list for {project} from {url}"));
}
};
let list = verify_release_list(&text, &stamper.pin, true)
.wrap_err_with(|| format!("verifying the stamp list from {}", stamper.host))?;
if list.predicate.project != project {
bail!(
"the stamp list at {url} is for {}, not {project}",
list.predicate.project
);
}
check_sequence(&stamper.host, project, &list)?;
stamps.add(&stamper.host, &list);
}
Ok(Some(stamps))
}
fn is_not_found(err: &eyre::Report) -> bool {
crate::http::error_code(err) == Some(404)
}
#[cfg(test)]
mod tests {
use super::*;
use packslip::model::{View on GitHub (pinned to 533346cc37)