zed-industries/zed · error · ValueError

unknown SWE-Atlas part '{part}' (valid: {valid})

Error message

unknown SWE-Atlas part '{part}' (valid: {valid})

What it means

Raised by config.canonical_part() when a SWE-Atlas part name, after strip().lower(), is not one of "qna", "rf", "tw". It is reached through common.parse_parts(), which the swe-atlas command uses to expand the --parts flag; the literal value "all" expands to all three parts before this check. Because normalization happens first, only genuinely different spellings fail — whitespace and case are forgiven.

Source

Thrown at crates/eval_cli/zed_eval/config.py:160

        "harbor_version": HARBOR_VERSION,
        "modal_client_version": MODAL_VERSION,
    }


def get_judge(name: str) -> JudgeConfig:
    try:
        return JUDGES[name]
    except KeyError as error:
        valid = ", ".join(sorted(JUDGES))
        raise ValueError(f"unknown judge preset '{name}' (valid: {valid})") from error


def canonical_part(part: str) -> str:
    normalized = part.strip().lower()
    if normalized in ("qna", "rf", "tw"):
        return normalized
    valid = ", ".join(("qna", "rf", "tw"))
    raise ValueError(f"unknown SWE-Atlas part '{part}' (valid: {valid})")


def resolve_model_preset(model: str) -> str:
    return MODEL_PRESETS.get(model, model)

View on GitHub (pinned to bc538def45)

Solutions

  1. Use only qna, rf, tw (any case) or all: --parts rf,qna or --parts all.
  2. If you meant a whole benchmark, pass the benchmark id as a selector (e.g. zed-eval run swe-atlas-rf) instead of --parts.
  3. Update eval_cli if a newly announced part should be supported, since the valid set is hard-coded in config.canonical_part.

Example fix

# before
zed-eval swe-atlas --parts code,tests
# -> ValueError: unknown SWE-Atlas part 'code' (valid: qna, rf, tw)

# after
zed-eval swe-atlas --parts qna,rf,tw   # or --parts all
Defensive patterns

Strategy: validation

Validate before calling

from zed_eval.common import parse_parts

try:
    parts = parse_parts([raw_parts])
except ValueError as error:
    raise SystemExit(str(error))
if not parts:
    raise SystemExit("pass --parts with qna/rf/tw (or all)")

Type guard

def is_valid_part(part: str) -> bool:
    return part.strip().lower() in {"qna", "rf", "tw"}

Try / catch

try:
    parts = resolve_suite_parts(args)
except ValueError as error:
    raise SystemExit(str(error))  # suggests --parts rf,qna or --parts all

Prevention

When it happens

Trigger: Running zed-eval swe-atlas --parts with a typo (qn, tww, ref) or a full benchmark id instead of the part alias (--parts swe-atlas-rf); passing --parts all,rf works, but --parts alles or any other unknown token raises from parse_parts -> canonical_part.

Common situations: Confusing part aliases (qna/rf/tw) with benchmark ids (swe-atlas-qna/swe-atlas-rf/swe-atlas-tw); autocomplete typos in shell scripts; docs drift after a new SWE-Atlas part was added but the local CLI is older (so the part is unknown to this version).

Related errors


AI-assisted analysis of zed-industries/zed@bc538def45 (2026-08-16). Data as JSON: /api/errors/af99510f297d8c6b. Report an issue: GitHub.