FR-CAT-13 — XMP interoperability. Untagged and not met. No XMP is parsed or written anywhere in the tree.
The tag that was removed
It 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. dr-export's metadata module says the same about its own half — "neither is read by dr-decode today".
dr-preset-xmp is not the counter-example it looks like. It reads Lightroom presets under FR-DEV-6 — a different file, a different purpose.
Why it is load-bearing
It is the interoperability contract with the editors #39 imports from. A migration that brings a library across once, and then cannot round-trip a keyword or a rating back out, is a one-way door — and photographers do not walk through one-way doors with their archive.
Acceptance
Read standard XMP sidecars: dc:subject, xmp:Rating, xmp:Label, and the IPTC core fields.
Write them, with a stated rule for what DarkRoom owns and what it leaves alone.
A decision recorded on precedence when a sidecar and the catalog disagree — this interacts with FR-NC-9's per-field merge and must not fight it.
Round-trip test: written then read gives back what went in.
See docs/outstanding.md §7.
**FR-CAT-13 — XMP interoperability.** Untagged and not met. No XMP is parsed or written anywhere in the tree.
## The tag that was removed
It 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*. `dr-export`'s metadata module says the same about its own half — "neither is read by `dr-decode` today".
**`dr-preset-xmp` is not the counter-example it looks like.** It reads Lightroom *presets* under FR-DEV-6 — a different file, a different purpose.
## Why it is load-bearing
It is the interoperability contract with the editors #39 imports **from**. A migration that brings a library across once, and then cannot round-trip a keyword or a rating back out, is a one-way door — and photographers do not walk through one-way doors with their archive.
## Acceptance
- [ ] Read standard XMP sidecars: `dc:subject`, `xmp:Rating`, `xmp:Label`, and the IPTC core fields.
- [ ] Write them, with a stated rule for what DarkRoom owns and what it leaves alone.
- [ ] A decision recorded on precedence when a sidecar and the catalog disagree — this interacts with FR-NC-9's per-field merge and must not fight it.
- [ ] Round-trip test: written then read gives back what went in.
See `docs/outstanding.md` §7.
Landed in 896188a (2026-09-12): the scan collects .xmp beside .drsc, the pull reads each one whose ETag moved, both Lightroom and darktable namings resolve, and write-back is on request. FR-CAT-13 is tagged in fourteen files.
Landed in 896188a (2026-09-12): the scan collects `.xmp` beside `.drsc`, the pull reads each one whose ETag moved, both Lightroom and darktable namings resolve, and write-back is on request. FR-CAT-13 is tagged in fourteen files.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
FR-CAT-13 — XMP interoperability. Untagged and not met. No XMP is parsed or written anywhere in the tree.
The tag that was removed
It sat on
keywords.rs, which stores keywords in the catalog and mentionsdc:subjectin a comment about what a keyword's text is for.dr-export's metadata module says the same about its own half — "neither is read bydr-decodetoday".dr-preset-xmpis not the counter-example it looks like. It reads Lightroom presets under FR-DEV-6 — a different file, a different purpose.Why it is load-bearing
It is the interoperability contract with the editors #39 imports from. A migration that brings a library across once, and then cannot round-trip a keyword or a rating back out, is a one-way door — and photographers do not walk through one-way doors with their archive.
Acceptance
dc:subject,xmp:Rating,xmp:Label, and the IPTC core fields.See
docs/outstanding.md§7.Related #39. Also interacts with FR-NC-9 per-field merge — the precedence rule between a sidecar and the catalog must not fight it.
Landed in
896188a(2026-09-12): the scan collects.xmpbeside.drsc, the pull reads each one whose ETag moved, both Lightroom and darktable namings resolve, and write-back is on request. FR-CAT-13 is tagged in fourteen files.