docs: document radarr backlog missing-movie search procedure - #1494
Merged
Conversation
Records the searchOnAdd:false gap that lets movies sit monitored-and-missing forever, and the mandatory size-check-before-search procedure used for the 2026-08-29 347-movie backlog.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Intent
Bring the merged Radarr quality-profile fix (PR #1491) into effect and then fill the movie backlog it unblocked, but only after sizing the backlog against free disk and stopping if it would not fit. Sequence required: (1) trigger the recyclarr CronJob manually rather than waiting for its daily schedule, then confirm directly against Radarr's live API - not just the recyclarr config - that the merged config actually landed: both SQP-1 profiles ([SQP] SQP-1 2160p and 1080p) at the guide's minFormatScore 1000 with no override, trash_id-based custom-format scores in effect, and the retired/orphaned quality profiles (ids 7 and 41) gone. If that verification had failed, the task was to stop and report rather than search against a still-rejecting profile - it passed. (2) Before triggering any search, get the real count of monitored-and-missing movies per quality profile from Radarr's API (was 347: profile 8=38, profile 42=199, profile 1=110), and build a defensible size estimate using real interactive-search release sizes and hit rates sampled per profile (not a flat guessed average) compared against the NAS's live free space (7.2TB free of 24TB). The explicit gate: if the estimate exceeded roughly half of free space, the correct action was to stop and escalate a needs-decision with options (staged subset, a size cap, or the full run anyway) rather than run the full search - the captain approved a backlog search, not filling the NAS. The measured/estimated total (~0.8TB central estimate, ~2.2TB worst case) was well under half of 7.2TB free, so the search proceeded. (3) Trigger the missing-movie search in a way that respects indexer rate limits - the population is large enough (347 movies) that a single burst risked tripping the usenet indexers behind Prowlarr, so it was deliberately staged in small batches with pacing between batches rather than fired as one bulk command, and it was run as a background/staged operation rather than blocking synchronously. Confirm the pipeline is actually working end to end (grabbed -> handed to SABnzbd -> downloading -> imported), and report real measured numbers: how many searched, how many grabbed, how many imported, and - as an expected, useful outcome rather than a failure - what the movies that still found nothing have in common (profile 42's misses are dominated by documentary/TV-movie titles with no HD-Bluray-tier release group; profile 1's misses are dominated by foreign-language-audio mismatches and a few not-yet-released titles). (4) Record in the repo's docs that this backlog-search operation is a deliberate, repeatable operation - not a one-off - including when to use it and the mandatory size-check procedure that must precede it, since nothing else in the stack currently protects against filling the NAS this way. Separately, propose (do not enable) flipping searchOnAdd: true on Radarr's import lists as a structural fix that would prevent a similar backlog from silently accumulating again - explicitly call out its tradeoff (an immediate indexer hit on every future list addition) so the captain can decide, rather than changing that live behavior unilaterally. Hard constraints throughout: do not change any quality profile, custom-format score, or threshold (that work is separately merged and settled - report if something there looks wrong rather than adjusting it); do not delete or move any media files.
What Changed
docs/media-stack.md, including when to run it, per-profile sizing against free disk, sampled release hit rates/sizes, the half-free-space gate, and paced batchMoviesSearchto avoid indexer rate limits.searchOnAdd: true, including its indexer-hit tradeoff.AGENTS.mdthat Radarr does not auto-search monitored-but-missing movies and point to the sizing/search procedure.Risk Assessment
✅ Low: Docs-only change that records the required backlog-search procedure, disk sizing gate, staged MoviesSearch pattern, and an unapplied searchOnAdd proposal without touching quality profiles, media, or live Radarr behavior.
Testing
Exercised the live cluster end-to-end rather than repo unit tests: Radarr profiles, missing-movie counts, 2026-08-29 grab/import history, SABnzbd handoff, NAS free space, and import-list searchOnAdd all match the intent, and the docs checklist for the repeatable sized backlog-search procedure plus the unapplied searchOnAdd proposal passes with no product findings.
Evidence: Operator-facing live verification summary
Profiles: SQP-1 2160p/1080p minFormatScore=1000; orphans 7/41 gone. NAS free 7.54 TB (half 3.77 TB). Missing 347→317. 2026-08-29: 48 grabs (41 unique, paced), 30 imports via SABnzbd (314 GB), 10 fails. p42 misses Documentary/TV-movie dominated; p1 non-English + unreleased. searchOnAdd still false. Docs checklist PASS.Evidence: Full e2e verification report
Evidence: Machine-readable verification summary JSON
Evidence: 2026-08-29 Radarr history slice (grabs/imports)
/var/folders/yr/h20mxtv56yj1c1pt9tr1_kbc0000gn/T/no-mistakes-evidence/01M174T53R8XX1V1KD5M6FKCWQ/api/qualityprofile.json) - Evidence: SABnzbd history API dump (local file:/var/folders/yr/h20mxtv56yj1c1pt9tr1_kbc0000gn/T/no-mistakes-evidence/01M174T53R8XX1V1KD5M6FKCWQ/api/sab-history.json)Evidence: Realized imported file sizes
imported_files=30 total_GB=313.98 avg_GB=10.47Pipeline
Updates from git push no-mistakes
✅ **intent** - passed
✅ No issues found.
✅ **Rebase** - passed
✅ No issues found.
docs/media-stack.md:386- The parenthetical equates documentary/TV-movie miss patterns with "the same defect that caused the original outage, just below the size floor" is inaccurate. The 2026-08-29 outage was orphaned name-matched CF scores plus a min_format_score: 2000 override (a score floor), not a size floor; documentary misses are a different failure mode (no HD-Bluray-tier release group that can clear SQP CF scoring). Drop or rephrase the parenthetical so operators do not re-diagnose min_format_score when investigating expected no-hit titles.✅ **Test** - passed
✅ No issues found.
kubectllive Radarr API:/api/v3/qualityprofile(SQP minFormatScore 1000; orphans 7/41 absent; trash-tier CF scores present)kubectllive Radarr API:/api/v3/moviemonitored+missing counts (317 now vs intent baseline 347; per-profile deltas)kubectllive Radarr API:/api/v3/historyfor 2026-08-29 (48 grabs/41 unique, 30 imports, 10 fails; paced 15:05–16:42Z; downloadClient=SABnzbd; releaseSource=Search; CF scores ≥1000)kubectl execdf -B1 /data/nas-mediafree-space gate (7.54 TB free of 25.72 TB; half=3.77 TB > 0.8/2.2 TB estimates)kubectllive SABnzbd/api?mode=historycompleted handoffs for backlog titleskubectllive Radarr/api/v3/importlist(all 11 listssearchOnAdd=false)Docs acceptance checklist ondocs/media-stack.md#backlog-missing-movie-searchandAGENTS.mdpointer/constraintsgit diff --name-onlybase..target (docs-only:AGENTS.md,docs/media-stack.md)✅ **Document** - passed
✅ No issues found.
✅ **Lint** - passed
✅ No issues found.
✅ **Push** - passed
✅ No issues found.