Applies rule 32's migration exception: each header still says what the
schema was, what changes and what it prevents, but task, milestone,
decision and rule ids are replaced by the practice they stood for, the
operator quotes by the decision, single-install counts are dropped, and
pointers to a deleted package and an external design doc are gone.
golang-migrate keeps no checksum, so editing applied migrations'
comments is safe.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Album-mode normalization plays a whole album at one gain. That gain comes
from album_loudness (migration 0066): BS.1770's gated loudness over every
block on the album, computed by summing the tracks' stored histograms and
gating the sum. No audio is decoded again. Album true peak is the loudest
track's.
- Recomputed by the loudness worker each tick, after the track pass and
whether or not analysis is switched on. ListAlbumsNeedingLoudness lists
albums whose md5 over (present track id, measurement version and time) no
longer matches the stored digest. One comparison covers every way
membership changes (scan retag, duplicate merge, delete, missing and
restored) without hooking each.
- No album value until every present track has a settled measurement, so
an album's gain doesn't shift mid-listen as the rest is measured. Silent
and unreadable tracks count as settled.
- Rows for albums with no present track left are dropped.
- The parser and the merge share trimBins.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>