diff --git a/docs/requirements.md b/docs/requirements.md index bfa289b..a22bd10 100644 --- a/docs/requirements.md +++ b/docs/requirements.md @@ -542,8 +542,23 @@ region. ### 3.6 Export -**FR-EXP-1 — Formats.** Export to JPEG, PNG, TIFF (8 and 16-bit), and AVIF or JPEG XL. Quality, -chroma subsampling, and bit depth are configurable. +**FR-EXP-1 — Formats.** Export to JPEG, PNG, and TIFF (8 and 16-bit). Quality, chroma subsampling, +and bit depth are configurable. + +**AVIF and JPEG XL are post-v1** and are not part of this requirement's acceptance. Either may still +be listed in the settings page before its encoder exists, on one condition: choosing it shall fail +with a typed error naming the format, never with a file. `every_offered_format_either_encodes_or_explains_itself` +walks every format the page offers and enforces exactly that, so a format cannot be added to the +picker and quietly reach an encoder that does not handle it. + +*On splitting this requirement.* It read as one undifferentiated list — "JPEG, PNG, TIFF (8 and +16-bit), and AVIF or JPEG XL" — which left it neither met nor unmet. Three formats, both TIFF +depths, and the configurability clause are built, encode, embed their profile, and are tested; the +fourth item is a deliberate deferral, and the encoders for it are the two with the least settled +library support. Fused into one sentence, the only choices were a tag asserting something untrue or +no tag at all, and the second is the worse of the two: it would have removed the register's record +of four-fifths of a requirement that is finished. The deferral is now stated where it can be read as +a decision rather than inferred from an error variant. **FR-EXP-2 — Colour space.** Export in a selectable output colour space (sRGB, Display P3, Adobe RGB, ProPhoto), with the correct ICC profile embedded.