USE_CUTOFF selects the inverse of what's documented on Radarr, Whisparr, and Readarr. README:292 describes it as "Select for items that do not meet their profile cutoff", but on these three the filter skips exactly the upgradable items and searches the ones already at cutoff. Sonarr and Lidarr are correct, which is what makes the other three unambiguous.
Radarr (RadarrUpdater.java:123) and Whisparr (WhisparrUpdater.java:123), identical:
if (useCutoff && (movieFile == null || movieFile.qualityCutoffNotMet())) {
// ...skips
logger.info("Skipping movie {} (\"{}\") because it meets the quality cutoff", ...);
The skip fires when qualityCutoffNotMet() is true, and the log line reports the opposite of the condition that fired — so the logs actively mislead anyone debugging it. The movieFile == null clause compounds it: with MISSING_STATUS=missing, :102 skips everything with a file and :123 skips everything left, so the selection is empty.
Compare Sonarr (SonarrUpdater.java:145-163), which computes cutoffMet and skips on that.
Readarr (ReadarrUpdater.java:158-165) is inverted by a stray negation instead — if (!b.qualityCutoffNotMet()).
Fix on Radarr/Whisparr: skip only when the movie has a file and its cutoff is met — useCutoff && movieFile != null && !movieFile.qualityCutoffNotMet() — which also removes the empty-set interaction.
Read from source; not run.
Found with Claude Code.
USE_CUTOFFselects the inverse of what's documented on Radarr, Whisparr, and Readarr. README:292 describes it as "Select for items that do not meet their profile cutoff", but on these three the filter skips exactly the upgradable items and searches the ones already at cutoff. Sonarr and Lidarr are correct, which is what makes the other three unambiguous.Radarr (
RadarrUpdater.java:123) and Whisparr (WhisparrUpdater.java:123), identical:The skip fires when
qualityCutoffNotMet()is true, and the log line reports the opposite of the condition that fired — so the logs actively mislead anyone debugging it. ThemovieFile == nullclause compounds it: withMISSING_STATUS=missing,:102skips everything with a file and:123skips everything left, so the selection is empty.Compare Sonarr (
SonarrUpdater.java:145-163), which computescutoffMetand skips on that.Readarr (
ReadarrUpdater.java:158-165) is inverted by a stray negation instead —if (!b.qualityCutoffNotMet()).Fix on Radarr/Whisparr: skip only when the movie has a file and its cutoff is met —
useCutoff && movieFile != null && !movieFile.qualityCutoffNotMet()— which also removes the empty-set interaction.Read from source; not run.
Found with Claude Code.