Safety guarantees.
SpeedCull touches your photos. These are the rules we’ve built the app around — what we never do, what we always back up, and how to recover if something goes wrong. Each rule is enforced in code, not just policy.
The hard rules
RAW files are never modified
Ratings live in XMP sidecars only. The Sync screen displays RAW files to modify: 0 as a permanent reminder.
Existing XMP is backed up first
Before SpeedCull updates a sidecar, a copy lands in .SpeedCull/backups/xmp-before-sync/ with a timestamp.
Only xmp:Rating is touched
Every other namespace, attribute, and child element is preserved. Locked in by an automated round-trip test.
Read-only handling
If a RAW or its XMP sidecar is read-only — common for archived shoots or files on a
locked SD card — SpeedCull does not silently skip past it. The sync action is recorded as
skipped with a separate read-only count visible on the Sync screen.
Nothing is overwritten without permission, and you’re not left wondering why a rating
didn’t propagate.
What SpeedCull writes (and where)
| Where | What | When |
|---|---|---|
.SpeedCull/project.sqlite |
The catalogue: image records, ratings, preview status, sync log, focus metadata cache | Continuously, as you scan, generate, and rate |
.SpeedCull/previews/{compare,full,native,focus-crops}/ |
JPEG previews and AF crops | During Generate Previews; AF crops on demand from Loupe |
.SpeedCull/backups/xmp-before-sync/ |
Pre-sync XMP backups, one per modified sidecar per sync run | During Sync to XMP, before any modification |
.SpeedCull/logs/ |
Sync logs and diagnostics | During sync runs and other long operations |
Sibling <name>.xmp next to each RAW |
Standard XMP sidecar with xmp:Rating and xmp:CreatorTool |
Only during Sync to XMP, only after you confirm |
What SpeedCull never writes
- Your RAW files (any extension)
- Your JPEG companions, even when paired with a RAW
- Anything outside the folder you opened, except the sidecar XMP next to each RAW
- Anything in your Lightroom catalogue file (
*.lrcat) — SpeedCull doesn’t even know it exists
How to undo a sync
Every modification to an existing XMP file is preceded by a backup. The Sync screen has
a Restore from backup action that walks the backup directory and lets you
return any sidecar to its pre-SpeedCull state. Restore actions are themselves logged with
action restored, so you have a full audit trail.
How to fully reset
To remove SpeedCull from a shoot completely:
- Cleanup screen → Delete everything nukes the entire
.SpeedCull/folder - Or simply
rm -rf .SpeedCull/from the shoot directory in Terminal
Your RAW files and any XMP sidecars (whether SpeedCull wrote them or not) remain exactly where they were. SpeedCull leaves no other artifacts on your system — there’s no central database, no preferences file linking back to your shoots, nothing in Application Support.
Things that aren’t guaranteed
For honesty:
- Real-RAW Lightroom round-trip is unverified at scale. Every code path is tested with synthetic JPEG fixtures and Lightroom-flavoured XMP samples, but actual ARW / CR3 / NEF / RAF imports across many catalogue versions are still being shaken out. Test on a non-critical shoot before trusting it on a paid job.
- Pick flags don’t round-trip in 0.1. They’re internal-only. If you rely on Pick flags in Lightroom, set them in Lightroom for now.
- Keeper Mode sessions are in-memory. Force-quitting mid-session loses the in-flight session. No destructive write happens during the session, so nothing on disk is lost — but the decisions you’d made up to that point are gone.
- Color labels and keywords aren’t supported in 0.1. They’re explicitly out of scope for the MVP.
One more sanity check. Every claim on this page is backed by an
automated test in the SpeedCull repository (see Tests/SpeedCullTests/).
If anything described here doesn’t match the app’s behaviour, it’s a bug —
file an issue.