jdx/mise · error

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

Error message

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

What it means

Publication verifies that the composed merge of the merged tree plus overlays equals the target tree, proving the incoming state was fully applied locally. If the recomposed tree differs, some incoming changes were never applied, and mise aborts the publish with instructions to pull first.

Solutions

  1. Run `mise dot pull` to fully apply the incoming setup, then retry the publish.
  2. Inspect files managed by sync for manual edits/deletions that diverge from the incoming tree and restore or commit them via pull.
  3. If an interrupted operation left partial state, re-run `mise dot pull` to complete application before publishing.

Example fix

// before: publishing with partially-applied incoming state
mise dot sync // error: incoming setup has not been completely applied
// after
mise dot pull   // completes application of incoming setup
mise dot sync   // now merged == tree and publish proceeds
Defensive patterns

Strategy: validation

Validate before calling

// verify the incoming tree was fully applied before publishing
let merged = repo.compose(&merged, &overlays)?;
if merged != tree {
    eprintln!("run `mise dot pull` first");
    return;
}

Try / catch

match sync() {
    Err(e) if e.to_string().contains("incoming setup has not been completely applied") => { pull(); sync(); }
    other => other,
}

Prevention

When it happens

Trigger: Calling publish when the local working/merged state is missing part of the incoming tree — e.g. partial application after an interrupted pull, manual edits that diverge from the incoming manifest, or overlays that no longer reproduce the merged tree.

Common situations: A previous `mise dot pull` was interrupted mid-apply; the user manually deleted or edited files managed by sync; the incoming setup changed (new origin or branch) without pulling.

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@533346cc37 (2026-09-17). Data as JSON: /api/errors/16a1256479ff16f7. Report an issue: GitHub.

Appendix: source

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

                    .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 dot pull` before publishing"
            );
        }
    }
    let Some(candidate) = heads.candidate(repo, &tree)? else {
        return Ok(None);
    };
    if !allow_plaintext_history {
        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,

View on GitHub (pinned to 533346cc37)