449750e426827b949c7676c411f257aecef19d0c
Issue #199, DESIGN.md §15 and §9.1. Lists what exists per media file and per title, runs the enabled providers for one language and returns every candidate with §9.3's verdict vocabulary — including the rejected ones naming the rule that killed each — then grabs, translates and deletes. Inline rather than 202-and-poll like the release deck: a subtitle search is one or two HTTP calls and nothing persists its candidates, so there is nothing to come back for. The cost is that a grab repeats the `forced` and `sdh` facts the search reported, since the server does not remember them. Every write ends by marking the language satisfied, whether or not it is in the wanted set. That is §15's "manual actions bypass the wanted-set logic": the operator asking for Spanish gets Spanish, and the loop does not then read it as a gap. A forced track is the exception §15 names — it covers signs only — so it is recorded and satisfies nothing. `alass` (#194) does not run yet: a fetched sidecar is recorded unsynced. Co-Authored-By: Claude Opus 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%