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

  1. Delete the leftover root/metadata/depends/depends_add/depends_remove fields from the removed project's entry
  2. Keep only the removal marker on the removed project entry
  3. 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

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


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)