Files
DarkRoom/docs/traceability.md
T
dtourolleandClaude Opus 5 c4ddcbe0f7 Look the lens up and say plainly whether one was found
`dr-lens` has held a complete Lensfun lookup — distortion, TCA and vignetting
coefficients from a lens name, a focal length and an aperture — with no
dependents anywhere in the workspace. The three corrections it feeds now
exist in the graph, so this connects the two and finishes the chain.

The coefficient structs stay duplicated. `dr-pipeline` is organised around
having no dependencies so its codegen is testable without a device or a
database (ARCH §6.5a), and `dr-lens` carries an XML parser and 5.5 MB of
profile data. Neither crate can convert to the other, so the conversion goes
above both, in `develop.rs`, which is the only place that sees them together.

Both traits grow the same defaulted door. The optical corrections do not sit
on the same side of the fetch — distortion and CA rewrite coordinates and are
`Warp`s, vignetting applies a gain to the pixel already there and is an
ordinary node — and fanning a profile out by which trait each happens to
implement would make the caller reason about that distinction. Each correction
takes its own share of the whole profile instead, and `set_lens_profile` walks
both lists identically.

The lookup happens in `set_source_metadata` rather than in its caller, because
that is the one place a session is told which file it came from. Doing it
there makes it unforgettable, in the shape `FilmRebake` already uses for the
other derived thing — and, more to the point, makes *clearing* unforgettable:
a session that opened a second photograph while still holding the first one's
profile would correct it for the wrong optics, invisibly, in a way that looks
exactly like the lens.

It needs the whole shot and not just a name. Distortion is interpolated across
a zoom's focal range and vignetting depends strongly on aperture — a fast
prime can be two stops down in the corners wide open and clean by f/8 — so a
lookup missing either returns coefficients measured for a shot nobody took.
Missing any of the three refuses rather than guesses.

A profile is derived, not persisted: it comes from the file's EXIF and a
database, so it is not a parameter, not in the sidecar and not undoable. What
is an edit is the manual trim beside it, which each correction composes with
the measurement — so a photographer can lean on it, override it, or work
without one.

`InfoPanel` gains a lens line, and it distinguishes three cases rather than
two. `dr-lens` states the rule it exists for: an automatic correction that
silently did nothing is worse than one the user can see is unavailable. A
session with no header draws nothing, a header naming no lens reads "Lens not
recorded", and a lens the database has never heard of reads "· no profile".
Collapsing the last two would send somebody hunting for a profile that was
never missing — which, for third-party and adapted glass, is the ordinary case.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-05 15:11:32 +02:00

109 KiB

Requirements traceability matrix

Denominators are parsed from requirements.md at run time, never hardcoded. Coverage is the intersection of tagged and defined IDs over defined IDs, so it cannot exceed 100%.

Summary

Metric Value
Source files scanned 335
TRACES tags found 1092
Requirements defined 180
Requirements covered 127
Coverage 70.6% (127/180)

By type

Type Covered Defined
FR 94 125
NFR 30 49
R 3 6

Orphan tags

A tag naming an ID requirements.md does not define — what renumbering produces, and what a typo produces.

None.

Tagged requirements

ID Tagged in
FR-CAT-1 core/dr-catalog/src/scan.rs:1, core/dr-catalog/src/walk.rs:109, core/dr-catalog/src/walk.rs:162, core/dr-catalog/src/walk.rs:1, core/dr-sync/src/scan.rs:93, core/dr-types/src/lib.rs:203, core/dr-types/src/lib.rs:272, core/dr-types/src/lib.rs:305, platform/dr-plat/src/storage.rs:1, platform/dr-plat/src/storage.rs:216, ui/dr-ui/src/activity.rs:1, ui/dr-ui/src/library.rs:1
FR-CAT-10 core/dr-ingest/src/layout.rs:1, core/dr-ingest/src/lib.rs:1, core/dr-ingest/src/lib.rs:733, core/dr-types/src/settings.rs:206, platform/dr-plat/src/storage.rs:287, platform/dr-plat/src/storage.rs:586, platform/dr-plat/src/volumes.rs:1, platform/dr-plat/src/volumes.rs:62, ui/dr-ui/src/import.rs:1, ui/dr-ui/src/import.rs:336, ui/dr-ui/src/import_ui.rs:1, ui/dr-ui/src/lib.rs:1304, ui/dr-ui/ui/import.slint:5, ui/dr-ui/ui/library.slint:1028, ui/dr-ui/ui/library.slint:1244, ui/dr-ui/ui/library.slint:974
FR-CAT-11 core/dr-catalog/src/dedup.rs:1, core/dr-ingest/src/lib.rs:1, core/dr-ingest/src/lib.rs:392, core/dr-sync/src/upload.rs:40, ui/dr-ui/src/import.rs:1, ui/dr-ui/src/import_ui.rs:1, ui/dr-ui/src/lib.rs:1304, ui/dr-ui/src/library.rs:175, ui/dr-ui/src/library.rs:2511, ui/dr-ui/ui/import.slint:5
FR-CAT-12 core/dr-pipeline/src/sidecar.rs:120
FR-CAT-15 core/dr-catalog/src/schema.rs:753, core/dr-catalog/src/trash.rs:1, core/dr-sync-nextcloud/src/lib.rs:457, core/dr-sync/src/lib.rs:135, core/dr-sync/src/scan.rs:563, core/dr-sync/src/scan.rs:57, core/dr-thumbs/src/lib.rs:376, core/dr-types/src/place.rs:91, ui/dr-ui/src/collections_ui.rs:1283, ui/dr-ui/src/collections_ui.rs:2189, ui/dr-ui/src/library.rs:175, ui/dr-ui/src/library.rs:192, ui/dr-ui/src/library.rs:241, ui/dr-ui/src/library.rs:4132, ui/dr-ui/src/library.rs:4166, ui/dr-ui/src/library_ui.rs:238, ui/dr-ui/src/library_ui.rs:838, ui/dr-ui/src/trash.rs:1, ui/dr-ui/ui/collections.slint:621
FR-CAT-1a core/dr-catalog/src/walk.rs:1, core/dr-types/src/lib.rs:56, platform/dr-plat/src/storage.rs:1, platform/dr-plat/src/storage.rs:216, platform/dr-plat/src/storage.rs:46
FR-CAT-2 core/dr-catalog/src/lib.rs:1, core/dr-catalog/src/schema.rs:1
FR-CAT-3 core/dr-catalog/src/jobs.rs:1, core/dr-catalog/src/walk.rs:66, core/dr-sync/src/scan.rs:69, core/dr-thumbs/src/codec.rs:1, core/dr-thumbs/src/lib.rs:1, ui/dr-ui/src/derived_sync.rs:1, ui/dr-ui/src/import.rs:463, ui/dr-ui/src/import.rs:488, ui/dr-ui/src/library.rs:2984, ui/dr-ui/src/library.rs:3575, ui/dr-ui/src/library_ui.rs:177, ui/dr-ui/src/library_ui.rs:4221, ui/dr-ui/src/library_ui.rs:5720, ui/dr-ui/ui/app.slint:434, ui/dr-ui/ui/settings.slint:387, ui/dr-ui/ui/settings.slint:73
FR-CAT-4 core/dr-catalog/src/lib.rs:1, core/dr-catalog/src/query.rs:1, core/dr-catalog/src/schema.rs:337, ui/dr-ui/src/library.rs:1, ui/dr-ui/src/library.rs:222, ui/dr-ui/src/library_ui.rs:1
FR-CAT-5 core/dr-catalog/src/keywords.rs:1, core/dr-catalog/src/merge.rs:1, core/dr-catalog/src/rating.rs:1, core/dr-catalog/src/schema.rs:1171, core/dr-catalog/src/schema.rs:668, core/dr-decode/src/lib.rs:285, core/dr-decode/src/lib.rs:404, core/dr-pipeline/src/sidecar.rs:137, ui/dr-ui/src/collections_ui.rs:1579, ui/dr-ui/src/collections_ui.rs:1685, ui/dr-ui/src/collections_ui.rs:1734, ui/dr-ui/src/collections_ui.rs:238, ui/dr-ui/src/collections_ui.rs:335, ui/dr-ui/src/collections_ui.rs:87, ui/dr-ui/src/library.rs:4180, ui/dr-ui/src/library_ui.rs:713, ui/dr-ui/src/library_ui.rs:7677, ui/dr-ui/src/library_ui.rs:7688, ui/dr-ui/src/library_ui.rs:7701, ui/dr-ui/src/library_ui.rs:7716, ui/dr-ui/src/library_ui.rs:7725, ui/dr-ui/ui/app.slint:355, ui/dr-ui/ui/app.slint:577, ui/dr-ui/ui/library.slint:1350, ui/dr-ui/ui/library.slint:1374, ui/dr-ui/ui/library.slint:1427, ui/dr-ui/ui/library.slint:19, ui/dr-ui/ui/library.slint:4101
FR-CAT-6 core/dr-catalog/src/collections.rs:1, core/dr-catalog/src/keywords.rs:1, core/dr-catalog/src/lib.rs:1, core/dr-catalog/src/query.rs:1, core/dr-catalog/src/rating.rs:1, core/dr-catalog/src/schema.rs:668, core/dr-types/src/place.rs:1, core/dr-types/src/selector.rs:1, core/dr-types/src/settings.rs:64, core/dr-types/src/time.rs:67, core/dr-types/src/time.rs:90, ui/dr-ui/src/library.rs:246, ui/dr-ui/src/library.rs:4656, ui/dr-ui/src/library_ui.rs:389, ui/dr-ui/src/library_ui.rs:470, ui/dr-ui/src/library_ui.rs:6407, ui/dr-ui/src/library_ui.rs:6460, ui/dr-ui/src/library_ui.rs:7817, ui/dr-ui/ui/app.slint:367, ui/dr-ui/ui/app.slint:577, ui/dr-ui/ui/app.slint:880, ui/dr-ui/ui/library.slint:111, ui/dr-ui/ui/library.slint:1537, ui/dr-ui/ui/library.slint:4101, ui/dr-ui/ui/settings.slint:150
FR-CAT-7 core/dr-catalog/src/collections.rs:1, core/dr-catalog/src/merge.rs:1, core/dr-catalog/src/sync.rs:1, core/dr-types/src/selector.rs:1, ui/dr-ui/src/collections_ui.rs:1073, ui/dr-ui/src/collections_ui.rs:117, ui/dr-ui/src/collections_ui.rs:1552, ui/dr-ui/src/collections_ui.rs:1598, ui/dr-ui/src/collections_ui.rs:1848, ui/dr-ui/src/collections_ui.rs:1913, ui/dr-ui/src/collections_ui.rs:1973, ui/dr-ui/src/collections_ui.rs:1, ui/dr-ui/src/collections_ui.rs:2963, ui/dr-ui/src/collections_ui.rs:365, ui/dr-ui/src/collections_ui.rs:569, ui/dr-ui/src/collections_ui.rs:965, ui/dr-ui/src/derived_sync.rs:1, ui/dr-ui/src/library.rs:4461, ui/dr-ui/src/library.rs:4487, ui/dr-ui/src/library.rs:4542, ui/dr-ui/src/library_ui.rs:2686, ui/dr-ui/src/library_ui.rs:4083, ui/dr-ui/src/library_ui.rs:4834, ui/dr-ui/ui/app.slint:358, ui/dr-ui/ui/app.slint:572, ui/dr-ui/ui/app.slint:601, ui/dr-ui/ui/collections.slint:4, ui/dr-ui/ui/library.slint:1317, ui/dr-ui/ui/library.slint:2886, ui/dr-ui/ui/library.slint:4079, ui/dr-ui/ui/library.slint:993
FR-CAT-8 core/dr-pipeline/src/coverage.rs:1, core/dr-pipeline/src/graph.rs:465, core/dr-pipeline/src/graph.rs:513, core/dr-pipeline/src/ops/curve.rs:137, core/dr-pipeline/src/ops/curve.rs:656, core/dr-pipeline/src/sidecar.rs:1048, core/dr-pipeline/src/sidecar.rs:1714, core/dr-pipeline/src/sidecar.rs:94, core/dr-pipeline/src/state.rs:1, core/dr-pipeline/src/state.rs:75, core/dr-pipeline/tests/tone_curve.rs:34, ui/dr-ui/src/develop.rs:1933, ui/dr-ui/src/develop.rs:4265, ui/dr-ui/src/develop.rs:4294, ui/dr-ui/src/develop.rs:5176, ui/dr-ui/src/develop.rs:5230, ui/dr-ui/src/develop.rs:5332, ui/dr-ui/src/export.rs:799, ui/dr-ui/src/lib.rs:1082, ui/dr-ui/src/lib.rs:1598, ui/dr-ui/src/lib.rs:2102, ui/dr-ui/src/lib.rs:2237, ui/dr-ui/src/lib.rs:634, ui/dr-ui/src/library.rs:1923, ui/dr-ui/src/library.rs:492, ui/dr-ui/src/library.rs:539, ui/dr-ui/src/library.rs:576, ui/dr-ui/src/library.rs:823, ui/dr-ui/src/library_ui.rs:6043, ui/dr-ui/src/sidecar_cache.rs:1
FR-CAT-9 core/dr-catalog/src/cache.rs:1, core/dr-catalog/src/scan.rs:1, core/dr-catalog/src/schema.rs:725, core/dr-catalog/src/walk.rs:1022, core/dr-catalog/src/walk.rs:162, core/dr-catalog/src/walk.rs:1, core/dr-catalog/src/walk.rs:435, core/dr-catalog/src/walk.rs:728, core/dr-sync-nextcloud/src/desktop_client.rs:30, core/dr-sync/src/error.rs:113, core/dr-sync/src/reachability.rs:1, core/dr-sync/src/scan.rs:175, core/dr-sync/src/scan.rs:464, core/dr-types/src/lib.rs:122, ui/dr-ui/src/develop.rs:3652, ui/dr-ui/src/develop.rs:3695, ui/dr-ui/src/library.rs:1242, ui/dr-ui/src/library.rs:1295, ui/dr-ui/src/library.rs:1326, ui/dr-ui/src/library.rs:1431, ui/dr-ui/src/library.rs:161, ui/dr-ui/src/library.rs:1883, ui/dr-ui/src/library.rs:1959, ui/dr-ui/src/library.rs:266, ui/dr-ui/src/library.rs:4764, ui/dr-ui/src/library.rs:576, ui/dr-ui/src/library.rs:807, ui/dr-ui/src/library.rs:823, ui/dr-ui/src/library.rs:877, ui/dr-ui/src/library_ui.rs:1318, ui/dr-ui/src/library_ui.rs:1909, ui/dr-ui/src/library_ui.rs:1953, ui/dr-ui/src/library_ui.rs:1969, ui/dr-ui/src/library_ui.rs:2063, ui/dr-ui/src/library_ui.rs:284, ui/dr-ui/src/library_ui.rs:2925, ui/dr-ui/src/library_ui.rs:317, ui/dr-ui/src/library_ui.rs:325, ui/dr-ui/src/library_ui.rs:3363, ui/dr-ui/src/library_ui.rs:3585, ui/dr-ui/src/library_ui.rs:3863, ui/dr-ui/src/library_ui.rs:3951, ui/dr-ui/src/library_ui.rs:4134, ui/dr-ui/src/library_ui.rs:4248, ui/dr-ui/src/library_ui.rs:523, ui/dr-ui/src/library_ui.rs:586, ui/dr-ui/src/library_ui.rs:6505, ui/dr-ui/src/library_ui.rs:6620, ui/dr-ui/src/presets.rs:453, ui/dr-ui/src/presets.rs:465, ui/dr-ui/src/sidecar_cache.rs:1, ui/dr-ui/tests/export_ignores_the_viewport.rs:1
FR-CULL-1 core/dr-decode/src/preview.rs:121
FR-CULL-10 core/dr-catalog/src/faces.rs:1, core/dr-catalog/src/schema.rs:376, core/dr-catalog/src/schema.rs:554, core/dr-face/src/assign.rs:1, core/dr-face/src/neighbours.rs:1, core/dr-types/src/settings.rs:117, ui/dr-ui/src/develop.rs:121, ui/dr-ui/src/develop.rs:130, ui/dr-ui/src/develop.rs:196, ui/dr-ui/src/develop.rs:2165, ui/dr-ui/src/develop.rs:689, ui/dr-ui/src/faces.rs:1, ui/dr-ui/src/identity.rs:1, ui/dr-ui/src/identity_ui.rs:1, ui/dr-ui/src/lib.rs:2209, ui/dr-ui/ui/identity.slint:1
FR-CULL-11 core/dr-catalog/src/faces.rs:1, core/dr-catalog/src/schema.rs:554, ui/dr-ui/src/identity.rs:1, ui/dr-ui/src/identity_ui.rs:1, ui/dr-ui/src/library.rs:287, ui/dr-ui/src/library.rs:317, ui/dr-ui/ui/identity.slint:1
FR-CULL-12 core/dr-catalog/src/faces.rs:1, core/dr-catalog/src/schema.rs:376, core/dr-catalog/src/schema.rs:554, ui/dr-ui/src/identity.rs:1, ui/dr-ui/ui/identity.slint:1
FR-CULL-2 core/dr-decode/src/locate.rs:1, core/dr-decode/src/preview.rs:148, ui/dr-ui/src/import.rs:463
FR-CULL-3 core/dr-gpu/src/focus.rs:154, core/dr-gpu/src/focus.rs:186, core/dr-gpu/src/focus.rs:1, core/dr-gpu/src/focus.rs:317, core/dr-gpu/src/raw_histogram.rs:129, core/dr-gpu/src/raw_histogram.rs:1, core/dr-gpu/src/raw_histogram.rs:272, core/dr-gpu/src/raw_histogram.rs:407, core/dr-gpu/src/shaders/focus_peak.wgsl:1, core/dr-gpu/src/shaders/raw_histogram.wgsl:1, ui/dr-ui/src/develop.rs:3261, ui/dr-ui/src/develop.rs:3274, ui/dr-ui/src/develop.rs:3319, ui/dr-ui/src/develop.rs:3330, ui/dr-ui/src/develop.rs:3336, ui/dr-ui/src/develop.rs:3353, ui/dr-ui/src/develop.rs:6881, ui/dr-ui/src/develop.rs:6945, ui/dr-ui/src/develop.rs:6968, ui/dr-ui/src/develop.rs:763, ui/dr-ui/src/develop.rs:783, ui/dr-ui/src/develop.rs:789, ui/dr-ui/src/histogram.rs:1, ui/dr-ui/src/histogram.rs:208, ui/dr-ui/src/histogram.rs:228, ui/dr-ui/src/histogram.rs:272, ui/dr-ui/src/histogram.rs:544, ui/dr-ui/src/histogram.rs:565, ui/dr-ui/src/histogram.rs:593, ui/dr-ui/src/histogram.rs:621, ui/dr-ui/src/histogram.rs:658, ui/dr-ui/src/lib.rs:1637, ui/dr-ui/src/lib.rs:1715, ui/dr-ui/src/lib.rs:1814, ui/dr-ui/src/lib.rs:1855, ui/dr-ui/src/lib.rs:3119, ui/dr-ui/src/lib.rs:383, ui/dr-ui/src/peaking.rs:1, ui/dr-ui/ui/app.slint:1850, ui/dr-ui/ui/app.slint:2457, ui/dr-ui/ui/app.slint:95, ui/dr-ui/ui/peaking.slint:1, ui/dr-ui/ui/peaking.slint:25, ui/dr-ui/ui/peaking.slint:56
FR-CULL-4 core/dr-catalog/src/rating.rs:1, core/dr-pipeline/src/sidecar.rs:137, ui/dr-ui/src/library.rs:246, ui/dr-ui/src/library.rs:492
FR-CULL-5 core/dr-catalog/src/bursts.rs:1, core/dr-catalog/src/schema.rs:419, ui/dr-ui/src/bursts.rs:1, ui/dr-ui/src/library.rs:202, ui/dr-ui/src/library.rs:5536
FR-CULL-8 core/dr-catalog/src/face_shard.rs:1, core/dr-catalog/src/faces.rs:1, core/dr-catalog/src/schema.rs:487, core/dr-catalog/src/schema.rs:513, core/dr-catalog/src/schema.rs:554, core/dr-face/src/align.rs:291, ui/dr-ui/examples/face_native.rs:1, ui/dr-ui/src/faces.rs:1, ui/dr-ui/src/faces.rs:330, ui/dr-ui/src/faces.rs:346, ui/dr-ui/src/identity_ui.rs:540, ui/dr-ui/src/lib.rs:1256, ui/dr-ui/src/library.rs:2985, ui/dr-ui/src/library.rs:3077, ui/dr-ui/src/library.rs:3298, ui/dr-ui/src/library.rs:3434, ui/dr-ui/src/library.rs:3470, ui/dr-ui/ui/settings.slint:419, ui/dr-ui/ui/settings.slint:82
FR-CULL-9 core/dr-catalog/src/faces.rs:1, core/dr-catalog/src/schema.rs:554, core/dr-face/src/assign.rs:1, core/dr-face/src/neighbours.rs:1, core/dr-types/src/settings.rs:117, ui/dr-ui/src/faces.rs:1, ui/dr-ui/src/identity_ui.rs:1, ui/dr-ui/ui/identity.slint:283
FR-DEV-1 core/dr-pipeline/src/graph.rs:1, core/dr-pipeline/src/sidecar.rs:1
FR-DEV-2 core/dr-pipeline/src/operation.rs:403
FR-DEV-3 core/dr-gpu/src/adjust.rs:2217, core/dr-gpu/src/adjust.rs:651, core/dr-gpu/src/adjust.rs:770, core/dr-gpu/src/adjust.rs:84, core/dr-gpu/tests/tone_curve.rs:1, core/dr-pipeline/src/coverage.rs:122, core/dr-pipeline/src/coverage.rs:1, core/dr-pipeline/src/detail.rs:434, core/dr-pipeline/src/detail.rs:524, core/dr-pipeline/src/framing.rs:177, core/dr-pipeline/src/framing.rs:234, core/dr-pipeline/src/framing.rs:314, core/dr-pipeline/src/framing.rs:498, core/dr-pipeline/src/framing.rs:753, core/dr-pipeline/src/graph.rs:209, core/dr-pipeline/src/graph.rs:290, core/dr-pipeline/src/graph.rs:735, core/dr-pipeline/src/mask.rs:151, core/dr-pipeline/src/operation.rs:330, core/dr-pipeline/src/operation.rs:535, core/dr-pipeline/src/ops/capture_sharpen.rs:1, core/dr-pipeline/src/ops/capture_sharpen.rs:210, core/dr-pipeline/src/ops/curve.rs:100, core/dr-pipeline/src/ops/curve.rs:1, core/dr-pipeline/src/ops/curve.rs:219, core/dr-pipeline/src/ops/curve.rs:635, core/dr-pipeline/src/ops/local_contrast.rs:1, core/dr-pipeline/src/ops/noise_reduction.rs:1, core/dr-pipeline/src/ops/noise_reduction.rs:273, core/dr-pipeline/src/sidecar.rs:1048, core/dr-pipeline/src/sidecar.rs:158, core/dr-pipeline/src/sidecar.rs:1714, core/dr-pipeline/src/sidecar.rs:1774, core/dr-pipeline/tests/tone_curve.rs:1, core/dr-segment/src/refine.rs:850, ui/dr-ui/src/develop.rs:103, ui/dr-ui/src/develop.rs:1517, ui/dr-ui/src/develop.rs:165, ui/dr-ui/src/develop.rs:1933, ui/dr-ui/src/develop.rs:2147, ui/dr-ui/src/develop.rs:2165, ui/dr-ui/src/develop.rs:2179, ui/dr-ui/src/develop.rs:2201, ui/dr-ui/src/develop.rs:2347, ui/dr-ui/src/develop.rs:2445, ui/dr-ui/src/develop.rs:328, ui/dr-ui/src/develop.rs:3502, ui/dr-ui/src/develop.rs:3562, ui/dr-ui/src/develop.rs:365, ui/dr-ui/src/develop.rs:3963, ui/dr-ui/src/develop.rs:3993, ui/dr-ui/src/develop.rs:4059, ui/dr-ui/src/develop.rs:4073, ui/dr-ui/src/develop.rs:4265, ui/dr-ui/src/develop.rs:5055, ui/dr-ui/src/develop.rs:5176, ui/dr-ui/src/develop.rs:5332, ui/dr-ui/src/develop.rs:5468, ui/dr-ui/src/develop.rs:5512, ui/dr-ui/src/develop.rs:5562, ui/dr-ui/src/develop.rs:588, ui/dr-ui/src/develop.rs:649, ui/dr-ui/src/develop.rs:803, ui/dr-ui/src/develop.rs:850, ui/dr-ui/src/develop.rs:879, ui/dr-ui/src/lib.rs:1696, ui/dr-ui/src/lib.rs:2512, ui/dr-ui/src/lib.rs:2708, ui/dr-ui/src/lib.rs:2880, ui/dr-ui/src/lib.rs:2944, ui/dr-ui/src/lib.rs:2998, ui/dr-ui/src/lib.rs:389, ui/dr-ui/src/lib.rs:432, ui/dr-ui/src/lib.rs:455, ui/dr-ui/src/library.rs:539, ui/dr-ui/src/masks_ui.rs:249, ui/dr-ui/src/masks_ui.rs:41, ui/dr-ui/src/masks_ui.rs:884, ui/dr-ui/src/masks_ui.rs:998, ui/dr-ui/src/presets.rs:394, ui/dr-ui/src/segmentation.rs:116, ui/dr-ui/src/segmentation.rs:330, ui/dr-ui/src/segmentation.rs:346, ui/dr-ui/src/segmentation.rs:476, ui/dr-ui/src/segmentation.rs:504, ui/dr-ui/ui/adjust.slint:547, ui/dr-ui/ui/adjust.slint:666, ui/dr-ui/ui/app.slint:156, ui/dr-ui/ui/app.slint:202, ui/dr-ui/ui/app.slint:2052, ui/dr-ui/ui/app.slint:68, ui/dr-ui/ui/app.slint:990, ui/dr-ui/ui/develop.slint:220, ui/dr-ui/ui/masks.slint:612
FR-DEV-3a core/dr-pipeline/ops/exposure.yaml:1, core/dr-pipeline/src/descriptor.rs:194, core/dr-pipeline/src/descriptor.rs:234, core/dr-pipeline/src/descriptor.rs:258, core/dr-pipeline/src/descriptor.rs:313, core/dr-pipeline/src/framing.rs:395, core/dr-pipeline/src/graph.rs:25, core/dr-pipeline/src/graph.rs:337, core/dr-pipeline/src/graph.rs:47, core/dr-pipeline/src/graph.rs:60, core/dr-pipeline/src/mask.rs:1108, core/dr-pipeline/src/operation.rs:232, core/dr-pipeline/src/operation.rs:365, core/dr-pipeline/src/ops/curve.rs:319, ui/dr-ui/src/develop.rs:1414, ui/dr-ui/src/lib.rs:749, ui/dr-ui/tests/ui_names_no_operation.rs:1
FR-DEV-3b core/dr-pipeline/src/descriptor.rs:258, core/dr-pipeline/src/framing.rs:395, core/dr-pipeline/src/graph.rs:60, core/dr-pipeline/src/operation.rs:365
FR-DEV-3c core/dr-pipeline/ops/exposure.yaml:1, core/dr-pipeline/src/graph.rs:337, core/dr-pipeline/src/graph.rs:47, core/dr-pipeline/src/mask.rs:1108, ui/dr-ui/src/develop.rs:6141
FR-DEV-3d core/dr-gpu/src/adjust.rs:104, core/dr-gpu/src/adjust.rs:1079, core/dr-gpu/src/adjust.rs:770, core/dr-gpu/src/adjust.rs:84, core/dr-gpu/src/adjust.rs:986, core/dr-gpu/tests/capture_sharpen.rs:434, core/dr-gpu/tests/detail_stage.rs:242, core/dr-gpu/tests/local_contrast.rs:558, core/dr-gpu/tests/noise_reduction.rs:556, core/dr-pipeline/src/framing.rs:314, core/dr-pipeline/src/graph.rs:774, core/dr-pipeline/src/operation.rs:32, core/dr-pipeline/src/operation.rs:403, core/dr-pipeline/src/operation.rs:53, core/dr-pipeline/src/operation.rs:71
FR-DEV-3e core/dr-decode/src/base_curve.rs:145, core/dr-decode/src/base_curve.rs:158, core/dr-decode/src/base_curve.rs:1, core/dr-decode/src/base_curve.rs:267, core/dr-decode/src/base_curve.rs:347, core/dr-decode/src/base_curve.rs:55, core/dr-decode/src/lib.rs:121, core/dr-decode/src/lib.rs:708, core/dr-decode/src/lib.rs:748, core/dr-decode/src/profile.rs:102, core/dr-decode/src/profile.rs:151, core/dr-decode/src/profile.rs:1, core/dr-decode/src/profile.rs:235, core/dr-decode/src/profile.rs:286, core/dr-decode/src/profile.rs:343, core/dr-decode/src/profile.rs:458, core/dr-decode/src/profile.rs:492, core/dr-decode/src/profile.rs:630, core/dr-gpu/src/adjust.rs:37, core/dr-gpu/src/adjust.rs:967, core/dr-gpu/src/demosaic.rs:121, core/dr-gpu/src/demosaic.rs:86, core/dr-gpu/tests/base_curve.rs:1, core/dr-pipeline/src/operation.rs:1762, core/dr-pipeline/src/operation.rs:1843, core/dr-pipeline/src/operation.rs:1868, core/dr-pipeline/src/operation.rs:1883, core/dr-pipeline/src/operation.rs:1907, core/dr-pipeline/src/operation.rs:310, core/dr-pipeline/src/operation.rs:454, core/dr-pipeline/src/operation.rs:464, core/dr-pipeline/src/operation.rs:625
FR-DEV-3f core/dr-film/src/bake.rs:271, core/dr-film/src/bake.rs:62, core/dr-film/src/boolean_grain.rs:1, core/dr-film/src/boolean_grain.rs:78, core/dr-film/src/grain.rs:140, core/dr-film/src/grain.rs:1, core/dr-film/src/grain.rs:302, core/dr-film/src/grain.rs:79, core/dr-film/src/lib.rs:160, core/dr-film/src/lib.rs:1, core/dr-film/src/profile.rs:100, core/dr-film/src/profile.rs:142, core/dr-film/src/profile.rs:182, core/dr-film/src/profile.rs:259, core/dr-film/src/profile.rs:502, core/dr-film/src/profile.rs:73, core/dr-gpu/src/adjust.rs:139, core/dr-gpu/src/adjust.rs:196, core/dr-gpu/src/adjust.rs:357, core/dr-gpu/src/adjust.rs:483, core/dr-gpu/src/adjust.rs:77, core/dr-gpu/tests/film_sim.rs:191, core/dr-gpu/tests/film_sim.rs:1, core/dr-pipeline/src/graph.rs:103, core/dr-pipeline/src/graph.rs:153, core/dr-pipeline/src/graph.rs:444, core/dr-pipeline/src/operation.rs:1137, core/dr-pipeline/src/operation.rs:1165, core/dr-pipeline/src/operation.rs:1211, core/dr-pipeline/src/operation.rs:1762, core/dr-pipeline/src/operation.rs:296, core/dr-pipeline/src/operation.rs:310, core/dr-pipeline/src/ops/film_sim.rs:129, core/dr-pipeline/src/ops/film_sim.rs:153, core/dr-pipeline/src/ops/film_sim.rs:1, core/dr-pipeline/src/ops/film_sim.rs:331, core/dr-pipeline/src/ops/film_sim.rs:43, core/dr-pipeline/src/ops/film_sim.rs:87, core/dr-pipeline/src/ops/film_sim.rs:92, core/dr-pipeline/src/sidecar.rs:113, core/dr-pipeline/src/sidecar.rs:169, core/dr-pipeline/src/sidecar.rs:2060, core/dr-pipeline/src/sidecar.rs:2136, core/dr-pipeline/src/sidecar.rs:535, core/dr-pipeline/src/sidecar.rs:662, core/dr-pipeline/src/sidecar.rs:794, core/dr-pipeline/src/state.rs:100, core/dr-pipeline/src/state.rs:115, core/dr-pipeline/src/state.rs:60, ui/dr-ui/src/develop.rs:3710, ui/dr-ui/src/develop.rs:3727, ui/dr-ui/src/develop.rs:3739, ui/dr-ui/src/develop.rs:3777, ui/dr-ui/src/develop.rs:3786, ui/dr-ui/src/develop.rs:3889, ui/dr-ui/src/develop.rs:4302, ui/dr-ui/src/develop.rs:4317, ui/dr-ui/src/lib.rs:2486, ui/dr-ui/src/lib.rs:682, ui/dr-ui/src/lib.rs:740, ui/dr-ui/src/library.rs:530, ui/dr-ui/src/library.rs:778, ui/dr-ui/src/presets.rs:402, ui/dr-ui/ui/adjust.slint:1072, ui/dr-ui/ui/adjust.slint:996, ui/dr-ui/ui/app.slint:2654, ui/dr-ui/ui/app.slint:718
FR-DEV-3h core/dr-decode/src/lib.rs:404, core/dr-decode/src/preview.rs:29, core/dr-pipeline/src/framing.rs:1067, core/dr-pipeline/src/framing.rs:328, core/dr-pipeline/src/framing.rs:498, core/dr-types/src/lib.rs:339, core/dr-types/src/lib.rs:447, core/dr-types/src/lib.rs:459, core/dr-types/src/lib.rs:475, ui/dr-ui/src/develop.rs:140, ui/dr-ui/src/develop.rs:2364, ui/dr-ui/src/segmentation.rs:476
FR-DEV-4 core/dr-gpu/src/adjust.rs:770, core/dr-gpu/src/lib.rs:351, ui/dr-ui/ui/crop.slint:1
FR-DEV-5 core/dr-pipeline/src/graph.rs:465, core/dr-pipeline/src/graph.rs:513, core/dr-pipeline/src/history.rs:102, core/dr-pipeline/src/history.rs:110, core/dr-pipeline/src/history.rs:127, core/dr-pipeline/src/history.rs:184, core/dr-pipeline/src/history.rs:1, core/dr-pipeline/src/history.rs:214, core/dr-pipeline/src/history.rs:234, core/dr-pipeline/src/history.rs:293, core/dr-pipeline/src/history.rs:479, core/dr-pipeline/src/history.rs:489, core/dr-pipeline/src/history.rs:499, core/dr-pipeline/src/history.rs:526, core/dr-pipeline/src/history.rs:86, core/dr-pipeline/src/state.rs:1, core/dr-pipeline/src/state.rs:75, ui/dr-ui/src/develop.rs:3739, ui/dr-ui/src/develop.rs:4317, ui/dr-ui/src/develop.rs:4347, ui/dr-ui/src/develop.rs:4360, ui/dr-ui/src/develop.rs:4372, ui/dr-ui/src/develop.rs:4388, ui/dr-ui/src/develop.rs:4420, ui/dr-ui/src/develop.rs:4424, ui/dr-ui/src/develop.rs:4443, ui/dr-ui/src/develop.rs:4459, ui/dr-ui/src/develop.rs:746, ui/dr-ui/src/labels.rs:12, ui/dr-ui/src/labels.rs:231, ui/dr-ui/src/lib.rs:1631, ui/dr-ui/src/lib.rs:1674, ui/dr-ui/src/lib.rs:1682, ui/dr-ui/src/lib.rs:2682, ui/dr-ui/ui/history.slint:1
FR-DEV-6 core/dr-pipeline/src/preset.rs:1, core/dr-pipeline/src/preset.rs:381, core/dr-pipeline/src/preset.rs:414, core/dr-pipeline/src/starter.rs:1, core/dr-preset-xmp/src/lib.rs:1, core/dr-types/src/settings.rs:272, ui/dr-ui/src/develop.rs:4259, ui/dr-ui/src/develop.rs:4280, ui/dr-ui/src/lib.rs:1598, ui/dr-ui/src/lib.rs:2297, ui/dr-ui/src/lib.rs:2326, ui/dr-ui/src/library.rs:1923, ui/dr-ui/src/library.rs:492, ui/dr-ui/src/library.rs:520, ui/dr-ui/src/library_ui.rs:3185, ui/dr-ui/src/library_ui.rs:3585, ui/dr-ui/src/library_ui.rs:554, ui/dr-ui/src/preset_store.rs:1, ui/dr-ui/src/presets.rs:1, ui/dr-ui/src/presets.rs:664, ui/dr-ui/src/presets.rs:698, ui/dr-ui/ui/adjust.slint:740, ui/dr-ui/ui/adjust.slint:767, ui/dr-ui/ui/adjust.slint:801, ui/dr-ui/ui/app.slint:1605, ui/dr-ui/ui/app.slint:2743, ui/dr-ui/ui/app.slint:790, ui/dr-ui/ui/app.slint:801, ui/dr-ui/ui/library.slint:1564, ui/dr-ui/ui/library.slint:1570, ui/dr-ui/ui/library.slint:4117, ui/dr-ui/ui/library.slint:4132, ui/dr-ui/ui/presets.slint:105, ui/dr-ui/ui/presets.slint:113, ui/dr-ui/ui/presets.slint:19, ui/dr-ui/ui/presets.slint:276, ui/dr-ui/ui/presets.slint:297, ui/dr-ui/ui/presets.slint:5, ui/dr-ui/ui/presets.slint:60, ui/dr-ui/ui/settings.slint:101, ui/dr-ui/ui/settings.slint:557
FR-DEV-7 core/dr-pipeline/src/history.rs:214, core/dr-pipeline/src/history.rs:499, core/dr-pipeline/src/history.rs:526, ui/dr-ui/src/develop.rs:4388, ui/dr-ui/src/develop.rs:4420, ui/dr-ui/src/lib.rs:1682, ui/dr-ui/src/lib.rs:2682, ui/dr-ui/ui/history.slint:1
FR-DEV-8 core/dr-gpu/src/detail.rs:405, core/dr-gpu/src/detail.rs:623, core/dr-gpu/tests/detail_instances.rs:1, core/dr-gpu/tests/spot_removal.rs:1, core/dr-pipeline/src/detail.rs:410, core/dr-pipeline/src/detail.rs:434, core/dr-pipeline/src/detail.rs:469, core/dr-pipeline/src/detail.rs:555, core/dr-pipeline/src/graph.rs:115, core/dr-pipeline/src/graph.rs:231, core/dr-pipeline/src/graph.rs:859, core/dr-pipeline/src/operation.rs:330, core/dr-pipeline/src/operation.rs:579, core/dr-pipeline/src/sidecar.rs:185, core/dr-pipeline/src/sidecar.rs:354, core/dr-pipeline/src/sidecar.rs:674, core/dr-pipeline/src/sidecar.rs:810, core/dr-pipeline/src/sidecar.rs:864, core/dr-pipeline/src/sidecar.rs:894, core/dr-pipeline/src/spot.rs:115, core/dr-pipeline/src/spot.rs:151, core/dr-pipeline/src/spot.rs:1, core/dr-pipeline/src/spot.rs:207, core/dr-pipeline/src/spot.rs:387, core/dr-pipeline/src/spot.rs:472, core/dr-pipeline/src/spot.rs:582, core/dr-pipeline/src/spot.rs:673, core/dr-pipeline/src/state.rs:103, core/dr-pipeline/tests/spot_sidecar.rs:1, core/dr-pipeline/tests/spots.rs:1, ui/dr-ui/src/develop.rs:2516, ui/dr-ui/src/develop.rs:2554, ui/dr-ui/src/develop.rs:2619, ui/dr-ui/src/develop.rs:2702, ui/dr-ui/src/develop.rs:2716, ui/dr-ui/src/develop.rs:833, ui/dr-ui/src/labels.rs:53, ui/dr-ui/src/lib.rs:1703, ui/dr-ui/src/lib.rs:2800, ui/dr-ui/src/lib.rs:394, ui/dr-ui/src/spots_ui.rs:19, ui/dr-ui/src/spots_ui.rs:1, ui/dr-ui/src/spots_ui.rs:265, ui/dr-ui/ui/adjust.slint:832, ui/dr-ui/ui/app.slint:146, ui/dr-ui/ui/app.slint:1955, ui/dr-ui/ui/app.slint:2130, ui/dr-ui/ui/app.slint:2555, ui/dr-ui/ui/icons.slint:338, ui/dr-ui/ui/spots.slint:172, ui/dr-ui/ui/spots.slint:48, ui/dr-ui/ui/spots.slint:5
FR-DSP-1 core/dr-gpu/src/adjust.rs:2140, core/dr-gpu/src/adjust.rs:2217, core/dr-gpu/src/adjust.rs:2302, core/dr-gpu/src/adjust.rs:54, core/dr-gpu/src/adjust.rs:770, core/dr-gpu/src/lib.rs:172, core/dr-gpu/src/lib.rs:192, core/dr-gpu/src/lib.rs:70, core/dr-gpu/src/lib.rs:93, core/dr-gpu/tests/capture_sharpen.rs:200, core/dr-gpu/tests/detail_stage.rs:328, core/dr-gpu/tests/local_contrast.rs:264, core/dr-gpu/tests/noise_reduction.rs:378, core/dr-pipeline/src/detail.rs:136, core/dr-pipeline/src/detail.rs:524, core/dr-pipeline/src/graph.rs:705, core/dr-pipeline/src/graph.rs:735, core/dr-pipeline/src/ops/capture_sharpen.rs:1, core/dr-pipeline/src/ops/capture_sharpen.rs:659, core/dr-pipeline/src/ops/local_contrast.rs:1, core/dr-pipeline/src/ops/local_contrast.rs:971, core/dr-pipeline/src/ops/noise_reduction.rs:700, core/dr-pipeline/src/spot.rs:673, ui/dr-ui/src/develop.rs:3150, ui/dr-ui/src/develop.rs:4714, ui/dr-ui/src/develop.rs:5686, ui/dr-ui/src/develop.rs:5720, ui/dr-ui/src/lib.rs:890, ui/dr-ui/src/lib.rs:93, ui/dr-ui/src/lib.rs:949
FR-DSP-3 core/dr-gpu/tests/frame_budget.rs:101, core/dr-gpu/tests/local_contrast.rs:329, core/dr-pipeline/src/ops/local_contrast.rs:447
FR-DSP-5 core/dr-gpu/tests/frame_budget.rs:101, core/dr-gpu/tests/zoom_resolution.rs:135, core/dr-gpu/tests/zoom_resolution.rs:166, core/dr-gpu/tests/zoom_resolution.rs:1, core/dr-gpu/tests/zoom_resolution.rs:216
FR-DSP-6 core/dr-pipeline/src/operation.rs:497, core/dr-types/src/colour.rs:1, ui/dr-ui/src/develop.rs:3180, ui/dr-ui/src/develop.rs:7114, ui/dr-ui/src/lib.rs:1659, ui/dr-ui/src/lib.rs:3183
FR-DSP-7 core/dr-gpu/src/histogram.rs:147, core/dr-gpu/src/histogram.rs:1, core/dr-gpu/src/histogram.rs:281, core/dr-gpu/src/histogram.rs:50, core/dr-gpu/src/shaders/histogram.wgsl:1, ui/dr-ui/src/develop.rs:3229, ui/dr-ui/src/develop.rs:6788, ui/dr-ui/src/develop.rs:6820, ui/dr-ui/src/develop.rs:757, ui/dr-ui/src/histogram.rs:1, ui/dr-ui/src/lib.rs:1769, ui/dr-ui/src/lib.rs:373, ui/dr-ui/ui/app.slint:80, ui/dr-ui/ui/histogram.slint:168, ui/dr-ui/ui/histogram.slint:1
FR-DSP-8 platform/dr-plat/src/display.rs:1, platform/dr-plat/src/display/icc.rs:1, platform/dr-plat/src/display/wayland.rs:1, platform/dr-plat/src/display/x11.rs:1, ui/dr-ui/src/develop.rs:3126, ui/dr-ui/src/develop.rs:3180, ui/dr-ui/src/develop.rs:7114, ui/dr-ui/src/develop.rs:7160, ui/dr-ui/src/develop.rs:7179, ui/dr-ui/src/develop.rs:864, ui/dr-ui/src/display_ui.rs:192, ui/dr-ui/src/display_ui.rs:1, ui/dr-ui/src/display_ui.rs:325, ui/dr-ui/src/display_ui.rs:346, ui/dr-ui/src/display_ui.rs:379, ui/dr-ui/src/lib.rs:1620, ui/dr-ui/src/lib.rs:1659, ui/dr-ui/src/lib.rs:3096, ui/dr-ui/src/lib.rs:3183, ui/dr-ui/ui/app.slint:1803, ui/dr-ui/ui/app.slint:53, ui/dr-ui/ui/settings.slint:124, ui/dr-ui/ui/settings.slint:794
FR-EXP-1 core/dr-export/src/encode.rs:1, core/dr-export/src/lib.rs:1, core/dr-types/src/settings.rs:1, ui/dr-ui/src/settings_ui.rs:1
FR-EXP-2 core/dr-export/src/encode.rs:1, core/dr-export/src/error.rs:26, core/dr-export/src/icc.rs:1, core/dr-export/src/lib.rs:153, core/dr-export/src/lib.rs:1, core/dr-export/src/lib.rs:53, core/dr-gpu/src/adjust.rs:2450, core/dr-pipeline/src/graph.rs:688, core/dr-pipeline/src/graph.rs:749, core/dr-pipeline/src/operation.rs:497, core/dr-types/src/colour.rs:1, core/dr-types/src/settings.rs:1, core/dr-types/src/settings.rs:713, ui/dr-ui/src/develop.rs:7179, ui/dr-ui/src/settings_ui.rs:1
FR-EXP-3 core/dr-export/src/lib.rs:182, core/dr-export/src/lib.rs:1, core/dr-export/src/size.rs:136, core/dr-export/src/size.rs:1, core/dr-export/src/size.rs:25, core/dr-export/src/size.rs:84, core/dr-types/src/settings.rs:1, core/dr-types/src/settings.rs:758, core/dr-types/src/settings.rs:766, core/dr-types/src/settings.rs:782, core/dr-types/src/settings.rs:851, core/dr-types/src/settings.rs:879, core/dr-types/src/settings.rs:890, core/dr-types/src/settings.rs:896, ui/dr-ui/src/settings_ui.rs:1, ui/dr-ui/src/settings_ui.rs:207, ui/dr-ui/src/settings_ui.rs:220, ui/dr-ui/src/settings_ui.rs:235, ui/dr-ui/src/settings_ui.rs:565, ui/dr-ui/ui/settings.slint:697, ui/dr-ui/ui/settings.slint:707
FR-EXP-4 core/dr-export/src/lib.rs:1, core/dr-export/src/sharpen.rs:1, core/dr-export/src/size.rs:1, ui/dr-ui/src/settings_ui.rs:1
FR-EXP-5 ui/dr-ui/src/settings_store.rs:1
FR-EXP-6 core/dr-export/src/lib.rs:1, core/dr-export/src/name.rs:1, core/dr-types/src/settings.rs:1, ui/dr-ui/src/export.rs:1, ui/dr-ui/src/lib.rs:484, ui/dr-ui/src/settings_ui.rs:1, ui/dr-ui/src/settings_ui.rs:49, ui/dr-ui/src/settings_ui.rs:679
FR-EXP-7 ui/dr-ui/src/activity.rs:83, ui/dr-ui/src/export.rs:1, ui/dr-ui/src/export.rs:992, ui/dr-ui/src/lib.rs:232, ui/dr-ui/src/lib.rs:2428, ui/dr-ui/src/lib.rs:484, ui/dr-ui/src/lib.rs:530, ui/dr-ui/src/lib.rs:557, ui/dr-ui/src/library_ui.rs:3968, ui/dr-ui/src/library_ui.rs:645, ui/dr-ui/src/library_ui.rs:745, ui/dr-ui/src/library_ui.rs:7659, ui/dr-ui/src/library_ui.rs:7736, ui/dr-ui/src/library_ui.rs:7748, ui/dr-ui/src/library_ui.rs:802, ui/dr-ui/ui/app.slint:1129, ui/dr-ui/ui/app.slint:1615, ui/dr-ui/ui/library.slint:1573, ui/dr-ui/ui/library.slint:4157
FR-EXP-8 core/dr-decode/src/lib.rs:326, core/dr-decode/src/lib.rs:350, core/dr-decode/src/lib.rs:364, core/dr-decode/src/lib.rs:71, core/dr-decode/src/lib.rs:79, core/dr-decode/src/lib.rs:82, core/dr-decode/src/locate.rs:1164, core/dr-decode/src/locate.rs:1223, core/dr-decode/src/locate.rs:316, core/dr-decode/src/locate.rs:487, core/dr-decode/src/locate.rs:571, core/dr-decode/src/locate.rs:584, core/dr-decode/src/locate.rs:667, core/dr-export/examples/export.rs:99, core/dr-export/src/encode.rs:117, core/dr-export/src/encode.rs:161, core/dr-export/src/encode.rs:1, core/dr-export/src/encode.rs:206, core/dr-export/src/encode.rs:235, core/dr-export/src/encode.rs:311, core/dr-export/src/encode.rs:325, core/dr-export/src/encode.rs:408, core/dr-export/src/encode.rs:456, core/dr-export/src/encode.rs:70, core/dr-export/src/encode.rs:795, core/dr-export/src/encode.rs:809, core/dr-export/src/encode.rs:850, core/dr-export/src/encode.rs:898, core/dr-export/src/exif.rs:1, core/dr-export/src/lib.rs:136, core/dr-export/src/metadata.rs:1, core/dr-export/src/metadata.rs:41, core/dr-export/src/metadata.rs:74, core/dr-types/src/lib.rs:655, core/dr-types/src/settings.rs:426, ui/dr-ui/src/develop.rs:3485, ui/dr-ui/src/develop.rs:3593, ui/dr-ui/src/develop.rs:703, ui/dr-ui/src/export.rs:467, ui/dr-ui/src/export.rs:634, ui/dr-ui/src/export.rs:680, ui/dr-ui/src/export.rs:702, ui/dr-ui/src/export.rs:826, ui/dr-ui/src/export.rs:844, ui/dr-ui/src/lib.rs:232, ui/dr-ui/src/lib.rs:255, ui/dr-ui/src/lib.rs:516, ui/dr-ui/src/settings_ui.rs:1
FR-EXP-9 core/dr-decode/src/lib.rs:506, core/dr-export/src/lib.rs:128, core/dr-export/src/lib.rs:1, core/dr-gpu/src/adjust.rs:1106, ui/dr-ui/examples/face_native.rs:1, ui/dr-ui/src/develop.rs:3614, ui/dr-ui/src/develop.rs:3652, ui/dr-ui/src/develop.rs:5230, ui/dr-ui/src/lib.rs:484, ui/dr-ui/src/library.rs:3077, ui/dr-ui/src/library.rs:3434, ui/dr-ui/src/library.rs:3470, ui/dr-ui/tests/export_ignores_the_viewport.rs:1
FR-NC-1 core/dr-sync-nextcloud/src/auth.rs:132, core/dr-sync-nextcloud/src/auth.rs:44, core/dr-sync-nextcloud/src/provider.rs:1, core/dr-sync/src/account.rs:355, ui/dr-ui/src/launch.rs:277, ui/dr-ui/src/launch.rs:61, ui/dr-ui/src/launch_ui.rs:417
FR-NC-10 core/dr-sync/src/account.rs:220, ui/dr-ui/src/export.rs:1, ui/dr-ui/src/lib.rs:557, ui/dr-ui/src/library.rs:1121, ui/dr-ui/src/library.rs:1959, ui/dr-ui/src/library.rs:576, ui/dr-ui/src/library.rs:877, ui/dr-ui/src/library_ui.rs:1969, ui/dr-ui/src/library_ui.rs:3968, ui/dr-ui/src/library_ui.rs:586, ui/dr-ui/src/sidecar_cache.rs:1
FR-NC-12 core/dr-sync-folder/src/lib.rs:1, core/dr-sync-nextcloud/src/lib.rs:40, core/dr-sync-nextcloud/src/lib.rs:914, core/dr-sync-nextcloud/src/provider.rs:1, core/dr-sync/src/account.rs:1, core/dr-sync/src/account.rs:81, core/dr-sync/src/lib.rs:218, core/dr-sync/src/lib.rs:51, core/dr-sync/src/provider.rs:106, core/dr-sync/src/provider.rs:1, core/dr-sync/src/provider.rs:53, core/dr-sync/src/reachability.rs:1, ui/dr-ui/src/remote.rs:1
FR-NC-13 core/dr-sync-folder/src/lib.rs:197, core/dr-sync-folder/src/lib.rs:1, core/dr-sync-folder/src/lib.rs:73, core/dr-sync/src/provider.rs:106, ui/dr-ui/src/launch_ui.rs:316, ui/dr-ui/src/remote.rs:1
FR-NC-2 core/dr-sync/src/account.rs:1, core/dr-sync/src/account.rs:298, core/dr-sync/src/account.rs:355, core/dr-sync/src/account.rs:59, platform/dr-plat/src/secrets.rs:82
FR-NC-3 core/dr-decode/src/locate.rs:1, core/dr-decode/src/preview.rs:148, core/dr-sync/src/capability.rs:85, core/dr-thumbs/src/lib.rs:1, core/dr-types/src/place.rs:1, ui/dr-ui/src/library.rs:1, ui/dr-ui/src/library.rs:2984, ui/dr-ui/src/library.rs:3575, ui/dr-ui/src/library_ui.rs:1, ui/dr-ui/src/library_ui.rs:4221, ui/dr-ui/src/library_ui.rs:5720, ui/dr-ui/ui/app.slint:434, ui/dr-ui/ui/settings.slint:387, ui/dr-ui/ui/settings.slint:73
FR-NC-4 core/dr-sync-folder/src/lib.rs:197, core/dr-sync-nextcloud/src/propfind.rs:103, core/dr-sync-nextcloud/src/propfind.rs:51, core/dr-sync/src/capability.rs:6, core/dr-sync/src/lib.rs:218, core/dr-sync/src/scan.rs:93, ui/dr-ui/src/launch.rs:61
FR-NC-5 core/dr-sync-nextcloud/src/propfind.rs:51, ui/dr-ui/src/import.rs:488
FR-NC-6 ui/dr-ui/src/activity.rs:1
FR-NC-6a core/dr-catalog/src/cache.rs:1, core/dr-catalog/src/cache.rs:225, core/dr-catalog/src/schema.rs:1126, core/dr-catalog/src/schema.rs:725, core/dr-sync-folder/src/borrow.rs:1, core/dr-types/src/selector.rs:1, core/dr-types/src/settings.rs:1, ui/dr-ui/src/collections_ui.rs:3413, ui/dr-ui/src/collections_ui.rs:636, ui/dr-ui/src/collections_ui.rs:704, ui/dr-ui/src/lib.rs:2132, ui/dr-ui/src/lib.rs:3255, ui/dr-ui/src/library.rs:1585, ui/dr-ui/src/library.rs:1608, ui/dr-ui/src/library.rs:1883, ui/dr-ui/src/library_ui.rs:1394, ui/dr-ui/src/library_ui.rs:1467, ui/dr-ui/src/library_ui.rs:1568, ui/dr-ui/src/library_ui.rs:1623, ui/dr-ui/src/library_ui.rs:1758, ui/dr-ui/src/library_ui.rs:1876, ui/dr-ui/src/library_ui.rs:2643, ui/dr-ui/src/library_ui.rs:341, ui/dr-ui/src/library_ui.rs:352, ui/dr-ui/src/library_ui.rs:360, ui/dr-ui/src/library_ui.rs:372, ui/dr-ui/src/library_ui.rs:381, ui/dr-ui/src/library_ui.rs:482, ui/dr-ui/src/library_ui.rs:492, ui/dr-ui/src/library_ui.rs:539, ui/dr-ui/src/library_ui.rs:602, ui/dr-ui/src/library_ui.rs:633, ui/dr-ui/src/library_ui.rs:645, ui/dr-ui/src/library_ui.rs:6522, ui/dr-ui/src/library_ui.rs:6540, ui/dr-ui/src/library_ui.rs:6552, ui/dr-ui/src/settings_store.rs:1, ui/dr-ui/src/settings_ui.rs:1, ui/dr-ui/ui/app.slint:1513, ui/dr-ui/ui/app.slint:2733, ui/dr-ui/ui/app.slint:566, ui/dr-ui/ui/collections.slint:249, ui/dr-ui/ui/collections.slint:360, ui/dr-ui/ui/collections.slint:369, ui/dr-ui/ui/collections.slint:372, ui/dr-ui/ui/collections.slint:395, ui/dr-ui/ui/collections.slint:52, ui/dr-ui/ui/collections.slint:596, ui/dr-ui/ui/collections.slint:747, ui/dr-ui/ui/collections.slint:84, ui/dr-ui/ui/icons.slint:261
FR-NC-6b ui/dr-ui/src/library_ui.rs:1623, ui/dr-ui/src/memory.rs:1
FR-NC-6c core/dr-catalog/src/cache.rs:225, core/dr-sync-folder/src/borrow.rs:1, core/dr-sync-folder/src/lib.rs:197, core/dr-sync-folder/src/lib.rs:73, core/dr-sync-folder/src/lib.rs:818, core/dr-sync-folder/src/lib.rs:857, core/dr-sync-folder/src/vfs.rs:1, core/dr-sync-nextcloud/src/desktop_client.rs:167, core/dr-sync-nextcloud/src/desktop_client.rs:30, core/dr-sync/src/capability.rs:41, core/dr-sync/src/error.rs:39, core/dr-sync/src/lib.rs:158, core/dr-sync/src/types.rs:101, core/dr-types/src/lib.rs:122, core/dr-types/src/lib.rs:204, ui/dr-ui/src/activity.rs:1, ui/dr-ui/src/collections_ui.rs:3413, ui/dr-ui/src/collections_ui.rs:636, ui/dr-ui/src/collections_ui.rs:704, ui/dr-ui/src/derived_sync.rs:585, ui/dr-ui/src/derived_sync.rs:805, ui/dr-ui/src/library.rs:1705, ui/dr-ui/src/library.rs:1795, ui/dr-ui/src/library.rs:3261, ui/dr-ui/src/library.rs:3695, ui/dr-ui/src/library.rs:981, ui/dr-ui/src/library_ui.rs:1394, ui/dr-ui/src/library_ui.rs:1467, ui/dr-ui/src/library_ui.rs:1666, ui/dr-ui/src/remote.rs:40, ui/dr-ui/ui/collections.slint:249, ui/dr-ui/ui/collections.slint:747, ui/dr-ui/ui/icons.slint:261
FR-NC-6d core/dr-sync-folder/src/borrow.rs:1, core/dr-sync-folder/src/lib.rs:1, core/dr-sync-folder/src/vfs.rs:1
FR-NC-7 core/dr-catalog/src/face_shard.rs:1, core/dr-sync-nextcloud/src/lib.rs:105, ui/dr-ui/src/derived_sync.rs:1, ui/dr-ui/src/library.rs:3575, ui/dr-ui/src/library_ui.rs:4221, ui/dr-ui/ui/settings.slint:387
FR-NC-7a core/dr-ingest/src/layout.rs:1, core/dr-sync/src/upload.rs:1, core/dr-sync/src/upload.rs:40, core/dr-types/src/settings.rs:206, ui/dr-ui/src/import.rs:1, ui/dr-ui/src/import.rs:97, ui/dr-ui/src/import_ui.rs:1, ui/dr-ui/src/lib.rs:1304, ui/dr-ui/ui/import.slint:5
FR-NC-7b core/dr-ingest/src/lib.rs:733, core/dr-sync/src/upload.rs:1, ui/dr-ui/src/import.rs:122, ui/dr-ui/src/import.rs:336, ui/dr-ui/src/import.rs:584, ui/dr-ui/src/import.rs:97, ui/dr-ui/src/import_ui.rs:1, ui/dr-ui/src/lib.rs:1304
FR-NC-8 core/dr-pipeline/src/sidecar.rs:120, core/dr-pipeline/src/sidecar.rs:94, ui/dr-ui/src/lib.rs:2102, ui/dr-ui/src/library.rs:492, ui/dr-ui/src/library_ui.rs:554
FR-NC-9 core/dr-catalog/src/merge.rs:1, core/dr-catalog/src/schema.rs:668, core/dr-catalog/src/sync.rs:1, core/dr-pipeline/src/sidecar.rs:158, core/dr-pipeline/src/sidecar.rs:185, core/dr-pipeline/src/sidecar.rs:2136, core/dr-pipeline/src/sidecar.rs:354, core/dr-pipeline/src/sidecar.rs:452, core/dr-pipeline/src/spot.rs:245, core/dr-pipeline/tests/mask_sidecar.rs:1055, core/dr-pipeline/tests/spot_sidecar.rs:1, ui/dr-ui/src/derived_sync.rs:585, ui/dr-ui/src/library.rs:1031, ui/dr-ui/src/library.rs:877
FR-PLAT-AND-2 core/dr-catalog/src/walk.rs:1022, core/dr-catalog/src/walk.rs:435, core/dr-sync-folder/src/lib.rs:242, core/dr-sync-folder/src/tests.rs:51, core/dr-sync/src/error.rs:113, core/dr-sync/src/error.rs:195, core/dr-sync/src/scan.rs:175, core/dr-sync/src/scan.rs:464, core/dr-sync/src/scan.rs:490, core/dr-sync/src/scan.rs:519, ui/dr-ui/src/library.rs:1242, ui/dr-ui/src/library.rs:1295, ui/dr-ui/src/library.rs:1326, ui/dr-ui/src/library.rs:1431, ui/dr-ui/src/library_ui.rs:1239, ui/dr-ui/src/library_ui.rs:1318, ui/dr-ui/src/library_ui.rs:1917, ui/dr-ui/src/library_ui.rs:325, ui/dr-ui/src/library_ui.rs:523
FR-PLAT-AND-3 core/dr-catalog/src/jobs.rs:1, core/dr-catalog/src/runner.rs:1
FR-PLAT-AND-4 core/dr-catalog/src/runner.rs:1
FR-PLAT-AND-5 apps/darkroom-android/src/lib.rs:166, core/dr-gpu/src/adjust.rs:1029, core/dr-gpu/src/detail.rs:161, core/dr-gpu/src/detail.rs:547, core/dr-gpu/tests/detail_stage.rs:417, ui/dr-ui/src/develop.rs:3458, ui/dr-ui/src/identity_ui.rs:121, ui/dr-ui/src/lib.rs:1123, ui/dr-ui/src/lib.rs:1572, ui/dr-ui/src/memory.rs:163, ui/dr-ui/src/memory.rs:1
FR-PLAT-AND-6 apps/darkroom-android/src/lib.rs:388
FR-PLAT-LIN-1 core/dr-types/src/settings.rs:1, platform/dr-plat/src/storage.rs:344, ui/dr-ui/src/lib.rs:999, ui/dr-ui/src/preset_store.rs:1, ui/dr-ui/src/settings_store.rs:1
FR-PLAT-LIN-2 platform/dr-plat/src/display.rs:1, platform/dr-plat/src/display/wayland.rs:1, platform/dr-plat/src/display/x11.rs:1
FR-PLG-2 core/dr-pipeline/src/declared/decl.rs:1, core/dr-pipeline/src/declared/expr.rs:152, core/dr-pipeline/src/declared/expr.rs:1, core/dr-pipeline/src/declared/mod.rs:1, core/dr-pipeline/src/declared/mod.rs:82, core/dr-pipeline/src/descriptor.rs:15, core/dr-pipeline/src/descriptor.rs:667, core/dr-pipeline/src/operation.rs:232, core/dr-pipeline/tests/declared_parity.rs:1, core/dr-pipeline/tests/declared_parity.rs:240, core/dr-pipeline/tests/declared_parity.rs:305, core/dr-pipeline/tests/declared_parity.rs:358, core/dr-pipeline/tests/declared_parity.rs:417
FR-PLG-2d core/dr-pipeline/src/declared/decl.rs:112, core/dr-pipeline/src/declared/decl.rs:152, core/dr-pipeline/src/declared/decl.rs:1, core/dr-pipeline/src/declared/decl.rs:420, core/dr-pipeline/src/declared/decl.rs:67, core/dr-pipeline/src/declared/mod.rs:1, core/dr-pipeline/src/declared/mod.rs:384, core/dr-pipeline/src/declared/mod.rs:403
FR-PLG-8 core/dr-pipeline/src/sidecar.rs:1807, core/dr-pipeline/src/sidecar.rs:1840
FR-RAW-1 core/dr-decode/src/lib.rs:243, core/dr-types/src/lib.rs:132, core/dr-types/src/lib.rs:203
FR-RAW-3 core/dr-decode/src/lib.rs:139, core/dr-decode/src/lib.rs:506, core/dr-decode/src/locate.rs:1366
FR-RAW-4 core/dr-decode/src/error.rs:1, ui/dr-ui/src/lib.rs:232
FR-RAW-5 core/dr-decode/src/lib.rs:167, core/dr-gpu/src/demosaic.rs:34, core/dr-gpu/src/demosaic.rs:602, core/dr-gpu/src/demosaic.rs:681, core/dr-gpu/src/demosaic.rs:805
FR-UI-1 ui/dr-ui/src/lib.rs:101, ui/dr-ui/src/lib.rs:108, ui/dr-ui/src/lib.rs:3337, ui/dr-ui/src/masks_ui.rs:884, ui/dr-ui/ui/app.slint:2271, ui/dr-ui/ui/identity.slint:188, ui/dr-ui/ui/library.slint:1071, ui/dr-ui/ui/toolrail.slint:88
FR-UI-2 ui/dr-ui/src/collections_ui.rs:1045, ui/dr-ui/src/collections_ui.rs:1055, ui/dr-ui/src/collections_ui.rs:116, ui/dr-ui/src/collections_ui.rs:154, ui/dr-ui/src/collections_ui.rs:1552, ui/dr-ui/src/collections_ui.rs:1569, ui/dr-ui/src/collections_ui.rs:1821, ui/dr-ui/src/collections_ui.rs:2926, ui/dr-ui/src/gestures.rs:1, ui/dr-ui/src/lib.rs:101, ui/dr-ui/src/library_ui.rs:360, ui/dr-ui/src/library_ui.rs:6407, ui/dr-ui/src/library_ui.rs:6552, ui/dr-ui/src/library_ui.rs:7767, ui/dr-ui/ui/app.slint:596, ui/dr-ui/ui/app.slint:60, ui/dr-ui/ui/app.slint:610, ui/dr-ui/ui/app.slint:961, ui/dr-ui/ui/controls.slint:593, ui/dr-ui/ui/gestures.slint:1, ui/dr-ui/ui/library.slint:1277, ui/dr-ui/ui/library.slint:1284, ui/dr-ui/ui/library.slint:1381, ui/dr-ui/ui/library.slint:2565, ui/dr-ui/ui/library.slint:4195, ui/dr-ui/ui/library.slint:960, ui/dr-ui/ui/library.slint:993, ui/dr-ui/ui/presets.slint:19, ui/dr-ui/ui/settings.slint:110
FR-UI-3 ui/dr-ui/src/develop.rs:2445, ui/dr-ui/src/develop.rs:2554, ui/dr-ui/src/library_ui.rs:5471, ui/dr-ui/src/masks_ui.rs:249, ui/dr-ui/src/masks_ui.rs:976, ui/dr-ui/src/masks_ui.rs:998, ui/dr-ui/src/spots_ui.rs:19, ui/dr-ui/ui/app.slint:2052, ui/dr-ui/ui/collections.slint:4, ui/dr-ui/ui/collections.slint:747, ui/dr-ui/ui/masks.slint:612
FR-UI-4 tools/traceability/src/gestures.rs:1, ui/dr-ui/src/collections_ui.rs:1045, ui/dr-ui/src/collections_ui.rs:1055, ui/dr-ui/src/collections_ui.rs:116, ui/dr-ui/src/collections_ui.rs:117, ui/dr-ui/src/collections_ui.rs:126, ui/dr-ui/src/collections_ui.rs:154, ui/dr-ui/src/collections_ui.rs:1552, ui/dr-ui/src/collections_ui.rs:1569, ui/dr-ui/src/collections_ui.rs:1685, ui/dr-ui/src/collections_ui.rs:1821, ui/dr-ui/src/collections_ui.rs:1848, ui/dr-ui/src/collections_ui.rs:1964, ui/dr-ui/src/collections_ui.rs:2926, ui/dr-ui/src/collections_ui.rs:2963, ui/dr-ui/src/collections_ui.rs:365, ui/dr-ui/src/collections_ui.rs:569, ui/dr-ui/src/collections_ui.rs:589, ui/dr-ui/src/gesture_book.rs:3, ui/dr-ui/src/gestures.rs:1, ui/dr-ui/src/library_ui.rs:5471, ui/dr-ui/src/library_ui.rs:5483, ui/dr-ui/src/library_ui.rs:5553, ui/dr-ui/src/library_ui.rs:5663, ui/dr-ui/src/library_ui.rs:5691, ui/dr-ui/src/library_ui.rs:6540, ui/dr-ui/src/library_ui.rs:6552, ui/dr-ui/ui/app.slint:1892, ui/dr-ui/ui/app.slint:572, ui/dr-ui/ui/app.slint:601, ui/dr-ui/ui/app.slint:610, ui/dr-ui/ui/app.slint:695, ui/dr-ui/ui/gestures.slint:1, ui/dr-ui/ui/library.slint:1048, ui/dr-ui/ui/library.slint:1252, ui/dr-ui/ui/library.slint:1277, ui/dr-ui/ui/library.slint:1284, ui/dr-ui/ui/library.slint:1317, ui/dr-ui/ui/library.slint:1374, ui/dr-ui/ui/library.slint:1381, ui/dr-ui/ui/library.slint:2565, ui/dr-ui/ui/library.slint:4079, ui/dr-ui/ui/library.slint:4195, ui/dr-ui/ui/library.slint:960, ui/dr-ui/ui/library.slint:987, ui/dr-ui/ui/library.slint:993
FR-UI-5 ui/dr-ui/src/collections_ui.rs:1, ui/dr-ui/src/lib.rs:2765, ui/dr-ui/src/lib.rs:3376, ui/dr-ui/src/lib.rs:3561, ui/dr-ui/src/masks_ui.rs:931, ui/dr-ui/ui/app.slint:127, ui/dr-ui/ui/collections.slint:4
FR-UI-6 ui/dr-ui/ui/widgets.slint:1
FR-UI-7 core/dr-pipeline/src/descriptor.rs:177, core/dr-pipeline/src/framing.rs:395
FR-UI-8 core/dr-catalog/src/collections.rs:555, core/dr-catalog/src/collections.rs:576, core/dr-types/src/place.rs:1, ui/dr-ui/src/derived_sync.rs:188, ui/dr-ui/src/derived_sync.rs:657, ui/dr-ui/src/derived_sync.rs:667, ui/dr-ui/src/derived_sync.rs:749, ui/dr-ui/src/derived_sync.rs:74, ui/dr-ui/src/library.rs:1072, ui/dr-ui/src/library.rs:4248, ui/dr-ui/src/library.rs:4966, ui/dr-ui/src/library.rs:5032, ui/dr-ui/src/library_ui.rs:195, ui/dr-ui/src/library_ui.rs:2104, ui/dr-ui/src/library_ui.rs:2293, ui/dr-ui/src/library_ui.rs:2310, ui/dr-ui/src/library_ui.rs:2408, ui/dr-ui/src/library_ui.rs:5504, ui/dr-ui/src/library_ui.rs:5544, ui/dr-ui/src/library_ui.rs:5573, ui/dr-ui/src/library_ui.rs:5836, ui/dr-ui/src/library_ui.rs:6059, ui/dr-ui/src/library_ui.rs:6781, ui/dr-ui/src/library_ui.rs:859, ui/dr-ui/src/library_ui.rs:892, ui/dr-ui/src/library_ui.rs:938, ui/dr-ui/src/place.rs:1
NFR-A11Y-2 ui/dr-ui/tests/ui_controls_are_accessible.rs:1
NFR-A11Y-3 ui/dr-ui/src/histogram.rs:356, ui/dr-ui/ui/histogram.slint:137, ui/dr-ui/ui/library.slint:756, ui/dr-ui/ui/library.slint:904, ui/dr-ui/ui/peaking.slint:1
NFR-ARCH-2 core/dr-catalog/src/jobs.rs:1, ui/dr-ui/src/faces.rs:1, ui/dr-ui/src/library.rs:3077
NFR-ARCH-3 ui/dr-ui/src/export.rs:1809, ui/dr-ui/src/export.rs:1836, ui/dr-ui/src/export.rs:412, ui/dr-ui/src/export.rs:438, ui/dr-ui/src/lib.rs:2462, ui/dr-ui/ui/app.slint:1140, ui/dr-ui/ui/library.slint:4157
NFR-ARCH-4 core/dr-catalog/src/error.rs:1, core/dr-export/src/error.rs:1, core/dr-thumbs/src/error.rs:1, platform/dr-plat/src/storage.rs:148, ui/dr-ui/src/export.rs:514
NFR-OPS-1 platform/dr-plat/src/diagnostics.rs:1, platform/dr-plat/src/state.rs:1
NFR-OPS-2 platform/dr-plat/src/crash.rs:1
NFR-OPS-3 core/dr-types/src/settings.rs:1, ui/dr-ui/src/settings_store.rs:1
NFR-P1 core/dr-catalog/src/lib.rs:1, core/dr-catalog/src/scan.rs:1, core/dr-catalog/src/walk.rs:162, core/dr-catalog/src/walk.rs:1, tools/bench/src/catalog_open.rs:1
NFR-P13 core/dr-decode/src/preview.rs:121
NFR-P14 core/dr-gpu/src/focus.rs:186, core/dr-gpu/src/focus.rs:1, core/dr-gpu/src/focus.rs:317, core/dr-gpu/src/shaders/focus_peak.wgsl:1, ui/dr-ui/src/develop.rs:3353, ui/dr-ui/src/lib.rs:1814
NFR-P3 tools/bench/src/thumbnails.rs:1
NFR-P5 core/dr-catalog/src/schema.rs:337, ui/dr-ui/src/library.rs:4355, ui/dr-ui/src/library.rs:5460, ui/dr-ui/src/library_ui.rs:4711, ui/dr-ui/src/library_ui.rs:64
NFR-P9 ui/dr-ui/src/collections_ui.rs:1, ui/dr-ui/src/export.rs:992, ui/dr-ui/src/library.rs:1, ui/dr-ui/src/library_ui.rs:1, ui/dr-ui/src/trash.rs:1
NFR-PORT-1 core/dr-catalog/src/walk.rs:1, core/dr-types/src/lib.rs:272, core/dr-types/src/lib.rs:305, platform/dr-plat/src/display.rs:1, platform/dr-plat/src/storage.rs:1, platform/dr-plat/src/storage.rs:216, platform/dr-plat/src/storage.rs:287, platform/dr-plat/src/storage.rs:344, platform/dr-plat/src/volumes.rs:1, platform/dr-plat/src/volumes.rs:62
NFR-PORT-2 core/dr-gpu/src/lib.rs:1
NFR-PORT-3 platform/dr-plat/src/storage.rs:1
NFR-R1 core/dr-catalog/src/sync.rs:1, core/dr-gpu/src/lib.rs:192, core/dr-sync/src/account.rs:220, ui/dr-ui/src/library.rs:1121
NFR-R2 core/dr-catalog/src/recovery.rs:1, core/dr-catalog/src/trash.rs:1
NFR-R5 core/dr-catalog/src/collections.rs:1, core/dr-catalog/src/error.rs:1, core/dr-catalog/src/keywords.rs:1, core/dr-catalog/src/schema.rs:1
NFR-R6 core/dr-catalog/src/error.rs:1, core/dr-catalog/src/lib.rs:255, core/dr-catalog/src/recovery.rs:1
NFR-R7 core/dr-gpu/src/error.rs:1
NFR-R8 core/dr-gpu/src/error.rs:1
NFR-RES-1 core/dr-gpu/src/adjust.rs:1029, core/dr-pipeline/src/history.rs:86, ui/dr-ui/src/develop.rs:3458, ui/dr-ui/src/identity_ui.rs:121, ui/dr-ui/src/lib.rs:93, ui/dr-ui/src/memory.rs:1
NFR-RES-2 ui/dr-ui/src/faces.rs:346, ui/dr-ui/src/library.rs:3077, ui/dr-ui/src/library.rs:3268
NFR-RES-4 core/dr-catalog/src/cache.rs:1, core/dr-catalog/src/face_shard.rs:1, core/dr-catalog/src/schema.rs:725, core/dr-gpu/src/lib.rs:93, core/dr-thumbs/src/codec.rs:1, core/dr-thumbs/src/lib.rs:1, core/dr-thumbs/src/lib.rs:376, ui/dr-ui/src/library.rs:2984
NFR-SEC-1 core/dr-decode/src/error.rs:1
NFR-SEC-2 core/dr-sync/src/account.rs:298, platform/dr-plat/src/crash.rs:1, platform/dr-plat/src/diagnostics.rs:1, platform/dr-plat/src/diagnostics/redact.rs:1, platform/dr-plat/src/secrets.rs:82
NFR-SEC-3 core/dr-sync-nextcloud/src/lib.rs:1, core/dr-sync-nextcloud/src/provider.rs:1
NFR-SEC-5 core/dr-catalog/src/faces.rs:1, core/dr-catalog/src/schema.rs:554, ui/dr-ui/src/faces.rs:1, ui/dr-ui/src/identity.rs:1, ui/dr-ui/src/identity_ui.rs:1, ui/dr-ui/ui/identity.slint:1
R3 core/dr-export/src/lib.rs:1, core/dr-pipeline/src/lib.rs:1
R4 core/dr-gpu/src/lib.rs:351
R6 core/dr-sync-nextcloud/src/lib.rs:1

Not yet tagged

53 of 180 requirements have no implementation tag. Expected while the codebase is young; each should gain one as it is built.

Show untagged requirements
  • FR-CAT-13
  • FR-CAT-14
  • FR-CULL-6
  • FR-CULL-7
  • FR-DEV-3g
  • FR-DSP-2
  • FR-DSP-4
  • FR-NC-11
  • FR-PLAT-AND-1
  • FR-PLAT-LIN-3
  • FR-PLG-1
  • FR-PLG-10
  • FR-PLG-11
  • FR-PLG-12
  • FR-PLG-1a
  • FR-PLG-2a
  • FR-PLG-2b
  • FR-PLG-2c
  • FR-PLG-3
  • FR-PLG-3a
  • FR-PLG-4
  • FR-PLG-4a
  • FR-PLG-5
  • FR-PLG-5a
  • FR-PLG-5b
  • FR-PLG-5c
  • FR-PLG-6
  • FR-PLG-6a
  • FR-PLG-7
  • FR-PLG-9
  • FR-RAW-2
  • NFR-A11Y-1
  • NFR-ARCH-1
  • NFR-COMPAT-1
  • NFR-COMPAT-2
  • NFR-OPS-4
  • NFR-P10
  • NFR-P11
  • NFR-P12
  • NFR-P15
  • NFR-P2
  • NFR-P4
  • NFR-P6
  • NFR-P7
  • NFR-P8
  • NFR-R3
  • NFR-R4
  • NFR-RES-3
  • NFR-SEC-4
  • NFR-SEC-6
  • R1
  • R2
  • R5