Files
DarkRoom/docs/traceability.md
T
dtourolle c102ba9df2 Treat a placeholder as the photograph, not as a one-byte file
The folder connector was pointed at a Nextcloud VFS tree and got three
things wrong, the first of which loses work.

**A dehydrated sidecar read as absent.** `a.drsc` does not exist when the
client has dehydrated it — only `a.drsc.nextcloud` does — so `get` missed,
`.ok()` swallowed the `NotFound`, and the sidecar writer took that for
"there is no sidecar yet" and wrote a fresh document over the existing
one. Every edit another device had put there went with it. That function's
own doc comment calls this the exact loss the format's unknown-key
preservation exists to prevent.

**A stub was catalogued as a 1-byte image**, and ARCH §9.0 measured this
machine at 121,785 placeholders against 10,267 real files — so a folder
library on a synced tree was ~92% broken rows.

**Identity changed on hydration**, so downloading a photograph looked like
a delete and an add, orphaning its thumbnail and its face rows.

Entries now carry the photograph's own name and a `materialised` flag;
`get` on a stub returns the new `RemoteError::NotMaterialised`, which is
distinct from `NotFound` precisely because the sidecar writer must treat
them differently — it fetches the sidecar and merges, or leaves the entry
queued.

Hydration is a **borrow**. `BorrowPool` records what was on disk before it
asked, so `release_all` dehydrates only what a pass brought and leaves
what the user already had. Reference counted: the thumbnail pass and the
face pass meet on the same RAW, and without counting the first to finish
dehydrates the file the second is reading. A borrow against a plain folder
or a server does nothing, so a pass written for VFS runs everywhere.

Releasing means asking the client to dehydrate and never deleting: a
deletion inside a synced tree propagates to the server and removes the
photograph from every device.

Not a second backend — the capability is per *connection*, not per type,
since the same folder hydrates only while the client runs. The convention
arrives through a detector the registry supplies, so `dr-sync-folder`
still knows nothing about any client's protocol.

ARCH §9.0a records this as an amendment: finding 3 rejected hydration
because it costs 100× a range read, and that comparison assumed a
connector was available. A folder library has none.
2026-08-29 09:57:52 +02:00

86 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 286
TRACES tags found 834
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:200, core/dr-types/src/lib.rs:269, core/dr-types/src/lib.rs:302, 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:1123, ui/dr-ui/ui/import.slint:5, ui/dr-ui/ui/library.slint:1014, ui/dr-ui/ui/library.slint:1176, ui/dr-ui/ui/library.slint:863
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:1123, ui/dr-ui/src/library.rs:162, ui/dr-ui/src/library.rs:2257, 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:3665, ui/dr-ui/src/library.rs:3699, 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:53, 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:2730, ui/dr-ui/src/library.rs:3200, ui/dr-ui/src/library_ui.rs:172, ui/dr-ui/src/library_ui.rs:3610, ui/dr-ui/src/library_ui.rs:4575, ui/dr-ui/ui/app.slint:319, ui/dr-ui/ui/settings.slint:372, ui/dr-ui/ui/settings.slint:72
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:3713, ui/dr-ui/src/library_ui.rs:631, ui/dr-ui/src/library_ui.rs:6372, ui/dr-ui/src/library_ui.rs:6383, ui/dr-ui/src/library_ui.rs:6396, ui/dr-ui/src/library_ui.rs:6411, ui/dr-ui/src/library_ui.rs:6420, ui/dr-ui/ui/app.slint:264, ui/dr-ui/ui/app.slint:445, ui/dr-ui/ui/library.slint:1225, ui/dr-ui/ui/library.slint:1228, ui/dr-ui/ui/library.slint:18, ui/dr-ui/ui/library.slint:856, ui/dr-ui/ui/library.slint:908
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:3959, ui/dr-ui/src/library_ui.rs:321, ui/dr-ui/src/library_ui.rs:393, ui/dr-ui/src/library_ui.rs:5186, ui/dr-ui/src/library_ui.rs:5239, ui/dr-ui/src/library_ui.rs:6512, ui/dr-ui/ui/app.slint:267, ui/dr-ui/ui/app.slint:445, ui/dr-ui/ui/app.slint:690, ui/dr-ui/ui/library.slint:109, ui/dr-ui/ui/library.slint:1301, ui/dr-ui/ui/library.slint:908, ui/dr-ui/ui/settings.slint:147
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:3472, ui/dr-ui/src/library_ui.rs:4165, ui/dr-ui/ui/app.slint:440, ui/dr-ui/ui/collections.slint:4, ui/dr-ui/ui/library.slint:2564, ui/dr-ui/ui/library.slint:879, ui/dr-ui/ui/library.slint:898
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:3345, ui/dr-ui/src/develop.rs:3374, ui/dr-ui/src/export.rs:750, ui/dr-ui/src/lib.rs:1376, ui/dr-ui/src/lib.rs:1777, ui/dr-ui/src/lib.rs:1912, ui/dr-ui/src/lib.rs:501, ui/dr-ui/src/lib.rs:926, ui/dr-ui/src/library.rs:1669, 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:4867, 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:119, ui/dr-ui/src/develop.rs:2870, ui/dr-ui/src/library.rs:148, ui/dr-ui/src/library.rs:1629, ui/dr-ui/src/library.rs:1705, ui/dr-ui/src/library.rs:233, ui/dr-ui/src/library.rs:4066, 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:1563, ui/dr-ui/src/library_ui.rs:1589, ui/dr-ui/src/library_ui.rs:1605, ui/dr-ui/src/library_ui.rs:1699, ui/dr-ui/src/library_ui.rs:2315, ui/dr-ui/src/library_ui.rs:232, ui/dr-ui/src/library_ui.rs:265, ui/dr-ui/src/library_ui.rs:2753, ui/dr-ui/src/library_ui.rs:2975, ui/dr-ui/src/library_ui.rs:3253, ui/dr-ui/src/library_ui.rs:3341, ui/dr-ui/src/library_ui.rs:3523, ui/dr-ui/src/library_ui.rs:3637, ui/dr-ui/src/library_ui.rs:446, ui/dr-ui/src/library_ui.rs:504, ui/dr-ui/src/library_ui.rs:5284, ui/dr-ui/src/library_ui.rs:5399, ui/dr-ui/src/presets.rs:326, ui/dr-ui/src/presets.rs:338, 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/neighbours.rs:1, ui/dr-ui/src/develop.rs:119, ui/dr-ui/src/develop.rs:128, ui/dr-ui/src/develop.rs:1793, ui/dr-ui/src/develop.rs:194, ui/dr-ui/src/develop.rs:589, 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:1884, 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:2731, ui/dr-ui/src/library.rs:2835, ui/dr-ui/ui/settings.slint:404, ui/dr-ui/ui/settings.slint:81
FR-CULL-9 core/dr-catalog/src/faces.rs:1, core/dr-catalog/src/schema.rs:442, 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:387, core/dr-pipeline/src/detail.rs:465, core/dr-pipeline/src/framing.rs:191, core/dr-pipeline/src/framing.rs:365, core/dr-pipeline/src/framing.rs:620, 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:1297, ui/dr-ui/src/develop.rs:163, ui/dr-ui/src/develop.rs:1775, ui/dr-ui/src/develop.rs:1793, ui/dr-ui/src/develop.rs:1807, ui/dr-ui/src/develop.rs:1829, ui/dr-ui/src/develop.rs:1975, ui/dr-ui/src/develop.rs:2073, ui/dr-ui/src/develop.rs:326, ui/dr-ui/src/develop.rs:3345, ui/dr-ui/src/develop.rs:363, ui/dr-ui/src/develop.rs:3909, ui/dr-ui/src/develop.rs:3963, ui/dr-ui/src/develop.rs:4007, ui/dr-ui/src/develop.rs:4057, ui/dr-ui/src/develop.rs:628, ui/dr-ui/src/develop.rs:675, ui/dr-ui/src/lib.rs:1461, ui/dr-ui/src/lib.rs:2162, ui/dr-ui/src/lib.rs:319, 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/app.slint:1766, ui/dr-ui/ui/app.slint:793, 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:262, 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:1194, ui/dr-ui/src/lib.rs:616, 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:262, 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:4636
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:476, core/dr-gpu/tests/noise_reduction.rs:556, core/dr-pipeline/src/framing.rs:191, 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:2885, ui/dr-ui/src/develop.rs:2902, ui/dr-ui/src/develop.rs:2914, ui/dr-ui/src/develop.rs:2952, ui/dr-ui/src/develop.rs:2961, ui/dr-ui/src/develop.rs:3064, ui/dr-ui/src/develop.rs:3382, ui/dr-ui/src/develop.rs:3397, ui/dr-ui/src/lib.rs:2136, ui/dr-ui/src/lib.rs:549, ui/dr-ui/src/lib.rs:607, ui/dr-ui/src/library.rs:497, ui/dr-ui/src/library.rs:745, ui/dr-ui/src/presets.rs:275, ui/dr-ui/ui/adjust.slint:1006, ui/dr-ui/ui/adjust.slint:924, ui/dr-ui/ui/app.slint:2256, ui/dr-ui/ui/app.slint:571
FR-DEV-3h core/dr-decode/src/lib.rs:404, core/dr-decode/src/preview.rs:29, core/dr-pipeline/src/framing.rs:205, core/dr-pipeline/src/framing.rs:365, core/dr-pipeline/src/framing.rs:927, core/dr-types/src/lib.rs:336, core/dr-types/src/lib.rs:444, core/dr-types/src/lib.rs:456, core/dr-types/src/lib.rs:472, ui/dr-ui/src/develop.rs:138, ui/dr-ui/src/develop.rs:1992, ui/dr-ui/src/segmentation.rs:322
FR-DEV-4 core/dr-gpu/src/adjust.rs:770, core/dr-gpu/src/lib.rs:217, 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:2914, ui/dr-ui/src/develop.rs:3397, ui/dr-ui/src/develop.rs:3427, ui/dr-ui/src/develop.rs:3440, ui/dr-ui/src/develop.rs:3452, ui/dr-ui/src/develop.rs:3468, ui/dr-ui/src/develop.rs:3500, ui/dr-ui/src/develop.rs:3504, ui/dr-ui/src/develop.rs:3523, ui/dr-ui/src/develop.rs:3539, ui/dr-ui/src/develop.rs:610, ui/dr-ui/src/labels.rs:12, ui/dr-ui/src/labels.rs:215, ui/dr-ui/src/lib.rs:1409, ui/dr-ui/src/lib.rs:1439, ui/dr-ui/src/lib.rs:1447, ui/dr-ui/src/lib.rs:2332, ui/dr-ui/ui/history.slint:1
FR-DEV-6 core/dr-pipeline/src/preset.rs:1, core/dr-types/src/settings.rs:182, ui/dr-ui/src/develop.rs:3339, ui/dr-ui/src/develop.rs:3360, ui/dr-ui/src/lib.rs:1376, ui/dr-ui/src/library.rs:1669, ui/dr-ui/src/library.rs:459, ui/dr-ui/src/library.rs:487, ui/dr-ui/src/library_ui.rs:2575, ui/dr-ui/src/library_ui.rs:2975, ui/dr-ui/src/library_ui.rs:472, ui/dr-ui/src/presets.rs:1, ui/dr-ui/src/settings_ui.rs:549, ui/dr-ui/ui/adjust.slint:613, ui/dr-ui/ui/library.slint:1328, ui/dr-ui/ui/library.slint:837, ui/dr-ui/ui/library.slint:919, ui/dr-ui/ui/settings.slint:100
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:3468, ui/dr-ui/src/develop.rs:3500, ui/dr-ui/src/lib.rs:1447, ui/dr-ui/src/lib.rs:2332, ui/dr-ui/ui/history.slint:1
FR-DEV-8 core/dr-gpu/src/detail.rs:252, core/dr-gpu/src/detail.rs:434, core/dr-gpu/tests/detail_instances.rs:1, core/dr-gpu/tests/spot_removal.rs:1, core/dr-pipeline/src/detail.rs:363, core/dr-pipeline/src/detail.rs:387, core/dr-pipeline/src/detail.rs:422, core/dr-pipeline/src/detail.rs:496, 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:2144, ui/dr-ui/src/develop.rs:2182, ui/dr-ui/src/develop.rs:2247, ui/dr-ui/src/develop.rs:2330, ui/dr-ui/src/develop.rs:2344, ui/dr-ui/src/develop.rs:658, ui/dr-ui/src/labels.rs:52, ui/dr-ui/src/lib.rs:1468, ui/dr-ui/src/lib.rs:2429, ui/dr-ui/src/lib.rs:324, 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:700, ui/dr-ui/ui/app.slint:108, ui/dr-ui/ui/app.slint:1671, ui/dr-ui/ui/app.slint:1844, ui/dr-ui/ui/app.slint:2162, 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:54, core/dr-gpu/src/lib.rs:94, core/dr-gpu/tests/capture_sharpen.rs:200, core/dr-gpu/tests/detail_stage.rs:328, core/dr-gpu/tests/local_contrast.rs:263, core/dr-gpu/tests/noise_reduction.rs:378, core/dr-pipeline/src/detail.rs:136, core/dr-pipeline/src/detail.rs:465, 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:657, core/dr-pipeline/src/ops/local_contrast.rs:1, core/dr-pipeline/src/ops/local_contrast.rs:672, core/dr-pipeline/src/ops/noise_reduction.rs:698, core/dr-pipeline/src/spot.rs:673, ui/dr-ui/src/develop.rs:2668, ui/dr-ui/src/develop.rs:3698, ui/dr-ui/src/develop.rs:4181, ui/dr-ui/src/develop.rs:4215, ui/dr-ui/src/lib.rs:72, ui/dr-ui/src/lib.rs:757, ui/dr-ui/src/lib.rs:816
FR-DSP-3 core/dr-gpu/tests/frame_budget.rs:101
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:2698, ui/dr-ui/src/develop.rs:5473, ui/dr-ui/src/lib.rs:1424, ui/dr-ui/src/lib.rs:2635
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:2747, ui/dr-ui/src/develop.rs:5283, ui/dr-ui/src/develop.rs:5315, ui/dr-ui/src/develop.rs:621, ui/dr-ui/src/histogram.rs:1, ui/dr-ui/src/lib.rs:1524, ui/dr-ui/src/lib.rs:314, ui/dr-ui/ui/app.slint:68, 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:2644, ui/dr-ui/src/develop.rs:2698, ui/dr-ui/src/develop.rs:5473, ui/dr-ui/src/develop.rs:5519, ui/dr-ui/src/develop.rs:5538, ui/dr-ui/src/develop.rs:689, 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:1398, ui/dr-ui/src/lib.rs:1424, ui/dr-ui/src/lib.rs:2612, ui/dr-ui/src/lib.rs:2635, ui/dr-ui/ui/app.slint:1531, ui/dr-ui/ui/app.slint:47, ui/dr-ui/ui/settings.slint:120, ui/dr-ui/ui/settings.slint:731
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:600, ui/dr-ui/src/develop.rs:5538, ui/dr-ui/src/settings_ui.rs:1
FR-EXP-3 core/dr-export/src/lib.rs:1, core/dr-export/src/size.rs:1, core/dr-export/src/size.rs:25, core/dr-types/src/settings.rs:1, ui/dr-ui/src/settings_ui.rs:1
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:362, ui/dr-ui/src/settings_ui.rs:1, ui/dr-ui/src/settings_ui.rs:49, ui/dr-ui/src/settings_ui.rs:604
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:204, ui/dr-ui/src/lib.rs:2078, ui/dr-ui/src/lib.rs:362, ui/dr-ui/src/lib.rs:397, ui/dr-ui/src/lib.rs:424, ui/dr-ui/src/library_ui.rs:3358, ui/dr-ui/src/library_ui.rs:563, ui/dr-ui/src/library_ui.rs:6354, ui/dr-ui/src/library_ui.rs:6431, ui/dr-ui/src/library_ui.rs:6443, ui/dr-ui/src/library_ui.rs:663, ui/dr-ui/src/library_ui.rs:720, ui/dr-ui/ui/app.slint:1372, ui/dr-ui/ui/app.slint:929, ui/dr-ui/ui/library.slint:1336, ui/dr-ui/ui/library.slint:841, ui/dr-ui/ui/library.slint:934
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:652, core/dr-types/src/settings.rs:313, 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:2829, ui/dr-ui/src/lib.rs:362
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:424, ui/dr-ui/src/library.rs:1068, ui/dr-ui/src/library.rs:1705, ui/dr-ui/src/library.rs:543, ui/dr-ui/src/library.rs:844, ui/dr-ui/src/library_ui.rs:1605, ui/dr-ui/src/library_ui.rs:3358, 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:211, 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:2730, ui/dr-ui/src/library.rs:3200, ui/dr-ui/src/library_ui.rs:1, ui/dr-ui/src/library_ui.rs:3610, ui/dr-ui/src/library_ui.rs:4575, ui/dr-ui/ui/app.slint:319, ui/dr-ui/ui/settings.slint:372, ui/dr-ui/ui/settings.slint:72
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:211, 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/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:1807, ui/dr-ui/src/lib.rs:2698, ui/dr-ui/src/library.rs:1449, ui/dr-ui/src/library.rs:1472, ui/dr-ui/src/library.rs:1629, 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:1412, ui/dr-ui/src/library_ui.rs:1530, ui/dr-ui/src/library_ui.rs:2057, 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:5301, ui/dr-ui/src/library_ui.rs:5319, ui/dr-ui/src/library_ui.rs:5331, 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:2335, ui/dr-ui/ui/app.slint:434, 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:980
FR-NC-6b ui/dr-ui/src/library_ui.rs:1294
FR-NC-6c 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:770, core/dr-sync-folder/src/lib.rs:809, 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:119, core/dr-types/src/lib.rs:201, 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/library.rs:948, ui/dr-ui/src/library_ui.rs:1065, ui/dr-ui/src/library_ui.rs:1138, 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:3200, ui/dr-ui/src/library_ui.rs:3610, ui/dr-ui/ui/settings.slint:372
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:1123, 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:1123
FR-NC-8 core/dr-pipeline/src/sidecar.rs:118, core/dr-pipeline/src/sidecar.rs:92, ui/dr-ui/src/lib.rs:1777, 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/library.rs:844, ui/dr-ui/src/library.rs:998
FR-PLAT-AND-1 core/dr-types/src/lib.rs:53, 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:866, 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:635, 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:129, core/dr-types/src/lib.rs:200
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:204
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:2780, ui/dr-ui/src/lib.rs:80, ui/dr-ui/src/masks_ui.rs:816, ui/dr-ui/ui/identity.slint:165, ui/dr-ui/ui/library.slint:1046
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:80, ui/dr-ui/src/lib.rs:87, ui/dr-ui/src/library_ui.rs:292, ui/dr-ui/src/library_ui.rs:5186, ui/dr-ui/src/library_ui.rs:5331, ui/dr-ui/src/library_ui.rs:6462, ui/dr-ui/ui/adjust.slint:506, ui/dr-ui/ui/adjust.slint:641, ui/dr-ui/ui/adjust.slint:962, ui/dr-ui/ui/app.slint:1950, ui/dr-ui/ui/app.slint:464, ui/dr-ui/ui/app.slint:471, ui/dr-ui/ui/app.slint:54, ui/dr-ui/ui/app.slint:764, 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:1202, ui/dr-ui/ui/library.slint:1209, ui/dr-ui/ui/library.slint:1215, ui/dr-ui/ui/library.slint:2314, ui/dr-ui/ui/library.slint:829, ui/dr-ui/ui/library.slint:879, ui/dr-ui/ui/masks.slint:304, ui/dr-ui/ui/settings.slint:106, ui/dr-ui/ui/spots.slint:88
FR-UI-3 ui/dr-ui/src/develop.rs:2073, ui/dr-ui/src/develop.rs:2182, ui/dr-ui/src/library_ui.rs:4370, 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:1766, 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:4370, ui/dr-ui/src/library_ui.rs:4415, ui/dr-ui/src/library_ui.rs:4518, ui/dr-ui/src/library_ui.rs:4546, ui/dr-ui/src/library_ui.rs:5319, ui/dr-ui/src/library_ui.rs:5331, ui/dr-ui/ui/app.slint:1608, ui/dr-ui/ui/app.slint:440, ui/dr-ui/ui/app.slint:471, ui/dr-ui/ui/library.slint:1202, ui/dr-ui/ui/library.slint:1209, ui/dr-ui/ui/library.slint:1215, ui/dr-ui/ui/library.slint:2314, ui/dr-ui/ui/library.slint:829, ui/dr-ui/ui/library.slint:879, ui/dr-ui/ui/library.slint:898
FR-UI-5 ui/dr-ui/src/collections_ui.rs:1, ui/dr-ui/src/lib.rs:2394, ui/dr-ui/src/lib.rs:2819, ui/dr-ui/src/lib.rs:3004, ui/dr-ui/src/masks_ui.rs:863, ui/dr-ui/ui/app.slint:89, ui/dr-ui/ui/collections.slint:4
FR-UI-7 core/dr-pipeline/src/descriptor.rs:177, core/dr-pipeline/src/framing.rs:262
NFR-ARCH-2 core/dr-catalog/src/jobs.rs:1, ui/dr-ui/src/faces.rs:1, ui/dr-ui/src/library.rs:2835
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:2112, ui/dr-ui/ui/app.slint:940, ui/dr-ui/ui/library.slint:934
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:3799, ui/dr-ui/src/library.rs:4591, ui/dr-ui/src/library_ui.rs:4055, 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:269, core/dr-types/src/lib.rs:302, 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-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:72
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-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:2730
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:217

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