The CRX 0x200 QP map opens with its first symbol as a 32-bit literal; every
later symbol is Rice coded with a limited-length escape: 23 zeros, the
terminating 1 and the symbol in 8 bits (the ITU-T T.87 layout for a 32-bit
limit and 8-bit symbols, without its minus-one offset). The old rule (an
escape after 16 zeros with a 16-bit literal) matched only the first symbol,
which is all the R8 and R7 maps need. R5 Mark II maps (QP 150-162) jump by up
to 12 where the Rice parameter is 0, giving 18- to 22-zero prefixes that
misparsed ("Canon CRX adaptive QP value -21087"): 174 of 306 sampled files
from a private R5 Mark II library opened as previews. Every QP map of its
33,665 C-RAW files now decodes to the exact end of its entropy stream; the six
oracle fixtures are unchanged. Established by black-box analysis of the
bitstream; no third-party decoder source consulted.
Adds the four CC0 R5 Mark II samples (raw.pixls.us 7881-7884) to the corpus
with pinned sensor hashes (the crop-mode framing is left to #754), bumps
RENDER_CACHE_VERSION to 43, and updates cr3.md, raw-parity (235 verified
models), coverage, gaps, the checklist rows, ROADMAP, target-app-parity and
What's New.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
11 KiB
Gaps: where LightCraft falls short of Lightroom
Last reviewed: 2026-10-10 · Last updated: 2026-10-11 · Change: minor (gaps 2 and 10: EOS R5 Mark II CR3 verified) · Target: Adobe Lightroom Classic 15.5 / Lightroom 9.6
Every known shortfall, one entry each, ranked by user impact (how many Lightroom users hit it, and how hard it blocks them), then by effort. Agents pick work from the top (the first entry nobody is working on). When you close a gap, delete or shrink its entry, update its rows in parity-checklist.md, and the numbers in target-app-parity.md and ROADMAP.md if they move.
Hours are Opus 5.5 agent wall-clock hours (see target-app-parity.md).
B marks a gap that blocks beta.
Ranked
| # | Gap | Evidence | User impact | Hours | Doc |
|---|---|---|---|---|---|
| 1 B | Camera colour is estimated, not measured (LR-PROF-CAMERACOLOR). Raws start from a per-file fit to the camera JPEG, 4 bundled profiles or 52 spectral matrices; others use a neutral matrix | ΔE vs camera JPEG 2.9–10 after fitting (raw-parity.md); 0 chart-calibrated models vs 1,500 Adobe Standard profiles | every raw shooter sees colour that is close but not Lightroom's; some get neutral-matrix colour | 50–90 | raw-parity |
| 2 B | CR3 beyond four verified bodies (LR-IMP-FORMATS): CRX variants other than those verified on M50 / R100 / R8 / R5 Mark II fall back to the preview; CR3 sRAW / mRAW and HEIF CR3 too | measured: Canon is the largest bucket (33% of photographers) and its share whose camera fully works is the lowest of the big four, 73%; 18 of 22 popular Canon bodies write CR3, 4 verified (raw-parity.md) | +6.2 points of photographers whose camera works, the biggest single raw gain | 25–45 | raw-parity |
| 3 B | Render fidelity unmeasured (LR-BEHAV-RENDER-FIDELITY): tone, highlights, texture / clarity / dehaze, NR and sharpening are tuned by eye | no side-by-side suite; a retune needs a new process version (only V1 exists) | edits imported from Lightroom look different; the look "isn't Lightroom's" | 30–60 | raw-parity, process-versions |
| 4 B | Original-pixel detail at 100% (LR-VIEW-ZOOM, P0): the whole-image preview is capped (2,560 px default); compare, overlays and soft proofing lack sharp zoom windows (#323) | checklist row 🟡 | checking focus, the first thing culling needs, isn't reliable on large files | 8–15 | ui-parity |
| 5 B | AI masks: Subject, Sky, People, Background, Landscape are heuristics; Object / Describe run SAM 3 but its download has no mirror configured | crates/segment; ai-masks.md; MASK rows 67% |
masking is how most Lightroom users edit today | 40–70 + model decision | target-app-parity |
| 6 B | Compressed ORF (every Olympus / OM body since ~2008) | measured: 66 of 78 Olympus / OM models preview-only; orf.rs refuses; OM bucket 3% of photographers, 3% of them fully work |
+2.6 points; best gain per hour of any raw gap (~0.2) | 8–15 | raw-parity |
| 7 | Nikon High Efficiency NEF (HE / HE★ on Z 8, Z 9, Z 6III, Z f, Z50II, Z5II when set to HE) | named and preview only (#193); needs a pure-Rust JPEG XS decoder | +1.1 points (only shots taken in HE; lossless works on the same bodies); low gain per hour (~0.04), so not a beta blocker | 20–40 | raw-parity |
| 8 B | No lens profile database (LR-EDIT-OPTICS-PROFILE): only DNG opcodes, RW2 in-file distortion and Sony ILCE-7RM4A distortion | Adobe ships 3,635 lens profiles; we never use them | distortion / vignetting correction is a default step for many | 40–80 + calibration shots | raw-parity |
| 9 B | Tests don't run in CI on macOS, Windows or Linux x64: only FreeBSD runs cargo test; the others build packages |
.github/workflows/ (freebsd, packaging-lint, release, windows-arm64) |
regressions reach users on the main platforms; cargo xtask ci runs only locally |
6–12 | target-app-parity |
| 10 B | Per-model verification thin, plus cheap per-body decode fixes: 235 of 1,446 Adobe models verified (16%), ~42% of photographers on a verified body; Nikon 5 bodies verified, Canon 12. Cheap fixes: Z 6II packed 14-bit NEF (#769, PR #671), Sony A100 / F828 regression (#702), DSLR-A200…A390 / A850 12-bit ARW (#535) | measured: raw/coverage.tsv | per-body bugs (levels, crops, WB) surface only from users | 25–45 | raw-parity |
| 11 | Enhance: Raw Details, Super Resolution; AI denoise without shippable weights or X-Trans | ENH rows 0%; denoise Bayer only, RawNIND weights GPL and opt-in | Fujifilm users get no AI denoise; nobody gets it out of the box | 30–60 + model decision | raw-parity |
| 12 | Content-aware / generative remove, detect distractions, reflections removal | REM rows 75%; patch synthesis missing | cleanup work goes back to Photoshop | 25–45 (+ generative model) | target-app-parity |
| 13 | Lightroom catalog migration is one-way and approximate: unsupported Adobe profiles / AI settings archived, history kept as data | lightroom-catalog-import.md | switching users lose some looks | 8–12 | file-format-parity |
| 14 | HDR display (EDR / Windows HDR); HLG; HDR settings from crs XMP |
HDR rows 70%; LR-VIEW-HDR-DISPLAY ⬜ | HDR editing works blind on HDR monitors | 12–25 | hardware-parity |
| 15 | Print module: custom packages, printer colour management (contact-sheet PDF only) | LRC-PRINT rows | Classic users who print | 25–40 | target-app-parity |
| 16 | Map view, Book, Slideshow module, publish services | LRC-MAP / BOOK / SS rows ⬜ | Classic users; publish services matter for Flickr / SmugMug workflows | 60–100 | target-app-parity |
| 17 | Tethered capture | ⬜ | studio photographers | 25–45 + cameras | hardware-parity |
| 18 | Video: playback, trim, global edits, export | VID rows 0% | users who mix stills and clips | 25–45 | target-app-parity |
| 19 | Plug-in ecosystem: no Lightroom SDK equivalent (export / publish plug-ins, metadata plug-ins) | ⬜ | pro workflows built on plug-ins (LR/Enfuse, Jeffrey's exporters, Negative Lab Pro) | 40–80 + owner decision | target-app-parity |
| 20 | Long-tail raw formats: compressed SRW, ARQ pixel shift, IIQ, Hasselblad compression, X3F, CRW, MRW, ERF, KDC, DCR, MEF, GPR, old FinePix | raw-parity.md | small user share each | 45–85 | raw-parity |
| 21 | Localization: 9 of 15 shipped languages partial (74–99% of catalog messages), lower-layer errors English; Hindi, Arabic, Indonesian, Korean, Vietnamese absent; no RTL or complex shaping | measured from catalogs | non-English users see mixed English | 55–90 (shipped to full); 145–255 (five new) | localization-parity |
| 22 | Pen pressure, OS monitor profiles, follow-window colour | hardware-parity.md | brush users with tablets; multi-monitor setups | 11–22 | hardware-parity |
| 23 | Accessibility audit with screen readers; canvas tools keyboard-reachable | LR-BEHAV-ACCESS 🟡 | blind and low-vision users | 10–20 | ui-parity |
| 24 | Brush live preview and masking feel (#517, #518); Feather / Edge mask refinement (15.5) | issues | masking feels slower than Lightroom | 8–12 | ui-parity |
| 25 | File writes: JXL encode, PSD export, lossy DNG, Render to DNG; AVIF import | file-format-parity.md | interchange edge cases | 25–45 | file-format-parity |
| 26 | Performance at scale: 85k-photo library opens in 1.7–4.7 s; 100k grid test pending; colour NR at half resolution | ROADMAP log, gpu-pipeline.md | large-catalog users | 15–30 | target-app-parity |
| 27 | Windows / Linux runtime coverage: Windows installer UI unverified on Windows (#79); GPU path proven on Apple only | ROADMAP, issues | non-Mac users find bugs first | 15–30 | hardware-parity |
| 28 | Small Classic shortcuts and keys: rating [ ], flag cycling, filter-bar keys, F1 help, panel keys (Tab, F5–F8) |
ui-parity | Classic muscle memory | 4–8 | ui-parity |
Beta-blocking gaps (B) total ~230–430 h; with the stability and platform work they need around them, ~340–600 h to beta (incl. 40–80 h for the ~92 open core-path user issues) (see target-app-parity.md).
Gaps by kind
- Feature: 5, 8, 11, 12, 13, 15, 16, 18, 19
- UI / UX: 4, 23, 24, 28
- File format: 2, 6, 7, 10, 13, 20, 25 (raw ones in raw-parity.md)
- Hardware: 14, 17, 22, 27
- Localization: 21
- Quality / fidelity: 1, 3
- Stability and platforms: 9, 26, 27
Closed recently (kept for calibration)
- 2026-10-10: Nikon lossy-after-split NEF (#633), ORF 12.8 bpp (#651), HDR gain map / PQ AVIF / float TIFF export (#646), activity stack (#345).
- 2026-10-09: HEIC in release builds (#609), Samsung uncompressed SRW (#459), contact-sheet PDF (#563), Ukrainian UI (#564), Sony ILCE-7CR profile.
- 2026-10-08: CR3 CRX lossless and C-RAW (#279), Fujifilm compressed RAF (#282), AI RAW denoise (#384), Lightroom catalog import (#218), German, Spanish, Russian UI.
- 2026-10-07: RW2 every format (#215), faces recognition in pure Rust (#174).
- 2026-10-05: compressed NEF (#86). The older history is in ROADMAP.md.
Revision history
| Date | Change | Summary |
|---|---|---|
| 2026-10-11 | minor | Gaps 2 and 10 shrink: EOS R5 Mark II CR3 decodes and is verified (fourth CR3 body, Canon 12 verified, 235 models, ~42% on a verified body); CR3 gain +6.5 → +6.2 points |
| 2026-10-10 | minor | RAW gaps re-measured model by model (raw-parity.md): CR3, compressed ORF and verification entries carry measured shares; HE NEF no longer a beta blocker (+1.1 points for 20–40 h); verification entry absorbs the cheap per-body fixes (#769, #702, A200 series) |
| 2026-10-10 | minor | Beta total raised to 340–600 h to include the ~92 open core-path user issues |
| 2026-10-10 | major | Created from the checklist's Top gaps (whose items 1–2 had been duplicated by a merge) and ROADMAP's Where we stand; re-ranked; added evidence, impact, hours and beta flags; added platform-CI, lens-database, HE NEF and localization gaps |