Summary
This PR builds on #648 and makes quality matching treat disabled profile rungs as unavailable for production decisions. Quality detection can still understand a quality label conceptually, but disabled qualities no longer satisfy cutoff, stop searches, or trigger upgrades.
Changes
Added
- Added domain regressions for disabled cutoff rungs, disabled matched rungs, disabled stored labels, and allowed candidates beating disabled existing labels.
- Added an evaluator-level regression for
AudiobookQualityCutoffEvaluatorwhen the only matchingAAC 256kbpsrung is disabled.
Changed
- Updated
QualityMatcherto match, compare, and resolve cutoffs using allowed quality rungs only. - Updated
QualityProfileBuilder.WithQualityto support test setup for disabled qualities.
Removed
- Removed the public
ProfileContainsHinthelper because it was test-only surface with no production caller.
Testing
dotnet test tests/Listenarr.Tests.csproj -c Release --filter "FullyQualifiedName~QualityMatcher|FullyQualifiedName~AudiobookStatusEvaluator|FullyQualifiedName~AudiobookQualityCutoffEvaluator"npm run test:unit -- --run src/__tests__/audiobookStatus.spec.tsfromfe/- Push hook: frontend unit suite, 74 passed / 1 skipped, 380 tests passed
git diff --check origin/canary...HEAD
Notes
#648 has been merged into canary; this branch has been rebased on top of the current canary tip so the PR diff now contains only the disabled-rung follow-up.
Automated Canary build