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

  1. Use a target triple listed in the extension's expected_targets
  2. Check whether the correct extension kind (musl vs windows) applies to your platform
  3. Fix the release metadata so it declares support for the target
  4. 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

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


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.tag

View on GitHub (pinned to affd8760f4)