# step: synthesis watermark · wai-rs and synthesis_mark_verify.py # order: 300 # features: synthesis_mark # release-features: synthesis_mark # paths: wai/extensions/synthesis.md # independent: synthesis-mark live python3 -I live-conformance/synthesis_mark_verify.py live-conformance/synthesis-mark # # The registered watermark schemes wai-mark:tent64 and wai-mark:tent64s # (extensions/synthesis.md §7.4 to §7.9): the reference's unit tests (the code corrects 29 # errors and its generator is the definition's, the layouts, the embedding and the # detector in every orientation, the tiled detector's exact autocorrelation and its # recovery from a crop and a rotation, the battery's resampling, rotation and keyframe), # then tests/synthesis_mark.rs in release, since it embeds and attacks every picture of # the measurement sets under both schemes (every file of live-conformance/synthesis-mark/ # regenerates byte for byte, both measurements among them, and no other file is there; # every embedding, detection and case gets what it states; the extension's definitions, # generator polynomial and shuffles are the reference's; §7.5.8 and §7.9.7 claim only # attacks the measurements show survived, and §7.5.6's and §7.9.5's figures are the # measurements'); and, in the step of every independent verifier above, the second # implementation, synthesis_mark_verify.py with # _wai_mark.py, written from the extension's text and sharing no code with wai-rs, which # embeds, detects and decodes itself, both stages of the tiled detector among them, runs # the battery's picture attacks, derives the frames the vectors name, verifies every case # with synthesis_verify.py, mutates copies of the corpus and weakens its own verifier in # turn; 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::mark synthesis_mark::) (cd wai-rs && cargo test --release --no-default-features --features "$WAI_RELEASE_FEATURES" --test synthesis_mark)