[FF] resource_group_assignment_preloads - preload resource group assignment dependencies
## Summary
Roll out [the feature](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/241627) currently behind the `resource_group_assignment_preloads` feature flag.
- DRI: @hfyngvason
- Team Slack channel: `#g_pipeline-execution`
> [!note]
> Process and guidance live in the docs — this issue is just the commands and a place to track the rollout.
> "Rolling out" means incrementally enabling the flag on GitLab.com to validate stability — it is not the same as releasing the feature, which happens when the flag is removed.
> [Feature flag controls](https://docs.gitlab.com/development/feature_flags/controls/) · [Feature flag lifecycle](https://handbook.gitlab.com/handbook/product-development/how-we-work/product-development-flow/feature-flag-lifecycle/#feature-flag-lifecycle)
## What could go wrong?
This flag enables eager loading for dependencies used by resource group assignment. The goal is to remove per-processable read queries from `Ci::ResourceGroups::AssignResourceFromResourceGroupWorker`, which is on the CI hot path.
The risk is that the fixed preload cost adds overhead for resource groups with very few upcoming processables or for projects where forward deployment protection is disabled. The number of upcoming processables is bounded by the number of free resources.
Watch Sidekiq worker latency and database query counts for `Ci::ResourceGroups::AssignResourceFromResourceGroupWorker`.
## Rollout
Run all production `/chatops` in [`#production`](https://gitlab.slack.com/archives/C101F3796) and cross-post the results to `#g_pipeline-execution`. Background: [incremental rollout process](https://docs.gitlab.com/development/feature_flags/controls/#process), [feature actors](https://docs.gitlab.com/development/feature_flags/#feature-actors).
**Non-production**
```
/chatops gitlab run feature set resource_group_assignment_preloads 50 --actors --dev --pre --staging --staging-ref
/chatops gitlab run feature set resource_group_assignment_preloads true --dev --pre --staging --staging-ref
```
**Production** — percentage rollout (wait ≥15 min between steps, watch dashboards):
```
/chatops gitlab run feature set resource_group_assignment_preloads <percentage> --actors
```
Or target specific actors instead:
```
/chatops gitlab run feature set --project=gitlab-org/gitlab,gitlab-org/gitlab-foss resource_group_assignment_preloads true
/chatops gitlab run feature set --group=gitlab-org,gitlab-com resource_group_assignment_preloads true
/chatops gitlab run feature set --user=hfyngvason resource_group_assignment_preloads true
```
## Before global rollout
Confirm the relevant gotchas before going to 100% — see [enabling a feature for GitLab.com](https://docs.gitlab.com/development/feature_flags/controls/#enabling-a-feature-for-gitlabcom):
- [ ] Docs + version history updated, if applicable
- [ ] Breaking changes announced, if any
- [ ] Change management issue opened, if required
- [ ] External API consumers handled with a fail-open mechanism, if applicable
## Cleanup
Remove the flag once [deemed stable](https://handbook.gitlab.com/handbook/product-development/how-we-work/product-development-flow/feature-flag-lifecycle/#feature-flag-lifecycle) — see [cleaning up](https://docs.gitlab.com/development/feature_flags/controls/#cleaning-up). Track it here, or open a follow-up [Feature Flag Cleanup issue](https://gitlab.com/gitlab-org/gitlab/-/issues/new?description_template=Feature%20Flag%20Cleanup). Remove the flag and its YAML definition from the codebase, then:
```
/chatops gitlab run release check https://gitlab.com/gitlab-org/gitlab/-/merge_requests/241627 19.2
/chatops gitlab run feature delete resource_group_assignment_preloads --dev --pre --staging --staging-ref --production
```
## Rollback
```
/chatops gitlab run feature set resource_group_assignment_preloads false # production
/chatops gitlab run feature set resource_group_assignment_preloads false --dev --pre --staging --staging-ref # non-production
/chatops gitlab run feature delete resource_group_assignment_preloads --dev --pre --staging --staging-ref --production # remove entirely
```
issue