From 421a47f1ebf18947d14611776473b1e60179d4e5 Mon Sep 17 00:00:00 2001 From: Duncan Tourolle Date: Sun, 30 Aug 2026 10:18:10 +0200 Subject: [PATCH] Untag FR-CAT-13, which no XMP is read or written to satisfy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit FR-CAT-13 asks for standard XMP sidecars read and written — ratings, colour labels, keywords and hierarchical subjects, title, description, copyright, GPS, in `xmp:`/`dc:`/`lr:` schemas — so that other tools interoperate. Its one tag was the module header of `dr-catalog/src/keywords.rs`. That module stores keywords in SQLite. It names `dc:subject` twice, both times in prose explaining why a keyword's text is the fact rather than its row id, which is a good reason to have written it that way and not evidence of an XMP implementation. Nothing in the tree parses or emits XMP: `dr-export`'s metadata module writes EXIF and says in its own header that IPTC and XMP are named by FR-EXP-8 and neither is read. `dr-preset-xmp` is the crate whose name most invites the mistake. It reads Lightroom `.xmp` *presets* — develop settings — under FR-DEV-6, and knows nothing about the metadata schemas FR-CAT-13 is about. Co-Authored-By: Claude Opus 5 (1M context) --- core/dr-catalog/src/keywords.rs | 2 +- docs/outstanding.md | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/core/dr-catalog/src/keywords.rs b/core/dr-catalog/src/keywords.rs index c3676ba..4326234 100644 --- a/core/dr-catalog/src/keywords.rs +++ b/core/dr-catalog/src/keywords.rs @@ -1,4 +1,4 @@ -//! TRACES: FR-CAT-5 | FR-CAT-6 | FR-CAT-13 | NFR-R5 +//! TRACES: FR-CAT-5 | FR-CAT-6 | NFR-R5 //! Keywords: the vocabulary, the assignments, and the edits the UI performs. //! //! The read half of this shipped with the catalog and the write half did not. diff --git a/docs/outstanding.md b/docs/outstanding.md index ccdfeb1..fc1974a 100644 --- a/docs/outstanding.md +++ b/docs/outstanding.md @@ -277,11 +277,14 @@ well optimised — ETag pruning under FR-NC-4 turns an unchanged 50k library int gap is narrower than it reads. It is the *first* build against a large remote library that pays, and that is the moment a new user meets. -**FR-CAT-13 — XMP interoperability, tagged and not met.** Read and write standard XMP sidecars. The -single tag sits on `keywords.rs`, which stores keywords; no XMP is parsed or written anywhere in the -tree, and `dr-export`'s metadata module says so about its own half ("neither is read by `dr-decode` -today"). Listed here rather than silently, because a tag makes a gap invisible and this one is -load-bearing for interoperating with the editors FR-CAT-14 imports from. +**FR-CAT-13 — XMP interoperability, untagged and not met.** Read and write standard XMP sidecars. +Its single tag sat on `keywords.rs`, which stores keywords in the catalog and mentions `dc:subject` +in a comment about what a keyword's text is *for*; no XMP is parsed or written anywhere in the tree, +and `dr-export`'s metadata module says so about its own half ("neither is read by `dr-decode` +today"). The tag has been removed — `dr-preset-xmp` is not the counter-example it looks like, being +a reader of Lightroom *presets* under FR-DEV-6, which is a different file and a different purpose. +Listed here rather than silently, because a tag makes a gap invisible and this one is load-bearing +for interoperating with the editors FR-CAT-14 imports from. ---