Add MR-level approval rules version flag and update services to use it
<!--IssueSummary start--> <details> <summary> Everyone can contribute. [Help move this issue forward](https://handbook.gitlab.com/handbook/marketing/developer-relations/contributor-success/community-contributors-workflows/#contributor-links) while earning points, leveling up and collecting rewards. </summary> - [Close this issue](https://contributors.gitlab.com/manage-issue?action=close&projectId=278964&issueIid=587138) </details> <!--IssueSummary end--> Add migration-safe mechanism for supporting both v1 and v2 approval rules simultaneously during transition. ## What 1. Database migration: Add approval_rules_version column to merge_requests table (enum: v1, v2; default: v1) 2. Create service: When FF is enabled, set new MRs to approval_rules_version = 'v2' 3. Update service: Check MR's approval_rules_version flag instead of FF - v1 MRs → use v1 approval rules logic - v2 MRs → use v2 approval rules logic 4. Individual rule services (Create, Update, Destroy): Check MR's version flag to determine which rules table to operate on 5. Tests: Verify both v1 and v2 MRs work correctly ## Why Enables safe rollout where: - Existing v1 MRs continue to work unchanged - New v2 MRs use the new system - Both versions coexist during migration period ## Migration Strategy - Phase 1: Add flag, update services to use it (this issue) - Phase 2: Enable FF in production (new MRs use v2) - Phase 3: Backfill existing MRs to v2 (separate issue) - Phase 4: Remove v1 code (after backfill complete)
issue