267c4ad80b
Third and final M4 sub-plan (Fable #347) — closes M4. Replaces M3's whole-library candidate pool with a 5-way SQL UNION (LB-similar tracks / tracks by similar artists / MB-tag overlap / likes-overlap / random fill). Adds a new SimilarityScore × SimilarityWeight term to M3's Score() formula. Web client auto-refreshes the queue when 80% consumed via a new ?exclude= query param. No lazy LB fetch (M4b's worker + random augmentation handle sparse data). Fallback to M3 LoadCandidates on any similarity-pool error. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>