Button to recursively apply group-level push rules to existing projects
### Problem to solve <!-- What problem do we solve? Try to define the who/what/why of the opportunity as a user story. For example, "As a (who), I want (what), so I can (why/value)." --> We introduced group-level push rules in https://gitlab.com/gitlab-org/gitlab/-/issues/34370, but when applied they do not recursively and retroactively apply to existing projects. Newly created projects within the root group's hierarchy appropriately inherit these rules, but existing rules can number in the thousands and be a headache to update individually. ### Intended users * [Cameron (Compliance Manager)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#cameron-compliance-manager) * [Sidney (Systems Administrator)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#sidney-systems-administrator) ### JTBD When I have configured push rules at a group level, I want a single action that applies those rules to all existing projects, so that my entire namespace is brought into compliance with these push rules without me having to manually update every single subgroup and project. ### User experience goal <!-- What is the single user experience workflow this problem addresses? For example, "The user should be able to use the UI/API/.gitlab-ci.yml with GitLab to <perform a specific task>" https://about.gitlab.com/handbook/engineering/ux/ux-research-training/user-story-mapping/ --> Cameron or Sidney no longer has to dig into projects to understand which ones have differing push rules and manually update those settings to match their parent group. ### Proposal Add a new section (tab) to the compliance dashboard, which shows all the projects for a group and its subgroups that have push rules that do not match the group setting. Provide Cameron with a way to update them all. |Empty State|Project with custom rules|Modal for friction| |---|---|---| |![Projects_-_Empty_2_](https://gitlab.com/gitlab-org/gitlab/uploads/ee0da2c79da29e26b214b88c3b0941ec/Projects_-_Empty_2_.png)|![Projects_-_Filled](https://gitlab.com/gitlab-org/gitlab/uploads/86b8355d55582fa1bfec790872f3447f/Projects_-_Filled.png)|![Modal](https://gitlab.com/gitlab-org/gitlab/uploads/f86bcf945bb7be03f07c564c99d6b87a/Modal.png)| ### Links / references [See Figma →](https://www.figma.com/file/lqCg85fc2elAd1gJ9qavAZ/221261-Recursively-apply-group-level-push-rules-to-existing-projects?node-id=62%3A2873) <!-- triage-serverless v3 PLEASE DO NOT REMOVE THIS SECTION --> *This page may contain information related to upcoming products, features and functionality. It is important to note that the information presented is for informational purposes only, so please do not rely on the information for purchasing or planning purposes. Just like with all projects, the items mentioned on the page are subject to change or delay, and the development, release, and timing of any products, features, or functionality remain at the sole discretion of GitLab Inc.* <!-- triage-serverless v3 PLEASE DO NOT REMOVE THIS SECTION -->
issue