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.