docs(design): amend TV tracking rules
This commit is contained in:
@@ -129,10 +129,20 @@ happening right now". It is user-maintained, so it drifts and stops meaning
|
||||
anything.
|
||||
|
||||
Here, intent is `Episode.wanted` and `Movie.wanted` only.
|
||||
`Series.auto_track` is not intent — it is a rule that says "when metadata
|
||||
reveals a new season, mark its episodes wanted". An untracked series where you
|
||||
`Series.auto_track` is not intent — it is a rule one level up: when metadata
|
||||
reveals a new season, that season becomes tracked. An untracked series where you
|
||||
manually marked S02 needs no special case: three wanted episodes, nothing else.
|
||||
|
||||
`Season.tracked` is also a rule, not intent. Turning tracking on marks every
|
||||
already-revealed episode in the season wanted, and keeps marking episodes
|
||||
wanted as metadata reveals them. Turning it off withdraws nothing: leaf intent
|
||||
is never removed implicitly, so anything already marked wanted stays wanted
|
||||
until cleared explicitly.
|
||||
|
||||
Both rules skip season 0. Specials are dozens of undated shorts and recaps
|
||||
that indexers do not carry, so `auto_track` never marks season 0 tracked. See
|
||||
§4.2 for how season 0 stays out of derived status.
|
||||
|
||||
### 4.2 Status is derived, never stored as intent
|
||||
|
||||
Recomputed on metadata refresh and on file change:
|
||||
@@ -150,6 +160,11 @@ behind one toggle. A one-off season grab therefore disappears from the default
|
||||
view by itself once satisfied, and a tracked show reappears by itself when a new
|
||||
season is announced. Nothing to remember to flip.
|
||||
|
||||
Season 0 is invisible to all of it: derived status ignores season 0 episodes
|
||||
entirely, so a manually wanted special cannot pin a series at `incomplete` or
|
||||
hold back `ended`. The accepted consequence is that specials are visible and
|
||||
grabbable in the series detail view, but never affect status.
|
||||
|
||||
### 4.3 People are tags, not paths
|
||||
|
||||
`Owner` is a many-to-many tag on titles. It drives UI filtering, the default
|
||||
@@ -339,7 +354,12 @@ do ID-based search; some are text-only.
|
||||
|
||||
RSS is an empty-query Torznab call whose results are matched against the wanted
|
||||
list locally. Because its cost does not scale with the wanted list, every wanted
|
||||
item is matched against every RSS result forever.
|
||||
item is matched against every RSS result forever — with one guard: the RSS lane
|
||||
skips a season pack for a season that already has episodes on disk, the same
|
||||
guard §14 applies to re-grabs. Both lanes agree, so a season does not behave
|
||||
differently depending on which lane sees a release first. A pack for a season
|
||||
with nothing on disk stays eligible. When a single episode cannot be found on
|
||||
its own, the escape hatch is the season release deck, not a lane exception.
|
||||
|
||||
Targeted search backs off `1h → 6h → 1d → 3d`, capped at 7d, reset when the
|
||||
title's metadata changes. It never gives up entirely, it goes quiet.
|
||||
@@ -644,5 +664,7 @@ means that pipeline is already proven.
|
||||
"remuxes are bad" to "remux audio needs a downmix".
|
||||
- **Size band numbers** in §5.5 are placeholders pending that test.
|
||||
- **Season-pack re-grab.** When an airing season completes, the episodes are
|
||||
already present individually. Nothing re-grabs the pack. Whether that is ever
|
||||
wanted is unresolved and deliberately deferred.
|
||||
already present individually. Nothing re-grabs the pack, and per §6.2 the
|
||||
RSS lane obeys the same guard — it skips packs for any season with episodes
|
||||
on disk. Whether a re-grab is ever wanted remains unresolved and deliberately
|
||||
deferred.
|
||||
|
||||
Reference in New Issue
Block a user