astrid-runtime/astrid · error
unsupported capsule provenance schema
Error message
unsupported capsule provenance schema {} / algorithm '{}' What it means
Fired by verify_records when a present provenance envelope declares a schema_version or algorithm other than the ones this build supports (SCHEMA_VERSION / ALGORITHM). The signature cannot be interpreted, so verification fails closed.
Solutions
- Rebuild the capsule with the currently supported provenance schema/algorithm
- Upgrade astrid to a version that understands the envelope's schema/algorithm
- Treat the capsule as untrusted unless re-signed by the publisher
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at crates/astrid-build/src/artifact.rs:365 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/8cd6fdbc75806e0b.
Report an issue: GitHub.
Appendix: source
Thrown at crates/astrid-build/src/artifact.rs:365
let mut message =
Vec::with_capacity(SIGNATURE_DOMAIN.len().saturating_add(content_digest.len()));
message.extend_from_slice(SIGNATURE_DOMAIN);
message.extend_from_slice(content_digest.as_bytes());
message
}
fn verify_records(
records: Vec<ContentRecord>,
envelope: Option<&[u8]>,
) -> anyhow::Result<ArtifactVerification> {
let content_digest = digest_records(records)?;
let Some(bytes) = envelope else {
return Ok(ArtifactVerification::Unsigned { content_digest });
};
let envelope: ProvenanceEnvelope =
serde_json::from_slice(bytes).context("invalid capsule provenance envelope")?;
if envelope.schema_version != SCHEMA_VERSION || envelope.algorithm != ALGORITHM {
bail!(
"unsupported capsule provenance schema {} / algorithm '{}'",
envelope.schema_version,
envelope.algorithm
);
}
if envelope.content_digest != content_digest {
bail!("capsule content digest does not match its signed provenance");
}
envelope
.signer
.verify(
&signature_message(&envelope.content_digest),
&envelope.signature,
)
.context("capsule provenance signature verification failed")?;
Ok(ArtifactVerification::Signed(VerifiedProvenance {
content_digest,
signer: envelope.signer,View on GitHub (pinned to affd8760f4)