Draft: feat: separate feature flags for SaaS and self-managed
Relates to issue #583821
Changes
This MR implements separate feature flags for Duo Agent Platform GA rollout on SaaS vs self-managed/dedicated instances.
New Feature Flag
-
ai_duo_agent_platform_ga_rollout_self_managed: Beta feature flag for self-managed instances (default: disabled) - Located in
ee/config/feature_flags/beta/ai_duo_agent_platform_ga_rollout_self_managed.yml
Backend Updates (4 files)
ee/lib/gitlab/llm/utils/ai_features_catalogue.rb
- Updated
instance_should_observe_ga_dap?to check instance-specific flags - SaaS:
ai_duo_agent_platform_ga_rollout - Self-managed:
ai_duo_agent_platform_ga_rollout_self_managed
ee/app/models/ee/namespace.rb
- Updated
duo_code_review_dap_available?with conditional logic - SaaS: checks
ai_duo_agent_platform_ga_rollout→ falls back toexperiment_features_enabled - Self-managed: checks
ai_duo_agent_platform_ga_rollout_self_managed→ falls back toinstance_level_ai_beta_features_enabled
ee/app/services/ai/duo_workflows/code_review/availability_validator.rb
- Updated
ga_rollout_enabled?with instance-type conditional logic - Updated
experimental_features_enabled?to bypass beta check when self-managed GA flag is enabled
Frontend Controllers (3 files)
ee/app/controllers/explore/ai_catalog_controller.rbee/app/controllers/groups/duo_agents_platform_controller.rbee/app/controllers/projects/duo_agents_platform_controller.rb- All expose both
ai_duo_agent_platform_ga_rolloutandai_duo_agent_platform_ga_rollout_self_managedto frontend
Test Coverage (3 spec files)
ee/spec/lib/gitlab/llm/utils/ai_features_catalogue_spec.rb
- Tests verify SaaS uses
ai_duo_agent_platform_ga_rollout - Tests verify self-managed uses
ai_duo_agent_platform_ga_rollout_self_managed - Tests ensure no cross-contamination between instance types
ee/spec/models/ee/namespace_spec.rb
- Comprehensive tests for
duo_code_review_dap_available? - Coverage for both SaaS and self-managed scenarios
- Tests verify correct flag usage and fallback behavior
ee/spec/services/ai/duo_workflows/code_review/availability_validator_spec.rb
- Tests for GA rollout flag behavior on both instance types
- Tests verify self-managed GA flag bypasses beta features check
- Tests ensure instance-type specific flag usage
Key Benefits
- Independent Rollout: SaaS and self-managed can transition to GA on different schedules
- Clear Separation: Each instance type has dedicated feature flag
- Backward Compatible: Existing behavior preserved when flags disabled
- Well Tested: Comprehensive test coverage ensures correctness
-
Consistent Pattern: Uses established
::Gitlab::Saas.feature_available?pattern
Edited by Jessie Young