astrid-runtime/astrid · error
release manifest identity is invalid
Error message
release manifest identity is invalid
What it means
Identity check in verify_release_manifest: the parsed release TOML's schema_version/kind/product/repository do not match the expected values, so the manifest is not a genuine release manifest for this product and the channel resolution aborts.
Solutions
- Re-download the release manifest from the trusted channel location
- Verify the BLAKE3 digest matched — a mismatch upstream usually triggers first
- Re-publish the manifest if the release pipeline emitted wrong identity fields
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at crates/astrid-cli/src/commands/update_channel.rs:577 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of astrid-runtime/astrid@affd8760f4 (2026-09-09).
Data as JSON: /api/errors/de6379974ce8d9dd.
Report an issue: GitHub.
Appendix: source
Thrown at crates/astrid-cli/src/commands/update_channel.rs:577
.all(|byte| byte.is_ascii_digit() || (b'a'..=b'f').contains(&byte))
{
return None;
}
Some(commit)
}
pub(super) fn verify_release_manifest(
bytes: &[u8],
pointer: &ChannelPointer,
) -> anyhow::Result<()> {
ensure!(
blake3::hash(bytes).to_hex().as_str() == pointer.release.metadata_blake3,
"immutable release manifest does not match the channel BLAKE3 digest"
);
let text = std::str::from_utf8(bytes).context("release manifest is not UTF-8")?;
let manifest: ReleaseManifest =
toml::from_str(text).context("release manifest is invalid TOML")?;
ensure!(
manifest.schema_version == 1
&& manifest.kind == "astrid-release"
&& manifest.product == PRODUCT
&& manifest.repository == REPOSITORY,
"release manifest identity is invalid"
);
ensure!(
manifest.version == pointer.release.version
&& manifest.tag == pointer.release.tag
&& manifest.source_commit == pointer.release.source_commit
&& manifest.release_workflow_identity == pointer.release.release_workflow_identity,
"release manifest does not match the signed channel pointer"
);
ensure!(
manifest.contracts.repository == CONTRACTS_REPOSITORY
&& is_commit(&manifest.contracts.commit),
"release manifest contracts identity is invalid"
);View on GitHub (pinned to affd8760f4)