A DB<->filesystem path mismatch (Docker volume change, remount, Music Paths unset for the container) makes EVERY library file fail to resolve to a DB track, so the orphan detector flags the whole library as orphaned. The mass-orphan check only logged a warning and then created the findings anyway — so a user batch-applying 'move to staging' or 'delete' would relocate or wipe their entire library. Make it a hard skip (create zero findings) like the dead-file cleaner and stale-removal paths already do (#828). Centralise the predicate as is_implausible_orphan_flood() alongside is_implausible_stale_removal() so the rule lives in one tested place. Small genuine orphan sets still surface unchanged — only an implausibly large flood (>50% and >20) is suppressed. Tests: seam cases for the new predicate + scan-level regressions (mass mismatch -> 0 findings; small genuine set -> still reported). |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| artist_image.py | ||
| direct_id.py | ||
| duplicate_cleaner.py | ||
| duplicate_keep.py | ||
| embedded_id_reconcile.py | ||
| existing_album_folder.py | ||
| expired_cleanup.py | ||
| file_tags.py | ||
| manual_library_match.py | ||
| missing_track_import.py | ||
| path_resolve.py | ||
| path_resolver.py | ||
| redownload.py | ||
| reorganize_tag_source.py | ||
| retag_planner.py | ||
| service_search.py | ||
| stale_guard.py | ||
| track_identity.py | ||