Files
DarkRoom/docs/traceability.md
T
dtourolleandClaude Opus 5 bb35665bd2 Let a paste carry some kinds of edit and not others
FR-DEV-6 asks for presets "covering a subset of the edit graph". What
landed with the named presets covered two subsets: everything, and
everything but the crop. "Match the colour but not the sharpening" had
no way to be said.

`Scope` is now a set of `Attribute` — the same six kinds every operation
already declares and the develop panel already builds its tabs from. The
photographer ticking "tone and colour" is naming the groups they
navigate by, and neither this module nor the interface has to name an
operation to do it (FR-DEV-3c).

The pleasing part is what left. Framing used to be excluded by an
explicit test against one operation's id; it is now excluded because
Geometry is not in the default set. The special case dissolved into the
general rule, and the argument for it — a crop is a decision about *this*
photograph, and carrying it across forty destroys forty compositions —
is now a statement about a kind of edit rather than about a node. All
thirty-three existing preset tests pass unchanged, which is the evidence
that the generalisation kept its promises.

One decision that is a field rather than a rule, because the two cases
genuinely differ. An operation this build cannot classify — from a newer
version, arriving over sync — travels under "everything" and "everything
but the crop", because those are claims about the whole edit and an
unrecognised operation is part of it (FR-NC-8). It does not travel under
a hand-picked set, because that is a claim about kinds, and an unknown
kind is not one of the kinds that were ticked.

The settings page's "Copy crop and rotation" checkbox is gone, replaced
by the same chips the preset sheet draws. It asked the right first
question — geometry is the kind whose accidental travel destroys work —
but it was the only question a boolean could ask. The field stays in
`Settings`, read exactly once to seed the new set, so anyone who had
ticked it keeps their behaviour.

The chips are deliberately not in the develop column. Six of them there
would set the width of the whole sidebar, which is the bug `ChipGrid`'s
comment records at length.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-29 20:38:19 +02:00

92 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 292
TRACES tags found 902
Requirements defined 179
Requirements covered 107
Coverage 59.8% (107/179)

By type

Type Covered Defined
FR 85 124
NFR 20 49
R 2 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:1176, 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:1176, 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:118
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:456, 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:1219, ui/dr-ui/src/collections_ui.rs:1975, 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:3869, ui/dr-ui/src/library.rs:3903, 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:348, 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:135, ui/dr-ui/src/collections_ui.rs:1558, ui/dr-ui/src/collections_ui.rs:1577, ui/dr-ui/src/collections_ui.rs:243, ui/dr-ui/src/collections_ui.rs:340, ui/dr-ui/src/collections_ui.rs:89, ui/dr-ui/src/library.rs:3917, 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:293, ui/dr-ui/ui/app.slint:474, ui/dr-ui/ui/library.slint:1242, ui/dr-ui/ui/library.slint:1245, 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:4163, 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:296, ui/dr-ui/ui/app.slint:474, ui/dr-ui/ui/app.slint:757, ui/dr-ui/ui/library.slint:109, ui/dr-ui/ui/library.slint:1318, 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:1673, ui/dr-ui/src/collections_ui.rs:1, ui/dr-ui/src/derived_sync.rs:1, ui/dr-ui/src/library_ui.rs:3489, ui/dr-ui/src/library_ui.rs:4182, ui/dr-ui/ui/app.slint:469, ui/dr-ui/ui/collections.slint:4, ui/dr-ui/ui/library.slint:2585, ui/dr-ui/ui/library.slint:882, ui/dr-ui/ui/library.slint:901
FR-CAT-8 core/dr-pipeline/src/graph.rs:345, core/dr-pipeline/src/graph.rs:384, core/dr-pipeline/src/ops/curve.rs:137, core/dr-pipeline/src/ops/curve.rs:656, core/dr-pipeline/src/sidecar.rs:1636, core/dr-pipeline/src/sidecar.rs:92, 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:3570, ui/dr-ui/src/develop.rs:3599, ui/dr-ui/src/export.rs:750, ui/dr-ui/src/lib.rs:1429, ui/dr-ui/src/lib.rs:1830, ui/dr-ui/src/lib.rs:1965, ui/dr-ui/src/lib.rs:554, ui/dr-ui/src/lib.rs:979, 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:2997, 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:4270, 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:119, ui/dr-ui/src/develop.rs:128, ui/dr-ui/src/develop.rs:1920, ui/dr-ui/src/develop.rs:194, ui/dr-ui/src/develop.rs:687, 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:1937, 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-4 core/dr-catalog/src/rating.rs:1, core/dr-pipeline/src/sidecar.rs:135, 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-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:169, core/dr-pipeline/src/graph.rs:577, 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:156, core/dr-pipeline/src/sidecar.rs:1636, core/dr-pipeline/src/sidecar.rs:1696, core/dr-pipeline/tests/tone_curve.rs:1, ui/dr-ui/src/develop.rs:101, ui/dr-ui/src/develop.rs:1424, ui/dr-ui/src/develop.rs:163, ui/dr-ui/src/develop.rs:1902, ui/dr-ui/src/develop.rs:1920, ui/dr-ui/src/develop.rs:1934, ui/dr-ui/src/develop.rs:1956, ui/dr-ui/src/develop.rs:2102, ui/dr-ui/src/develop.rs:2200, ui/dr-ui/src/develop.rs:3268, ui/dr-ui/src/develop.rs:326, ui/dr-ui/src/develop.rs:3298, ui/dr-ui/src/develop.rs:3364, ui/dr-ui/src/develop.rs:3378, ui/dr-ui/src/develop.rs:3570, ui/dr-ui/src/develop.rs:363, ui/dr-ui/src/develop.rs:4230, ui/dr-ui/src/develop.rs:4284, ui/dr-ui/src/develop.rs:4328, ui/dr-ui/src/develop.rs:4378, ui/dr-ui/src/develop.rs:586, ui/dr-ui/src/develop.rs:647, ui/dr-ui/src/develop.rs:726, ui/dr-ui/src/develop.rs:773, ui/dr-ui/src/develop.rs:802, ui/dr-ui/src/lib.rs:1514, ui/dr-ui/src/lib.rs:2240, ui/dr-ui/src/lib.rs:2436, ui/dr-ui/src/lib.rs:2608, ui/dr-ui/src/lib.rs:2672, ui/dr-ui/src/lib.rs:2726, ui/dr-ui/src/lib.rs:320, ui/dr-ui/src/lib.rs:363, ui/dr-ui/src/lib.rs:386, 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:119, ui/dr-ui/ui/app.slint:165, ui/dr-ui/ui/app.slint:1857, ui/dr-ui/ui/app.slint:867, ui/dr-ui/ui/masks.slint:490
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:23, core/dr-pipeline/src/graph.rs:250, core/dr-pipeline/src/graph.rs:45, core/dr-pipeline/src/graph.rs:58, 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:1321, ui/dr-ui/src/lib.rs:669, 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:58, 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:250, core/dr-pipeline/src/graph.rs:45, core/dr-pipeline/src/mask.rs:955, ui/dr-ui/src/develop.rs:4957
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:616, 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:101, core/dr-pipeline/src/graph.rs:124, core/dr-pipeline/src/graph.rs:324, 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:111, core/dr-pipeline/src/sidecar.rs:167, core/dr-pipeline/src/sidecar.rs:1957, core/dr-pipeline/src/sidecar.rs:2033, core/dr-pipeline/src/sidecar.rs:533, core/dr-pipeline/src/sidecar.rs:660, core/dr-pipeline/src/sidecar.rs:792, 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:3012, ui/dr-ui/src/develop.rs:3029, ui/dr-ui/src/develop.rs:3041, ui/dr-ui/src/develop.rs:3079, ui/dr-ui/src/develop.rs:3088, ui/dr-ui/src/develop.rs:3191, ui/dr-ui/src/develop.rs:3607, ui/dr-ui/src/develop.rs:3622, ui/dr-ui/src/lib.rs:2214, ui/dr-ui/src/lib.rs:602, ui/dr-ui/src/lib.rs:660, 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:2372, ui/dr-ui/ui/app.slint:600
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:138, ui/dr-ui/src/develop.rs:2119, ui/dr-ui/src/segmentation.rs:322
FR-DEV-4 core/dr-gpu/src/adjust.rs:770, core/dr-gpu/src/lib.rs:335, ui/dr-ui/ui/crop.slint:1
FR-DEV-5 core/dr-pipeline/src/graph.rs:345, core/dr-pipeline/src/graph.rs:384, 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:3041, ui/dr-ui/src/develop.rs:3622, ui/dr-ui/src/develop.rs:3652, ui/dr-ui/src/develop.rs:3665, ui/dr-ui/src/develop.rs:3677, ui/dr-ui/src/develop.rs:3693, ui/dr-ui/src/develop.rs:3725, ui/dr-ui/src/develop.rs:3729, ui/dr-ui/src/develop.rs:3748, ui/dr-ui/src/develop.rs:3764, ui/dr-ui/src/develop.rs:708, ui/dr-ui/src/labels.rs:12, ui/dr-ui/src/labels.rs:215, ui/dr-ui/src/lib.rs:1462, ui/dr-ui/src/lib.rs:1492, ui/dr-ui/src/lib.rs:1500, ui/dr-ui/src/lib.rs:2410, 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-types/src/settings.rs:182, ui/dr-ui/src/develop.rs:3564, ui/dr-ui/src/develop.rs:3585, ui/dr-ui/src/lib.rs:1429, ui/dr-ui/src/lib.rs:2025, ui/dr-ui/src/lib.rs:2054, 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/ui/adjust.slint:709, ui/dr-ui/ui/adjust.slint:736, ui/dr-ui/ui/adjust.slint:779, ui/dr-ui/ui/app.slint:1451, ui/dr-ui/ui/app.slint:2461, ui/dr-ui/ui/app.slint:672, ui/dr-ui/ui/library.slint:1345, ui/dr-ui/ui/library.slint:1352, 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:19, ui/dr-ui/ui/presets.slint:268, 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:3693, ui/dr-ui/src/develop.rs:3725, ui/dr-ui/src/lib.rs:1500, ui/dr-ui/src/lib.rs:2410, 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:113, core/dr-pipeline/src/graph.rs:191, core/dr-pipeline/src/graph.rs:685, core/dr-pipeline/src/operation.rs:330, core/dr-pipeline/src/operation.rs:554, core/dr-pipeline/src/sidecar.rs:183, core/dr-pipeline/src/sidecar.rs:352, core/dr-pipeline/src/sidecar.rs:672, core/dr-pipeline/src/sidecar.rs:808, core/dr-pipeline/src/sidecar.rs:862, core/dr-pipeline/src/sidecar.rs:892, 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:2271, ui/dr-ui/src/develop.rs:2309, ui/dr-ui/src/develop.rs:2374, ui/dr-ui/src/develop.rs:2457, ui/dr-ui/src/develop.rs:2471, ui/dr-ui/src/develop.rs:756, ui/dr-ui/src/labels.rs:52, ui/dr-ui/src/lib.rs:1521, ui/dr-ui/src/lib.rs:2528, ui/dr-ui/src/lib.rs:325, 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:109, ui/dr-ui/ui/app.slint:1760, ui/dr-ui/ui/app.slint:1935, ui/dr-ui/ui/app.slint:2278, 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:156, core/dr-gpu/src/lib.rs:176, core/dr-gpu/src/lib.rs:54, core/dr-gpu/src/lib.rs:77, 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:547, core/dr-pipeline/src/graph.rs:577, 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:2795, ui/dr-ui/src/develop.rs:4019, ui/dr-ui/src/develop.rs:4502, ui/dr-ui/src/develop.rs:4536, ui/dr-ui/src/lib.rs:73, ui/dr-ui/src/lib.rs:810, ui/dr-ui/src/lib.rs:869
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:2825, ui/dr-ui/src/develop.rs:5794, ui/dr-ui/src/lib.rs:1477, ui/dr-ui/src/lib.rs:2847
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:2874, ui/dr-ui/src/develop.rs:5604, ui/dr-ui/src/develop.rs:5636, ui/dr-ui/src/develop.rs:719, ui/dr-ui/src/histogram.rs:1, ui/dr-ui/src/lib.rs:1577, ui/dr-ui/src/lib.rs:315, ui/dr-ui/ui/app.slint:69, 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:2771, ui/dr-ui/src/develop.rs:2825, ui/dr-ui/src/develop.rs:5794, ui/dr-ui/src/develop.rs:5840, ui/dr-ui/src/develop.rs:5859, ui/dr-ui/src/develop.rs:787, 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:1451, ui/dr-ui/src/lib.rs:1477, ui/dr-ui/src/lib.rs:2824, ui/dr-ui/src/lib.rs:2847, ui/dr-ui/ui/app.slint:1620, ui/dr-ui/ui/app.slint:48, 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:537, core/dr-pipeline/src/graph.rs:591, 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:5859, 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:415, 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:205, ui/dr-ui/src/lib.rs:2156, ui/dr-ui/src/lib.rs:415, ui/dr-ui/src/lib.rs:450, ui/dr-ui/src/lib.rs:477, 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:1003, ui/dr-ui/ui/app.slint:1461, ui/dr-ui/ui/library.slint:1355, 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:2956, ui/dr-ui/src/lib.rs:415
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:477, 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:39, core/dr-sync-nextcloud/src/lib.rs:913, 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:348, 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:3174, ui/dr-ui/src/collections_ui.rs:621, ui/dr-ui/src/collections_ui.rs:683, ui/dr-ui/src/lib.rs:1860, ui/dr-ui/src/lib.rs:2910, 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:2451, ui/dr-ui/ui/app.slint:463, 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:3174, ui/dr-ui/src/collections_ui.rs:621, ui/dr-ui/src/collections_ui.rs:683, 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-7 core/dr-catalog/src/face_shard.rs:1, core/dr-sync-nextcloud/src/lib.rs:104, 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:1176, 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:1176
FR-NC-8 core/dr-pipeline/src/sidecar.rs:118, core/dr-pipeline/src/sidecar.rs:92, ui/dr-ui/src/lib.rs:1830, 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:156, core/dr-pipeline/src/sidecar.rs:183, core/dr-pipeline/src/sidecar.rs:2033, core/dr-pipeline/src/sidecar.rs:352, core/dr-pipeline/src/sidecar.rs:450, 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:919, 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:205
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:2992, ui/dr-ui/src/lib.rs:81, 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:1005, ui/dr-ui/src/collections_ui.rs:118, ui/dr-ui/src/collections_ui.rs:1488, ui/dr-ui/src/collections_ui.rs:1502, ui/dr-ui/src/collections_ui.rs:1548, ui/dr-ui/src/collections_ui.rs:159, ui/dr-ui/src/collections_ui.rs:1646, ui/dr-ui/src/collections_ui.rs:485, ui/dr-ui/src/collections_ui.rs:514, ui/dr-ui/src/collections_ui.rs:995, ui/dr-ui/src/lib.rs:81, ui/dr-ui/src/lib.rs:88, 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:2041, ui/dr-ui/ui/app.slint:493, ui/dr-ui/ui/app.slint:500, ui/dr-ui/ui/app.slint:55, ui/dr-ui/ui/app.slint:838, 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:2335, ui/dr-ui/ui/library.slint:829, ui/dr-ui/ui/library.slint:882, ui/dr-ui/ui/masks.slint:304, 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:2200, ui/dr-ui/src/develop.rs:2309, 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:1857, ui/dr-ui/ui/collections.slint:4, ui/dr-ui/ui/collections.slint:682, ui/dr-ui/ui/masks.slint:490
FR-UI-4 ui/dr-ui/src/collections_ui.rs:1005, ui/dr-ui/src/collections_ui.rs:118, ui/dr-ui/src/collections_ui.rs:131, ui/dr-ui/src/collections_ui.rs:1488, ui/dr-ui/src/collections_ui.rs:1502, ui/dr-ui/src/collections_ui.rs:1548, ui/dr-ui/src/collections_ui.rs:159, ui/dr-ui/src/collections_ui.rs:1646, ui/dr-ui/src/collections_ui.rs:1673, ui/dr-ui/src/collections_ui.rs:485, ui/dr-ui/src/collections_ui.rs:514, ui/dr-ui/src/collections_ui.rs:582, ui/dr-ui/src/collections_ui.rs:995, 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:1697, ui/dr-ui/ui/app.slint:469, ui/dr-ui/ui/app.slint:500, 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:2335, 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:2493, ui/dr-ui/src/lib.rs:3031, ui/dr-ui/src/lib.rs:3216, ui/dr-ui/src/masks_ui.rs:863, ui/dr-ui/ui/app.slint:90, ui/dr-ui/ui/collections.slint:4
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:2190, ui/dr-ui/ui/app.slint:1014, 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-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-P5 core/dr-catalog/src/schema.rs:318, ui/dr-ui/src/library.rs:4003, ui/dr-ui/src/library.rs:4795, 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-3 platform/dr-plat/src/storage.rs:1
NFR-R1 core/dr-catalog/src/sync.rs:1, core/dr-gpu/src/lib.rs:176, 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:73
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:77, 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-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
R4 core/dr-gpu/src/lib.rs:335

Not yet tagged

72 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-3
  • FR-CULL-5
  • FR-CULL-6
  • FR-CULL-7
  • FR-DEV-1
  • FR-DEV-3g
  • FR-DSP-2
  • FR-DSP-4
  • FR-NC-11
  • FR-NC-6d
  • 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
  • FR-UI-6
  • NFR-A11Y-1
  • NFR-A11Y-2
  • NFR-A11Y-3
  • NFR-ARCH-1
  • NFR-COMPAT-1
  • NFR-COMPAT-2
  • NFR-OPS-2
  • NFR-OPS-3
  • NFR-OPS-4
  • NFR-P10
  • NFR-P11
  • NFR-P12
  • NFR-P14
  • NFR-P15
  • NFR-P2
  • NFR-P3
  • NFR-P4
  • NFR-P6
  • NFR-P7
  • NFR-P8
  • NFR-PORT-2
  • NFR-R3
  • NFR-R4
  • NFR-R6
  • NFR-RES-2
  • NFR-RES-3
  • NFR-SEC-3
  • NFR-SEC-4
  • NFR-SEC-6
  • R2
  • R3
  • R5
  • R6