Skip to main content

compose_root

Function compose_root 

Source
pub fn compose_root(
    artifact: &str,
    control: Option<&str>,
    intent: &str,
    previous: Option<&str>,
) -> String
Expand description

Compose the three-pillar BLAKE3 → hex composed_root from the four pillars. control and previous are Option<&str> because the receipt-envelope + attestation surfaces both treat an absent slot as “no control step” / “no chain predecessor”, encoded on the wire as either an empty string (the receipt-envelope control_hash: "" posture) or an absent slot (the attestation previous_root: None posture). The composer normalizes both onto the same “empty-bytes chunk between the \n separators” wire shape — matching every pre-lift consumer byte-for-byte.

A byte-identity pin at [tests::compose_root_matches_pre_lift_ hand_authored_chain] fixes the composition against the hand-authored chain both pre-lift consumers walked, so a regression at the composer’s body (a reordered pillar, a swapped separator, a missing hex::encode) surfaces at ONE substrate pin rather than as silent invalidation of every downstream composed_root read.