astrid-runtime/astrid · error · anyhow::Error
release metadata does not support target
Error message
{label} release metadata does not support target '{target}' What it means
The requested target triple is not part of the expected target set for this release extension kind. verify_release_extension checks membership in expected_targets before parsing the extension metadata, so unsupported platform requests fail fast.
Solutions
- Use a target triple listed in the extension's expected_targets
- Check whether the correct extension kind (musl vs windows) applies to your platform
- Fix the release metadata so it declares support for the target
- Choose a different release/channel that supports the target
Defensive patterns
Strategy: validation
Validate before calling
if !expected_targets.contains(&target) {
eprintln!("{label} does not support {target}; allowed: {expected_targets:?}");
} Type guard
fn extension_supports(expected: &[&str], target: &str) -> bool {
expected.contains(&target)
} Try / catch
if let Err(e) = verify_release_extension(&bytes, &pointer, target, kind, expected, label) {
eprintln!("unsupported target for this extension: {e}");
} Prevention
- Match extension kind to platform (musl for musl triples, windows for windows)
- Query supported targets from metadata before download
- Keep release metadata target lists in sync with channels
When it happens
Trigger: verify_musl_extension or verify_windows_extension (via resolve_target_blake3) called with a target triple not present in expected_targets — e.g. requesting a musl extension for a non-musl triple, or a target the release metadata never declared.
Common situations: Requesting a windows extension for a linux triple; a target added to the channel but not to the extension's allowed list; misconfigured release metadata from the publisher.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- a corpus produced no chunks
- a representation record must cover at least one logical…
- absent migration source has a digest
- alice
- Astrid volume is not a regular file
AI-assisted analysis of astrid-runtime/astrid@affd8760f4 (2026-09-09).
Data as JSON: /api/errors/0388b86dbf1b06a7.
Report an issue: GitHub.
Appendix: source
Thrown at crates/astrid-cli/src/commands/update_channel.rs:648
pointer,
target,
"astrid-release-windows-extension",
WINDOWS_TARGETS,
"Windows",
)
}
#[allow(clippy::too_many_arguments)]
fn verify_release_extension(
bytes: &[u8],
legacy_manifest_bytes: &[u8],
pointer: &ChannelPointer,
target: &str,
expected_kind: &str,
expected_targets: &[&str],
label: &str,
) -> anyhow::Result<String> {
ensure!(
expected_targets.contains(&target),
"{label} release metadata does not support target '{target}'"
);
let text = std::str::from_utf8(bytes)
.with_context(|| format!("{label} release metadata is not UTF-8"))?;
let extension: ReleaseExtension = toml::from_str(text)
.with_context(|| format!("{label} release metadata is invalid TOML"))?;
ensure!(
extension.schema_version == 1
&& extension.kind == expected_kind
&& extension.product == PRODUCT
&& extension.repository == REPOSITORY,
"{label} release metadata identity is invalid"
);
canonical_version(&extension.version)?;
ensure!(
extension.version == pointer.release.version
&& extension.tag == pointer.release.tagView on GitHub (pinned to affd8760f4)