docs: migration headers keep the before and after, without ids, quotes or one library's numbers (#6277)
release / govulncheck (push) Successful in 17s
release / web (push) Successful in 1m33s
release / go (push) Successful in 1m49s
release / integration (push) Successful in 5m42s
release / android (push) Successful in 5m59s
release / Build signed APK (releases and dev) (push) Successful in 6m9s
release / Attach APK to the Release (tag releases only) (push) Skipped
release / Build + push container image (push) Successful in 16s
release / Verify release artifacts (tag releases only) (push) Skipped

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>
This commit is contained in:
2026-10-23 12:34:39 -04:00
co-authored by Claude Opus 5.5
parent 1d4ef1a23f
commit 6028d78844
93 changed files with 301 additions and 338 deletions
@@ -1,14 +1,12 @@
-- Auto re-acquisition of missing files via Lidarr (#2527 slice 3, milestone
-- #290). A file going missing has been a dead end until now: reconcile marks
-- it (#2523), every selection path skips it, the admin surface lists it, and
-- there it sits.
-- Auto re-acquisition of missing files via Lidarr. Before this a missing
-- file was a dead end: reconcile marks it, every selection path skips it,
-- the admin surface lists it, and there it sits.
--
-- The unit here is the ALBUM, not the track, and that is the design decision
-- carrying most of the safety. Lidarr acquires releases; there is no
-- meaningful "fetch me one track" operation, and a track-kind request needs a
-- recording MBID plenty of files simply don't have. Grouping by album means
-- the case that produced #2523 -- three reorganised albums, ~40 missing files
-- -- becomes three requests instead of forty.
-- a reorganised album with dozens of missing files becomes one request.
CREATE TABLE missing_reacquisitions (
album_id uuid PRIMARY KEY REFERENCES albums (id) ON DELETE CASCADE,
@@ -36,12 +34,13 @@ CREATE INDEX missing_reacquisitions_due_idx
WHERE gave_up_at IS NULL;
-- Settings, singleton in the style of network_settings (0053). Every value an
-- operator might want to tune lives here rather than in YAML (rule #25).
-- admin might want to tune lives here rather than in YAML, changed without a
-- restart.
CREATE TABLE reacquisition_settings (
id boolean PRIMARY KEY DEFAULT true,
-- Master switch. Default true: the operator asked for this to happen by
-- itself, and a feature that ships switched off is a feature nobody finds.
-- Master switch. Default true: this is meant to happen by itself, and a
-- feature that ships switched off is a feature nobody finds.
enabled boolean NOT NULL DEFAULT true,
-- How long a file must have been missing before the FIRST attempt. This
@@ -49,7 +48,7 @@ CREATE TABLE reacquisition_settings (
-- transiently -- an unmounted volume, a container that started before its
-- media mount attached, a NAS mid-reboot -- and every one of those
-- resolves itself well inside a day at no cost. tracks.missing_since is
-- never re-stamped (#2523), so it is a true "gone since" clock to measure
-- never re-stamped, so it is a true "gone since" clock to measure
-- against.
grace_hours int NOT NULL DEFAULT 24,