Branch: fix/249-unbounded-growth
Approach: prune lyrics_index on the removal paths where DeleteSearchIndex is already called; clear or re-resolve queue.source_* on playlist/library delete; give…
Branch: fix/248-artist-metadata-sweep
Approach: add a janitor job that deletes artist_metadata rows whose mbid is no longer a library artist nor referenced by artist_images/artist_enrichment, and…
Branch: fix/247-cover-art-orphans
Approach: sweep orphaned cover_art rows (and their CoverArtFileSet) inside pruneEmptyEntities so every track-removal path shares it; DeleteCoverArt gains its…
Branch: fix/246-incremental-scan-phantoms
Approach: add a per-file phantom populate step before DeleteAudioFile in the scan orphan loop, reusing PreservePlaylistPhantoms logic scoped to a file-id…