issue/226-attention-threshold
The season branch of the attention queue listed a season on one failed grab of any age, so `GET /api/queues/attention` returned Rick and Morty with every season it has and buried the one that needed attention. Two changes, both stated in DESIGN.md §5.7: - The season branch now enforces the same bar the episode branch does: two grabs that hard-failed on *different* releases. - A failed grab counts toward the queue for 30 days (`arr_db::ATTENTION_WINDOW`). Nothing clears a `grabs` row, so without a window the queue only grows and can never be emptied. #181 gave the pack guard a backoff curve for the same reason; this is the queue's version of §6.2's "it never gives up entirely, it goes quiet". A season the operator dealt with stops failing and drops out; one still breaking keeps failing (the pack guard retries at worst weekly) and stays. The window applies to all three hard-fail lanes — movie, episode and season — because DESIGN.md states one rule for the queue, and to the daemon's needs-a-decision notifier as well as the API, since both read the same queue and a season-per-failure notification is the same noise on a different channel. No schema change: `grabs.grabbed_at` already carries the timestamp. Gate: `just ci` green (486 tests).
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%