jdx/mise · error
removed workspace project
Error message
removed workspace project {id:?} cannot define other overrides What it means
When a config marks a workspace project as removed, mise rejects any other override fields (root, metadata, depends, depends_add, depends_remove) on that same project entry. A removed project must be purely a tombstone; combining removal with mutation is ambiguous and throws this error.
Solutions
- Delete the leftover root/metadata/depends/depends_add/depends_remove fields from the removed project's entry
- Keep only the removal marker on the removed project entry
- If you meant to reconfigure rather than remove, drop the removal marker instead
Example fix
# before [workspace.project.old-app] removed = true root = "old-app" # after [workspace.project.old-app] removed = true
Defensive patterns
Strategy: validation
Validate before calling
fn removed_project_is_tombstone(cfg: &ProjectConfig) -> Result<(), String> {
if cfg.removed
&& (cfg.root.is_some()
|| cfg.metadata.is_some()
|| cfg.depends.is_some()
|| !cfg.depends_add.is_empty()
|| !cfg.depends_remove.is_empty())
{
return Err("removed project entries must contain only the removal marker".into());
}
Ok(())
} Try / catch
if let Err(e) = validate_project_config(&cfg) {
if e.to_string().contains("cannot define other overrides") {
eprintln!("strip extra fields from the removed-project entry");
}
} Prevention
- Treat removed=true entries as tombstones: never merge them with other override fields
- When tooling merges config layers, filter out non-removal keys for removed projects
- Review diffs for removal entries before committing config changes
When it happens
Trigger: A workspace config entry sets the remove flag for project {id} while also setting root, metadata, depends, depends_add, or depends_remove; detected while validating the project config.
Common situations: Hand-editing a config to remove a project but leaving its other settings in place; tooling merging a removal override with pre-existing per-project overrides.
Understand the failure class
Background: Conflicting config options: "cannot be used together" — configuration validation errors across open-source libraries — this error's family across 162 libraries.
Related errors
- Cargo workspace member pattern
- failed to discover workspace providers
- workspace path is absolute; paths must be workspace-relative
- workspace project depends on unknown project
- workspace project cannot both add and remove dependency
AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17).
Data as JSON: /api/errors/56fbf655fd9ea2a4.
Report an issue: GitHub.
Appendix: source
Thrown at src/task/workspace.rs:1159
attach_suggestion(&mut task.suggestions.provenance.outputs);
}
if task.suggestions.cache.is_some() {
attach_suggestion(&mut task.suggestions.provenance.cache);
}
if task.suggestions.depends.is_some() {
attach_suggestion(&mut task.suggestions.provenance.depends);
}
}
fn validate_override(id: &ProjectId, config: &WorkspaceProjectOverride) -> Result<()> {
if config.remove
&& (config.root.is_some()
|| config.metadata.is_some()
|| config.depends.is_some()
|| !config.depends_add.is_empty()
|| !config.depends_remove.is_empty())
{
bail!("removed workspace project {id:?} cannot define other overrides");
}
if let Some(dependency) = config
.depends_add
.intersection(&config.depends_remove)
.next()
{
bail!("workspace project {id:?} cannot both add and remove dependency {dependency:?}");
}
Ok(())
}
fn parse_dependency_ids(
project_id: &ProjectId,
field: &str,
dependencies: &BTreeSet<String>,
) -> Result<BTreeSet<ProjectId>> {
dependencies
.iter()View on GitHub (pinned to 533346cc37)