fix(boundary): detect item-type arrays anywhere in src/ (DR-094)
check:boundary passed on the very leak it was written for. The pattern was anchored to `includeItemTypes:` at the query site, so searchScope.ts assigning the same array to a named const and dereferencing it one indirection away was invisible — through every green CI run. The check now matches an array literal naming two or more Jellyfin item types anywhere in src/, catching a const, a Record value, a function return, and an inline query alike. Deliberate limits kept: two adjacent literals required (single-type presentation stays legal), string literals required (item.type === "Audio" is display logic), explicit type list (so ["High","Low"] produces no noise). Verified all five cases: reintroducing the original SCOPE_ITEM_TYPES fails; a new const ["Movie","Series"] fails; the same array in a .test.ts passes; itemType: "Movie" / item.type === / ["High","Low"] pass; a 5th allowlist entry fails on the new cap. Allowlist 1→3 entries, capped at 4 so the next exception forces a conversation rather than a one-line append: - GenericMediaListPage: grid styling over a self-declared itemType — presentation, changes only with a UI redesign. - DownloadedBrowse: borderline, leans domain (the container set grows when Jellyfin adds a container type). Allowlisted with a TODO for a backend MediaItem.isContainer flag. The header now names what the check still cannot see — run-time-built sets, types split across variables, switch/|| taxonomy — and CLAUDE.md states that a green check:boundary is not proof. That matters given this check passed on its own founding violation for months. Also: both gates wired into test-all.sh, which called `bun run test` without --run and would have hung in watch mode. Corrected the Dockerfile comment describing the Windows toolchain as mingw/GNU — it is MSVC via cargo-xwin (GNU cannot bundle NSIS from Linux).
This commit is contained in:
+22
-5
@@ -1,15 +1,15 @@
|
||||
# Code Traceability Matrix
|
||||
|
||||
**Generated:** 7/28/2026, 10:39:16 PM
|
||||
**Generated:** 7/28/2026, 11:52:49 PM
|
||||
|
||||
## Summary
|
||||
|
||||
- **Total Files Scanned:** 299
|
||||
- **Total TRACES Found:** 318
|
||||
- **Total Files Scanned:** 302
|
||||
- **Total TRACES Found:** 322
|
||||
- **Requirements Covered:**
|
||||
- User Requirements (UR): 58
|
||||
- Integration Requirements (IR): 15
|
||||
- Development Requirements (DR): 84
|
||||
- Development Requirements (DR): 85
|
||||
- Jellyfin API Requirements (JA): 24
|
||||
|
||||
## Requirements by Type
|
||||
@@ -26,7 +26,7 @@ IR-003, IR-004, IR-009, IR-010, IR-011, IR-012, IR-013, IR-014, IR-015, IR-020,
|
||||
|
||||
### Development Requirements (DR)
|
||||
```
|
||||
DR-001, DR-002, DR-003, DR-004, DR-005, DR-006, DR-007, DR-009, DR-010, DR-011, DR-012, DR-013, DR-014, DR-015, DR-016, DR-017, DR-018, DR-020, DR-021, DR-022, DR-023, DR-024, DR-025, DR-026, DR-027, DR-028, DR-029, DR-030, DR-032, DR-033, DR-034, DR-035, DR-036, DR-037, DR-038, DR-039, DR-040, DR-041, DR-043, DR-044, DR-045, DR-047, DR-048, DR-049, DR-050, DR-051, DR-052, DR-053, DR-054, DR-055, DR-056, DR-057, DR-058, DR-059, DR-060, DR-061, DR-062, DR-063, DR-064, DR-065, DR-066, DR-067, DR-068, DR-069, DR-070, DR-074, DR-075, DR-076, DR-077, DR-078, DR-079, DR-080, DR-081, DR-082, DR-083, DR-084, DR-085, DR-086, DR-087, DR-088, DR-089, DR-090, DR-091, DR-092
|
||||
DR-001, DR-002, DR-003, DR-004, DR-005, DR-006, DR-007, DR-009, DR-010, DR-011, DR-012, DR-013, DR-014, DR-015, DR-016, DR-017, DR-018, DR-020, DR-021, DR-022, DR-023, DR-024, DR-025, DR-026, DR-027, DR-028, DR-029, DR-030, DR-032, DR-033, DR-034, DR-035, DR-036, DR-037, DR-038, DR-039, DR-040, DR-041, DR-043, DR-044, DR-045, DR-047, DR-048, DR-049, DR-050, DR-051, DR-052, DR-053, DR-054, DR-055, DR-056, DR-057, DR-058, DR-059, DR-060, DR-061, DR-062, DR-063, DR-064, DR-065, DR-066, DR-067, DR-068, DR-069, DR-070, DR-074, DR-075, DR-076, DR-077, DR-078, DR-079, DR-080, DR-081, DR-082, DR-083, DR-084, DR-085, DR-086, DR-087, DR-088, DR-089, DR-090, DR-091, DR-092, DR-093
|
||||
```
|
||||
|
||||
### Jellyfin API Requirements (JA)
|
||||
@@ -1881,6 +1881,23 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016,
|
||||
- **Line:** 10
|
||||
- **Context:** `Unknown`
|
||||
|
||||
### DR-093
|
||||
|
||||
**Locations:** 4 file(s)
|
||||
|
||||
- **File:** [`scripts/extract-traces.ts`](scripts/extract-traces.ts#L216)
|
||||
- **Line:** 216
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`scripts/extract-traces.ts`](scripts/extract-traces.ts#L246)
|
||||
- **Line:** 246
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`scripts/extract-traces.ts`](scripts/extract-traces.ts#L278)
|
||||
- **Line:** 278
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`scripts/extract-traces.ts`](scripts/extract-traces.ts#L387)
|
||||
- **Line:** 387
|
||||
- **Context:** `function generateJson(data: TracesData): string {`
|
||||
|
||||
### JA-001
|
||||
|
||||
**Locations:** 1 file(s)
|
||||
|
||||
Reference in New Issue
Block a user