Files
DarkRoom/docs/traceability.md
T
dtourolleandClaude Opus 5 02ae92ba0d
Build and test / Desktop (Linux) (push) Failing after 57m16s
Build and test / Layer separation (push) Successful in 34s
🐳 Android image / Build and push (push) Successful in 3s
Build and test / android-image (push) Successful in 3s
Traceability / Requirement traces (push) Successful in 1m7s
Build and test / Android (aarch64) (push) Failing after 9m41s
Tidy what the seven-branch merge left behind
Three lints, all from merged work rather than from any one branch:
`terrace` and `disc` were steps on the way to the ramp the plateau test now
uses, and the reasoning that discarded them lives in docs/segmentation.md §12
rather than needing the code; two mechanical clippy suggestions in segment and
cache.

1176 tests pass, clippy and fmt clean, traceability regenerated.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 12:36:15 +02:00

37 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 129
TRACES tags found 319
Requirements defined 151
Requirements covered 83
Coverage 55.0% (83/151)

By type

Type Covered Defined
FR 65 97
NFR 16 48
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:196, core/dr-types/src/lib.rs:265, core/dr-types/src/lib.rs:298, 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-11 ui/dr-ui/src/library.rs:152
FR-CAT-12 core/dr-pipeline/src/sidecar.rs:108
FR-CAT-15 core/dr-catalog/src/schema.rs:258, core/dr-catalog/src/trash.rs:1, core/dr-sync-nextcloud/src/lib.rs:366, core/dr-sync/src/lib.rs:122, core/dr-sync/src/scan.rs:426, core/dr-sync/src/scan.rs:57, core/dr-thumbs/src/lib.rs:376, ui/dr-ui/src/collections_ui.rs:1035, ui/dr-ui/src/collections_ui.rs:1671, ui/dr-ui/src/library.rs:152, ui/dr-ui/src/library.rs:169, ui/dr-ui/src/library.rs:2512, ui/dr-ui/src/library.rs:2544, ui/dr-ui/src/library_ui.rs:112, ui/dr-ui/src/library_ui.rs:607, ui/dr-ui/src/trash.rs:1, ui/dr-ui/ui/collections.slint:552
FR-CAT-1a core/dr-catalog/src/walk.rs:1, core/dr-types/src/lib.rs:49
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
FR-CAT-4 core/dr-catalog/src/lib.rs:1, core/dr-catalog/src/query.rs:1, ui/dr-ui/src/library.rs:1, ui/dr-ui/src/library_ui.rs:1
FR-CAT-5 core/dr-catalog/src/rating.rs:1, core/dr-decode/src/lib.rs:240, core/dr-decode/src/lib.rs:307, core/dr-pipeline/src/sidecar.rs:125
FR-CAT-6 core/dr-catalog/src/collections.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-types/src/selector.rs:1, ui/dr-ui/src/library.rs:179
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:1408, ui/dr-ui/src/collections_ui.rs:1, ui/dr-ui/src/derived_sync.rs:1, ui/dr-ui/ui/app.slint:474, ui/dr-ui/ui/collections.slint:4, ui/dr-ui/ui/library.slint:492, ui/dr-ui/ui/library.slint:511
FR-CAT-8 core/dr-pipeline/src/sidecar.rs:89, ui/dr-ui/src/develop.rs:962, ui/dr-ui/src/export.rs:697, ui/dr-ui/src/lib.rs:1044, ui/dr-ui/src/lib.rs:1377, ui/dr-ui/src/lib.rs:1482, ui/dr-ui/src/lib.rs:453, ui/dr-ui/src/lib.rs:727, ui/dr-ui/src/library.rs:1411, ui/dr-ui/src/library.rs:291, ui/dr-ui/src/library.rs:349, ui/dr-ui/src/library.rs:565, ui/dr-ui/src/library_ui.rs:3486, 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:230, 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:115, ui/dr-ui/src/library.rs:1371, ui/dr-ui/src/library.rs:138, ui/dr-ui/src/library.rs:1448, ui/dr-ui/src/library.rs:196, ui/dr-ui/src/library.rs:2632, ui/dr-ui/src/library.rs:349, ui/dr-ui/src/library.rs:549, ui/dr-ui/src/library.rs:565, ui/dr-ui/src/library.rs:619, ui/dr-ui/src/library_ui.rs:1391, ui/dr-ui/src/library_ui.rs:1417, ui/dr-ui/src/library_ui.rs:1433, ui/dr-ui/src/library_ui.rs:146, ui/dr-ui/src/library_ui.rs:1527, ui/dr-ui/src/library_ui.rs:1789, ui/dr-ui/src/library_ui.rs:179, ui/dr-ui/src/library_ui.rs:2054, ui/dr-ui/src/library_ui.rs:2388, ui/dr-ui/src/library_ui.rs:2460, ui/dr-ui/src/library_ui.rs:2625, ui/dr-ui/src/library_ui.rs:322, ui/dr-ui/src/library_ui.rs:3638, ui/dr-ui/src/library_ui.rs:3748, ui/dr-ui/src/library_ui.rs:380, ui/dr-ui/src/sidecar_cache.rs:1
FR-CULL-1 core/dr-decode/src/preview.rs:134
FR-CULL-2 core/dr-decode/src/locate.rs:1, core/dr-decode/src/preview.rs:161
FR-CULL-4 core/dr-catalog/src/rating.rs:1, core/dr-pipeline/src/sidecar.rs:125, ui/dr-ui/src/library.rs:179, ui/dr-ui/src/library.rs:291
FR-DEV-3 core/dr-pipeline/src/framing.rs:185
FR-DEV-3a core/dr-pipeline/build.rs:1734, core/dr-pipeline/ops/exposure.yaml:1, core/dr-pipeline/src/descriptor.rs:117, core/dr-pipeline/src/descriptor.rs:157, core/dr-pipeline/src/descriptor.rs:177, core/dr-pipeline/src/descriptor.rs:232, core/dr-pipeline/src/framing.rs:256, core/dr-pipeline/src/graph.rs:133, core/dr-pipeline/src/graph.rs:17, core/dr-pipeline/src/graph.rs:41, core/dr-pipeline/src/operation.rs:106
FR-DEV-3b core/dr-pipeline/src/descriptor.rs:177, core/dr-pipeline/src/framing.rs:256, core/dr-pipeline/src/graph.rs:41, core/dr-pipeline/src/operation.rs:106
FR-DEV-3c core/dr-pipeline/build.rs:1734, core/dr-pipeline/ops/exposure.yaml:1, core/dr-pipeline/src/graph.rs:133, ui/dr-ui/src/develop.rs:1654
FR-DEV-3d core/dr-pipeline/src/framing.rs:185
FR-DEV-3e core/dr-decode/src/lib.rs:492, core/dr-decode/src/lib.rs:612
FR-DEV-3h core/dr-decode/src/lib.rs:307, core/dr-decode/src/preview.rs:29, core/dr-pipeline/src/framing.rs:199, core/dr-types/src/lib.rs:332
FR-DEV-4 core/dr-gpu/src/lib.rs:210
FR-DEV-5 core/dr-pipeline/src/history.rs:124, core/dr-pipeline/src/history.rs:1, core/dr-pipeline/src/history.rs:55, core/dr-pipeline/src/history.rs:71, core/dr-pipeline/src/history.rs:79, ui/dr-ui/src/develop.rs:26, ui/dr-ui/src/develop.rs:978, ui/dr-ui/src/develop.rs:988, ui/dr-ui/src/lib.rs:1072
FR-DEV-6 core/dr-pipeline/src/preset.rs:1, core/dr-types/src/settings.rs:61, ui/dr-ui/src/develop.rs:939, ui/dr-ui/src/develop.rs:949, ui/dr-ui/src/lib.rs:1044, ui/dr-ui/src/library.rs:1411, ui/dr-ui/src/library.rs:291, ui/dr-ui/src/library.rs:319, ui/dr-ui/src/library_ui.rs:1885, ui/dr-ui/src/library_ui.rs:348, ui/dr-ui/src/presets.rs:1, ui/dr-ui/src/settings_ui.rs:506, ui/dr-ui/ui/adjust.slint:569, ui/dr-ui/ui/library.slint:464, ui/dr-ui/ui/library.slint:521, ui/dr-ui/ui/library.slint:853, ui/dr-ui/ui/settings.slint:79
FR-DSP-1 core/dr-gpu/src/adjust.rs:1135, core/dr-gpu/src/adjust.rs:1168, core/dr-gpu/src/adjust.rs:42, core/dr-gpu/src/lib.rs:47, core/dr-gpu/src/lib.rs:87, ui/dr-ui/src/develop.rs:1126, ui/dr-ui/src/develop.rs:1200, ui/dr-ui/src/develop.rs:1234, ui/dr-ui/src/develop.rs:532, ui/dr-ui/src/lib.rs:54, ui/dr-ui/src/lib.rs:626
FR-DSP-6 core/dr-pipeline/src/operation.rs:168, core/dr-types/src/colour.rs:1
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:2157, ui/dr-ui/src/develop.rs:2189, ui/dr-ui/src/develop.rs:37, ui/dr-ui/src/develop.rs:576, ui/dr-ui/src/histogram.rs:1, ui/dr-ui/src/lib.rs:1124, ui/dr-ui/src/lib.rs:279, ui/dr-ui/ui/app.slint:227, ui/dr-ui/ui/histogram.slint:122, ui/dr-ui/ui/histogram.slint:1
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:137, core/dr-export/src/lib.rs:1, core/dr-export/src/lib.rs:50, core/dr-gpu/src/adjust.rs:1316, core/dr-pipeline/src/graph.rs:298, core/dr-pipeline/src/operation.rs:168, core/dr-types/src/colour.rs:1, core/dr-types/src/settings.rs:1, core/dr-types/src/settings.rs:454, 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:317, ui/dr-ui/src/settings_ui.rs:1, ui/dr-ui/src/settings_ui.rs:48, ui/dr-ui/src/settings_ui.rs:561
FR-EXP-7 ui/dr-ui/src/activity.rs:83, ui/dr-ui/src/export.rs:1, ui/dr-ui/src/export.rs:879, ui/dr-ui/src/lib.rs:1648, ui/dr-ui/src/lib.rs:170, ui/dr-ui/src/lib.rs:317, ui/dr-ui/src/lib.rs:352, ui/dr-ui/src/lib.rs:379, ui/dr-ui/src/library_ui.rs:2477, ui/dr-ui/src/library_ui.rs:4186, ui/dr-ui/src/library_ui.rs:4198, ui/dr-ui/src/library_ui.rs:4210, ui/dr-ui/src/library_ui.rs:439, ui/dr-ui/src/library_ui.rs:510, ui/dr-ui/src/library_ui.rs:567, ui/dr-ui/ui/app.slint:1021, ui/dr-ui/ui/app.slint:713, ui/dr-ui/ui/library.slint:468, ui/dr-ui/ui/library.slint:536, ui/dr-ui/ui/library.slint:861
FR-EXP-8 core/dr-export/src/encode.rs:1, ui/dr-ui/src/settings_ui.rs:1
FR-EXP-9 core/dr-decode/src/lib.rs:409, core/dr-export/src/lib.rs:125, core/dr-export/src/lib.rs:1, core/dr-gpu/src/adjust.rs:350, ui/dr-ui/src/develop.rs:654, ui/dr-ui/src/lib.rs:317
FR-NC-1 core/dr-sync-nextcloud/src/auth.rs:132, core/dr-sync-nextcloud/src/auth.rs:44, core/dr-sync-nextcloud/src/session.rs:128, ui/dr-ui/src/launch.rs:256, ui/dr-ui/src/launch.rs:49, ui/dr-ui/src/launch_ui.rs:344
FR-NC-10 ui/dr-ui/src/export.rs:1, ui/dr-ui/src/lib.rs:379, ui/dr-ui/src/library.rs:1448, ui/dr-ui/src/library.rs:349, ui/dr-ui/src/library.rs:619, ui/dr-ui/src/library.rs:813, ui/dr-ui/src/library_ui.rs:1433, ui/dr-ui/src/library_ui.rs:2477, ui/dr-ui/src/library_ui.rs:380, ui/dr-ui/src/sidecar_cache.rs:1
FR-NC-12 core/dr-sync-nextcloud/src/lib.rs:34, core/dr-sync-nextcloud/src/lib.rs:811, core/dr-sync/src/lib.rs:155, core/dr-sync/src/lib.rs:38, core/dr-sync/src/reachability.rs:1
FR-NC-2 core/dr-sync-nextcloud/src/session.rs:128, core/dr-sync-nextcloud/src/session.rs:34
FR-NC-3 core/dr-decode/src/locate.rs:1, core/dr-decode/src/preview.rs:161, core/dr-sync/src/capability.rs:41, core/dr-thumbs/src/lib.rs:1, ui/dr-ui/src/library.rs:1, ui/dr-ui/src/library_ui.rs:1
FR-NC-4 core/dr-sync-nextcloud/src/propfind.rs:100, core/dr-sync-nextcloud/src/propfind.rs:51, core/dr-sync/src/capability.rs:6, core/dr-sync/src/lib.rs:155, core/dr-sync/src/scan.rs:93, ui/dr-ui/src/launch.rs:49
FR-NC-5 core/dr-sync-nextcloud/src/propfind.rs:51
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:230, core/dr-catalog/src/schema.rs:631, core/dr-types/src/selector.rs:1, core/dr-types/src/settings.rs:1, ui/dr-ui/src/collections_ui.rs:2718, ui/dr-ui/src/collections_ui.rs:438, ui/dr-ui/src/collections_ui.rs:500, ui/dr-ui/src/lib.rs:1408, ui/dr-ui/src/lib.rs:2082, ui/dr-ui/src/library.rs:1190, ui/dr-ui/src/library.rs:1213, ui/dr-ui/src/library.rs:1371, ui/dr-ui/src/library_ui.rs:1066, ui/dr-ui/src/library_ui.rs:1121, ui/dr-ui/src/library_ui.rs:1239, ui/dr-ui/src/library_ui.rs:1358, ui/dr-ui/src/library_ui.rs:1590, ui/dr-ui/src/library_ui.rs:187, ui/dr-ui/src/library_ui.rs:191, ui/dr-ui/src/library_ui.rs:199, ui/dr-ui/src/library_ui.rs:211, ui/dr-ui/src/library_ui.rs:220, ui/dr-ui/src/library_ui.rs:281, ui/dr-ui/src/library_ui.rs:291, ui/dr-ui/src/library_ui.rs:333, ui/dr-ui/src/library_ui.rs:3655, ui/dr-ui/src/library_ui.rs:3673, ui/dr-ui/src/library_ui.rs:3685, ui/dr-ui/src/library_ui.rs:396, ui/dr-ui/src/library_ui.rs:427, ui/dr-ui/src/library_ui.rs:439, ui/dr-ui/src/library_ui.rs:892, ui/dr-ui/src/library_ui.rs:965, ui/dr-ui/src/settings_store.rs:1, ui/dr-ui/src/settings_ui.rs:1, ui/dr-ui/ui/app.slint:1695, ui/dr-ui/ui/app.slint:468, ui/dr-ui/ui/collections.slint:249, ui/dr-ui/ui/collections.slint:365, ui/dr-ui/ui/collections.slint:52, ui/dr-ui/ui/collections.slint:662, ui/dr-ui/ui/collections.slint:84, ui/dr-ui/ui/icons.slint:260, ui/dr-ui/ui/library.slint:582
FR-NC-6b ui/dr-ui/src/library_ui.rs:1121
FR-NC-6c core/dr-sync-nextcloud/src/desktop_client.rs:30, core/dr-types/src/lib.rs:115, core/dr-types/src/lib.rs:197, ui/dr-ui/src/activity.rs:1, ui/dr-ui/src/collections_ui.rs:2718, ui/dr-ui/src/collections_ui.rs:438, ui/dr-ui/src/collections_ui.rs:500, ui/dr-ui/src/library_ui.rs:892, ui/dr-ui/src/library_ui.rs:965, ui/dr-ui/ui/collections.slint:249, ui/dr-ui/ui/collections.slint:662, ui/dr-ui/ui/icons.slint:260
FR-NC-7 core/dr-sync-nextcloud/src/lib.rs:95, ui/dr-ui/src/derived_sync.rs:1
FR-NC-8 core/dr-pipeline/src/sidecar.rs:108, core/dr-pipeline/src/sidecar.rs:89, ui/dr-ui/src/lib.rs:1377, ui/dr-ui/src/library.rs:291, ui/dr-ui/src/library_ui.rs:348
FR-NC-9 core/dr-catalog/src/merge.rs:1, core/dr-catalog/src/sync.rs:1, core/dr-pipeline/src/sidecar.rs:212, ui/dr-ui/src/library.rs:619, ui/dr-ui/src/library.rs:746
FR-PLAT-AND-1 core/dr-types/src/lib.rs:49
FR-PLAT-AND-3 core/dr-catalog/src/jobs.rs:1
FR-PLAT-LIN-1 core/dr-types/src/settings.rs:1, ui/dr-ui/src/settings_store.rs:1
FR-RAW-1 core/dr-decode/src/lib.rs:198, core/dr-types/src/lib.rs:125, core/dr-types/src/lib.rs:196
FR-RAW-3 core/dr-decode/src/lib.rs:409, core/dr-decode/src/lib.rs:94
FR-RAW-4 core/dr-decode/src/error.rs:1, ui/dr-ui/src/lib.rs:170
FR-RAW-5 core/dr-decode/src/lib.rs:122, core/dr-gpu/src/demosaic.rs:34, core/dr-gpu/src/demosaic.rs:573, core/dr-gpu/src/demosaic.rs:652, core/dr-gpu/src/demosaic.rs:776
FR-UI-1 ui/dr-ui/src/lib.rs:2164, ui/dr-ui/src/lib.rs:62, ui/dr-ui/ui/library.slint:628
FR-UI-2 ui/dr-ui/src/collections_ui.rs:1312, ui/dr-ui/src/collections_ui.rs:1326, ui/dr-ui/src/collections_ui.rs:1371, ui/dr-ui/src/collections_ui.rs:1381, ui/dr-ui/src/collections_ui.rs:338, ui/dr-ui/src/collections_ui.rs:366, ui/dr-ui/src/collections_ui.rs:70, ui/dr-ui/src/collections_ui.rs:805, ui/dr-ui/src/collections_ui.rs:815, ui/dr-ui/src/collections_ui.rs:98, ui/dr-ui/src/lib.rs:62, ui/dr-ui/src/library_ui.rs:199, ui/dr-ui/src/library_ui.rs:3685, ui/dr-ui/ui/app.slint:479, ui/dr-ui/ui/app.slint:486, ui/dr-ui/ui/library.slint:1418, ui/dr-ui/ui/library.slint:456, ui/dr-ui/ui/library.slint:492, ui/dr-ui/ui/library.slint:766, ui/dr-ui/ui/library.slint:773, ui/dr-ui/ui/library.slint:779
FR-UI-3 ui/dr-ui/ui/collections.slint:4, ui/dr-ui/ui/collections.slint:662
FR-UI-4 ui/dr-ui/src/collections_ui.rs:1312, ui/dr-ui/src/collections_ui.rs:1326, ui/dr-ui/src/collections_ui.rs:1371, ui/dr-ui/src/collections_ui.rs:1381, ui/dr-ui/src/collections_ui.rs:1408, ui/dr-ui/src/collections_ui.rs:338, ui/dr-ui/src/collections_ui.rs:366, ui/dr-ui/src/collections_ui.rs:70, ui/dr-ui/src/collections_ui.rs:805, ui/dr-ui/src/collections_ui.rs:815, ui/dr-ui/src/collections_ui.rs:98, ui/dr-ui/src/library_ui.rs:3673, ui/dr-ui/src/library_ui.rs:3685, ui/dr-ui/ui/app.slint:1205, ui/dr-ui/ui/app.slint:474, ui/dr-ui/ui/app.slint:486, ui/dr-ui/ui/library.slint:1418, ui/dr-ui/ui/library.slint:456, ui/dr-ui/ui/library.slint:492, ui/dr-ui/ui/library.slint:511, ui/dr-ui/ui/library.slint:766, ui/dr-ui/ui/library.slint:773, ui/dr-ui/ui/library.slint:779
FR-UI-5 ui/dr-ui/src/collections_ui.rs:1, ui/dr-ui/src/lib.rs:2198, ui/dr-ui/ui/collections.slint:4
FR-UI-7 core/dr-pipeline/src/descriptor.rs:100, core/dr-pipeline/src/framing.rs:256
NFR-ARCH-2 core/dr-catalog/src/jobs.rs:1
NFR-ARCH-3 ui/dr-ui/src/export.rs:1490, ui/dr-ui/src/export.rs:1516, ui/dr-ui/src/export.rs:410, ui/dr-ui/src/export.rs:436, ui/dr-ui/src/lib.rs:1682, ui/dr-ui/ui/app.slint:724, ui/dr-ui/ui/library.slint:536
NFR-ARCH-4 core/dr-catalog/src/error.rs:1, core/dr-export/src/error.rs:1, core/dr-thumbs/src/error.rs:1, ui/dr-ui/src/export.rs:500
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:134
NFR-P9 ui/dr-ui/src/collections_ui.rs:1, ui/dr-ui/src/export.rs:879, 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:265, core/dr-types/src/lib.rs:298
NFR-R1 core/dr-catalog/src/sync.rs:1, ui/dr-ui/src/library.rs:813
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/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:55, ui/dr-ui/src/lib.rs:54
NFR-RES-4 core/dr-catalog/src/cache.rs:1, core/dr-catalog/src/schema.rs:230, core/dr-thumbs/src/codec.rs:1, core/dr-thumbs/src/lib.rs:1, core/dr-thumbs/src/lib.rs:376
NFR-SEC-1 core/dr-decode/src/error.rs:1
R1 tools/traceability/src/lib.rs:495, tools/traceability/src/lib.rs:499
R4 core/dr-gpu/src/lib.rs:210

Not yet tagged

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

Show untagged requirements
  • FR-CAT-10
  • FR-CAT-13
  • FR-CAT-14
  • FR-CULL-10
  • FR-CULL-11
  • FR-CULL-12
  • FR-CULL-3
  • FR-CULL-5
  • FR-CULL-6
  • FR-CULL-7
  • FR-CULL-8
  • FR-CULL-9
  • FR-DEV-1
  • FR-DEV-2
  • FR-DEV-3f
  • FR-DEV-3g
  • FR-DEV-7
  • FR-DEV-8
  • FR-DSP-2
  • FR-DSP-3
  • FR-DSP-4
  • FR-DSP-5
  • FR-DSP-8
  • FR-NC-11
  • FR-PLAT-AND-2
  • FR-PLAT-AND-4
  • FR-PLAT-AND-5
  • FR-PLAT-AND-6
  • FR-PLAT-LIN-2
  • FR-PLAT-LIN-3
  • 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-P5
  • NFR-P6
  • NFR-P7
  • NFR-P8
  • NFR-PORT-2
  • NFR-PORT-3
  • NFR-R3
  • NFR-R4
  • NFR-R6
  • NFR-RES-2
  • NFR-RES-3
  • NFR-SEC-2
  • NFR-SEC-3
  • NFR-SEC-4
  • NFR-SEC-5
  • R2
  • R3
  • R5
  • R6