jdx/mise · error
unsupported dotfile repository format {}
Error message
unsupported dotfile repository format {} What it means
Thrown by `Manifest::validate` when the dotfile repository manifest's `format` field is not 1. The library only understands manifest format version 1; a newer (or corrupted) format is rejected up front so it never misreads unknown fields.
Source
Thrown at src/system/history/manifest.rs:358
variant != selected.as_deref()
&& variant.is_some_and(|name| {
entry.variants.iter().any(|variant| variant.name() == name)
})
}
};
if carry {
overlays.push(Overlay {
path: file.path,
object: Some((file.mode, file.oid)),
});
}
}
repo.compose(tree, &overlays)
}
pub(crate) fn validate(&self) -> Result<()> {
if self.format != 1 {
bail!("unsupported dotfile repository format {}", self.format);
}
let mut paths = std::collections::BTreeSet::new();
for entry in &self.enrollment {
if !super::sync::layout::is_safe_branch_path(&entry.path)
|| !(entry.path.starts_with("home/")
|| entry.path == "config"
|| entry.path.starts_with("config/"))
|| !paths.insert(&entry.path)
{
bail!("invalid or repeated enrollment path {}", entry.path);
}
let mut variants = std::collections::BTreeSet::new();
super::select::validate(&entry.variants)?;
for variant in &entry.variants {
let name = variant.name();
if name.contains('@')
|| !super::sync::layout::is_safe_branch_path(&name)
|| !variants.insert(name)View on GitHub (pinned to afd2eddd3a)
Solutions
- Upgrade to the tool version that supports the manifest's format number.
- Set `format = 1` in the manifest if it was hand-edited to an unsupported value.
- Restore the manifest from repository history or a backup if corrupted.
- Re-create enrollment metadata by re-enrolling the dotfiles.
Example fix
// before format = 2 // after format = 1
Defensive patterns
Strategy: validation
Validate before calling
// [ -f manifest ] && grep -q '^format = 1$' manifest || echo "unsupported manifest"
Try / catch
// on "unsupported dotfile repository format N": upgrade the tool // (or restore a format=1 manifest) before retrying
Prevention
- Never hand-edit the manifest `format` field.
- Keep all machines on compatible tool versions when syncing.
- Back up the manifest before tool upgrades or downgrades.
When it happens
Trigger: A manifest written by a newer version of the tool (format bumped), a hand-edited manifest with a wrong `format` integer, or corruption of the stored manifest file.
Common situations: Downgrading mise after using a newer release that bumped the format; syncing a manifest from a machine running a development build; manually editing the manifest and mistyping the version.
Related errors
- remote cache capability protocol {} is incompatible with cli
- the packslip names an executable {:?}, which is not a plain
- unsupported lockfile version {lockfile_version}; this mise s
- an exec entry with no command
- [dotfiles]."{}": manifest requires the source to be a direct
AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09).
Data as JSON: /api/errors/4cb964b715cae788.
Report an issue: GitHub.