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>
15 lines
879 B
SQL
15 lines
879 B
SQL
-- 0077_track_source_verdict.up.sql — video rips are held back from mixes and
|
|
-- radio until an admin says otherwise.
|
|
--
|
|
-- A file whose name carries a video-rip marker ("(Official Video)", "[HD]")
|
|
-- holds the audio of an upload, which can carry intros, skits or a
|
|
-- different take. The duplicate resolver sets 'suspect' on such a present
|
|
-- track each pass, and clears it when the name no longer matches. 'suspect'
|
|
-- keeps the track out of radio and the system mixes; it still plays when
|
|
-- chosen. 'fine' is an admin's "this one is fine" and is never
|
|
-- overwritten by the resolver.
|
|
ALTER TABLE tracks ADD COLUMN source_verdict text
|
|
CONSTRAINT tracks_source_verdict_check CHECK (source_verdict IN ('suspect', 'fine'));
|
|
ALTER TABLE tracks ADD COLUMN source_verdict_at timestamptz;
|
|
CREATE INDEX tracks_source_suspect_idx ON tracks (id) WHERE source_verdict = 'suspect';
|