{"record":{"id":"a28df8c94645e1ad","repo":"jdx/mise","slug":"is-not-a-conflict","errorCode":null,"errorMessage":"{} is not a conflict","messagePattern":"(.+?) is not a conflict","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/system/history/sync/apply.rs","lineNumber":205,"sourceCode":"                        &conflict.branch_path,\n                        remote.as_ref(),\n                    )?,\n                    live_mode: live_permissions(&local)?,\n                    local: saved,\n                    remote,\n                    live,\n                    take_remote: take_remote.contains(&local),\n                },\n            );\n        }\n    }\n    for path in take_remote.iter().chain(keep_local.iter()) {\n        if !status\n            .conflicts\n            .iter()\n            .any(|conflict| roots.locate(&conflict.branch_path).path() == Some(path.as_path()))\n        {\n            bail!(\"{} is not a conflict\", display_path(path));\n        }\n    }\n    run::refresh(store, tracked, &mut status)?;\n    if !req.dry_run {\n        run::write_status(state_dir, &status)?;\n    }\n    if !status.conflicts.is_empty() {\n        if req.dry_run {\n            // Preview the whole paused setup even when reconciliation\n            // cannot yet produce an applicable write set.\n            let mut table = MiseTable::new(false, &[\"Path\", \"Action\", \"Group\"]);\n            for conflict in &status.conflicts {\n                if let Some(path) = roots.locate(&conflict.branch_path).path() {\n                    table.add_row(vec![\n                        display_path(path),\n                        \"held: unresolved conflict\".to_string(),\n                        conflict.branch_path.clone(),\n                    ]);","sourceCodeStart":187,"sourceCodeEnd":223,"githubUrl":"https://github.com/jdx/mise/blob/afd2eddd3a50c16190efc1c7e94404b48f72af57/src/system/history/sync/apply.rs#L187-L223","documentation":"The --take-remote/--keep-local resolution flags only accept paths that are currently registered as conflicts in the sync status. This error is thrown when a passed path does not correspond to any known conflict, so there is nothing to resolve. It aborts before any state is written.","triggerScenarios":"Running `mise bootstrap dotfiles pull --take-remote <path>` (or --keep-local) where `status.conflicts` contains no conflict whose branch_path locates to that exact path — the path was never in conflict, was already resolved, or is spelled/located differently than the recorded conflict path.","commonSituations":"Retrying a resolution command after the conflict was already resolved in a prior run; passing an absolute path when the conflict is recorded at a different root mapping; typos in the path; resolving against a fresh clone where no pull has produced conflicts yet.","solutions":["Run `mise bootstrap dotfiles pull --dry-run` to list the currently held conflicts and use exactly those paths.","If the conflict was already resolved, run a plain pull without the resolution flags to apply the remaining plan.","Verify the path matches the recorded conflict path (same root and normalization) — check for symlinks, ~ expansion, or wrong home directory in the environment."],"exampleFix":"# before\nmise bootstrap dotfiles pull --take-remote ~/.bashrc   # not in conflict\n# after: list real conflicts first\nmise bootstrap dotfiles pull --dry-run\nmise bootstrap dotfiles pull --take-remote ~/.zshrc","handlingStrategy":"validation","validationCode":"# list current conflicts before resolving\nmise bootstrap dotfiles pull --dry-run\n# only pass paths shown as 'held: unresolved conflict'","typeGuard":"const isCurrentConflict = (path, conflicts) => conflicts.some(c => resolve(c.branchPath) === path);","tryCatchPattern":"try {\n  await pull({ takeRemote: [path] });\n} catch (e) {\n  if (/is not a conflict$/.test(e.message.trim()) || /is not a conflict/.test(e.message)) {\n    // conflict already resolved or wrong path: list and retry\n    const conflicts = await dryRun();\n    if (!isCurrentConflict(path, conflicts)) return;\n  } else throw e;\n}","preventionTips":["Copy conflict paths verbatim from --dry-run output.","Check that HOME/root mapping matches the environment where conflicts were recorded.","Don't reuse stale resolution commands from shell history after a conflict was already resolved."],"tags":["cli","conflict-resolution","sync","invalid-argument"],"backgroundTag":"resource-not-found","analyzedSha":"afd2eddd3a50c16190efc1c7e94404b48f72af57","analyzedAt":"2026-09-09T01:38:25.179Z","contentChangedAt":"2026-09-09T01:38:25.179Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}