{"record":{"id":"c898ad1f46c1bd52","repo":"Hmbown/CodeWhale","slug":"invalid-verbosity-v-expected-normal-or-concis","errorCode":null,"errorMessage":"Invalid verbosity '{v}': expected normal or concise.","messagePattern":"Invalid verbosity '(.+?)': expected normal or concise\\.","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/tui/src/config.rs","lineNumber":4429,"sourceCode":"                \"Invalid default_text_model '{model}' for provider '{}': expected auto or a model ID this provider serves{hint}.\",\n                provider.as_str()\n            );\n        }\n        if let Some(policy) = self.approval_policy.as_deref() {\n            let normalized = policy.trim().to_ascii_lowercase();\n            if !matches!(\n                normalized.as_str(),\n                \"on-request\" | \"untrusted\" | \"never\" | \"auto\" | \"suggest\"\n            ) {\n                anyhow::bail!(\n                    \"Invalid approval_policy '{policy}': expected on-request, untrusted, never, auto, or suggest.\"\n                );\n            }\n        }\n        if let Some(v) = self.verbosity.as_deref() {\n            let normalized = v.trim().to_ascii_lowercase();\n            if !matches!(normalized.as_str(), \"normal\" | \"concise\") {\n                anyhow::bail!(\"Invalid verbosity '{v}': expected normal or concise.\");\n            }\n        }\n        if let Some(mode) = self.sandbox_mode.as_deref() {\n            let normalized = mode.trim().to_ascii_lowercase();\n            if !matches!(\n                normalized.as_str(),\n                \"read-only\" | \"workspace-write\" | \"danger-full-access\" | \"external-sandbox\"\n            ) {\n                anyhow::bail!(\n                    \"Invalid sandbox_mode '{mode}': expected read-only, workspace-write, danger-full-access, or external-sandbox.\"\n                );\n            }\n        }\n        if let Some(tui) = &self.tui\n            && let Some(mode) = tui.alternate_screen.as_deref()\n        {\n            let mode = mode.to_ascii_lowercase();\n            if !matches!(mode.as_str(), \"auto\" | \"always\" | \"never\") {","sourceCodeStart":4411,"sourceCodeEnd":4447,"githubUrl":"https://github.com/Hmbown/CodeWhale/blob/8880682c63083a91624de936797efa3ce9e498fd/crates/tui/src/config.rs#L4411-L4447","documentation":"Config::validate() accepts only 'normal' or 'concise' for the verbosity setting after trim + ASCII lowercase normalization. Any other value aborts validation. This controls response verbosity, not log level, so values like 'debug' or 'quiet' are rejected.","triggerScenarios":"Setting verbosity = \"verbose\", \"quiet\", or \"terse\" in config.toml; carrying over a log-level-style value from another tool.","commonSituations":"Users assume verbosity is a log filter and try 'debug'/'trace'; config snippets shared online use invalid synonyms.","solutions":["Set verbosity = \"normal\" or verbosity = \"concise\".","Delete the key to use the default.","If you wanted log filtering, use the logging-specific configuration instead of verbosity."],"exampleFix":"# before\nverbosity = \"verbose\"\n\n# after\nverbosity = \"concise\"","handlingStrategy":"validation","validationCode":"fn verbosity_is_valid(raw: &str) -> bool {\n    matches!(raw.trim().to_ascii_lowercase().as_str(), \"normal\" | \"concise\")\n}\n\nif let Some(v) = &config.verbosity {\n    anyhow::ensure!(verbosity_is_valid(v), \"verbosity must be normal or concise\");\n}","typeGuard":"fn is_valid_verbosity(raw: &str) -> bool {\n    matches!(raw.trim().to_ascii_lowercase().as_str(), \"normal\" | \"concise\")\n}","tryCatchPattern":"match config.validate() {\n    Err(e) if e.to_string().starts_with(\"Invalid verbosity\") => {\n        config.verbosity = None; // drop to default instead of failing\n        config.validate()?\n    }\n    other => other,\n}","preventionTips":["Remember verbosity is output style (normal/concise), not a log level.","Prefer omitting the key unless you specifically need concise output."],"tags":["rust","config","toml","validation","verbosity"],"backgroundTag":null,"analyzedSha":"8880682c63083a91624de936797efa3ce9e498fd","analyzedAt":"2026-08-16T11:31:27.956Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}