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>
- acquisition_settings.upgrade_until (default High quality lossy, Lidarr's
cutoff, note #5527; "" is off), an "Upgrade until" row under Searching.
- The wanted worker judges held albums hourly: tier per format from size per
second (the scanner records no bitrate), the album's worst. Below the
cutoff it is wanted for quality; a video rip among its tracks always.
- The schedule searches upgrades weekly, after open wants; a release no
better than the copy held is refused ("not_better").
- The import matches each file to the track it would replace (recording,
then disc/track) and replaces it when it is a rip or the file is a better
tier: over the same path in one rename, or filed beside it and the old
track folded in (library.ReplaceTrack: file first, then foldTrackInto).
Nothing better: the release is set aside.
- Collection › Upgrades (Lidarr's Cutoff Unmet); Suspect sources says when a
clean copy was looked for instead of Lidarr's search.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- internal/release: reads a release name (format, bitrate, bit depth and
sample rate, source, year, video, discography) and judges it against the
album wanted: the artist and title must be in it; video rips,
discographies, other versions (drumless, instrumental, karaoke, remix,
live unless the album is live…) and singles or EPs for an album are
refused. Quality tiers on Lidarr's ladder; a .torrent's file list is read
for format, video files and a track count short of the album.
- internal/acquire: fan-out across every search source with a narrowed
search kept, a process-wide pacer per source, every candidate judged and
kept with its reasons, and the grab: one live grab per want, tie-broken
(a person's grab beats the schedule's; a better release replaces a worse
one unless it is nearly done). Each download lands in its own folder
under the client's downloads folder.
- internal/wanted: the search schedule, every ten minutes, never-searched
first, then requests, missing files and followed artists, taking the
best release when auto-grab is on (the default).
- Migration 0082: acquisition_settings (auto-grab, interval, allowed
qualities seeded from Lidarr's "Any"), want search columns,
want_candidates, grabs, release_blocks.
- Web: the Wanted page shows each want's last search, a Search button and
every release found with its verdict (Grab, Grab anyway, Never this one,
Allow again). Integrations gains "Searching and grabbing".
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>