Skip to content

Fix SABnzbd recovery and MAM VIP filtering (NOR-90, NOR-96) - #74

Merged
logabell merged 3 commits into
mainfrom
logan/nor-90-sabnzbd-failed-downloads-do-not-enter-automatic-recovery
Oct 15, 2026
Merged

logabell merged 3 commits into
mainfrom
logan/nor-90-sabnzbd-failed-downloads-do-not-enter-automatic-recovery

Conversation

@logabell

@logabell logabell commented Oct 15, 2026 •

Copy link
Copy Markdown
Owner

SABnzbd history reports Failed/Aborted, but recovery recognized only lowercase raw status names and stopped polling before the error grace period expired. Recovery now consumes the adapter’s normalized failure flag, keeps grace polling active, and frees the stopped transfer’s capacity slot. Verified association, configured grace/disable policies, and deduplicated blocklist/replacement handling remain in force.

Direct MAM search always requested all releases. Administrators can now enable Exclude VIP releases in MAM settings. This sends the documented nVIP filter, skips known VIP candidates before inspection, and rechecks fresh detail before fetching metadata or requesting a wedge. Exhausted selections explain the exclusion; a VIP result without a download reference explains the access check. The switch defaults off, preserves VIP/Elite access without expiry metadata, and does not infer entitlement or enable spending. It applies only to direct MAM; Prowlarr configuration remains separate. Save the setting and refresh existing searches.

Current main already inspects every candidate once, so this does not increase an inspection budget. NOR-69/NOR-71 remain outside this PR pending their existing installation-specific search evidence.

Validation, run serially through python3 scripts/check.py:

  • 161 unit/adapter checks: recovery clocks and association, MAM parsing/authorization, explicit wedge policy, fresh VIP/unknown flags, SAB status/transport boundaries.
  • 133 API/worker checks: failed SAB history through grace and one recovery search; repeated delivery; blocklists, replacement attempts, source sessions/artifacts and book searches; four excluded VIP candidates followed by an eligible release; useful all-excluded outcome.
  • 7 browser journeys after the production TypeScript/Vite build: MAM setting save/reload with spending still off, connection controls and phone layout, quick-add/source flows. Desktop and phone screenshots inspected.
  • Ruff lint/format and git diff --check passed.

Before-fix regressions reproduced missing SAB grace polling, outbound searchType: all, and inspection of an excluded VIP candidate. Validation uses local HTTP fixtures and a disposable PostgreSQL database, not a live MAM account or SABnzbd installation. No live downloads or account purchases were made. Existing settings storage is reused; no migration is required.

Fixes NOR-90, NOR-96.
Closes #57.
Closes #63.

PR review follow-up

The shared library-review browser check could fail when “Save and review next” displayed the completed-link status and the next catalog-search status together. The fixture now holds that next lookup pending, checks both messages separately, and waits for the lookup to finish before continuing. The ambiguous assertion failed under this controlled timing before the fix; no product behavior or timeout was changed.

The shared regression passed on #73, whose LibraryReview, AssetMatchForm, App and SelectMenu files are byte-identical to this branch. It also passed on #71 and #72 with their changed dropdown/onboarding code. Existing runtime validation above remains applicable; this follow-up changes only the browser test.

@linear-code

linear-code Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

NOR-96

NOR-90

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-15T13:12:36.496414Z c2955d2 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@logabell
logabell merged commit ff9c83c into main Oct 15, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Direct MAM search includes VIP-only torrents even for non-VIP users SABnzbd failed downloads do not enter automatic recovery when status is Failed

1 participant