# step: influence attribution · wai-rs and influence_verify.py # order: 490 # features: influence # paths: wai/extensions/influence.md # # wai.media.influence (extensions/influence.md): the reference module's unit tests (the # blend keeps its base and its references by weight, the makers' split is whole, an # estimate mixed into a share is told from another difference) and tests/influence.rs (the # committed corpus regenerates byte for byte from its fixed seeds and no other file is # there, wai-rs gives every case, statement and report its stated outcome, every reason of # §9 and every code it reuses refuses a vector, and §9 lists exactly the reference's codes); # then the corpus's second implementation, influence_verify.py, written from the # extension's text and sharing no code with wai-rs, which verifies each session with # contribution_verify.py, regenerates every conditioned step with that implementation's # arithmetic of the generator, reads usage statements with ai_usage_verify.py and # statements with settlement_verify.py, computes every step map, share, attribution line # and report itself, requires every mutated copy of the corpus to fail, and drops each of # its own checks in turn and requires the corpus to catch the weakened verifier; standard # library only, run isolated (-I). # # The paths this step brings to the workflow's trigger, and why: # wai/extensions/influence.md: tests/influence.rs requires this extension's §9 to list the codes # the reference adds, influence_verify.py reads that table, and the registry's wire identifiers # test reads its sections. set -euo pipefail (cd wai-rs && cargo test --no-default-features --features "$WAI_FEATURES" --lib influence::) (cd wai-rs && cargo test --no-default-features --features "$WAI_FEATURES" --test influence) python3 -I live-conformance/influence_verify.py live-conformance/influence