{"record":{"id":"b4b99172b34166d7","repo":"jdx/mise","slug":"unsupported-architecture-supported-x64-arm","errorCode":null,"errorMessage":"Unsupported architecture '{}'. Supported: x64, arm64, x86, loongarch64, riscv64","messagePattern":"Unsupported architecture '(.+?)'\\. Supported: x64, arm64, x86, loongarch64, riscv64","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/platform.rs","lineNumber":88,"sourceCode":"                _ => None,\n            })\n    }\n\n    /// Validate that this platform is supported\n    pub(crate) fn validate(&self) -> Result<()> {\n        // Validate OS\n        match self.os.as_str() {\n            \"linux\" | \"macos\" | \"windows\" | \"android\" => {}\n            _ => bail!(\n                \"Unsupported OS '{}'. Supported: linux, macos, windows, android\",\n                self.os\n            ),\n        }\n\n        // Validate architecture\n        match self.arch.as_str() {\n            \"x64\" | \"arm64\" | \"x86\" | \"loongarch64\" | \"riscv64\" => {}\n            _ => bail!(\n                \"Unsupported architecture '{}'. Supported: x64, arm64, x86, loongarch64, riscv64\",\n                self.arch\n            ),\n        }\n\n        // Validate qualifier if present\n        if let Some(qualifier) = &self.qualifier {\n            match qualifier.as_str() {\n                \"gnu\" | \"glibc\" | \"musl\" | \"msvc\" | \"baseline\" | \"musl-baseline\" => {}\n                _ => bail!(\n                    \"Unsupported qualifier '{}'. Supported: gnu, glibc, musl, msvc, baseline, musl-baseline\",\n                    qualifier\n                ),\n            }\n        }\n\n        Ok(())\n    }","sourceCodeStart":70,"sourceCodeEnd":106,"githubUrl":"https://github.com/jdx/mise/blob/6f52dcdf99e282ef7a7db68c81301fa4618d0f79/src/platform.rs#L70-L106","documentation":"Platform::validate rejects architectures outside {x64, arm64, x86, loongarch64, riscv64}. The trap is naming conventions: mise says x64 where Go says amd64 and Rust says x86_64, arm64 not aarch64, and 32-bit Intel is x86. It fires when parsing `mise lock -p` values or lockfile_platforms entries.","triggerScenarios":"`mise lock -p linux-amd64`, `-p linux-aarch64`, `-p macos-x86_64`, or `-p linux-i686` — the arch segment is not in the allowlist.","commonSituations":"Copying target triples (x86_64-unknown-linux-gnu) or `uname -m` output (aarch64, amd64) directly into mise config; CI runners labeled aarch64 vs arm64 inconsistently.","solutions":["Rename to mise's vocabulary: amd64 and x86_64 become x64; aarch64 and arm become arm64; i386/i686 become x86.","Keep loongarch64 and riscv64 spelled exactly as listed.","Re-run `mise lock -p` with corrected strings to confirm."],"exampleFix":"# before\nmise lock -p linux-amd64 -p linux-aarch64\n\n# after\nmise lock -p linux-x64 -p linux-arm64","handlingStrategy":"validation","validationCode":"arch=\"$(cut -d- -f2 <<<\"$p\")\"\ncase \"$arch\" in\n  x64|arm64|x86|loongarch64|riscv64) ;;\n  *) echo \"unsupported arch: $arch (amd64/x86_64 -> x64, aarch64 -> arm64)\"; exit 2;;\nesac","typeGuard":"fn supported_arch(s: &str) -> bool {\n    matches!(s, \"x64\" | \"arm64\" | \"x86\" | \"loongarch64\" | \"riscv64\")\n}","tryCatchPattern":null,"preventionTips":["Centralize a mapping (amd64→x64, x86_64→x64, aarch64→arm64) wherever CI generates platform strings.","Never paste `uname -m` or Rust target triples directly into mise config.","Exercise `mise lock` on each host arch in CI so naming slips fail early."],"tags":["platform","validation","architecture","amd64","lockfile"],"backgroundTag":"unsupported-platform","analyzedSha":"6f52dcdf99e282ef7a7db68c81301fa4618d0f79","analyzedAt":"2026-08-22T10:14:23.840Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}