-- Persist the matcher-selected arena through acceptance and allocation. NULL -- remains valid for legacy/casual rows while ranked proposals always write a -- server-owned floor-goal path. ALTER TABLE proposals ADD COLUMN match_arena_path TEXT; ALTER TABLE proposals ADD CONSTRAINT proposals_ranked_arena_path CHECK ( playlist <> 'ranked' OR ( match_arena_path IS NOT NULL AND match_arena_path IN ( 'res://scenes/arena_01.tscn', 'res://scenes/arena_02.tscn', 'res://scenes/arena_03.tscn' ) ) ) NOT VALID; ALTER TABLE matches ADD COLUMN arena_path TEXT; ALTER TABLE matches ADD CONSTRAINT matches_ranked_arena_path CHECK ( playlist <> 'ranked' OR ( arena_path IS NOT NULL AND arena_path IN ( 'res://scenes/arena_01.tscn', 'res://scenes/arena_02.tscn', 'res://scenes/arena_03.tscn' ) ) ) NOT VALID;