docs: wanted, dbtest, recommendation and playlists comments say what the code does (#6277)
The same rewrite as d191a282, for four packages whose comments carried the
most history: tuning stories, quotes from the operator, single-install
measurements in library_scale.go, and 'used to' accounts of bugs. The
constraint each story protected stays as a present-tense reason (why tier 3
is reduced not removed, why the randomised arms take an order seed, why the
seed artist is eligible in Songs-like). Comments naming system_cron.go and
config.RecommendationConfig, neither of which holds what they claimed, now
name the scheduler and internal/recsettings.
Checked: non-comment tokens identical to HEAD; gofmt clean.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -16,8 +16,7 @@ type Candidate struct {
|
||||
}
|
||||
|
||||
// DiversityCaps bounds how much of one selection a single artist or album
|
||||
// may occupy. A zero value means "no cap", which is what Shuffle did
|
||||
// unconditionally before #3882.
|
||||
// may occupy. A zero value means "no cap".
|
||||
type DiversityCaps struct {
|
||||
MaxPerArtist int
|
||||
MaxPerAlbum int
|
||||
@@ -53,7 +52,7 @@ func RadioDiversityCaps(limit int) DiversityCaps {
|
||||
}
|
||||
|
||||
// heldBack says whether the candidate is a video rip held back from radio
|
||||
// (M498 #5439): it plays when chosen, but radio does not choose it.
|
||||
// it plays when chosen, but radio does not choose it.
|
||||
func heldBack(c Candidate) bool {
|
||||
return c.Track.SourceVerdict != nil && *c.Track.SourceVerdict == "suspect"
|
||||
}
|
||||
@@ -69,19 +68,13 @@ func heldBack(c Candidate) bool {
|
||||
// So the result holds min(limit, len(candidates)) either way — the caps
|
||||
// change WHICH tracks are chosen, never HOW MANY. (What is not a candidate at
|
||||
// all is dropped first: a held-back video rip, and a second copy of a song
|
||||
// already chosen from another release, M498.)
|
||||
// already chosen from another release.)
|
||||
//
|
||||
// That two-pass shape is the whole design, and a hard cap would have been
|
||||
// the easy mistake. Radio asks for 50 tracks by default and 200 at most; a
|
||||
// pool concentrated on a few artists would return six tracks and call it a
|
||||
// radio. Rule 131's principle — degrade, never vanish — applies past the
|
||||
// system mixes it was written for.
|
||||
//
|
||||
// Before #3882 there was no cap here at all, while discover.go,
|
||||
// you_might_like.go and home.go all had one. That asymmetry is what let a
|
||||
// radio session come back entirely from a single artist: nothing between
|
||||
// the pool and the output bounded any artist's share, so a pool dominated
|
||||
// by one artist produced an output dominated by it too.
|
||||
// That two-pass shape is the whole design. A hard cap would be the easy
|
||||
// mistake: radio asks for 50 tracks by default and 200 at most, and a pool
|
||||
// concentrated on a few artists would return six tracks and call it a radio.
|
||||
// Degrade, never vanish. Without any cap, a pool dominated by one artist
|
||||
// would produce a radio entirely of that artist.
|
||||
func Shuffle(
|
||||
candidates []Candidate,
|
||||
weights ScoringWeights,
|
||||
@@ -112,7 +105,7 @@ func Shuffle(
|
||||
deferred := make([]Candidate, 0, len(scored)-limit)
|
||||
artistCount := map[pgtype.UUID]int{}
|
||||
albumCount := map[pgtype.UUID]int{}
|
||||
// One song on several releases is played once (M498 #5438): after its
|
||||
// One song on several releases is played once: after its
|
||||
// best-scoring copy, the others are dropped, not held back.
|
||||
songs := map[pgtype.UUID]bool{}
|
||||
repeat := func(c Candidate) bool { return c.Track.SongKey.Valid && songs[c.Track.SongKey] }
|
||||
|
||||
Reference in New Issue
Block a user