pub fn spawn_fingerprint(
provider: &str,
task: &str,
provider_session_id: Option<&str>,
checkpoint_session_id: Option<&str>,
) -> StringExpand description
Canonical digest of a spawn’s compared argument set (ADR-142 §1, “Persistent process
record”): provider, task, provider_session_id, checkpoint_session_id, in that
key order, absent optionals omitted entirely rather than written as null. idempotency_key
is excluded — it is the replay lookup key, not compared content.
The key order is built by hand rather than through a serde_json::Map/Value::Object
because serde_json’s default map type sorts keys alphabetically (BTreeMap) unless the
crate-wide preserve_order feature is enabled elsewhere in the dependency graph; hand-
ordering keeps this digest’s byte layout independent of that feature flag. Digested with
BLAKE3 (khive_types::hash::Hash32), the same content-hash primitive khive-db uses for
content-addressed blob refs.