{"record":{"id":"709fb35f24b4dc2d","repo":"xai-org/grok-build","slug":"unsupported-release-channel-current-targ","errorCode":null,"errorMessage":"Unsupported release channel '{}' (current={}, target={}). Supported channels: stable, alpha, enterprise. Use --stable or --alpha to override, or set [cli] channel in config.toml.","messagePattern":"Unsupported release channel '(.+?)' \\(current=(.+?), target=(.+?)\\)\\. Supported channels: stable, alpha, enterprise\\. Use --stable or --alpha to override, or set \\[cli\\] channel in config\\.toml\\.","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/codegen/xai-grok-update/src/auto_update.rs","lineNumber":2837,"sourceCode":"                } else {\n                    let stable_ptr = try_fetch_stable_pointer().await;\n                    write_version_cache(&install_target, stable_ptr.as_deref()).await;\n                    eprintln!(\"Already up to date ({}).\", effective_current);\n                    // Retry if a prior sync failed.\n                    refresh_deployment_config().await;\n                    // The target is on disk even though this call installed\n                    // nothing — report it so the caller still signals stale\n                    // leaders to relaunch onto it (signalling is directional\n                    // and skips leaders already at/after this version).\n                    return Ok(Some(install_target));\n                }\n            }\n            None => {\n                // Distinguish parse failure from unsupported channel.\n                let parse_ok = semver::Version::parse(&effective_current).is_ok()\n                    && semver::Version::parse(&install_target).is_ok();\n                if parse_ok {\n                    anyhow::bail!(\n                        \"Unsupported release channel '{}' (current={}, target={}). \\\n                         Supported channels: stable, alpha, enterprise. \\\n                         Use --stable or --alpha to override, or set [cli] channel in config.toml.\",\n                        update_config.channel,\n                        effective_current,\n                        install_target\n                    );\n                } else {\n                    anyhow::bail!(\n                        \"Failed to parse versions (current={}, target={})\",\n                        effective_current,\n                        install_target\n                    );\n                }\n            }\n        }\n    }\n","sourceCodeStart":2819,"sourceCodeEnd":2855,"githubUrl":"https://github.com/xai-org/grok-build/blob/bc7f02eddd3d84085849dc19ed216f11c23b0571/crates/codegen/xai-grok-update/src/auto_update.rs#L2819-L2855","documentation":"The updater resolves a release-channel comparison and could not find channel compatibility between the effective current version and the install target, even though both parse as valid semver. It distinguishes this from a parse failure and bails naming the configured channel (update_config.channel) plus the supported set: stable, alpha, enterprise.","triggerScenarios":"semver::Version::parse succeeds for both effective_current and install_target, but the channel derived from them (or the channel set in [cli] channel of config.toml) is not one of stable/alpha/enterprise — e.g. channel is 'beta', 'dev', 'nightly', empty, or a typo.","commonSituations":"Typo'd channel in config.toml ([cli] channel = \"stble\"); a channel value copied from another tool; enterprise-managed channel renamed; user hand-editing config and using an unsupported channel name.","solutions":["Fix [cli] channel in config.toml to one of: stable, alpha, enterprise","Re-run with the --stable or --alpha flag to override the configured channel for this invocation","Check for typos or stray whitespace in the channel string in config.toml","If the channel is set by enterprise management, ask the administrator to update the deployment config to a supported channel"],"exampleFix":"// config.toml (before)\n[cli]\nchannel = \"beta\"   // unsupported -> bails\n// after\n[cli]\nchannel = \"stable\"  // or \"alpha\" / \"enterprise\"\n# or run: grok-update install --stable","handlingStrategy":"validation","validationCode":"const SUPPORTED_CHANNELS: [&str; 3] = [\"stable\", \"alpha\", \"enterprise\"];\nlet channel = config[\"cli\"][\"channel\"].as_str().unwrap_or(\"stable\");\nif !SUPPORTED_CHANNELS.contains(&channel) {\n    eprintln!(\"Channel '{channel}' unsupported; use one of stable/alpha/enterprise\");\n    std::process::exit(2);\n}","typeGuard":"fn is_supported_channel(c: &str) -> bool {\n    matches!(c, \"stable\" | \"alpha\" | \"enterprise\")\n}","tryCatchPattern":"match run_update(None).await {\n    Err(e) if e.to_string().starts_with(\"Unsupported release channel\") => {\n        eprintln!(\"{e}\"); // then retry with an explicit override\n        run_with_override(Channel::Stable).await\n    }\n    other => other.map(|_| ())?,\n}","preventionTips":["Always set [cli] channel to exactly stable, alpha, or enterprise in config.toml","Use --stable/--alpha flags rather than hand-editing channel config for one-off runs","Add a config lint/CI check validating the channel value on commit","Trim whitespace and lowercase channel values when loading config"],"tags":["release-channel","config","semver"],"backgroundTag":"unsupported-release-channel","analyzedSha":"bc7f02eddd3d84085849dc19ed216f11c23b0571","analyzedAt":"2026-08-31T04:59:42.031Z","schemaVersion":2},"datasetVersion":"2026-08-31T09:17:48.483Z"}