gleamunison/turnstile

The evidence turnstile: a pure gate between “code exists” and “code ships”. Every definition carries a content hash; every test run attests evidence onto that hash. check answers one question: which of these hashes have a passing Test attestation? Publishing composes this gate with a manifest write — no evidence, no entry.

Values

pub fn check(
  adapter: storage.StorageAdapter,
  defs: List(#(String, String)),
) -> Result(List(String), List(String))

Check #(name, subject_hex) pairs against the evidence store. Ok(all names) when every gated def has a passing Test attestation; Error(just the unevidenced names) otherwise. test_ defs produce evidence, they do not consume it — gating them would be a chicken-and-egg loop, so they pass by construction.

✨ Search Document