{"record":{"id":"84fd41ff2528c48a","repo":"jdx/mise","slug":"brew-cask-unsupported-kind-run-guard-platfor-84fd41","errorCode":null,"errorMessage":"brew-cask:{}: unsupported {kind} run guard platform {}","messagePattern":"brew-cask:(.+?): unsupported (.+?) run guard platform (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/system/packages/brew/cask/artifacts.rs","lineNumber":1002,"sourceCode":"pub(super) fn parse_flight_guard(cask: &Cask, kind: &str, value: &Value) -> Result<FlightGuard> {\n    let object = value.as_object().ok_or_else(|| {\n        eyre!(\n            \"brew-cask:{}: unsupported {kind} run guard metadata format\",\n            cask.token\n        )\n    })?;\n    reject_unsupported_flight_fields(\n        cask,\n        kind,\n        \"run guard\",\n        object,\n        &[\"condition\", \"value\", \"base\", \"path\", \"id\"],\n    )?;\n    match object.get(\"condition\").and_then(Value::as_str) {\n        Some(\"on\") => match object.get(\"value\").and_then(Value::as_str) {\n            Some(\"macos\") => Ok(FlightGuard::OnMacos),\n            Some(\"linux\") => Ok(FlightGuard::OnLinux),\n            Some(value) => bail!(\n                \"brew-cask:{}: unsupported {kind} run guard platform {}\",\n                cask.token,\n                value\n            ),\n            None => bail!(\n                \"brew-cask:{}: unsupported {kind} run guard platform\",\n                cask.token\n            ),\n        },\n        Some(condition @ (\"if_exists\" | \"unless_exists\")) => {\n            let path = parse_context_flight_path(cask, kind, \"run guard\", object)?;\n            if condition == \"if_exists\" {\n                Ok(FlightGuard::IfExists(path))\n            } else {\n                Ok(FlightGuard::UnlessExists(path))\n            }\n        }\n        Some(condition) => bail!(","sourceCodeStart":984,"sourceCodeEnd":1020,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/system/packages/brew/cask/artifacts.rs#L984-L1020","documentation":"A flight guard in a cask artifact used the \"on\" condition with a \"value\" naming a platform the parser does not know. Only \"macos\" and \"linux\" are accepted platform values for guards. Unknown platform strings are rejected rather than silently evaluating to false.","triggerScenarios":"parse_flight_guard (via parse_flight_guards) parses a guard like {\"condition\": \"on\", \"value\": \"windows\"} or {\"condition\": \"on\", \"value\": \"arm64\"}; any value other than \"macos\"/\"linux\" fails.","commonSituations":"Porting casks written for macOS-only Homebrew that guard on \"intel\"/\"arm\"/arch strings, typos like \"darwin\" or \"MacOS\", or attempting to guard on CPU architecture which this guard does not support.","solutions":["Change the guard value to \"macos\" or \"linux\".","If the intent was architecture gating, use a different guard/condition mechanism — this guard only supports OS platform.","Remove the guard if the step should run unconditionally."],"exampleFix":"// before\n{\"condition\": \"on\", \"value\": \"darwin\"}\n// after\n{\"condition\": \"on\", \"value\": \"macos\"}","handlingStrategy":"validation","validationCode":"function validateGuardPlatform(guard) {\n  if (guard?.condition === \"on\" && ![\"macos\", \"linux\"].includes(guard.value)) {\n    throw new Error(`unsupported run guard platform: ${guard.value}`);\n  }\n}","typeGuard":"function isSupportedPlatformGuard(g) {\n  return g?.condition === \"on\" && typeof g.value === \"string\"\n    && [\"macos\", \"linux\"].includes(g.value);\n}","tryCatchPattern":"try {\n  parseFlightArtifact(caskJson);\n} catch (err) {\n  if (String(err).includes(\"run guard platform\")) {\n    console.error('Guard platform must be \"macos\" or \"linux\"');\n  }\n  throw err;\n}","preventionTips":["Remember guards gate on OS only — do not encode arch or version in \"on\" guards.","Use lowercase platform strings exactly: macos, linux.","Validate guards against a small enum table when generating cask JSON."],"tags":["brew","cask","config-validation","unsupported-value"],"backgroundTag":"invalid-enum-value","analyzedSha":"533346cc374382b41ec5ff70536252b2e96e725c","analyzedAt":"2026-09-17T13:35:38.149Z","contentChangedAt":"2026-09-17T13:35:38.149Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}