jdx/mise · error

repository application paused: reconcile repository conflict

Error message

repository application paused: reconcile repository conflicts first: {}

What it means

Before applying the incoming repository tree during preparation, mise filters the tracked repository files for unresolved conflict markers. If any path (other than the manifest itself or ineligible files) still needs a conflict decision, applying the tree would clobber those decisions, so mise pauses application and lists the unresolved paths.

Source

Thrown at src/system/history/sync/run.rs:1011

        return Ok(None);
    };
    if heads.base.as_ref() == Some(remote) {
        return Ok(None);
    }
    let (merged, conflicts) = repo.merge_tree(local, remote)?;
    let tree = tracked.manifest.write(repo, &merged)?;
    let roots = Roots::current();
    if repo.output_tree_of(local)? == tree && conflicts.is_empty() {
        return Ok(None);
    }
    let unresolved: Vec<_> = conflicts
        .into_iter()
        .filter(|path| {
            path != crate::system::history::manifest::PATH && !eligible(&roots, tracked, path)
        })
        .collect();
    if !unresolved.is_empty() {
        bail!(
            "repository application paused: reconcile repository conflicts first: {}",
            unresolved.join(", ")
        );
    }
    Ok(Some(tree))
}

/// A bootstrap finished: the declarations that arrived through sync are
/// applied now, so `status` stops asking for one.
pub(crate) fn bootstrap_completed() {
    let state_dir: &Path = &crate::dirs::STATE;
    let status = match read_status(state_dir) {
        Ok(status) => status,
        Err(err) => {
            warn!("history: could not record that the bootstrap ran: {err:#}");
            return;
        }
    };

View on GitHub (pinned to afd2eddd3a)

Solutions

  1. Resolve the listed conflicts (run `mise bootstrap dotfiles pull` interactively or use the conflict-resolution command to pick a side per path)
  2. Check `mise bootstrap dotfiles status` for pending conflicts and clear each one
  3. If a path should not be tracked at all, untrack it so it stops blocking application

Example fix

// before
error: repository application paused: reconcile repository conflicts first: ~/.gitconfig, ~/.tmux.conf

// after
$ mise bootstrap dotfiles pull   # choose versions for ~/.gitconfig and ~/.tmux.conf
$ mise bootstrap dotfiles sync
Defensive patterns

Strategy: validation

Validate before calling

mise bootstrap dotfiles status   # confirm no pending repository conflicts before syncing

Prevention

When it happens

Trigger: `incoming_repository_tree` (called from `prepare`) finds `unresolved` non-empty: tracked repository paths carry conflict entries that the user has not resolved via the conflict-resolution flow.

Common situations: A pull brought conflicting versions of tracked dotfiles and the user skipped the conflict prompts; automated sync left conflicts pending on a headless machine; user edited files while a conflict decision was outstanding.

Understand the failure class

Background: "Invalid state transition" errors: "status must be X, actually Y", "already rejected/charging/uninstalled", "cannot ... while running" — what they mean when a library rejects your call — this error's family across 31 libraries.

Related errors


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