* fix(download): back off resources re-submitted with no new files
A subscription that re-selects an already-held package gets accepted by the
downloader again every search round, so the same resource keeps being
submitted while nothing new can be delivered. Record a resource-scoped
backoff when a reused task contributes no file rows: it suppresses only that
one resource, so candidates keep trying other torrents for the same media and
the subscription is neither completed nor failed. The cooldown ledger is no
longer failure-only, so the skip log reports the recorded reason instead of
claiming the add failed.
* fix(download): keep duplicate backoff stable across selection
---------
Co-authored-by: jianlin6 <jianlin6@jianlin6-MacBookPro.local>
Co-authored-by: jxxghp <jxxghp@gmail.com>
Keep only install, usage, development-workflow and architecture-boundary
documents; remove the one-off refactor plans, audits and ledgers that had
already served their purpose.
- delete docs/refactor plus the agent API surface audit generator and its
drift-only tests; the fixed route registry remains the source of truth
- delete internal implementation notes (agent, music, notification, transfer,
subscription activity, docker startup, V3t runtime governance)
- delete site adapter capture/release shims and the ADR records; external
links point at MoviePilot-Site-Collector instead
- keep docs/architecture-overview.md and gate its dependency and event
figures against the generated fixtures
- drop doc-only assertions from the architecture baseline test and retarget
remaining references at code and rule documents
Use the music media type as the downloader category only when music has no library classification. Preserve configured categories and qBittorrent automatic-management settings, with SDK-boundary regression coverage.
Refs #7028
Reopen closed CardKit streams once and preserve monotonic sequences across recovery and finalization. Back off failed updates per card while retaining unsent Agent text.
Refs #6984
Recognize explicit JSON rate limits before torrent parsing and short retries. Preserve per-call quota errors through download preparation so subscription cooldowns cover the tracker window.
Refs #6950