Remove bso_minimal_access_fallback feature flag

What does this MR do and why?

Removes the bso_minimal_access_fallback feature flag. The flag has been default_enabled: true since GitLab 18.10 (!225777 (merged)), so the behaviour is already live everywhere. This MR makes it permanent. No behaviour change.

Background: when Block Seat Overages (restricted access) is on and no seats are left, users provisioned through SAML, SCIM or LDAP get the Minimal Access role instead of being rejected outright. Minimal Access isn't a billable seat, so sync keeps working. The feature also covers warning banners in admin and group settings, an audit event, Redis tracking, and an admin notification worker. None of that changes here, only the flag check around it goes away.

Changes:

  • 9 files in ee/app and ee/lib had the flag check removed, 12 references gone
  • ee/config/feature_flags/beta/bso_minimal_access_fallback.yml deleted
  • 23 spec files cleaned up, 63 references removed
  • 4 docs pages got a history line

ee/lib/gitlab_subscriptions/member_management/seat_aware_provisioning.rb lost the private feature_flag_enabled? helper and its three call sites, since there's nothing left to check.

The one thing worth a reviewer's attention: the log line Group membership access level adjusted due to BSO seat limits no longer carries a feature_flag field. That field only ever reported whether the flag was on, and the flag can't be off anymore. Eight spec assertions on that field went with it.

On the spec side, 18 "when the flag is disabled" contexts are deleted outright since that code path can't run anymore. 5 "when the flag is enabled" contexts got unwrapped, keeping every example that was inside them. 10 stub lines removed. Most of the diff in specs is re-indentation from the unwrapping, so turn on hide whitespace when reviewing.

Verification that nothing's left behind:

$ grep -r 'bso_minimal_access_fallback' ee/ | wc -l
76      # before
0       # after

The docs still mention the flag by name in their history blocks, which is intended. Those entries are a permanent record of when it was introduced, enabled and removed.

References

Screenshots or screen recordings

None. The flag's been default enabled since 18.10, so the rendered UI is identical before and after this MR. !205259 (merged) has screenshots of the feature from when it was originally built.

How to set up and validate locally

Behaviour is unchanged and the specs are the proof, so CI is the validation here.

To exercise the feature by hand you'd need a licence with seat limits set and Block Seat Overages enabled, then provision a user through SAML, SCIM or LDAP past the seat limit and confirm they land on Minimal Access instead of being rejected.

MR acceptance checklist

Check this acceptance checklist before setting this MR as ready for review.

Merge request reports

Loading
Loading