-- Provenance as standard (milestone #127, Scribe #1270). -- -- #1249 introduced pick_kind as a For You one-off ('taste'/'fresh'). -- The mechanism — stamp WHY a track is in the snapshot at build time, -- freeze it onto the play at ingestion, break it down in metrics — is -- now the standard for every system mix, so the CHECK vocabulary -- widens to cover: -- -- taste / fresh For You head vs freshness-injection tail -- dormant / cross_user / random -- Discover's three candidate buckets — makes -- the 40/30/30 allocation measurable instead -- of a guess -- tier1 / tier2 / tier3 the tiered-eligibility ladder (project rule -- #131): tier 1 pins the mix's exact desire, -- each higher tier steps back a little. Tier -- provenance is how we measure what the -- step-back trades away. -- -- Postgres CHECK whitelists can't be altered in place: DROP + re-ADD -- with the expanded list, in the same migration. ALTER TABLE playlist_tracks DROP CONSTRAINT playlist_tracks_pick_kind_check; ALTER TABLE playlist_tracks ADD CONSTRAINT playlist_tracks_pick_kind_check CHECK (pick_kind IN ( 'taste', 'fresh', 'dormant', 'cross_user', 'random', 'tier1', 'tier2', 'tier3' )); ALTER TABLE play_events DROP CONSTRAINT play_events_pick_kind_check; ALTER TABLE play_events ADD CONSTRAINT play_events_pick_kind_check CHECK (pick_kind IN ( 'taste', 'fresh', 'dormant', 'cross_user', 'random', 'tier1', 'tier2', 'tier3' ));