[package] name = "round2-diff" version = "0.1.0" edition.workspace = true publish.workspace = true # Packet 2A-ii (ROUND2_TEXT_RECIPE.md §10, §11): the bounded visual # differential itself. Pure image math over RGBA buffers — it takes two # already-rasterized `&[u8]` readbacks plus width/height plus the per-glyph # regions D4 scores, and returns a rich verdict (D1/D2/D3/D4, each with its # measured numbers, never just a bool). # # Deliberately zero dependencies: this crate must not know about fonts, # text shaping, GPU, or the emitter that produced either raster (§9's # `resvg`/`ttf-parser` pipeline, or whatever a future candidate uses). It # is candidate-neutral and stand-in-neutral in the same sense the Round 1 # harness's oracle model is candidate-neutral — it validates and compares # pixels, and nothing about how those pixels were produced. # # The `selftest` binary (src/bin/selftest.rs) synthesizes its own reference # raster and mutates it, because Packet 2A has no candidate yet (§11): # exactly the role Round 1's oracle tranche played before any candidate # consumed it. It exits non-zero if a required kill does not happen. It covers # the geometric mutations only; the text mutations M4/M5/M6 need real shaped # glyphs and live in `round2-reference`'s `text_mutations` binary. [dependencies] [[bin]] name = "selftest" path = "src/bin/selftest.rs"