instr-v0.json had one accepted object and 28 refused ones, none at an inclusive
bound, so a second sink stricter by one passed every vector; and the CLI test held
only that each object was refused, not why, so a rule relaxed (a quotation mark let
into the prompt) stayed green while the canonical-bytes check refused the object
in its place.
- The reader (wai_cli/instr.rs) refuses with a reason code, the first rule broken
in a stated order; a member given twice is refused as such (strict_json).
- The vector gains twelve accepted objects (seed 0 and 2^32 - 1, steps 1 and 64,
an empty prompt, 256 bytes, 0x20 and 0x7e, JSON's structural characters, a side of
1, a side of 4096 and 2^23 pixels, 16 sizes, the w-then-h order), each with the
SHA-256 of its first listed size made natively; eight more refused objects (types,
a fraction in a size, a negative side, an escaped line feed, a backslash, cut-short
JSON); and a reason for every refused object.
- tests/cli_generate_score.rs asserts each refusal's reason through `wai generate
--instr` and `wai wrap`, and makes and wraps every accepted object.
- tests/generate.rs states form v0 a second time, independently of the reader, and
holds the object, the accepted and the refused lists to it, making each accepted
object's output with the library.
Co-Authored-By: Claude Opus 5.5 <[email protected]>