{"record":{"id":"af99510f297d8c6b","repo":"zed-industries/zed","slug":"unknown-swe-atlas-part-part-valid-valid","errorCode":null,"errorMessage":"unknown SWE-Atlas part '{part}' (valid: {valid})","messagePattern":"unknown SWE-Atlas part '(.+?)' \\(valid: (.+?)\\)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"crates/eval_cli/zed_eval/config.py","lineNumber":160,"sourceCode":"        \"harbor_version\": HARBOR_VERSION,\n        \"modal_client_version\": MODAL_VERSION,\n    }\n\n\ndef get_judge(name: str) -> JudgeConfig:\n    try:\n        return JUDGES[name]\n    except KeyError as error:\n        valid = \", \".join(sorted(JUDGES))\n        raise ValueError(f\"unknown judge preset '{name}' (valid: {valid})\") from error\n\n\ndef canonical_part(part: str) -> str:\n    normalized = part.strip().lower()\n    if normalized in (\"qna\", \"rf\", \"tw\"):\n        return normalized\n    valid = \", \".join((\"qna\", \"rf\", \"tw\"))\n    raise ValueError(f\"unknown SWE-Atlas part '{part}' (valid: {valid})\")\n\n\ndef resolve_model_preset(model: str) -> str:\n    return MODEL_PRESETS.get(model, model)\n","sourceCodeStart":142,"sourceCodeEnd":165,"githubUrl":"https://github.com/zed-industries/zed/blob/bc538def4545534201bbfcac4e95ac34ea6501b6/crates/eval_cli/zed_eval/config.py#L142-L165","documentation":"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.","triggerScenarios":"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.","commonSituations":"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).","solutions":["Use only qna, rf, tw (any case) or all: --parts rf,qna or --parts all.","If you meant a whole benchmark, pass the benchmark id as a selector (e.g. zed-eval run swe-atlas-rf) instead of --parts.","Update eval_cli if a newly announced part should be supported, since the valid set is hard-coded in config.canonical_part."],"exampleFix":"# before\nzed-eval swe-atlas --parts code,tests\n# -> ValueError: unknown SWE-Atlas part 'code' (valid: qna, rf, tw)\n\n# after\nzed-eval swe-atlas --parts qna,rf,tw   # or --parts all","handlingStrategy":"validation","validationCode":"from zed_eval.common import parse_parts\n\ntry:\n    parts = parse_parts([raw_parts])\nexcept ValueError as error:\n    raise SystemExit(str(error))\nif not parts:\n    raise SystemExit(\"pass --parts with qna/rf/tw (or all)\")","typeGuard":"def is_valid_part(part: str) -> bool:\n    return part.strip().lower() in {\"qna\", \"rf\", \"tw\"}","tryCatchPattern":"try:\n    parts = resolve_suite_parts(args)\nexcept ValueError as error:\n    raise SystemExit(str(error))  # suggests --parts rf,qna or --parts all","preventionTips":["Default scripts to --parts all when the full suite is intended.","Remember parts are the short aliases (qna/rf/tw), not benchmark ids.","Case and surrounding whitespace are safe (normalized); anything else fails."],"tags":["cli","validation","swe-atlas"],"backgroundTag":null,"analyzedSha":"bc538def4545534201bbfcac4e95ac34ea6501b6","analyzedAt":"2026-08-16T07:30:46.435Z","schemaVersion":2},"datasetVersion":"2026-08-16T08:17:34.114Z"}