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

  1. Upgrade to the tool version that supports the manifest's format number.
  2. Set `format = 1` in the manifest if it was hand-edited to an unsupported value.
  3. Restore the manifest from repository history or a backup if corrupted.
  4. 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

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


AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09). Data as JSON: /api/errors/4cb964b715cae788. Report an issue: GitHub.