Files
DarkRoom/docs/traceability.md
T
dtourolleandClaude Opus 5 f5edd49b6b Let a manual collection be put in the order it is meant to be seen in
`collection_members.position` and `Sort::CollectionPosition` have been in the
catalog since collections were, and nothing above dr-catalog has ever written
or read either: `collections::set_order` had no callers, and the grid ordered
everything by capture time whatever it was scoped to — dr-ui does not construct
a `Query` at all, it has its own `GRID_ORDER` constant. So a manual collection
was a set with an order nobody could see or change.

Three pieces, because it could not be fewer:

`grid_order_for` decides the ordering from the scope, and both readers take it
from there. That is the load-bearing part. An ordinal only names a photograph
relative to an ordering, so the window read and the span read have to agree —
a shift-click resolved through a different ORDER BY than the cells were drawn
with selects a different run than the one on screen, and the user finds out
when the export runs. `read_ids_span` already stated that invariant about
`GRID_ORDER`; this widens it to an ordering that depends on the scope.

Only a single manual collection has one. A set draws its descendants' images
too, and two children's positions are unrelated integers that interleave
arbitrarily; a smart collection has no member rows to carry a position at all.
Both fall back to capture time and refuse the drop rather than pretending.

The drop is on the cell, on whichever half of it the finger landed — the
trailing edge is the only way to name the last place in a collection, since
there is no cell beyond the last one to drop in front of.

`reordered` is pure and the membership is rewritten whole. `set_order` sets the
positions it is given and leaves the rest, so a partial write would interleave
the moved run with rows nobody touched; and it is read unfiltered, so what the
filter is hiding keeps its place relative to what the user can see.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-29 23:18:06 +02:00

96 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 298
TRACES tags found 949
Requirements defined 179
Requirements covered 117
Coverage 65.4% (117/179)

By type

Type Covered Defined
FR 89 124
NFR 24 49
R 4 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:201, core/dr-types/src/lib.rs:270, core/dr-types/src/lib.rs:303, platform/dr-plat/src/storage.rs:1, platform/dr-plat/src/storage.rs:216, tools/traceability/src/lib.rs:479, tools/traceability/src/lib.rs:511, 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:116, 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:1183, ui/dr-ui/ui/import.slint:5, ui/dr-ui/ui/library.slint:1031, ui/dr-ui/ui/library.slint:1193, ui/dr-ui/ui/library.slint:866
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:1183, ui/dr-ui/src/library.rs:162, ui/dr-ui/src/library.rs:2375, ui/dr-ui/ui/import.slint:5
FR-CAT-12 core/dr-pipeline/src/sidecar.rs:119
FR-CAT-13 core/dr-catalog/src/keywords.rs:1
FR-CAT-15 core/dr-catalog/src/schema.rs:641, 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:429, core/dr-sync/src/scan.rs:57, core/dr-thumbs/src/lib.rs:376, ui/dr-ui/src/collections_ui.rs:1249, ui/dr-ui/src/collections_ui.rs:2159, ui/dr-ui/src/library.rs:162, ui/dr-ui/src/library.rs:179, ui/dr-ui/src/library.rs:208, ui/dr-ui/src/library.rs:3874, ui/dr-ui/src/library.rs:3908, ui/dr-ui/src/library_ui.rs:190, ui/dr-ui/src/library_ui.rs:756, ui/dr-ui/src/trash.rs:1, ui/dr-ui/ui/collections.slint:572
FR-CAT-1a core/dr-catalog/src/walk.rs:1, core/dr-types/src/lib.rs:54, 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, tools/traceability/src/lib.rs:479
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:2848, ui/dr-ui/src/library.rs:3356, ui/dr-ui/src/library_ui.rs:172, ui/dr-ui/src/library_ui.rs:3627, ui/dr-ui/src/library_ui.rs:4592, ui/dr-ui/ui/app.slint:374, 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:318, ui/dr-ui/src/library.rs:189, ui/dr-ui/src/library.rs:1, 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:1059, core/dr-catalog/src/schema.rs:556, core/dr-decode/src/lib.rs:285, core/dr-decode/src/lib.rs:404, core/dr-pipeline/src/sidecar.rs:136, ui/dr-ui/src/collections_ui.rs:1588, ui/dr-ui/src/collections_ui.rs:1694, ui/dr-ui/src/collections_ui.rs:1743, ui/dr-ui/src/collections_ui.rs:244, ui/dr-ui/src/collections_ui.rs:341, ui/dr-ui/src/collections_ui.rs:90, ui/dr-ui/src/library.rs:3922, ui/dr-ui/src/library_ui.rs:631, ui/dr-ui/src/library_ui.rs:6389, ui/dr-ui/src/library_ui.rs:6400, ui/dr-ui/src/library_ui.rs:6413, ui/dr-ui/src/library_ui.rs:6428, ui/dr-ui/src/library_ui.rs:6437, ui/dr-ui/ui/app.slint:310, ui/dr-ui/ui/app.slint:500, ui/dr-ui/ui/library.slint:1242, ui/dr-ui/ui/library.slint:1266, ui/dr-ui/ui/library.slint:1308, ui/dr-ui/ui/library.slint:18, ui/dr-ui/ui/library.slint:859, ui/dr-ui/ui/library.slint:911
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:556, core/dr-types/src/selector.rs:1, core/dr-types/src/settings.rs:63, core/dr-types/src/time.rs:67, core/dr-types/src/time.rs:90, ui/dr-ui/src/library.rs:213, ui/dr-ui/src/library.rs:4313, ui/dr-ui/src/library_ui.rs:321, ui/dr-ui/src/library_ui.rs:393, ui/dr-ui/src/library_ui.rs:5203, ui/dr-ui/src/library_ui.rs:5256, ui/dr-ui/src/library_ui.rs:6529, ui/dr-ui/ui/app.slint:322, ui/dr-ui/ui/app.slint:500, ui/dr-ui/ui/app.slint:788, ui/dr-ui/ui/library.slint:109, ui/dr-ui/ui/library.slint:1383, ui/dr-ui/ui/library.slint:911, 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:1607, ui/dr-ui/src/collections_ui.rs:1857, ui/dr-ui/src/collections_ui.rs:1, ui/dr-ui/src/collections_ui.rs:945, ui/dr-ui/src/derived_sync.rs:1, ui/dr-ui/src/library.rs:4118, ui/dr-ui/src/library.rs:4144, ui/dr-ui/src/library.rs:4199, ui/dr-ui/src/library_ui.rs:3489, ui/dr-ui/src/library_ui.rs:4182, ui/dr-ui/ui/app.slint:313, ui/dr-ui/ui/app.slint:495, ui/dr-ui/ui/collections.slint:4, ui/dr-ui/ui/library.slint:2718, ui/dr-ui/ui/library.slint:882, ui/dr-ui/ui/library.slint:901
FR-CAT-8 core/dr-pipeline/src/graph.rs:346, core/dr-pipeline/src/graph.rs:385, core/dr-pipeline/src/ops/curve.rs:137, core/dr-pipeline/src/ops/curve.rs:656, core/dr-pipeline/src/sidecar.rs:1637, core/dr-pipeline/src/sidecar.rs:93, 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:3693, ui/dr-ui/src/develop.rs:3722, ui/dr-ui/src/export.rs:750, ui/dr-ui/src/lib.rs:1436, ui/dr-ui/src/lib.rs:1893, ui/dr-ui/src/lib.rs:2028, ui/dr-ui/src/lib.rs:561, ui/dr-ui/src/lib.rs:986, ui/dr-ui/src/library.rs:1787, ui/dr-ui/src/library.rs:459, ui/dr-ui/src/library.rs:506, ui/dr-ui/src/library.rs:543, ui/dr-ui/src/library.rs:790, ui/dr-ui/src/library_ui.rs:4884, 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:613, 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:704, core/dr-sync-nextcloud/src/desktop_client.rs:30, core/dr-sync/src/reachability.rs:1, core/dr-types/src/lib.rs:120, ui/dr-ui/src/develop.rs:3120, ui/dr-ui/src/library.rs:148, ui/dr-ui/src/library.rs:1747, ui/dr-ui/src/library.rs:1823, ui/dr-ui/src/library.rs:233, ui/dr-ui/src/library.rs:4420, ui/dr-ui/src/library.rs:543, ui/dr-ui/src/library.rs:774, ui/dr-ui/src/library.rs:790, ui/dr-ui/src/library.rs:844, ui/dr-ui/src/library_ui.rs:1580, ui/dr-ui/src/library_ui.rs:1606, ui/dr-ui/src/library_ui.rs:1622, ui/dr-ui/src/library_ui.rs:1716, ui/dr-ui/src/library_ui.rs:232, ui/dr-ui/src/library_ui.rs:2332, ui/dr-ui/src/library_ui.rs:265, ui/dr-ui/src/library_ui.rs:2770, ui/dr-ui/src/library_ui.rs:2992, ui/dr-ui/src/library_ui.rs:3270, ui/dr-ui/src/library_ui.rs:3358, ui/dr-ui/src/library_ui.rs:3540, ui/dr-ui/src/library_ui.rs:3654, ui/dr-ui/src/library_ui.rs:446, ui/dr-ui/src/library_ui.rs:504, ui/dr-ui/src/library_ui.rs:5301, ui/dr-ui/src/library_ui.rs:5416, ui/dr-ui/src/presets.rs:446, ui/dr-ui/src/presets.rs:458, ui/dr-ui/src/sidecar_cache.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:357, core/dr-catalog/src/schema.rs:442, core/dr-face/src/assign.rs:1, core/dr-face/src/neighbours.rs:1, ui/dr-ui/src/develop.rs:120, ui/dr-ui/src/develop.rs:129, ui/dr-ui/src/develop.rs:1944, ui/dr-ui/src/develop.rs:195, ui/dr-ui/src/develop.rs:688, 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:2000, ui/dr-ui/ui/identity.slint:1
FR-CULL-11 core/dr-catalog/src/faces.rs:1, core/dr-catalog/src/schema.rs:442, ui/dr-ui/src/identity.rs:1, ui/dr-ui/src/identity_ui.rs:1, ui/dr-ui/src/library.rs:254, ui/dr-ui/src/library.rs:284, ui/dr-ui/ui/identity.slint:1
FR-CULL-12 core/dr-catalog/src/faces.rs:1, core/dr-catalog/src/schema.rs:357, core/dr-catalog/src/schema.rs:442, 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/shaders/focus_peak.wgsl:1, ui/dr-ui/src/develop.rs:2930, ui/dr-ui/src/develop.rs:2941, ui/dr-ui/src/develop.rs:2947, ui/dr-ui/src/develop.rs:2964, ui/dr-ui/src/develop.rs:726, ui/dr-ui/src/develop.rs:732, ui/dr-ui/src/lib.rs:1475, ui/dr-ui/src/lib.rs:1553, ui/dr-ui/src/lib.rs:1626, ui/dr-ui/src/lib.rs:1660, ui/dr-ui/src/lib.rs:2910, ui/dr-ui/src/lib.rs:321, ui/dr-ui/src/peaking.rs:1, ui/dr-ui/ui/app.slint:1703, ui/dr-ui/ui/app.slint:2248, ui/dr-ui/ui/app.slint:75, 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:136, ui/dr-ui/src/library.rs:213, ui/dr-ui/src/library.rs:459
FR-CULL-8 core/dr-catalog/src/face_shard.rs:1, core/dr-catalog/src/faces.rs:1, core/dr-catalog/src/schema.rs:401, core/dr-catalog/src/schema.rs:442, ui/dr-ui/src/faces.rs:1, ui/dr-ui/src/library.rs:2849, ui/dr-ui/src/library.rs:2953, 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:442, core/dr-face/src/assign.rs:1, core/dr-face/src/neighbours.rs:1, ui/dr-ui/src/faces.rs:1, ui/dr-ui/src/identity_ui.rs:1
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:389
FR-DEV-3 core/dr-gpu/src/adjust.rs:2165, 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/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:488, core/dr-pipeline/src/framing.rs:743, core/dr-pipeline/src/graph.rs:170, core/dr-pipeline/src/graph.rs:578, core/dr-pipeline/src/mask.rs:121, core/dr-pipeline/src/operation.rs:330, core/dr-pipeline/src/operation.rs:516, 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:157, core/dr-pipeline/src/sidecar.rs:1637, core/dr-pipeline/src/sidecar.rs:1697, core/dr-pipeline/tests/tone_curve.rs:1, ui/dr-ui/src/develop.rs:102, ui/dr-ui/src/develop.rs:1448, ui/dr-ui/src/develop.rs:164, ui/dr-ui/src/develop.rs:1926, ui/dr-ui/src/develop.rs:1944, ui/dr-ui/src/develop.rs:1958, ui/dr-ui/src/develop.rs:1980, ui/dr-ui/src/develop.rs:2126, ui/dr-ui/src/develop.rs:2224, ui/dr-ui/src/develop.rs:327, ui/dr-ui/src/develop.rs:3391, ui/dr-ui/src/develop.rs:3421, ui/dr-ui/src/develop.rs:3487, ui/dr-ui/src/develop.rs:3501, ui/dr-ui/src/develop.rs:364, ui/dr-ui/src/develop.rs:3693, ui/dr-ui/src/develop.rs:4353, ui/dr-ui/src/develop.rs:4407, ui/dr-ui/src/develop.rs:4451, ui/dr-ui/src/develop.rs:4501, ui/dr-ui/src/develop.rs:587, ui/dr-ui/src/develop.rs:648, ui/dr-ui/src/develop.rs:746, ui/dr-ui/src/develop.rs:793, ui/dr-ui/src/develop.rs:822, ui/dr-ui/src/lib.rs:1534, ui/dr-ui/src/lib.rs:2303, ui/dr-ui/src/lib.rs:2499, ui/dr-ui/src/lib.rs:2671, ui/dr-ui/src/lib.rs:2735, ui/dr-ui/src/lib.rs:2789, ui/dr-ui/src/lib.rs:327, ui/dr-ui/src/lib.rs:370, ui/dr-ui/src/lib.rs:393, ui/dr-ui/src/library.rs:506, ui/dr-ui/src/masks_ui.rs:218, ui/dr-ui/src/masks_ui.rs:41, ui/dr-ui/src/masks_ui.rs:816, ui/dr-ui/src/masks_ui.rs:930, ui/dr-ui/src/segmentation.rs:219, ui/dr-ui/src/segmentation.rs:322, ui/dr-ui/src/segmentation.rs:350, ui/dr-ui/ui/adjust.slint:517, ui/dr-ui/ui/adjust.slint:635, ui/dr-ui/ui/app.slint:136, ui/dr-ui/ui/app.slint:182, ui/dr-ui/ui/app.slint:1905, ui/dr-ui/ui/app.slint:898, ui/dr-ui/ui/masks.slint:524
FR-DEV-3a core/dr-pipeline/build.rs:756, 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:385, core/dr-pipeline/src/graph.rs:24, core/dr-pipeline/src/graph.rs:251, core/dr-pipeline/src/graph.rs:46, core/dr-pipeline/src/graph.rs:59, core/dr-pipeline/src/mask.rs:955, 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:1345, ui/dr-ui/src/lib.rs:676, 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:385, core/dr-pipeline/src/graph.rs:59, core/dr-pipeline/src/operation.rs:365
FR-DEV-3c core/dr-pipeline/build.rs:756, core/dr-pipeline/ops/exposure.yaml:1, core/dr-pipeline/src/graph.rs:251, core/dr-pipeline/src/graph.rs:46, core/dr-pipeline/src/mask.rs:955, ui/dr-ui/src/develop.rs:5080
FR-DEV-3d core/dr-gpu/src/adjust.rs:1041, core/dr-gpu/src/adjust.rs:104, 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:617, core/dr-pipeline/src/operation.rs:32, core/dr-pipeline/src/operation.rs:389, 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:1495, core/dr-pipeline/src/operation.rs:1576, core/dr-pipeline/src/operation.rs:1601, core/dr-pipeline/src/operation.rs:1616, core/dr-pipeline/src/operation.rs:1640, core/dr-pipeline/src/operation.rs:310, core/dr-pipeline/src/operation.rs:440, core/dr-pipeline/src/operation.rs:450, core/dr-pipeline/src/operation.rs:600
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:102, core/dr-pipeline/src/graph.rs:125, core/dr-pipeline/src/graph.rs:325, core/dr-pipeline/src/operation.rs:1065, core/dr-pipeline/src/operation.rs:1094, core/dr-pipeline/src/operation.rs:1495, 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:112, core/dr-pipeline/src/sidecar.rs:168, core/dr-pipeline/src/sidecar.rs:1958, core/dr-pipeline/src/sidecar.rs:2034, core/dr-pipeline/src/sidecar.rs:534, core/dr-pipeline/src/sidecar.rs:661, core/dr-pipeline/src/sidecar.rs:793, 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:3135, ui/dr-ui/src/develop.rs:3152, ui/dr-ui/src/develop.rs:3164, ui/dr-ui/src/develop.rs:3202, ui/dr-ui/src/develop.rs:3211, ui/dr-ui/src/develop.rs:3314, ui/dr-ui/src/develop.rs:3730, ui/dr-ui/src/develop.rs:3745, ui/dr-ui/src/lib.rs:2277, ui/dr-ui/src/lib.rs:609, ui/dr-ui/src/lib.rs:667, ui/dr-ui/src/library.rs:497, ui/dr-ui/src/library.rs:745, ui/dr-ui/src/presets.rs:395, ui/dr-ui/ui/adjust.slint:1034, ui/dr-ui/ui/adjust.slint:1116, ui/dr-ui/ui/app.slint:2440, ui/dr-ui/ui/app.slint:626
FR-DEV-3h core/dr-decode/src/lib.rs:404, core/dr-decode/src/preview.rs:29, core/dr-pipeline/src/framing.rs:1050, core/dr-pipeline/src/framing.rs:328, core/dr-pipeline/src/framing.rs:488, core/dr-types/src/lib.rs:337, core/dr-types/src/lib.rs:445, core/dr-types/src/lib.rs:457, core/dr-types/src/lib.rs:473, ui/dr-ui/src/develop.rs:139, ui/dr-ui/src/develop.rs:2143, ui/dr-ui/src/segmentation.rs:322
FR-DEV-4 core/dr-gpu/src/adjust.rs:770, core/dr-gpu/src/lib.rs:338, ui/dr-ui/ui/crop.slint:1
FR-DEV-5 core/dr-pipeline/src/graph.rs:346, core/dr-pipeline/src/graph.rs:385, 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:3164, ui/dr-ui/src/develop.rs:3745, ui/dr-ui/src/develop.rs:3775, ui/dr-ui/src/develop.rs:3788, ui/dr-ui/src/develop.rs:3800, ui/dr-ui/src/develop.rs:3816, ui/dr-ui/src/develop.rs:3848, ui/dr-ui/src/develop.rs:3852, ui/dr-ui/src/develop.rs:3871, ui/dr-ui/src/develop.rs:3887, ui/dr-ui/src/develop.rs:709, ui/dr-ui/src/labels.rs:12, ui/dr-ui/src/labels.rs:215, ui/dr-ui/src/lib.rs:1469, ui/dr-ui/src/lib.rs:1512, ui/dr-ui/src/lib.rs:1520, ui/dr-ui/src/lib.rs:2473, 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:182, ui/dr-ui/src/develop.rs:3687, ui/dr-ui/src/develop.rs:3708, ui/dr-ui/src/lib.rs:1436, ui/dr-ui/src/lib.rs:2088, ui/dr-ui/src/lib.rs:2117, ui/dr-ui/src/library.rs:1787, ui/dr-ui/src/library.rs:459, ui/dr-ui/src/library.rs:487, ui/dr-ui/src/library_ui.rs:2592, ui/dr-ui/src/library_ui.rs:2992, ui/dr-ui/src/library_ui.rs:472, ui/dr-ui/src/preset_store.rs:1, ui/dr-ui/src/presets.rs:1, ui/dr-ui/src/presets.rs:657, ui/dr-ui/src/presets.rs:691, ui/dr-ui/ui/adjust.slint:709, ui/dr-ui/ui/adjust.slint:736, ui/dr-ui/ui/adjust.slint:779, ui/dr-ui/ui/app.slint:1487, ui/dr-ui/ui/app.slint:2529, ui/dr-ui/ui/app.slint:698, ui/dr-ui/ui/app.slint:709, ui/dr-ui/ui/library.slint:1410, ui/dr-ui/ui/library.slint:1417, ui/dr-ui/ui/library.slint:837, ui/dr-ui/ui/library.slint:853, ui/dr-ui/ui/library.slint:922, ui/dr-ui/ui/library.slint:937, 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:3816, ui/dr-ui/src/develop.rs:3848, ui/dr-ui/src/lib.rs:1520, ui/dr-ui/src/lib.rs:2473, ui/dr-ui/ui/history.slint:1
FR-DEV-8 core/dr-gpu/src/detail.rs:387, core/dr-gpu/src/detail.rs:592, 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:114, core/dr-pipeline/src/graph.rs:192, core/dr-pipeline/src/graph.rs:686, core/dr-pipeline/src/operation.rs:330, core/dr-pipeline/src/operation.rs:554, core/dr-pipeline/src/sidecar.rs:184, core/dr-pipeline/src/sidecar.rs:353, core/dr-pipeline/src/sidecar.rs:673, core/dr-pipeline/src/sidecar.rs:809, core/dr-pipeline/src/sidecar.rs:863, core/dr-pipeline/src/sidecar.rs:893, 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:2295, ui/dr-ui/src/develop.rs:2333, ui/dr-ui/src/develop.rs:2398, ui/dr-ui/src/develop.rs:2481, ui/dr-ui/src/develop.rs:2495, ui/dr-ui/src/develop.rs:776, ui/dr-ui/src/labels.rs:52, ui/dr-ui/src/lib.rs:1541, ui/dr-ui/src/lib.rs:2591, ui/dr-ui/src/lib.rs:332, 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:810, ui/dr-ui/ui/app.slint:126, ui/dr-ui/ui/app.slint:1808, ui/dr-ui/ui/app.slint:1983, ui/dr-ui/ui/app.slint:2346, ui/dr-ui/ui/spots.slint:180, ui/dr-ui/ui/spots.slint:48, ui/dr-ui/ui/spots.slint:5
FR-DSP-1 core/dr-gpu/src/adjust.rs:2088, core/dr-gpu/src/adjust.rs:2165, core/dr-gpu/src/adjust.rs:2250, core/dr-gpu/src/adjust.rs:54, core/dr-gpu/src/adjust.rs:770, core/dr-gpu/src/lib.rs:159, core/dr-gpu/src/lib.rs:179, core/dr-gpu/src/lib.rs:57, core/dr-gpu/src/lib.rs:80, 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:548, core/dr-pipeline/src/graph.rs:578, 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:2819, ui/dr-ui/src/develop.rs:4142, ui/dr-ui/src/develop.rs:4625, ui/dr-ui/src/develop.rs:4659, ui/dr-ui/src/lib.rs:74, ui/dr-ui/src/lib.rs:817, ui/dr-ui/src/lib.rs:876
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:483, core/dr-types/src/colour.rs:1, ui/dr-ui/src/develop.rs:2849, ui/dr-ui/src/develop.rs:5917, ui/dr-ui/src/lib.rs:1497, ui/dr-ui/src/lib.rs:2974
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:2898, ui/dr-ui/src/develop.rs:5727, ui/dr-ui/src/develop.rs:5759, ui/dr-ui/src/develop.rs:720, ui/dr-ui/src/histogram.rs:1, ui/dr-ui/src/lib.rs:1607, ui/dr-ui/src/lib.rs:316, ui/dr-ui/ui/app.slint:70, ui/dr-ui/ui/histogram.slint:122, 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:2795, ui/dr-ui/src/develop.rs:2849, ui/dr-ui/src/develop.rs:5917, ui/dr-ui/src/develop.rs:5963, ui/dr-ui/src/develop.rs:5982, ui/dr-ui/src/develop.rs:807, 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:1458, ui/dr-ui/src/lib.rs:1497, ui/dr-ui/src/lib.rs:2887, ui/dr-ui/src/lib.rs:2974, ui/dr-ui/ui/app.slint:1656, ui/dr-ui/ui/app.slint:49, 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:2398, core/dr-pipeline/src/graph.rs:538, core/dr-pipeline/src/graph.rs:592, core/dr-pipeline/src/operation.rs:483, core/dr-types/src/colour.rs:1, core/dr-types/src/settings.rs:1, core/dr-types/src/settings.rs:623, ui/dr-ui/src/develop.rs:5982, 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:668, core/dr-types/src/settings.rs:676, core/dr-types/src/settings.rs:692, core/dr-types/src/settings.rs:761, core/dr-types/src/settings.rs:789, core/dr-types/src/settings.rs:800, core/dr-types/src/settings.rs:806, ui/dr-ui/src/settings_ui.rs:1, ui/dr-ui/src/settings_ui.rs:203, ui/dr-ui/src/settings_ui.rs:216, ui/dr-ui/src/settings_ui.rs:231, ui/dr-ui/src/settings_ui.rs:561, 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:422, ui/dr-ui/src/settings_ui.rs:1, ui/dr-ui/src/settings_ui.rs:49, ui/dr-ui/src/settings_ui.rs:675
FR-EXP-7 ui/dr-ui/src/activity.rs:83, ui/dr-ui/src/export.rs:1, ui/dr-ui/src/export.rs:942, ui/dr-ui/src/lib.rs:206, ui/dr-ui/src/lib.rs:2219, ui/dr-ui/src/lib.rs:422, ui/dr-ui/src/lib.rs:457, ui/dr-ui/src/lib.rs:484, ui/dr-ui/src/library_ui.rs:3375, ui/dr-ui/src/library_ui.rs:563, ui/dr-ui/src/library_ui.rs:6371, ui/dr-ui/src/library_ui.rs:6448, ui/dr-ui/src/library_ui.rs:6460, ui/dr-ui/src/library_ui.rs:663, ui/dr-ui/src/library_ui.rs:720, ui/dr-ui/ui/app.slint:1034, ui/dr-ui/ui/app.slint:1497, ui/dr-ui/ui/library.slint:1420, ui/dr-ui/ui/library.slint:841, ui/dr-ui/ui/library.slint:951
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:653, core/dr-types/src/settings.rs:336, ui/dr-ui/src/export.rs:619, ui/dr-ui/src/export.rs:647, ui/dr-ui/src/export.rs:777, ui/dr-ui/src/export.rs:794, 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:1068, ui/dr-ui/src/develop.rs:3079, ui/dr-ui/src/lib.rs:422
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:484, ui/dr-ui/src/library.rs:1068, ui/dr-ui/src/library.rs:1823, ui/dr-ui/src/library.rs:543, ui/dr-ui/src/library.rs:844, ui/dr-ui/src/library_ui.rs:1622, ui/dr-ui/src/library_ui.rs:3375, ui/dr-ui/src/library_ui.rs:504, 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, ui/dr-ui/src/library.rs:1, ui/dr-ui/src/library.rs:2848, ui/dr-ui/src/library.rs:3356, ui/dr-ui/src/library_ui.rs:1, ui/dr-ui/src/library_ui.rs:3627, ui/dr-ui/src/library_ui.rs:4592, ui/dr-ui/ui/app.slint:374, 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:1014, core/dr-catalog/src/schema.rs:613, 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:3359, ui/dr-ui/src/collections_ui.rs:622, ui/dr-ui/src/collections_ui.rs:690, ui/dr-ui/src/lib.rs:1923, ui/dr-ui/src/lib.rs:3037, ui/dr-ui/src/library.rs:1449, ui/dr-ui/src/library.rs:1472, ui/dr-ui/src/library.rs:1747, ui/dr-ui/src/library_ui.rs:1065, ui/dr-ui/src/library_ui.rs:1138, ui/dr-ui/src/library_ui.rs:1239, ui/dr-ui/src/library_ui.rs:1294, ui/dr-ui/src/library_ui.rs:1429, ui/dr-ui/src/library_ui.rs:1547, ui/dr-ui/src/library_ui.rs:2074, ui/dr-ui/src/library_ui.rs:273, ui/dr-ui/src/library_ui.rs:284, ui/dr-ui/src/library_ui.rs:292, ui/dr-ui/src/library_ui.rs:304, ui/dr-ui/src/library_ui.rs:313, ui/dr-ui/src/library_ui.rs:405, ui/dr-ui/src/library_ui.rs:415, ui/dr-ui/src/library_ui.rs:457, ui/dr-ui/src/library_ui.rs:520, ui/dr-ui/src/library_ui.rs:5318, ui/dr-ui/src/library_ui.rs:5336, ui/dr-ui/src/library_ui.rs:5348, ui/dr-ui/src/library_ui.rs:551, ui/dr-ui/src/library_ui.rs:563, ui/dr-ui/src/settings_store.rs:1, ui/dr-ui/src/settings_ui.rs:1, ui/dr-ui/ui/app.slint:2519, ui/dr-ui/ui/app.slint:489, ui/dr-ui/ui/collections.slint:249, ui/dr-ui/ui/collections.slint:369, ui/dr-ui/ui/collections.slint:52, ui/dr-ui/ui/collections.slint:682, ui/dr-ui/ui/collections.slint:84, ui/dr-ui/ui/icons.slint:260, ui/dr-ui/ui/library.slint:997
FR-NC-6b ui/dr-ui/src/library_ui.rs:1294
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:803, core/dr-sync-folder/src/lib.rs:842, 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:120, core/dr-types/src/lib.rs:202, ui/dr-ui/src/activity.rs:1, ui/dr-ui/src/collections_ui.rs:3359, ui/dr-ui/src/collections_ui.rs:622, ui/dr-ui/src/collections_ui.rs:690, ui/dr-ui/src/derived_sync.rs:555, ui/dr-ui/src/derived_sync.rs:627, ui/dr-ui/src/library.rs:1569, ui/dr-ui/src/library.rs:1659, ui/dr-ui/src/library.rs:3138, ui/dr-ui/src/library.rs:3476, ui/dr-ui/src/library.rs:948, ui/dr-ui/src/library_ui.rs:1065, ui/dr-ui/src/library_ui.rs:1138, ui/dr-ui/src/library_ui.rs:1337, ui/dr-ui/src/remote.rs:40, ui/dr-ui/ui/collections.slint:249, ui/dr-ui/ui/collections.slint:682, ui/dr-ui/ui/icons.slint:260
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:3356, ui/dr-ui/src/library_ui.rs:3627, 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:116, 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:1183, 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:1183
FR-NC-8 core/dr-pipeline/src/sidecar.rs:119, core/dr-pipeline/src/sidecar.rs:93, ui/dr-ui/src/lib.rs:1893, ui/dr-ui/src/library.rs:459, ui/dr-ui/src/library_ui.rs:472
FR-NC-9 core/dr-catalog/src/merge.rs:1, core/dr-catalog/src/schema.rs:556, core/dr-catalog/src/sync.rs:1, core/dr-pipeline/src/sidecar.rs:157, core/dr-pipeline/src/sidecar.rs:184, core/dr-pipeline/src/sidecar.rs:2034, core/dr-pipeline/src/sidecar.rs:353, core/dr-pipeline/src/sidecar.rs:451, core/dr-pipeline/src/spot.rs:245, core/dr-pipeline/tests/spot_sidecar.rs:1, ui/dr-ui/src/derived_sync.rs:555, ui/dr-ui/src/library.rs:844, ui/dr-ui/src/library.rs:998
FR-PLAT-AND-1 core/dr-types/src/lib.rs:54, platform/dr-plat/src/volumes.rs:62
FR-PLAT-AND-3 core/dr-catalog/src/jobs.rs:1
FR-PLAT-LIN-1 core/dr-types/src/settings.rs:1, platform/dr-plat/src/storage.rs:344, ui/dr-ui/src/lib.rs:926, 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:652, 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:416
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-RAW-1 core/dr-decode/src/lib.rs:243, core/dr-types/src/lib.rs:130, core/dr-types/src/lib.rs:201
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:206
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:3119, ui/dr-ui/src/lib.rs:82, ui/dr-ui/src/masks_ui.rs:816, ui/dr-ui/ui/identity.slint:164, ui/dr-ui/ui/library.slint:1063
FR-UI-2 ui/dr-ui/src/collections_ui.rs:1025, ui/dr-ui/src/collections_ui.rs:1035, ui/dr-ui/src/collections_ui.rs:119, ui/dr-ui/src/collections_ui.rs:1518, ui/dr-ui/src/collections_ui.rs:1532, ui/dr-ui/src/collections_ui.rs:1578, ui/dr-ui/src/collections_ui.rs:160, ui/dr-ui/src/collections_ui.rs:1830, ui/dr-ui/src/collections_ui.rs:486, ui/dr-ui/src/collections_ui.rs:515, ui/dr-ui/src/lib.rs:82, ui/dr-ui/src/lib.rs:89, ui/dr-ui/src/library_ui.rs:292, ui/dr-ui/src/library_ui.rs:5203, ui/dr-ui/src/library_ui.rs:5348, ui/dr-ui/src/library_ui.rs:6479, ui/dr-ui/ui/adjust.slint:1072, ui/dr-ui/ui/adjust.slint:544, ui/dr-ui/ui/adjust.slint:741, ui/dr-ui/ui/app.slint:2089, ui/dr-ui/ui/app.slint:519, ui/dr-ui/ui/app.slint:526, ui/dr-ui/ui/app.slint:56, ui/dr-ui/ui/app.slint:869, ui/dr-ui/ui/controls.slint:474, ui/dr-ui/ui/develop.slint:223, ui/dr-ui/ui/histogram.slint:127, ui/dr-ui/ui/history.slint:118, ui/dr-ui/ui/library.slint:1219, ui/dr-ui/ui/library.slint:1226, ui/dr-ui/ui/library.slint:1232, ui/dr-ui/ui/library.slint:1273, ui/dr-ui/ui/library.slint:2468, ui/dr-ui/ui/library.slint:829, ui/dr-ui/ui/library.slint:882, ui/dr-ui/ui/masks.slint:314, ui/dr-ui/ui/peaking.slint:82, ui/dr-ui/ui/presets.slint:19, ui/dr-ui/ui/settings.slint:110, ui/dr-ui/ui/spots.slint:88
FR-UI-3 ui/dr-ui/src/develop.rs:2224, ui/dr-ui/src/develop.rs:2333, ui/dr-ui/src/library_ui.rs:4387, ui/dr-ui/src/masks_ui.rs:218, ui/dr-ui/src/masks_ui.rs:908, ui/dr-ui/src/masks_ui.rs:930, ui/dr-ui/src/spots_ui.rs:19, ui/dr-ui/ui/app.slint:1905, ui/dr-ui/ui/collections.slint:4, ui/dr-ui/ui/collections.slint:682, ui/dr-ui/ui/masks.slint:524
FR-UI-4 ui/dr-ui/src/collections_ui.rs:1025, ui/dr-ui/src/collections_ui.rs:1035, ui/dr-ui/src/collections_ui.rs:119, ui/dr-ui/src/collections_ui.rs:132, ui/dr-ui/src/collections_ui.rs:1518, ui/dr-ui/src/collections_ui.rs:1532, ui/dr-ui/src/collections_ui.rs:1578, ui/dr-ui/src/collections_ui.rs:160, ui/dr-ui/src/collections_ui.rs:1694, ui/dr-ui/src/collections_ui.rs:1830, ui/dr-ui/src/collections_ui.rs:1857, ui/dr-ui/src/collections_ui.rs:486, ui/dr-ui/src/collections_ui.rs:515, ui/dr-ui/src/collections_ui.rs:583, ui/dr-ui/src/library_ui.rs:4387, ui/dr-ui/src/library_ui.rs:4432, ui/dr-ui/src/library_ui.rs:4535, ui/dr-ui/src/library_ui.rs:4563, ui/dr-ui/src/library_ui.rs:5336, ui/dr-ui/src/library_ui.rs:5348, ui/dr-ui/ui/app.slint:1745, ui/dr-ui/ui/app.slint:495, ui/dr-ui/ui/app.slint:526, ui/dr-ui/ui/library.slint:1219, ui/dr-ui/ui/library.slint:1226, ui/dr-ui/ui/library.slint:1232, ui/dr-ui/ui/library.slint:1266, ui/dr-ui/ui/library.slint:1273, ui/dr-ui/ui/library.slint:2468, ui/dr-ui/ui/library.slint:829, ui/dr-ui/ui/library.slint:882, ui/dr-ui/ui/library.slint:901
FR-UI-5 ui/dr-ui/src/collections_ui.rs:1, ui/dr-ui/src/lib.rs:2556, ui/dr-ui/src/lib.rs:3158, ui/dr-ui/src/lib.rs:3343, ui/dr-ui/src/masks_ui.rs:863, ui/dr-ui/ui/app.slint:107, 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:385
NFR-ARCH-2 core/dr-catalog/src/jobs.rs:1, ui/dr-ui/src/faces.rs:1, ui/dr-ui/src/library.rs:2953
NFR-ARCH-3 ui/dr-ui/src/export.rs:1553, ui/dr-ui/src/export.rs:1579, ui/dr-ui/src/export.rs:409, ui/dr-ui/src/export.rs:435, ui/dr-ui/src/lib.rs:2253, ui/dr-ui/ui/app.slint:1045, ui/dr-ui/ui/library.slint:951
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:499
NFR-OPS-1 tools/traceability/src/lib.rs:266
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/traceability/src/lib.rs:479
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:2964, ui/dr-ui/src/lib.rs:1626
NFR-P5 core/dr-catalog/src/schema.rs:318, ui/dr-ui/src/library.rs:4013, ui/dr-ui/src/library.rs:4945, ui/dr-ui/src/library_ui.rs:4072, ui/dr-ui/src/library_ui.rs:64
NFR-P9 ui/dr-ui/src/collections_ui.rs:1, ui/dr-ui/src/export.rs:942, 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:270, core/dr-types/src/lib.rs:303, 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:179, core/dr-sync/src/account.rs:220, ui/dr-ui/src/library.rs:1068
NFR-R2 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-R7 core/dr-gpu/src/error.rs:1
NFR-R8 core/dr-gpu/src/error.rs:1
NFR-RES-1 core/dr-pipeline/src/history.rs:86, ui/dr-ui/src/lib.rs:74
NFR-RES-4 core/dr-catalog/src/cache.rs:1, core/dr-catalog/src/face_shard.rs:1, core/dr-catalog/src/schema.rs:613, core/dr-gpu/src/lib.rs:80, 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:2848
NFR-SEC-1 core/dr-decode/src/error.rs:1
NFR-SEC-2 core/dr-sync/src/account.rs:298, 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:442, 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
R1 tools/traceability/src/lib.rs:495, tools/traceability/src/lib.rs:499
R3 core/dr-export/src/lib.rs:1, core/dr-pipeline/src/lib.rs:1
R4 core/dr-gpu/src/lib.rs:338
R6 core/dr-sync-nextcloud/src/lib.rs:1

Not yet tagged

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

Show untagged requirements
  • FR-CAT-14
  • FR-CULL-5
  • FR-CULL-6
  • FR-CULL-7
  • FR-DEV-3g
  • FR-DSP-2
  • FR-DSP-4
  • FR-NC-11
  • FR-PLAT-AND-2
  • FR-PLAT-AND-4
  • FR-PLAT-AND-5
  • FR-PLAT-AND-6
  • 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-8
  • FR-PLG-9
  • FR-RAW-2
  • NFR-A11Y-1
  • NFR-A11Y-2
  • NFR-A11Y-3
  • NFR-ARCH-1
  • NFR-COMPAT-1
  • NFR-COMPAT-2
  • NFR-OPS-2
  • NFR-OPS-4
  • NFR-P10
  • NFR-P11
  • NFR-P12
  • NFR-P15
  • NFR-P2
  • NFR-P3
  • NFR-P4
  • NFR-P6
  • NFR-P7
  • NFR-P8
  • NFR-R3
  • NFR-R4
  • NFR-R6
  • NFR-RES-2
  • NFR-RES-3
  • NFR-SEC-4
  • NFR-SEC-6
  • R2
  • R5