1. A length too long for any stock is a named refusal. Length.parse narrowed the micrometres to an int before it applied the 2 m limit, so "84600in" or "99999in" threw ArithmeticException: the opaque RENDER_FAILED, and an error instead of a REFUSED answer when collecting. The limit is now compared in long before narrowing, so it is SCENE_INVALID at the pointer of the length. 2. The printable area holds a box of its own size at every resolution. It was floor(far edge) less ceil(near margin), which can be one dot smaller than a box of the stated printable width: 100 mm stock with 3 mm margins and a 94 mm box fitted at 203 and 600 dpi and was refused at 300. It is now floor((W - L - R) x dpi) by floor((H - T - B) x dpi), the rounding of a box size, starting at ceil(L x dpi), ceil(T x dpi), moved back one dot where it would otherwise pass the page edge. New golden case `margins` with fractional-dot margins; the three existing goldens at 600 dpi are regenerated (the area grew by one dot each way; 203 and 300 unchanged). 3. The version 2 mutation campaign accepts only a Refusal (the package's own invariants are IllegalArgumentExceptions too) and renders about one input in four, reading the label back and comparing with validation. It found nothing at 20000 or 100000 iterations for either seed. 4. A refused answer carries no label bytes: with COLLECT and an error the answer had base64 of a label with elements missing. Scene2.render answers no label for a refused scene and the answer has no document fields. This changes the wire contract of section B.1 of the design, which records it. 5. One scene may paint sixteen times its printable area, an overlap counted each time, counted before any ink and in validation too. The element that would pass it is SCENE_INVALID with measured.paintedPercent against limit.paintedPercent 1600. 1000 fills of a 64 million dot canvas were 8 GB of byte writes; the worst scene is now 128 MB. 6. The README states what changed in the version 1 answer envelope in 0.2.0 (diagnostics on every answer; SCENE_INVALID with detail where unreadable JSON and a missing or unknown schema were RENDER_FAILED) and what the bridge must handle. The version 1 ZPL bytes are unchanged. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>