# step: synthesis provenance · wai-rs and synthesis_verify.py # order: 290 # features: synthesis # paths: wai/extensions/synthesis.md # independent: synthesis live python3 -I live-conformance/synthesis_verify.py live-conformance/synthesis # # wai.media.synthesis (extensions/synthesis.md): the reference module's unit tests (the # pinned derivations by their rules, the class lattice, a generator's envelope) and # tests/synthesis.rs (the committed corpus regenerates byte for byte from its fixed seeds # and no other file is there, wai-rs gives every case its stated outcome and statements, # §12 lists exactly the reference's codes, each of which the corpus gives, and §10.2's # table pins exactly the reference's icons); and, in the step of every independent # verifier above, the corpus's second implementation, # synthesis_verify.py, written from the extension's text and sharing no code with wai-rs, # which runs the pinned derivations and writes each digital source type and C2PA # statement itself, verifies each room with live_rooms_verify.py and every record with # WAI's strict Ed25519 rule and BLAKE3 from claim-conformance, reads the extension's icon # and reason tables, and requires every mutated copy of the corpus to fail; standard # library only, run isolated (-I). # # The paths this step brings to the workflow's trigger, and why: # wai/extensions/synthesis.md: tests/synthesis.rs requires this extension's §12 to list the codes # the reference reports and its §10.2 table to pin the reference's icons, synthesis_verify.py # reads both, tests/synthesis_mark.rs and synthesis_mark_verify.py read its scheme's definition, # generator, figures, table and claims (§7.4 to §7.5.8), 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 synthesis::) (cd wai-rs && cargo test --no-default-features --features "$WAI_FEATURES" --test synthesis)