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, and org_stage_ga (default_enabled: true).
  • Organizations::Release, Stage, Flag, Registry (lib/organizations/release/).
  • The flag registry config/organizations_release.yml (each organization flag declares a stage). 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.

  • 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

Merge request reports

Loading