Enhance User Caps (SM and SaaS) to better handle non-billable users
## Overview
From [our documentation](https://docs.gitlab.com/ee/user/admin_area/settings/sign_up_restrictions.html#user-cap)
> When the number of billable users reaches the user cap, any user who is added or requests access must be approved by an administrator before they can start using their account.
This tells me that the intent of user caps is to avoid having `billable users` \> `user cap`, thus helping GitLab Admins control the costs of their subscription.
Non-billable users don't contribute to billings, so they don't need to be controlled by the user caps feature to accomplish the goal of the feature.
## Proposal
Work to be done and order of operations:
### **Phase 1**
_Before we tweak user caps functionality to exclude guests, user caps can currently be used to manage sign ups for guests and I think it would cause more problems if we exclude guests without additional controls._
1. :white_check_mark: Guests should not be able to move themselves into a paid seat \> https://gitlab.com/groups/gitlab-org/-/epics/11560+
2. :hourglass_flowing_sand: Admin should have control over/approve when a guest role moves into a paid seat \> https://gitlab.com/groups/gitlab-org/-/epics/12141+
### **Phase 2**
_Correct user caps functionality so that guests bypass the user caps approval._
1. :hourglass_flowing_sand: For Ultimate subscriptions, User caps should not restrict users with guest permissions to sign up (i.e guests are excluded/bypassed from user caps) \> https://gitlab.com/groups/gitlab-org/-/epics/13998
### **Phase 3**
1. Expand user caps to ensure existing user changes don't result in user cap overages without approvals https://gitlab.com/groups/gitlab-org/-/epics/13999
### **Phase 4**
1. _This epic_ https://gitlab.com/groups/gitlab-org/-/epics/12440 _contains additional backlog improvements_
## Resources
**Customer Collaboration Issues**
1. https://gitlab.com/gitlab-com/account-management/emea/telekom/collaboration-project/-/issues/147+
2. https://gitlab.com/gitlab-com/account-management/western-north-america/rivian/-/issues/30+
3. https://gitlab.com/gitlab-org/gitlab/-/issues/434097+
epic