Organizations release process (1/2): Organizations::Release layer
What does this MR do?
Adds the Organizations::Release layer — the abstraction between feature code and the feature flag library.
An organization flag sits at one release stage; the stage decides which of a small fixed set of shared ops flags gates it. Feature code calls:
Organizations::Release.enabled?(:my_flag, actor)Includes:
- Seven shared stage flags:
org_stage_experimental,org_stage_beta,org_stage_la_25/50/75/100, andorg_stage_ga(default_enabled: true). Organizations::Release,Stage,Flag,Registry(lib/organizations/release/).- The flag registry
config/organizations_release.yml(each organization flag declares astage). It ships empty — flags are added as features adopt the layer, so the generated status doc never publishes a rollout state no code honors. - Specs for the layer and registry.
The caller passes the feature flag actor straight through to the backing stage flag, exactly like a direct Feature.enabled? check. Declaring and enforcing a per-flag actor type is a stacked follow-up (!240575), not part of this MR.
Stacked / related
- The generated release status table + developer guide stacks on this branch: !239927
- Actor typing for organization flags stacks on top of that: !240575
- The release model (stages, audiences, platforms, rollout rules) is defined in the handbook: gitlab-com/content-sites/handbook!20007 (merged). This MR implements it.
Status
Nothing is wired to enabled? yet, and the registry ships empty.
Edited by Alex Pooley