Split knowledge_graph feature flag for per-user rollout
What does this MR do and why?
Splits the :knowledge_graph feature flag into two flags to fix mixed actor types and enable per-user rollout.
Problem
The :knowledge_graph flag was used with two different actor types:
-
:instance— for infrastructure (event store subscriptions, internal/admin APIs) -
current_user— for user-facing access (dashboard, sidebar, GraphQL, REST API)
Mixing actor types on a single flag prevents per-user rollout via chatops. Enabling globally (for infra) also enables the UI for everyone, and enabling per-user doesn't activate the infrastructure.
Solution
Split into two flags:
| Flag | Type | Actor | Purpose |
|---|---|---|---|
:knowledge_graph |
beta |
current_user |
Gates user-facing Orbit UI and API access. Supports gradual per-user rollout via chatops. |
:knowledge_graph_infra |
ops |
:instance |
Gates background event subscriptions (cache expiry workers) and internal/admin APIs. |
Rollout strategy
- Enable
:knowledge_graph_infraat the instance level on staging - Gradually roll out
:knowledge_graphto users via chatops
References
- Related MR: !225813 (merged), depends on !225997 (merged)
- Reviewer discussion: !225813 (comment 3132415114)
- Epic: &19744
- Feature flag docs: https://docs.gitlab.com/development/feature_flags/#mixing-actor-types
Edited by Michael Angelo Rivera