{"record":{"id":"55dd861feecdd7f9","repo":"jdx/mise","slug":"nothing-can-be-applied-until-the-held-paths-are-de","errorCode":null,"errorMessage":"nothing can be applied until the held paths are decided","messagePattern":"nothing can be applied until the held paths are decided","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/system/history/sync/apply.rs","lineNumber":429,"sourceCode":"        ]);\n    }\n    if !req.automatic {\n        table.print()?;\n    }\n    if req.dry_run {\n        if !req.plan_only {\n            miseprintln!(\"history: dry run; nothing was changed\");\n        }\n        return Ok(ApplyOutcome::default());\n    }\n    if ready.is_empty() && !((fresh_adoption || inventory_tree.is_some()) && held.is_empty()) {\n        if req.automatic {\n            return Ok(ApplyOutcome {\n                held: held.len(),\n                ..Default::default()\n            });\n        }\n        bail!(\"nothing can be applied until the held paths are decided\");\n    }\n    if !req.automatic\n        && !super::origin::confirmed(req.yes, \"history: apply these incoming changes?\")?\n    {\n        info!(\"history: skipped\");\n        return Ok(ApplyOutcome::default());\n    }\n\n    // the transaction\n    let reload = crate::system::history::config::reload_commands()?;\n    let scope = if req.automatic {\n        OperationScope::begin_automatic_apply().await?\n    } else {\n        OperationScope::begin_kind(OperationKind::Apply, \"dotfiles pull\", false).await?\n    };\n    scope.with_operation(|op| {\n        op.applied = status.upstream_commit.clone();\n    });","sourceCodeStart":411,"sourceCodeEnd":447,"githubUrl":"https://github.com/jdx/mise/blob/afd2eddd3a50c16190efc1c7e94404b48f72af57/src/system/history/sync/apply.rs#L411-L447","documentation":"When the incoming plan holds paths (files that cannot be applied, e.g. blocked by unresolved side conditions), an interactive apply cannot safely write anything, so it aborts with this error telling you the held paths must be decided first. The automatic watcher mode tolerates holds and just reports a count.","triggerScenarios":"Running apply interactively (not automatic, not dry-run) while `held` is non-empty; the apply function reaches the post-planning check and no --yes/confirmation path applies because planning produced held paths that block the whole batch.","commonSituations":"Unresolved conflicts or undecidable paths from a previous pull still pending; a mixed batch where one problematic file blocks all other ready changes; running the command manually after the background watcher had been holding paths.","solutions":["Inspect the held paths (dry-run or the sync status) and resolve each one with --take-remote/--keep-local or the indicated action.","Use the automatic mode or --yes only when you intend holds to be tolerated rather than fatal.","Clear stale status (complete or discard the pending plan) and retry the pull."],"exampleFix":"# before\nmise bootstrap dotfiles pull   # held paths block everything\n# after: resolve the holds first\nmise bootstrap dotfiles pull --dry-run\nmise bootstrap dotfiles pull --take-remote <held-path>","handlingStrategy":"try-catch","validationCode":"# inspect held paths before applying\nmise bootstrap dotfiles pull --dry-run","typeGuard":null,"tryCatchPattern":"try {\n  await pull({});\n} catch (e) {\n  if (/nothing can be applied until the held paths are decided/.test(e.message)) {\n    await resolveHeldPaths(); // take-remote/keep-local for each held path\n    await pull({});\n  } else throw e;\n}","preventionTips":["Clear holds (conflicts, blocked paths) as soon as a dry-run reports them.","Avoid mixing --yes with an expectation that holds will be skipped.","Keep one sync workflow so holds don't accumulate unnoticed."],"tags":["sync","blocked-operation","conflict-resolution","dotfiles"],"backgroundTag":"invalid-state-transition","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"}