# step: sink-evaluated predicates · wai-rs and sink_predicate_verify.py # order: 559 # features: sink_predicate # paths: wai/extensions/sink-predicate.md # independent: sink-predicate live needs=cryptography python3 -I live-conformance/sink_predicate_verify.py live-conformance/sink-predicate # # wai.delivery.sink_predicate (extensions/sink-predicate.md): the reference module's unit tests # (a predicate reads back and declares exactly the state classes it reads; a member by which its # evaluation would send something away, at any depth, refused; a slot filled from the sink's own # location and exposures, a withheld programme filling none and an unresolved sink not read as # outside; a cap counted over its window, at its edges, after the slot and on a sink that keeps no # exposures; a sink's log that breaches a cap, presents where a candidate is not shown or is not # the fill refused; a signature over the wrong bytes and a source the sink does not hold refused; # and the corpus reaching every stated outcome and failing a changed one) and # tests/sink_predicate.rs (vectors.json regenerates byte for byte from its fixed seeds, wai-rs # gives every case its stated outcome, and §6 lists exactly the reference's codes); and, in the # step of every independent verifier above, the corpus's second implementation, # sink_predicate_verify.py, written from the extension's text and sharing no code with wai-rs, # which reads documents with route_record_verify.py, region codes with rung_price_verify.py, # blackouts, their aggregation and audience-decision §5.5's territory with # audience_decision_verify.py and signatures with the shared _ed25519.py, writes the predicate's # rules, the evaluation and the log check, requires no evaluation to depend on the order of the # exposures or of a document's members, and each slot's fill, as a log, to conform, then requires # every mutated copy of the corpus to fail and drops each of its own checks in turn; run isolated # (-I). # # The paths this step brings to the workflow's trigger, and why: # wai/extensions/sink-predicate.md: tests/sink_predicate.rs requires §6 to list the reference's # codes, sink_predicate_verify.py reads it, and the registry's wire identifiers test reads §3.1. set -euo pipefail (cd wai-rs && cargo test --no-default-features --features "$WAI_FEATURES" --lib -- sink_predicate::) (cd wai-rs && cargo test --no-default-features --features "$WAI_FEATURES" --test sink_predicate)