diff --git a/doc/user/project/merge_requests/duo_in_merge_requests.md b/doc/user/project/merge_requests/duo_in_merge_requests.md index b2630dab0eaba627f22f60a363a562c6bf987d6f..9f167e8b7b427d6bd81316eee96488aeec66ade8 100644 --- a/doc/user/project/merge_requests/duo_in_merge_requests.md +++ b/doc/user/project/merge_requests/duo_in_merge_requests.md @@ -32,6 +32,7 @@ GitLab Duo is designed to provide contextually relevant information during the l - Feature flag `add_ai_summary_for_new_mr` [enabled by default](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/186108) in GitLab 17.11. - Changed to include Premium in GitLab 18.0. - LLM [updated](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/193208) to Claude 4.0 Sonnet in GitLab 18.1. +- [Generally available](https://gitlab.com/gitlab-com/gl-infra/production/-/issues/17533) in GitLab 18.6. Feature flag `add_ai_summary_for_new_mr` removed. {{< /history >}} diff --git a/ee/app/graphql/types/ai/summarize_new_merge_request_input_type.rb b/ee/app/graphql/types/ai/summarize_new_merge_request_input_type.rb index f83ffea88b7a3618840b8b9373b11e58d6d03f48..bbaba0115c68f0c642e00f93563d0e26f754106f 100644 --- a/ee/app/graphql/types/ai/summarize_new_merge_request_input_type.rb +++ b/ee/app/graphql/types/ai/summarize_new_merge_request_input_type.rb @@ -4,8 +4,7 @@ module Types module Ai class SummarizeNewMergeRequestInputType < BaseMethodInputType graphql_name 'AiSummarizeNewMergeRequestInput' - description "Summarize a new merge request based on two branches. " \ - "Returns `null` if the `add_ai_summary_for_new_mr` feature flag is disabled." + description 'Summarize a new merge request based on two branches.' argument :source_project_id, ::GraphQL::Types::ID, required: false, diff --git a/ee/app/models/concerns/ai/model_selection/features_configurable.rb b/ee/app/models/concerns/ai/model_selection/features_configurable.rb index 660d9de30d39083e807abe97d67675130f268c6e..bac2cc2d5cede55c8e55bb48c9f91a6f577466d6 100644 --- a/ee/app/models/concerns/ai/model_selection/features_configurable.rb +++ b/ee/app/models/concerns/ai/model_selection/features_configurable.rb @@ -34,7 +34,6 @@ module FeaturesConfigurable FEATURES_UNDER_FLAGS = { summarize_review: :summarize_my_code_review, - summarize_new_merge_request: :add_ai_summary_for_new_mr, duo_agent_platform: DUO_AGENT_PLATFORM_FEATURE_FLAG }.freeze # Keys are :feature enum values diff --git a/ee/app/policies/ee/project_policy.rb b/ee/app/policies/ee/project_policy.rb index eb8c148bc9b0f92618290d277a1496e5a7af376e..b4c6564ad48538e77263a384ca7ace9f2fefa2a5 100644 --- a/ee/app/policies/ee/project_policy.rb +++ b/ee/app/policies/ee/project_policy.rb @@ -288,13 +288,12 @@ module ProjectPolicy end condition(:summarize_new_merge_request_enabled) do - ::Feature.enabled?(:add_ai_summary_for_new_mr, subject) && - ::Gitlab::Llm::FeatureAuthorizer.new( - container: subject, - feature_name: :summarize_new_merge_request, - user: @user, - licensed_feature: :summarize_new_merge_request - ).allowed? + ::Gitlab::Llm::FeatureAuthorizer.new( + container: subject, + feature_name: :summarize_new_merge_request, + user: @user, + licensed_feature: :summarize_new_merge_request + ).allowed? end condition(:generate_description_enabled) do diff --git a/ee/config/feature_flags/development/add_ai_summary_for_new_mr.yml b/ee/config/feature_flags/development/add_ai_summary_for_new_mr.yml deleted file mode 100644 index bee2604a9f6ba094494e8d5e69e116328e5eea0a..0000000000000000000000000000000000000000 --- a/ee/config/feature_flags/development/add_ai_summary_for_new_mr.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -name: add_ai_summary_for_new_mr -feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/429882 -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/142739 -rollout_issue_url: https://gitlab.com/gitlab-com/gl-infra/production/-/issues/17533 -milestone: '16.9' -group: group::code creation -type: development -default_enabled: true diff --git a/ee/spec/policies/project_policy_spec.rb b/ee/spec/policies/project_policy_spec.rb index 17f1c46555d4941fc98ca04bbc0cc941421d1ad5..06a70d4a3cb4953b3e6b8fb54ba2dbd8fb1e2aee 100644 --- a/ee/spec/policies/project_policy_spec.rb +++ b/ee/spec/policies/project_policy_spec.rb @@ -3681,18 +3681,14 @@ def create_member_role(member, abilities = member_role_abilities) let(:authorizer) { instance_double(::Gitlab::Llm::FeatureAuthorizer) } let(:current_user) { user_can_create_mr ? developer : nil } - where(:feature_flag_enabled, :llm_authorized, :user_can_create_mr, :expected_result) do - true | true | true | be_allowed(:access_summarize_new_merge_request) - true | true | false | be_disallowed(:access_summarize_new_merge_request) - true | false | true | be_disallowed(:access_summarize_new_merge_request) - false | true | true | be_disallowed(:access_summarize_new_merge_request) + where(:llm_authorized, :user_can_create_mr, :expected_result) do + true | true | be_allowed(:access_summarize_new_merge_request) + true | false | be_disallowed(:access_summarize_new_merge_request) + false | true | be_disallowed(:access_summarize_new_merge_request) end with_them do before do - # Setup feature flag - stub_feature_flags(add_ai_summary_for_new_mr: feature_flag_enabled) - # Setup LLM authorizer allow(::Gitlab::Llm::FeatureAuthorizer).to receive(:new).and_return(authorizer) allow(authorizer).to receive(:allowed?).and_return(llm_authorized) diff --git a/ee/spec/services/llm/summarize_new_merge_request_service_spec.rb b/ee/spec/services/llm/summarize_new_merge_request_service_spec.rb index ae076d86d64c8d74695838af120e962c2d3f20ec..c4677c9d2aed669180a5ccfdbf11f89cf60d697a 100644 --- a/ee/spec/services/llm/summarize_new_merge_request_service_spec.rb +++ b/ee/spec/services/llm/summarize_new_merge_request_service_spec.rb @@ -27,7 +27,7 @@ .with(:summarize_new_merge_request, licensed_feature: :summarize_new_merge_request) .and_return(true) - stub_feature_flags(ai_global_switch: true, add_ai_summary_for_new_mr: true) + stub_feature_flags(ai_global_switch: true) # Multiple base permissions are checked before executing this service # so we stub all permission checks to return true to avoid having to stub each one individually diff --git a/ee/spec/support/shared_examples/ai/model_selection_feature_setting_shared_examples.rb b/ee/spec/support/shared_examples/ai/model_selection_feature_setting_shared_examples.rb index 294ca77ae02b954bfebf5be49d63af7889f84e79..388d3d1b142cea92a6f2228f16407a39138287d6 100644 --- a/ee/spec/support/shared_examples/ai/model_selection_feature_setting_shared_examples.rb +++ b/ee/spec/support/shared_examples/ai/model_selection_feature_setting_shared_examples.rb @@ -161,7 +161,7 @@ describe '.enabled_features_for' do let(:all_features) do - { code_generations: 0, code_completions: 1, summarize_review: 2, review_merge_request: 3 } + { code_generations: 0, code_completions: 1, summarize_review: 2 } end let(:ga_features) do @@ -213,7 +213,7 @@ context 'when a feature is disabled' do let(:expected_enabled_features) do - { code_generations: 0, code_completions: 1, review_merge_request: 3 } + { code_generations: 0, code_completions: 1 } end before do