FR-CAT-13 — XMP sidecar interoperability #40

Closed
opened 2026-09-05 16:20:19 +00:00 by dtourolle · 2 comments
Owner

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.
dtourolle added the catalogunmet-requirementsize:M labels 2026-09-05 16:20:19 +00:00
Author
Owner

Related #39. Also interacts with FR-NC-9 per-field merge — the precedence rule between a sidecar and the catalog must not fight it.

**Related** #39. Also interacts with FR-NC-9 per-field merge — the precedence rule between a sidecar and the catalog must not fight it.
Author
Owner

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.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dtourolle/DarkRoom#40