c2ca25895ff890a761584ade7fe9d92c86755493
Closes each unsatisfied wanted language per DESIGN.md §8/§15: embedded tracks satisfy for free (recording them as #189 left to this issue), then provider search + ranked fetch + alass sync + sidecar write, then immediate machine translation — extracting a text-format embedded track when that is the only source — and otherwise the reason lands on the attempt row for the missing-subtitles queue. Closes run as detached tasks because alass and translation outlive the 25 s reconcile action budget; every outcome is recorded in domain rows first, so a crash converges on the next tick. Failures back off on the same §6.2 curve as movie searches; a rate-limited provider is the 'capped' queue state; unreachable providers and translators fold into the existing §9.5 broken notification, edge-triggered. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
arr
One service that replaces Radarr and Sonarr, and later Bazarr, for a single household.
Five .NET services idle at 600-900 MB to run a loop with four steps in it: decide what you want, find it, fetch it, put it where Jellyfin can read it. Each has a configuration surface an order of magnitude larger than the subset anyone uses, and none of them share a model.
This is that loop, once, in Rust.
- Prowlarr stays — it owns tracker auth, Cloudflare bypass and the indexer definitions, and replacing it buys nothing.
- Transmission stays.
- Jellyseerr stays, talking to a thin Radarr-compatible shim.
Status
Design complete, implementation not started. See DESIGN.md for the contract
and the issue tracker for the work.
Documents
DESIGN.md— the contract. Domain model, policy engine, sourcing, import, crate layout, build order.CLAUDE.md— repository conventions, label taxonomy, and how an autonomous driver session should sequence the work.
Languages
Rust
83.4%
TypeScript
11.5%
CSS
1.9%
Python
1.4%
HTML
1%
Other
0.8%