Sample 2 of 3 — CULL FORGE

XMP sidecar snippet — what CULL writes

File: WED-0100.xmp next to WED-0100.jpg — and WED-0100.CR2.xmp next to its RAW sibling. Standard Adobe XMP, read by Lightroom / Bridge / Capture One.
WED-0100.xmp — 5 Green (keep)

5 Green · <xmp:Rating>5</xmp:Rating> + <photoshop:Label>Green</photoshop:Label>

<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Photo-Cull Bundle 1.0">
 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <rdf:Description rdf:about=""
    xmlns:xmp="http://ns.adobe.com/xap/1.0/"
    xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/">
   <xmp:Rating>5</xmp:Rating>
   <photoshop:Label>Green</photoshop:Label>
  </rdf:Description>
 </rdf:RDF>
</x:xmpmeta>
<?xpacket end="w"?>

Independent reader check: {"rating":5,"label":"Green"} — regex + xml.etree both see it.

WED-0105.xmp — rejected (-1)

Reject -1 · industry-standard rejected flag · never exported

<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Photo-Cull Bundle 1.0">
 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <rdf:Description rdf:about=""
    xmlns:xmp="http://ns.adobe.com/xap/1.0/"
    xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/">
   <xmp:Rating>-1</xmp:Rating>
  </rdf:Description>
 </rdf:RDF>
</x:xmpmeta>
<?xpacket end="w"?>

Keeper export skips any -1. Proven: WED-0105 not in output.

WED-0100.CR2.xmp — RAW sibling (same decision, free)

We write the same packet beside WED-0100.CR2 when a same-named RAW sits next to the JPEG. Your catalog sees the rating on the RAW without us parsing RAW.

<xmp:Rating>5</xmp:Rating> + <photoshop:Label>Green</photoshop:Label> — identical

Verified in kill test: WED-0100.CR2.xmp exists=True content={'rating':5,'label':'Green'}.

How to spot ours vs foreign

Our sidecars contain xmptk="Photo-Cull Bundle 1.0". If a foreign .xmp already existed, we back it up once as .xmp.photocull-backup and then write ours — never silently overwriting without a backup. Clearing (u) removes only our sidecar.

Next sample: keeper export folder → · ← Contact sheet · All 3 samples