-- Reward configurations made by accepting a Budget Controller recommendation -- (docs/rfc-enakgame.md §10, PRD §29–§31). Such a version scales the amounts of the -- version an admin wrote last, its base, so a run of adjustments never compounds its -- rounding and min/max multiplier are measured against what the admin set. A version -- an admin writes has none of the three, and becomes the base of the next adjustments. ALTER TABLE game_reward_configs ADD COLUMN base_config_id UUID REFERENCES game_reward_configs(id), -- Applied to every amount of the base, rounded down: 0.8100 pays 81%. ADD COLUMN multiplier NUMERIC(6,4), -- The global budget whose recommendation was accepted. ADD COLUMN budget_id UUID REFERENCES game_budgets(id), ADD CONSTRAINT chk_game_reward_configs_controller CHECK ( (base_config_id IS NULL AND multiplier IS NULL AND budget_id IS NULL) OR (base_config_id IS NOT NULL AND multiplier > 0 AND budget_id IS NOT NULL AND effective_at IS NOT NULL)); -- The last adjustment of an organization, for the cooldown. effective_at is when the -- Budget Controller made it, by the application clock. CREATE INDEX idx_game_reward_configs_controller ON game_reward_configs(organization_id, effective_at DESC) WHERE budget_id IS NOT NULL;