docs(downloads): record usenet-only decision and dead torrent cleanup - #1500
Merged
Conversation
…moval Deleted Radarr's dead qBittorrent download client and Prowlarr's four definition-less torrent indexers (BitSearch, TorrentGalaxyClone, Isohunt2, iDope) via their own APIs - live application state, not GitOps, so there is no manifest diff for the deletions themselves. Documents the decision, the verify-before-delete evidence, and the manual API steps taken.
Independent cluster pass after confirming KUBECONFIG reachability: no qbittorrent, Radarr only SABnzbd, four definition-less Prowlarr indexers still gone, health clean, SABnzbd and connection test OK.
|
✅ Automated recommendation: APPROVE Analysis engine: pr-review-local@http://litellm.ai.svc.cluster.local:4000/v1 (openai) RecommendationApprove. This is a documentation-only PR that records a deliberate architectural decision (usenet-only downloads) and the evidence trail for a live API cleanup that has already been performed. It introduces no Kubernetes manifests, no configuration changes, and no runtime risk. Change-by-Change Findings
|
Aviator-Coding
added a commit
that referenced
this pull request
Aug 31, 2026
* fix(sabnzbd): remove dead cross-seed integration cross-seed was retired from the cluster on 2026-08-23 (dead, unreferenced app directory) and the downloads stack committed usenet-only on 2026-08-30 (#1500), but sabnzbd's HelmRelease, ExternalSecret, and xseed.sh post-processing script were never cleaned up. Confirmed the integration was already fully inert before removing it: sabnzbd.ini's script_dir is unset and no category names xseed.sh, so it has never been invoked - zero matches for xseed/cross-seed across 5+ months of rotated sabnzbd logs, and every history entry shows script: None. The ExternalSecret was still syncing fine (Ready=True), just pulling a now-pointless 1Password credential. Removes the XSEED_HOST/XSEED_PORT env vars, the scripts persistence mount and its configMapGenerator/kustomizeconfig plumbing, the xseed.sh script itself, and the ExternalSecret's XSEED_APIKEY entry. Verified live pre-merge (suspend/patch/resume) that sabnzbd still downloads and post-processes cleanly, and that Sonarr imports the result, with no XSEED env var or scripts mount present. * no-mistakes(document): Drop stale sabnzbd scripts mount note
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Intent
Commit to usenet-only downloads: remove the dead torrent path in the downloads stack per the captain's decision. Radarr's qBittorrent download client pointed at qbittorrent.downloads.svc.cluster.local, which has no pod/Service in the cluster (qbittorrent app directory was already removed from GitOps earlier); the client was disabled and every torrent indexer in Radarr was disabled, so it was harmless but implied a torrent path that doesn't exist. Deleted that dead qBittorrent download client (Radarr id 1) and Prowlarr's four definition-less torrent indexers (BitSearch id 1, TorrentGalaxyClone id 7, Isohunt2 id 81, iDope id 80), which Prowlarr's own IndexerNoDefinitionCheck health check flagged as broken and unusable. Before deleting anything, verified via kubectl and the Radarr/Prowlarr REST APIs that the client was truly disabled/dead and the indexers were truly definition-less and unused - not live or referenced anywhere in Git. After deleting, verified Radarr and Prowlarr health checks are clean, Radarr's SABnzbd download-client connection test passes, and SABnzbd itself is responsive, confirming the usenet path still works. These deletions are live API calls against Radarr's and Prowlarr's own databases (application runtime state), NOT GitOps - there was no committed manifest referencing qbittorrent or these indexers, so there is no Kubernetes YAML diff for the deletions themselves. The committed change only documents this: docs/media-stack.md now states explicitly that the downloads stack is usenet-only by deliberate decision, and a new decision record data/decisions-2026-08-30/downloads-usenet-only.md records the full evidence trail, the exact manual API steps taken (with IDs, endpoints, and auth secrets used), verification results, and reversibility notes (torrent support can be re-added later; this only removes state that falsely implied it already worked). Out of scope and untouched: the downloads stack's storage/shared-filesystem layout, sabnzbd configuration, other arr-app settings, and backups. The remaining disabled-but-valid torrent indexers in Prowlarr (e.g. 1337x, The Pirate Bay, Nyaa.si) were deliberately left alone since they are not definition-less, just unused.
What Changed
downloadsstack is deliberately usenet-only indocs/media-stack.md, including that leftover Radarr/Prowlarr torrent state was removed via live app APIs (not GitOps) and that torrent support can still be re-added later.data/decisions-2026-08-30/downloads-usenet-only.mdwith the full evidence trail: pre-delete verification, the Radarr qBittorrent client and definition-less Prowlarr indexer deletions (IDs/endpoints), post-delete health checks, SABnzbd path verification, out-of-scope items, and reversibility notes.docs/media-stack.mdwith the same usenet-only decision and decision-record link.Risk Assessment
✅ Low: Documentation-only change that records an already-executed live API cleanup; no Kubernetes or application config is modified in Git.
Testing
Re-ran all seven live checks against the real cluster via the provided KUBECONFIG; every check matched the usenet-only decision with no contradictions, evidence was written under the pipeline evidence dir, and a second dated re-verification section was committed on the branch.
Evidence: Full live re-verification transcript (2026-08-30T23:59:39Z)
Evidence: Second-pass summary (all seven checks)
1. NO_QBIT_MATCH 2. Radarr clients: only SABnzbd id=2 enable=true usenet 3. Radarr health: only UpdateCheck v6.4.2.10590 4. Prowlarr: BitSearch/TorrentGalaxyClone/Isohunt2/iDope ABSENT (ids 1/7/81/80 ABSENT) 5. Prowlarr health: IndexerNoDefinitionCheck gone; only UpdateCheck v2.6.2.5562 6. SABnzbd version 5.1.0, queue Idle 7. Radarr→SABnzbd test HTTP 200 {} Result: NO CONTRADICTIONSEvidence: Prowlarr indexer list (redacted names/ids/enable/protocol)
Evidence: Updated decision record with second live re-verification section
Pipeline
Updates from git push no-mistakes
✅ **intent** - passed
✅ No issues found.
✅ **Rebase** - passed
✅ No issues found.
✅ **Review** - passed
✅ No issues found.
🔧 **Test** - 1 issue found → auto-fixed ✅
git diff --name-only 4f7fe33ed080bacf055b30e63db366fec6c07972..HEAD(docs-only: decision record + media-stack)Semantic parse ofkubernetes/apps/main/downloads/kustomization.yamlresources (sabnzbd present, qbittorrent/cross-seed absent)Path checks:kubernetes/apps/base/downloads/qbittorrentandkubernetes/apps/main/downloads/qbittorrent.yamlabsent; sabnzbd presentrgoverkubernetes/for qbittorrent/BitSearch/TorrentGalaxyClone/Isohunt2/iDope (only historical volsync Readme prose)Decision-record contract check: required sections, DELETE endpoints/IDs, secrets, post-delete verification, out-of-scope (1337x/TPB/Nyaa), reversibilitydocs/media-stack.mdoverview contains deliberate usenet-only decision text and link to decision recordkubectl cluster-info/ API reachability (unreachable; no kubeconfig)🔧 Fix: Document live usenet-only re-verification evidence
✅ Re-checked - no issues remain.
export KUBECONFIG=/Users/coder/firstmate/projects/home-ops/kubeconfigkubectl -n downloads get pods,svc | grep -i qbit→ NO_QBIT_MATCHkubectl -n downloads get pods/get svc→ sabnzbd present, no qbittorrentport-forwardsvc/radarr 17878:7878;GET /api/v3/downloadclient→ only SABnzbd id 2 enable trueGET /api/v3/health(Radarr) → only routine UpdateCheck warningport-forwardsvc/prowlarr 19696:9696;GET /api/v1/indexer→ BitSearch/TorrentGalaxyClone/Isohunt2/iDope and ids 1/7/81/80 absentGET /api/v1/health(Prowlarr) → IndexerNoDefinitionCheck gone; only UpdateCheckport-forwardsvc/sabnzbd 18080:8080;GET /api?mode=version→ 5.1.0;mode=queue→ IdlePOST /api/v3/downloadclient/test?forceTest=true(Radarr client id 2) → HTTP 200{}appended and committed second re-verification section indata/decisions-2026-08-30/downloads-usenet-only.md(c7b5f282)✅ **Document** - passed
✅ No issues found.
✅ **Lint** - passed
✅ No issues found.
✅ **Push** - passed
✅ No issues found.