jdx/mise · error

incoming setup has not been completely applied; run `mise bo

Error message

incoming setup has not been completely applied; run `mise bootstrap dotfiles pull` before publishing

What it means

This error is thrown during `mise bootstrap dotfiles publish` in the history-sync publish flow. After merging the upstream tree with local overlays, the publisher compares the composed merge result against the remote tree; if they differ, it means the local clone has not fully applied (pulled) the incoming setup, so publishing would drop or overwrite incoming changes. mise refuses to publish and tells you to pull first.

Source

Thrown at src/system/history/sync/publish.rs:78

                    .collect::<Vec<_>>()
                    .join(", ")
            );
        }
        // Accepted choices were validated against saved, live, and remote
        // versions. Carry their already-encrypted saved objects, not a new
        // plaintext publication representation.
        let overlays = conflicts
            .into_iter()
            .map(|path| {
                Ok(crate::system::history::shadow::Overlay {
                    object: repo.object_at(local, &path)?,
                    path,
                })
            })
            .collect::<Result<Vec<_>>>()?;
        let merged = repo.compose(&merged, &overlays)?;
        if merged != tree {
            bail!(
                "incoming setup has not been completely applied; run `mise bootstrap dotfiles pull` before publishing"
            );
        }
    }
    let Some(candidate) = heads.candidate(repo, &tree)? else {
        return Ok(None);
    };
    super::files::audit_history(repo, &candidate.commit, &Default::default())?;
    candidate.adopt(repo)?;
    Ok(Some(candidate.commit))
}

pub(crate) fn push(
    remote: &Remote<'_>,
    branch: &str,
    commit: &str,
    upstream_commit: Option<&str>,
) -> Result<PushOutcome> {

View on GitHub (pinned to afd2eddd3a)

Solutions

  1. Run `mise bootstrap dotfiles pull` to fully apply the incoming setup, then retry publish
  2. Inspect `git`-style differences reported by `mise bootstrap dotfiles status` and resolve any unapplied incoming files
  3. If the upstream branch is wrong, repoint it with `mise bootstrap dotfiles origin set <url> --branch <name>` before pulling/publishing

Example fix

// before
$ mise bootstrap dotfiles publish
error: incoming setup has not been completely applied

// after
$ mise bootstrap dotfiles pull
$ mise bootstrap dotfiles publish
Defensive patterns

Strategy: validation

Validate before calling

mise bootstrap dotfiles status && mise bootstrap dotfiles pull && mise bootstrap dotfiles publish

Prevention

When it happens

Trigger: Running `mise bootstrap dotfiles publish` while the upstream setup branch contains commits or overlays that the local machine never applied via `mise bootstrap dotfiles pull`; the composed merge (`repo.compose(&merged, &overlays)`) does not equal the upstream tree `tree`.

Common situations: Two machines share a dotfiles repository; machine B pushed new dotfiles, and machine A tries to publish its local edits without pulling first. Also happens after manually resetting/removing local tracked files so the merge no longer reproduces the upstream tree.

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/55bf4273b3c01f3c. Report an issue: GitHub.