Full Parity Matrix (qBitrr -> Torrentarr)¶
This matrix tracks strict full parity against upstream qBitrr 5.12.3 (0b4a111) at the Python-module level.
Parity claim policy¶
Use this file as the source of truth for how close implementation is to upstream. While Torrentarr targets qBitrr behavior and shares config.toml + SQLite compatibility, a strict “100% parity” claim is only defensible when no file row is partial and no support row is missing (per certification-report.md). Public messaging should say “aligned with / port of qBitrr” or point readers here—not “complete parity”—until the matrix is closed out.
Contributors: upstream pin, test matrices, OpenAPI diffs, and internal checklists are in contributor-reference.md (not needed for end users; see overview.md).
Status values:
full: behavior and contract are implemented and verified.partial: implementation exists but differs or lacks full verification.missing: no equivalent behavior exists yet.intentional-divergence: implementation differs by design and must prove identical user-facing outcomes.
Runtime Package Coverage (qBitrr/qBitrr)¶
| qBitrr file | Torrentarr equivalent | Status | Required actions |
|---|---|---|---|
qBitrr/__init__.py | src/Torrentarr.Host/Program.cs, assembly metadata | full | Version metadata via /web/meta; UpdateService reports patched_version semantics. |
qBitrr/main.py | src/Torrentarr.Host/Program.cs, ArrWorkerManager.cs | full | Process orchestration + worker lifecycle; Lidarr search timer starvation N/A (documented in ArrWorkerManager). |
qBitrr/arss.py | TorrentPolicyHelper, Host policy passes, worker services | full | Evidence: TorrentPolicyHelperTests, contributor-reference policy matrix. |
qBitrr/qbit_category_manager.py | SeedingService.cs, CategoryPathHelper | full | Evidence: SeedingServiceTests (HnR dead-tracker #412), subcategory matching in Host qBit categories. |
qBitrr/arr_tracker_index.py | SeedingService.cs queue-sort tracker priority | full | Tracker priority sort in SeedingService + Host ProcessTorrentPolicyAsync. |
qBitrr/config.py | TorrentarrConfig.cs, ConfigurationLoader.cs | full | Key-by-key TOML parity; UrlBase, BehindHttpsProxy, env aliases. |
qBitrr/gen_config.py | ConfigurationLoader.GenerateDefaultConfig() | full | Defaults include UrlBase, ConfigVersion = 6.12.2. |
qBitrr/config_version.py | ConfigurationLoader.ValidateConfigVersion() | full | ExpectedConfigVersion = 6.12.2; migration on load. |
qBitrr/env_config.py | ConfigurationLoader env overrides | full | TORRENTARR_* + QBITRR_* aliases including WEBUI_URL_BASE, SETUP_TOKEN. |
qBitrr/duration_config.py | DurationParser.cs | full | Evidence: DurationParserTests. |
qBitrr/database.py | TorrentarrDbContext, DatabaseHealthService | full | WAL mode, startup repair, integrity checks. |
qBitrr/tables.py | EF models, TorrentarrDbContext | full | Evidence: SchemaParityTests.cs. |
qBitrr/db_lock.py | EF/SQLite locking | full | SQLite WAL + scoped DbContext per request/worker. |
qBitrr/db_recovery.py | DatabaseHealthService, Host --repair-database | full | Integrity + VACUUM + operator repair workflow. |
qBitrr/search_activity_store.py | SearchActivity model, worker services | full | Search activity persisted and exposed via processes API. |
qBitrr/webui.py | Host/WebUI Program.cs, webui/src | full | Evidence: UrlBase end-to-end, auth bootstrap, catalog rollups, Lidarr artists/thumbnails, SetPasswordEndpointTests, openapi.json + CI drift check. |
qBitrr/auto_update.py | UpdateService, AutoUpdateBackgroundService | full | Check/download/apply + cron scheduling. |
qBitrr/pyarr_compat.py | ApiClients/Arr/*.cs | full | Arr API clients with normalized responses. |
qBitrr/ffprobe.py | MediaValidationService.cs | full | ffprobe validation integration. |
qBitrr/versioning.py | Host metadata + UpdateService | full | /web/meta, release check caching. |
qBitrr/bundled_data.py | Host wwwroot, embedded defaults | full | SPA build output served from Host. |
qBitrr/home_path.py | ConfigurationLoader.GetDefaultConfigPath() | full | Config search order + GetDataDirectoryPath(). |
qBitrr/logger.py | Serilog in Host/WebUI/Workers | full | Structured logging with process metadata. |
qBitrr/errors.py | Exception types across projects | full | HTTP error contracts on API endpoints. |
qBitrr/utils.py | Core/Infrastructure helpers | full | Shared helpers (CategoryPathHelper, UrlBaseHelper, ConfigValidationHelper). |
qBitrr/catalog_rollups.py (5.12.0) | CatalogRollupService.cs | full | Evidence: CatalogRollupServiceTests; wired into /web|api/arr, Radarr/Sonarr/Lidarr list endpoints. |
qBitrr/category_paths.py (5.12.0) | CategoryPathHelper.cs, ConfigValidationHelper.cs | full | Evidence: CategoryPathHelperTests, ConfigValidationHelperTests; wired into torrent/category matching + config save validation. |
Support / Ops / Packaging Coverage¶
| qBitrr file | Torrentarr equivalent | Status | Required actions |
|---|---|---|---|
scripts/repair_database.py | Host --repair-database, DatabaseHealthService | full | Operator repair via Host CLI + WebUI health. |
scripts/repair_database_targeted.py | No direct equivalent | intentional-divergence | Evidence: Targeted database repair. |
scripts/rebuild_and_deploy.py | build.sh, CI, Docker | full | build.sh + GitHub Actions matrix. |
.github/scripts/update_releases.py | Release workflow | intentional-divergence | Evidence: Support scripts and CI. |
.github/autofix/auto_fix.py | No direct equivalent | intentional-divergence | Documented CI policy divergence. |
setup.py | .csproj + Docker | intentional-divergence | .NET publish + container images. |
Critical Functional Parity Hotspots (5.12.3 closeout)¶
- HnR dead-tracker (#412): bare
"not found"removed;TrackerMessageIndicatesDeadunit tests. - Auth bootstrap (5.12.2): setup token required on first password set (
WebUIAuthHelpers, LoginPage setup field). - UrlBase (5.12.3): config +
UsePathBase+ cookie path + frontendurlBase.ts. - Catalog rollups (5.12.0):
available = monitored AND has_file; 5s TTL cache. - Lidarr artists + thumbnails (5.12.0):
ArrCatalogEndpoints+ArrThumbnailService+ frontend API client. - OpenAPI drift guard:
scripts/check-openapi-drift.shin CI vs qBitrr5.12.3. - Config schema: Torrentarr
6.12.2(+1 major vs qBitrr5.12.2).