2026-07-13 Anime Remuxes Were a Live-Action Size Floor

What I set out to do

dust ~/media showed 1.2 TB with the disk at 91% full and only 183 GB free. Wanted to know what was worth cleaning up.

What I actually did

The library breaks down as 651 GB of WEB (2.24 GB/file), 153 GB of Bluray (1.66 GB/file), and 419 GB of Bluray remux across just 62 files (6.76 GB/file) — two shows. My Hero Academia S05+S06 at 320 GB, and I Parry Everything S01 at 77 GB. ffprobe put MHA S06E01 at 35.4 Mbps for a 24-minute animated episode.

I was wrong about the cause three times before landing it, and each wrong answer was plausible enough to have shipped:

  1. “Config accident.” No. Git history shows the [Anime] Remux-1080p profile came in wholesale from TRaSH’s sonarr-v4-quality-profile-anime include template, then got mechanically migrated to a trash_id in 7fe241d when upstream emptied includes.json. Deliberately adopted, but the disk cost was never anyone’s decision. Nothing in the commits, AGENTS.md, or the vault ever weighed it.
  2. “Swap to the [Anime] 1080p profile.” That profile doesn’t exist. TRaSH publishes exactly one anime profile.
  3. “The profile prefers remux.” It doesn’t. TRaSH groups Bluray-1080p and Bluray-1080p Remux into one quality group, so Sonarr treats them as equal quality, and TRaSH scores Anime BD Tiers (1400-700) above Remux Tiers (975/950). Remux isn’t rewarded for being remux.

The actual root cause: anime and live-action share one Sonarr instance, so anime inherited quality_definition: series, whose Bluray-1080p floor is 50.4 MB/min. Animation compresses far better than live action, so every well-made anime BD encode (20-40 MB/min) was auto-rejected as a suspected fake release, and remuxes became nearly the only legal releases. TRaSH’s separate anime definition sets that floor to 5 MB/min, explaining it as: “anime, animated series, and cartoons are set up wide open.”

Sonarr’s own release API, queried against the live profile, is what finally proved it. [Amen] (18 GB, 30 MB/min) and [EMBER] (12 GB, 20 MB/min) weren’t losing on score, they were being rejected on size, while [fig]’s 177 GB remux (295 MB/min) sailed through. That endpoint (/api/v3/release?seriesId=&seasonNumber=) returns each release’s computed custom-format score and its rejection reasons — far better than guessing from config, and the single most useful tool of the session.

Fixed with two changes, both required: switch to quality_definition: anime, and remove the remux quality from the anime profile. Relaxing the floor alone is a no-op, because remux still outscores every encode on the BD tiers and the *arrs only ever upgrade to a higher score — they would never step down. Applied to Sonarr and mirrored to Radarr. Shipped on both the live main (Jinja .j2) and the unmerged feature/iac-declarative-config branch (nix/lib/generate.nix), since the Nix seam isn’t deployed yet.

Outcome

293 GB reclaimed. Disk 91% 75% (183 GB free 476 GB). Library 1.2 TB 891 GB. Zero remux files left.

BeforeAfterReplacement
MHA S05156 GB40 GBiAHD Bluray-1080p x265, score 1300 (auto)
MHA S06164 GB43 GBiAHD P1+P2, force-imported by hand
I Parry S0172 GB14 GBYURASUKA Bluray-1080p x265, score 1400 (auto)

The 419 GB / 62-file remux bucket is gone entirely. The library is now 651 GB WEB + 255 GB Bluray + 49 GB other.

S05 and I Parry re-grabbed automatically as clean single season packs, dual audio preserved, no orphans. The failure mode I was watching for — Sonarr’s per-episode fallback search stitching a season together from a dozen different groups — didn’t happen, though I Parry’s search had to grind through it while eating TokyoTosho 429s for the better part of an hour.

S06 needed the manual import, and it went far better than the One Piece precedent suggested. The gotcha I braced for did not exist: only the folder is named S06.P1, while the files inside are cleanly named My.Hero.Academia.S06E06...mkv. That is precisely why Sonarr rejected the release (it parses the release title) while still mapping the files perfectly once pointed at the folder. /api/v3/manualimport?folder=... returned 25 distinct episodes with zero rejections and needed no hand-written regex at all. The lesson generalizes: when Sonarr says “unable to identify correct episode(s)”, check whether the files are parseable before assuming the pack isn’t. Imported with importMode: copy, verified 25/25 distinct file sizes in the library, then deleted the torrents with deleteFiles=true to reclaim the 51 GB from /downloads.

Prowlarr’s magnetUrl-is-a-proxy-URL trap from the One Piece session is still live and still bites; used guid for the real magnet and both adds went through with pending_count: 0.

Left the four bundled specials (S00E08/09/13/14, ~6.5 GB) uningested. They are new content, not replacements, and silently growing the library during a cleanup would have been the wrong default.

What was striking

Every layer behaved correctly. The profile, the tiers, the scoring, and the upgrade logic all did exactly what they were designed to do. The inputs were wrong, one setting deep, and the symptom surfaced 400 GB away from the cause. Nothing anywhere in the config contains the word “remux.”

The profile is now named [Anime] Remux-1080p while explicitly forbidding remux. That looks like a bug and is actually load-bearing: the Anime Dual Audio +500 score, scripts/constants.sh, and setup-seerr.sh all bind the profile by name. Renaming it would silently break Seerr’s anime routing. Documented in AGENTS.md so nobody “fixes” it.

Fixing the floor moved S06’s blocker rather than clearing it, which was worth knowing before assuming the config change alone had done the job: T3KASH (17 GB) started clearing the size check but scored 0, below minFormatScore: 100, as an unrecognized release group. The config change made encodes eligible; it could not conjure a well-named pack into existence.

The general lesson: when a system has a guard rail calibrated for one content type and you feed it another, the guard rail doesn’t fail loudly — it quietly narrows your options until only the pathological choice is left. TRaSH’s answer to this is a second Sonarr instance for anime, which is also what would let the Language: Not Original carve-out go away.

Next

  1. Consider the second Sonarr instance properly, now that both *arrs have traded their live-action fake-release size floors away to serve anime. That is the real fix; today’s is the carve-out.
  2. Neither branch is pushed. Live-repo fix sits on fix/anime-quality-definition; the same change is in the IaC branch’s nix/lib/generate.nix.
  3. The four MHA specials are still unowned if they ever seem worth 6.5 GB.