Full Arr release E2E validation
Summary¶
Make the full Arr integration suite a first-release gate. Release 1 must prove that eMule BB works as a live Arr-facing indexer and qBittorrent-compatible download target, not just as a standalone REST server.
Topology rule: Sonarr, Radarr, and Prowlarr clients connect directly to eMule
BB for Torznab and qBittorrent-compatible requests. aMuTorrent is a UI consumer
of the native /api/v1 design and is not part of the Arr compatibility path.
The gate covers:
- Prowlarr Generic Torznab indexer configuration against eMule BB
- Radarr and Sonarr syncing that indexer from Prowlarr
- Radarr and Sonarr temporary qBittorrent-compatible download-client configuration against eMule BB
- release/RSS/search results flowing through Prowlarr, Radarr, and Sonarr
- qBittorrent-compatible add, inspect, mutate, pause/resume, and delete flows reaching live eMule BB transfers
Beta 0.7.3 Classification¶
Release Gate. Full E2E-validated integration with aMuTorrent and the Arr
suite is part of Release 1. This item owns the Arr side of that gate and backs
the release live-e2e lane.
Execution Plan¶
Historical release context: Beta 0.7.3 REST and Arr execution plan.
Acceptance Criteria¶
- [x]
prowlarr-emulebb-live.pyruns in the release lane and records indexer create/test/search artifacts - [x]
radarr-sonarr-emulebb-live.pyruns Radarr and Sonarr checks through Prowlarr and records app, indexer, and download-client state - [x] qBittorrent-compatible login, add, info/properties/files, category mutation, pause/resume, and delete are validated against live eMule BB
- [x] Arr release/RSS/search returns eMule BB rows or reports public-network inconclusive with diagnostics
- [x] reports redact API keys and exact live-wire transfer identifiers
- [x] the suite is selectable and included by the release
live-e2ecommand
Completion Evidence¶
- App commits:
87b6f24,385273c,324c7f7. - Test commits:
8786847,4e02b3d,0fd6e77,4339716,3c5c963,8a85158,59f7e6d,e78c369. - Tooling commit:
303f911. - Commands:
python -m emule_workspace validate;python -m pytest tests\python\test_rest_api_smoke.py -q;python -m emule_workspace test live-e2e --config Release --platform x64 --suite rest-api;python -m emule_workspace test live-e2e --config Release --platform x64 --suite prowlarr-emulebb;python -m emule_workspace test live-e2e --config Release --platform x64 --suite radarr-sonarr-emulebb. - Direct adapter smoke artifact:
repos\emulebb-build-tests\reports\rest-api-smoke\20260506-190401-eMule-main-release. - Follow-up hardening: the mixed REST stress budget now includes the qBittorrent-compatible delete adapter with a missing-hash no-op delete, so delete remains covered under repeated native REST, Torznab, qBit, and legacy HTML traffic instead of only the one-shot smoke path.
- Follow-up hardening: live adapter smoke now rejects malformed qBit boolean
form fields on add/delete (
paused=maybe,deleteFiles=wat), and mixed REST stress repeats the malformed delete probe. - Follow-up hardening: Torznab
catvalidation now rejects malformed category tokens in live adapter smoke and mixed REST stress instead of returning a successful empty feed for bad category syntax. - Debug contract-stress artifact after the Torznab category hardening:
repos\emulebb-build-tests\reports\rest-api-smoke\20260507-204704-eMule-main-debug. The run covered all 82 OpenAPI routes, exercised 81 safe routes with 0 failed routes, and completed 272 mixed stress requests with 0 failures, 0 timeouts, 0 non-JSON native REST responses, and 6 repeatedtorznab_bad_category_rejectedprobes. - Follow-up hardening: qBittorrent-compatible
setForceStartnow rejects a malformedvalueform boolean in both live adapter smoke and mixed REST stress, while keeping the route an accepted no-op for valid qBit clients. - Debug contract-stress artifact after the qBit force-start hardening:
repos\emulebb-build-tests\reports\rest-api-smoke\20260507-205544-eMule-main-debug. The run covered all 82 OpenAPI routes, exercised 81 safe routes with 0 failed routes, and completed 317 mixed stress requests with 0 failures, 0 timeouts, 0 non-JSON native REST responses, and 7 repeatedqbit_bad_force_start_boolean_rejectedprobes. - Follow-up hardening: qBittorrent-compatible category reads now include live
smoke and mixed REST stress coverage for a wrong
SIDcookie, keeping the adapter's 403 auth boundary explicit between unauthenticated, wrong-cookie, and valid-session traffic. - Debug contract-stress artifact after the qBit wrong-cookie coverage:
repos\emulebb-build-tests\reports\rest-api-smoke\20260507-210705-eMule-main-debug. The run covered all 82 OpenAPI routes, exercised 81 safe routes with 0 failed routes, and completed 327 mixed stress requests with 0 failures, 0 timeouts, 0 non-JSON native REST responses, and 7 repeatedqbit_wrong_cookie_rejectedprobes. - Follow-up hardening: live adapter smoke and mixed REST stress now cover bad Torznab query API keys and bad qBittorrent-compatible login credentials, so the Arr-facing auth boundary is exercised for missing credentials, wrong credentials, valid query/header API keys, valid qBit login, wrong qBit cookies, and valid qBit sessions.
- Debug contract-stress artifact after the adapter bad-credential coverage:
repos\emulebb-build-tests\reports\rest-api-smoke\20260507-211447-eMule-main-debug. The run covered all 82 OpenAPI routes, exercised 81 safe routes with 0 failed routes, and completed 337 mixed stress requests with 0 failures, 0 timeouts, 0 non-JSON native REST responses, 7 repeatedtorznab_wrong_query_key_rejectedprobes, and 7 repeatedqbit_bad_login_rejectedprobes. - Follow-up hardening: the direct adapter smoke in
rest-apinow adds a qBittorrent-compatible transfer, verifies that/api/v2/torrents/infoand category-filtered info adapt the native transfer list, verifies valid-transfer/api/v2/torrents/propertiesand/api/v2/torrents/files, then deletes the transfer through/api/v2/torrents/delete. Test commits:6fd252f,ec962c7. - Debug live REST artifact after the direct qBit valid-transfer hardening:
repos\emulebb-build-tests\reports\rest-api-smoke\20260508-000353-eMule-main-debug. The run passed with the persisted live-network policyBindInterface=hide.me, empty P2PBindAddr, andEnableUPnP=1. - Follow-up report hardening: Prowlarr and Radarr/Sonarr live reports now expose
the same
launch_inputslive-network fields as REST and aMuTorrent reports, makinghide.meplus UPnP evidence visible in every Beta 0.7.3 live suite artifact. Test commit:efc52a7. - Follow-up hardening: the Radarr/Sonarr live suite now keeps operator-owned
live terms and hashes in the ignored
live-wire-inputs.local.json, records explicit video-family Torznab categories for Arr proof (2000for Radarr and qBit video magnets,5000for Sonarr), checks Prowlarr video searches before Arr sync, and validates actual Radarr/Sonarr indexer enable flags. Test commits:46faeb6,830aa07,5e1a512. Tooling commit:8e2335d. - Follow-up hardening: the Prowlarr live suite now avoids q-less Torznab RSS
proof, uses operator-owned terms from the ignored
live-wire-inputs.local.json, and records explicit document, movie, and TV category searches without persisting exact runtime terms. Test commit:a8a0c76. - Follow-up audits: destructive native REST routes now have a static
confirmation/intent inventory, Arr/qBit adapter parsing is locked to shared
native validation and bridge helpers, and adapter error shapes are documented
separately from native
/api/v1JSON errors. Test commits:c4db9e7,88c743f. - Prowlarr artifact:
repos\emulebb-build-tests\reports\prowlarr-emulebb-live\20260506-191105-eMule-main-release. - Radarr/Sonarr artifact:
repos\emulebb-build-tests\reports\radarr-sonarr-emulebb-live\20260506-191223-eMule-main-release. - Fresh Radarr/Sonarr video-category artifact:
repos\emulebb-build-tests\reports\radarr-sonarr-emulebb-live\20260509-074817-eMule-main-release. The run passed withBindInterface=hide.me, UPnP enabled, Prowlarr video searches returning rows for Radarr category2000and Sonarr category5000, synced Radarr and Sonarr indexers enabled for RSS, automatic search, and interactive search, and two qBittorrent-compatible live-wire add/mutate/delete rounds from video-category magnets. Radarr/Sonarr release searches recorded no matching app-level rows after their own filtering, so the release proof is the explicit Prowlarr video-category search plus synced provider readiness and qBit-compatible transfer lifecycle evidence. - Fresh Prowlarr video-category artifact:
repos\emulebb-build-tests\reports\prowlarr-emulebb-live\20260509-080508-eMule-main-release. The run passed withBindInterface=hide.me, UPnP enabled, direct eMule BB Torznab document category7000returning rows, direct movie category2000and TV category5000video searches returning rows, Prowlarr indexer add/test succeeding, and Prowlarr API searches returning rows for document, movie, and TV categories. The report stores term counts and presence flags only. - Final full umbrella proof:
repos\emulebb-build-tests\reports\live-e2e-suite\20260506-224844-eMule-main-release\result.json. - Beta 0.7.3 Prowlarr replay artifact:
repos\emulebb-build-tests\reports\prowlarr-emulebb-live\20260509-142619-eMule-main-release\result.json. The run passed with Prowlarr add/test/search, direct RSS/category probes, redacted live-term metadata,BindInterface=hide.me, empty P2PBindAddr, andEnableUPnP=1evidence. - Beta 0.7.3 Radarr/Sonarr replay artifact:
repos\emulebb-build-tests\reports\radarr-sonarr-emulebb-live\20260509-142909-eMule-main-release\result.json. The run passed with synced Radarr/Sonarr indexers enabled for RSS, automatic search, and interactive search; both qBittorrent-compatible download clients tested successfully; and two live-wire qBit add/info/properties/files/category mutation/pause/resume/delete rounds completed.
Pending Revalidation Focus¶
This gate has passing Release 1 evidence, but the next hardening pass should refresh it with these adapter-specific checks:
- [x] Prowlarr Generic Torznab add/test/search still succeeds or records a public-network inconclusive result with redacted diagnostics.
- [x] Radarr and Sonarr still sync the Prowlarr indexer and exercise eMule BB as a qBittorrent-compatible download client.
- [x] qBittorrent-compatible login, app preferences, transfer add, info, properties, files, category mutation, pause/resume, and delete remain covered against live eMule BB.
- [x] adapter errors remain bounded and diagnosable for Arr/qBit clients without leaking API keys, exact live-wire identifiers, or native internal details.
- [x] adapter quirks remain local to the compatibility layer and do not drive
native
/api/v1route shape, field aliases, or response envelopes.
Relationship To Other Items¶
- backs
CI-011,CI-014, andCI-015 - complements
AMUT-001 - consumes
FEAT-047,FEAT-048, andFEAT-049surfaces where needed