{"record":{"id":"0d09e2d871e464e3","repo":"zed-industries/zed","slug":"unknown-teacher-backend-s-valid-options-sonn","errorCode":null,"errorMessage":"unknown teacher backend `{s}`. Valid options: sonnet45, sonnet46, gpt52, gpt54, gpt55","messagePattern":"unknown teacher backend `(.+?)`\\. Valid options: sonnet45, sonnet46, gpt52, gpt54, gpt55","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"crates/edit_prediction_cli/src/main.rs","lineNumber":429,"sourceCode":"            TeacherBackend::Gpt52 => write!(f, \"gpt52\"),\n            TeacherBackend::Gpt54 => write!(f, \"gpt54\"),\n            TeacherBackend::Gpt55 => write!(f, \"gpt55\"),\n        }\n    }\n}\n\nimpl std::str::FromStr for TeacherBackend {\n    type Err = anyhow::Error;\n\n    fn from_str(s: &str) -> Result<Self, Self::Err> {\n        match s.to_lowercase().as_str() {\n            \"sonnet45\" | \"sonnet\" | \"claude\" => Ok(TeacherBackend::Sonnet45),\n            \"sonnet46\" => Ok(TeacherBackend::Sonnet46),\n            \"gpt52\" => Ok(TeacherBackend::Gpt52),\n            \"gpt54\" | \"gpt\" | \"openai\" => Ok(TeacherBackend::Gpt54),\n            \"gpt55\" => Ok(TeacherBackend::Gpt55),\n            \"v0114180editableregion\" => Ok(TeacherBackend::Sonnet45),\n            _ => anyhow::bail!(\n                \"unknown teacher backend `{s}`. Valid options: sonnet45, sonnet46, gpt52, gpt54, gpt55\"\n            ),\n        }\n    }\n}\n\nimpl TeacherBackend {\n    pub fn model_name(&self) -> &'static str {\n        match self {\n            TeacherBackend::Sonnet45 => \"claude-sonnet-4-5\",\n            TeacherBackend::Sonnet46 => \"claude-sonnet-4-6\",\n            TeacherBackend::Gpt52 => \"gpt-5.2\",\n            TeacherBackend::Gpt54 => \"gpt-5.4\",\n            TeacherBackend::Gpt55 => \"gpt-5.5\",\n        }\n    }\n}\n","sourceCodeStart":411,"sourceCodeEnd":447,"githubUrl":"https://github.com/zed-industries/zed/blob/f4178619acd0d47ea1f76a2025c42962c6d6638c/crates/edit_prediction_cli/src/main.rs#L411-L447","documentation":"Parse failure for the TeacherBackend type, which is parsed from a CLI string via FromStr. The match is case-insensitive (input is lowercased) and accepts aliases: 'sonnet45'/'sonnet'/'claude' -> Sonnet45, 'sonnet46', 'gpt52', 'gpt54'/'gpt'/'openai' -> Gpt54, 'gpt55', plus the legacy alias 'v0114180editableregion'. Anything else bails with this message listing the canonical names.","triggerScenarios":"Passing a teacher backend string that is not in the accepted set, e.g. --teacher-backend gpt53, 'Sonnet 4.6' (space), or a model id like 'claude-sonnet-4-6' — the parser wants the short alias 'sonnet46', not the full model name. Note the error text lists canonical options but not the accepted aliases.","commonSituations":"Version skew: scripts written when only sonnet45/gpt52 existed, then a new model ships and users guess a name; copying the full model id (claude-sonnet-4-5) from the API instead of the alias; typos after renaming models.","solutions":["Use one of the canonical names: sonnet45, sonnet46, gpt52, gpt54, gpt55","Aliases also work: sonnet, claude (= sonnet45), gpt, openai (= gpt54)","Case does not matter (input is lowercased) but spacing and hyphens do — use the bare alias without 'claude-'/'gpt-' prefixes"],"exampleFix":"# before\n--provider teacher:claude-sonnet-4-6\n\n# after\n--provider teacher:sonnet46","handlingStrategy":"validation","validationCode":"const VALID_BACKENDS: &[&str] = &[\"sonnet45\", \"sonnet\", \"claude\", \"sonnet46\", \"gpt52\", \"gpt54\", \"gpt\", \"openai\", \"gpt55\", \"v0114180editableregion\"];\n\nfn backend_is_valid(s: &str) -> bool {\n    VALID_BACKENDS.contains(&s.to_lowercase().as_str())\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use the short aliases (sonnet46, gpt55), never full model ids like claude-sonnet-4-6","Validate backend strings against the FromStr list before launching long training/eval runs","Pin provider/backend names in scripts when upgrading the CLI, since valid names change with model releases"],"tags":["rust","cli","enum-parsing","edit-prediction"],"backgroundTag":"invalid-argument-value","analyzedSha":"f4178619acd0d47ea1f76a2025c42962c6d6638c","analyzedAt":"2026-08-20T19:29:52.058Z","schemaVersion":2},"datasetVersion":"2026-08-26T04:18:47.238Z"}