# Requirements traceability matrix Denominators are parsed from [`requirements.md`](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 | 44 | | TRACES tags found | 37 | | Requirements defined | 143 | | Requirements covered | 36 | | **Coverage** | **25.2%** (36/143) | ### By type | Type | Covered | Defined | |---|---|---| | FR | 27 | 90 | | NFR | 7 | 47 | | 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 | [`tools/traceability/src/lib.rs:473`](../tools/traceability/src/lib.rs#L473), [`tools/traceability/src/lib.rs:505`](../tools/traceability/src/lib.rs#L505) | | FR-CAT-1a | [`core/dr-types/src/lib.rs:23`](../core/dr-types/src/lib.rs#L23) | | FR-CAT-2 | [`tools/traceability/src/lib.rs:473`](../tools/traceability/src/lib.rs#L473) | | FR-CAT-5 | [`core/dr-decode/src/lib.rs:216`](../core/dr-decode/src/lib.rs#L216) | | FR-CAT-9 | [`core/dr-sync-nextcloud/src/desktop_client.rs:30`](../core/dr-sync-nextcloud/src/desktop_client.rs#L30), [`core/dr-types/src/lib.rs:80`](../core/dr-types/src/lib.rs#L80) | | FR-CULL-1 | [`core/dr-decode/src/preview.rs:96`](../core/dr-decode/src/preview.rs#L96) | | FR-CULL-2 | [`core/dr-decode/src/preview.rs:123`](../core/dr-decode/src/preview.rs#L123) | | FR-DEV-3a | [`core/dr-pipeline/src/graph.rs:14`](../core/dr-pipeline/src/graph.rs#L14), [`core/dr-pipeline/src/graph.rs:32`](../core/dr-pipeline/src/graph.rs#L32), [`core/dr-pipeline/src/graph.rs:88`](../core/dr-pipeline/src/graph.rs#L88) | | FR-DEV-3b | [`core/dr-pipeline/src/graph.rs:32`](../core/dr-pipeline/src/graph.rs#L32) | | FR-DEV-3c | [`core/dr-pipeline/src/graph.rs:88`](../core/dr-pipeline/src/graph.rs#L88) | | FR-DEV-3e | [`core/dr-decode/src/lib.rs:325`](../core/dr-decode/src/lib.rs#L325), [`core/dr-decode/src/lib.rs:439`](../core/dr-decode/src/lib.rs#L439) | | FR-DEV-4 | [`core/dr-gpu/src/lib.rs:123`](../core/dr-gpu/src/lib.rs#L123) | | FR-DSP-1 | [`ui/dr-ui/src/lib.rs:31`](../ui/dr-ui/src/lib.rs#L31) | | FR-EXP-9 | [`core/dr-decode/src/lib.rs:242`](../core/dr-decode/src/lib.rs#L242) | | FR-NC-1 | [`core/dr-sync-nextcloud/src/auth.rs:132`](../core/dr-sync-nextcloud/src/auth.rs#L132), [`core/dr-sync-nextcloud/src/auth.rs:44`](../core/dr-sync-nextcloud/src/auth.rs#L44) | | FR-NC-12 | [`core/dr-sync-nextcloud/src/lib.rs:32`](../core/dr-sync-nextcloud/src/lib.rs#L32), [`core/dr-sync/src/lib.rs:128`](../core/dr-sync/src/lib.rs#L128), [`core/dr-sync/src/lib.rs:34`](../core/dr-sync/src/lib.rs#L34) | | FR-NC-3 | [`core/dr-decode/src/preview.rs:123`](../core/dr-decode/src/preview.rs#L123), [`core/dr-sync/src/capability.rs:41`](../core/dr-sync/src/capability.rs#L41) | | FR-NC-4 | [`core/dr-sync-nextcloud/src/propfind.rs:100`](../core/dr-sync-nextcloud/src/propfind.rs#L100), [`core/dr-sync-nextcloud/src/propfind.rs:51`](../core/dr-sync-nextcloud/src/propfind.rs#L51), [`core/dr-sync/src/capability.rs:6`](../core/dr-sync/src/capability.rs#L6), [`core/dr-sync/src/lib.rs:128`](../core/dr-sync/src/lib.rs#L128) | | FR-NC-5 | [`core/dr-sync-nextcloud/src/propfind.rs:51`](../core/dr-sync-nextcloud/src/propfind.rs#L51) | | FR-NC-6c | [`core/dr-sync-nextcloud/src/desktop_client.rs:30`](../core/dr-sync-nextcloud/src/desktop_client.rs#L30), [`core/dr-types/src/lib.rs:131`](../core/dr-types/src/lib.rs#L131), [`core/dr-types/src/lib.rs:80`](../core/dr-types/src/lib.rs#L80) | | FR-PLAT-AND-1 | [`core/dr-types/src/lib.rs:23`](../core/dr-types/src/lib.rs#L23) | | FR-RAW-1 | [`core/dr-decode/src/lib.rs:174`](../core/dr-decode/src/lib.rs#L174), [`core/dr-types/src/lib.rs:90`](../core/dr-types/src/lib.rs#L90) | | FR-RAW-3 | [`core/dr-decode/src/lib.rs:242`](../core/dr-decode/src/lib.rs#L242), [`core/dr-decode/src/lib.rs:70`](../core/dr-decode/src/lib.rs#L70) | | FR-RAW-4 | [`core/dr-decode/src/error.rs:1`](../core/dr-decode/src/error.rs#L1) | | FR-RAW-5 | [`core/dr-decode/src/lib.rs:98`](../core/dr-decode/src/lib.rs#L98) | | FR-UI-1 | [`ui/dr-ui/src/lib.rs:39`](../ui/dr-ui/src/lib.rs#L39) | | FR-UI-2 | [`ui/dr-ui/src/lib.rs:39`](../ui/dr-ui/src/lib.rs#L39) | | NFR-OPS-1 | [`tools/traceability/src/lib.rs:266`](../tools/traceability/src/lib.rs#L266) | | NFR-P1 | [`tools/traceability/src/lib.rs:473`](../tools/traceability/src/lib.rs#L473) | | NFR-P13 | [`core/dr-decode/src/preview.rs:96`](../core/dr-decode/src/preview.rs#L96) | | NFR-R7 | [`core/dr-gpu/src/error.rs:1`](../core/dr-gpu/src/error.rs#L1) | | NFR-R8 | [`core/dr-gpu/src/error.rs:1`](../core/dr-gpu/src/error.rs#L1) | | NFR-RES-1 | [`ui/dr-ui/src/lib.rs:31`](../ui/dr-ui/src/lib.rs#L31) | | NFR-SEC-1 | [`core/dr-decode/src/error.rs:1`](../core/dr-decode/src/error.rs#L1) | | R1 | [`tools/traceability/src/lib.rs:489`](../tools/traceability/src/lib.rs#L489), [`tools/traceability/src/lib.rs:493`](../tools/traceability/src/lib.rs#L493) | | R4 | [`core/dr-gpu/src/lib.rs:123`](../core/dr-gpu/src/lib.rs#L123) | ## Not yet tagged 107 of 143 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-11 - FR-CAT-12 - FR-CAT-13 - FR-CAT-14 - FR-CAT-3 - FR-CAT-4 - FR-CAT-6 - FR-CAT-7 - FR-CAT-8 - FR-CULL-3 - FR-CULL-4 - FR-CULL-5 - FR-CULL-6 - FR-CULL-7 - FR-DEV-1 - FR-DEV-2 - FR-DEV-3 - FR-DEV-3d - FR-DEV-3f - FR-DEV-3g - FR-DEV-5 - FR-DEV-6 - FR-DEV-7 - FR-DEV-8 - FR-DSP-2 - FR-DSP-3 - FR-DSP-4 - FR-DSP-5 - FR-DSP-6 - FR-DSP-7 - FR-DSP-8 - FR-EXP-1 - FR-EXP-2 - FR-EXP-3 - FR-EXP-4 - FR-EXP-5 - FR-EXP-6 - FR-EXP-7 - FR-EXP-8 - FR-NC-10 - FR-NC-11 - FR-NC-2 - FR-NC-6 - FR-NC-6a - FR-NC-6b - FR-NC-7 - FR-NC-8 - FR-NC-9 - FR-PLAT-AND-2 - FR-PLAT-AND-3 - FR-PLAT-AND-4 - FR-PLAT-AND-5 - FR-PLAT-AND-6 - FR-PLAT-LIN-1 - FR-PLAT-LIN-2 - FR-PLAT-LIN-3 - FR-RAW-2 - FR-UI-3 - FR-UI-4 - FR-UI-5 - FR-UI-6 - FR-UI-7 - NFR-A11Y-1 - NFR-A11Y-2 - NFR-A11Y-3 - NFR-ARCH-1 - NFR-ARCH-2 - NFR-ARCH-3 - NFR-ARCH-4 - 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-P9 - NFR-PORT-1 - NFR-PORT-2 - NFR-PORT-3 - NFR-R1 - NFR-R2 - NFR-R3 - NFR-R4 - NFR-R5 - NFR-R6 - NFR-RES-2 - NFR-RES-3 - NFR-RES-4 - NFR-SEC-2 - NFR-SEC-3 - NFR-SEC-4 - R2 - R3 - R5 - R6