A manually-fixed mirrored track silently reverted to 'Wing It' after re-running discovery. Two compounding causes: - extra_data is MERGED on save (update_mirrored_track_extra_data), and the manual-fix DB write (web_server.py) didn't clear the prior wing_it_fallback flag — so a track fixed after being a Wing It stub kept wing_it_fallback=True. - the Playlist Pipeline pre-scan checked wing_it_fallback BEFORE manual_match (if/elif), so the stale flag won: the track was re-discovered and, on a miss, fell back to Wing It — discarding the user's pick. Fix: extracted the pre-scan gate into core.discovery.manual_match.should_rediscover (manual_match checked FIRST = authoritative, regardless of leftover flags), and the manual-fix write now also clears wing_it_fallback/unmatched_by_user. Behavior is identical for every other branch — only the manual-vs-wing-it ordering changes. Tested at the seam incl. the exact regression (wing_it_fallback + manual_match both set -> skip). 227 discovery tests green. |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| beatport.py | ||
| deezer.py | ||
| endpoints.py | ||
| hero.py | ||
| listenbrainz.py | ||
| manual_match.py | ||
| matching.py | ||
| playlist.py | ||
| qobuz.py | ||
| quality_scanner.py | ||
| scoring.py | ||
| spotify_public.py | ||
| sync.py | ||
| tidal.py | ||
| youtube.py | ||