docs: server comments say what the code does, not how it came to be (#6277)
Comment blocks in cmd/minstrel and 30 smaller internal packages, rewritten
to rule 32's standard with each citation read in context: task, milestone
and rule ids go, and so do the stories they were attached to ("used to",
"Before #N", measurements from one install, quotes, pointers to Fabled
Librarian's records and to docs/superpowers files that are not in the
repo). Where a story wrapped a real constraint, the constraint stays as a
present-tense fact.
Comments that had gone stale are corrected:
- taste.Config: the tuned values are overlaid by internal/recsettings;
it is no longer "a later follow-up".
- StorageConfig: the data dir holds art, caches and the stream secret,
not only playlist covers.
- the Subsonic album list and getUser comments describe what they do
today rather than a milestone that would change it.
Checked: the non-comment token stream of every changed file matches
HEAD, and gofmt -l is empty.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
// Package taste builds a persistent, decaying per-user taste profile (#796).
|
||||
// Package taste builds a persistent, decaying per-user taste profile.
|
||||
// engagement.go is the pure core: it turns a single play's completion ratio
|
||||
// into a graded taste signal in [-1, +1], replacing the binary was_skipped
|
||||
// for learning purposes (was_skipped stays as-is for History display).
|
||||
|
||||
+12
-13
@@ -1,7 +1,7 @@
|
||||
// profile.go assembles the per-user taste profile from graded play
|
||||
// engagement (decayed over time) plus explicit-like bonuses, and
|
||||
// atomic-replaces the taste_profile_* tables. Phase 1 only builds the
|
||||
// object; candidate sourcing + scoring consume it in phase 2.
|
||||
// atomic-replaces the taste_profile_* tables, which candidate sourcing and
|
||||
// scoring read.
|
||||
package taste
|
||||
|
||||
import (
|
||||
@@ -19,9 +19,8 @@ import (
|
||||
"git.fabledsword.com/bvandeusen/minstrel/internal/mood"
|
||||
)
|
||||
|
||||
// Config holds the operator-tunable knobs. DefaultConfig supplies tuned
|
||||
// starting values; wiring these into the server RecommendationConfig is a
|
||||
// later follow-up (phase 1 uses the defaults).
|
||||
// Config holds the tunable knobs. DefaultConfig supplies the shipped values;
|
||||
// internal/recsettings overlays what an admin has tuned.
|
||||
type Config struct {
|
||||
Engagement EngagementParams
|
||||
|
||||
@@ -37,8 +36,8 @@ type Config struct {
|
||||
TrackLikeBonus float64
|
||||
TagLikeBonus float64
|
||||
|
||||
// EnrichedTagScale weights folksonomy tags (from the track_tags cache,
|
||||
// #1490) relative to a track's raw ID3 genre when both fold into the tag
|
||||
// EnrichedTagScale weights folksonomy tags (from the track_tags cache)
|
||||
// relative to a track's raw ID3 genre when both fold into the tag
|
||||
// facet. Each enriched tag contributes base × tag.weight × this scale,
|
||||
// where base is the play's decayed engagement (or the tag-like bonus for
|
||||
// a liked track) and tag.weight is the normalized folksonomy strength in
|
||||
@@ -47,19 +46,19 @@ type Config struct {
|
||||
// contribution entirely (falls back to genre-only).
|
||||
EnrichedTagScale float64
|
||||
|
||||
// EraScale weights the decade/era facet (#1530): each play adds
|
||||
// EraScale weights the decade/era facet: each play adds
|
||||
// base × this scale to its album's decade bucket ("1990s"), where base
|
||||
// is the decayed engagement (or the tag-like bonus for a liked track).
|
||||
// Era is a coarse signal, so it's kept ≤ 1 to imprint at most as strongly
|
||||
// as the raw engagement; 0 disables the era facet entirely. Tunable in the
|
||||
// lab (mirrors EnrichedTagScale, #1520).
|
||||
// as the raw engagement; 0 disables the era facet entirely. Tunable in
|
||||
// Admin › Tuning.
|
||||
EraScale float64
|
||||
|
||||
// MoodScale weights the mood facet (#1534): each play adds base × this
|
||||
// MoodScale weights the mood facet: each play adds base × this
|
||||
// scale to the canonical mood buckets (melancholic / chill / …) derived
|
||||
// from its enriched folksonomy tags via internal/mood. Coverage is partial
|
||||
// (depends on tag enrichment), so it's a supplement kept ≤ 1; 0 disables
|
||||
// the mood facet entirely. Tunable in the lab (mirrors EraScale).
|
||||
// the mood facet entirely. Tunable in Admin › Tuning.
|
||||
MoodScale float64
|
||||
|
||||
// ArtistFloor / TagFloor clamp how negative a single entity's weight may
|
||||
@@ -166,7 +165,7 @@ func accumulate(
|
||||
if err != nil {
|
||||
return nil, nil, nil, nil, fmt.Errorf("taste: load play engagement: %w", err)
|
||||
}
|
||||
// Enriched folksonomy tags keyed by track (#1490) — folded into the tag
|
||||
// Enriched folksonomy tags keyed by track, folded into the tag
|
||||
// facet alongside raw ID3 genre so a coarse "Rock" gains the cached
|
||||
// "post-punk / shoegaze / melancholic" vocabulary. Window matches the
|
||||
// play window; a track with no cached tags simply contributes genre only.
|
||||
|
||||
Reference in New Issue
Block a user