// To change feature flags edit this file and run:
//     make gen-feature-toggles
//
// Alternatively run tests in:
//     pkg/services/featuremgmt/toggles_gen_test.go
// twice to generate and validate the feature flag files

package featuremgmt

import (
	"embed"
	"encoding/json"

	featuretoggleapi "github.com/grafana/grafana/pkg/services/featuremgmt/feature_toggle_api"
)

var (
	// Register each toggle here
	standardFeatureFlags = []FeatureFlag{
		{
			Name:        "panelTitleSearch",
			Description: "Search for dashboards using panel title",
			Stage:       FeatureStagePublicPreview,
			Owner:       grafanaSearchAndStorageSquad,
			Expression:  "false",
		},
		{
			Name:         "publicDashboardsEmailSharing",
			Description:  "Enables public dashboard sharing to be restricted to only allowed emails",
			Stage:        FeatureStagePublicPreview,
			Owner:        grafanaOperatorExperienceSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "publicDashboardsScene",
			Description:  "Enables public dashboard rendering using scenes",
			Stage:        FeatureStageGeneralAvailability,
			FrontendOnly: true,
			Owner:        grafanaOperatorExperienceSquad,
			Expression:   "true", // enabled by default
		},
		{
			Name:        "lokiExperimentalStreaming",
			Description: "Support new streaming approach for loki (prototype, needs special loki build)",
			Stage:       FeatureStageExperimental,
			Owner:       grafanaOSSBigTent,
			Expression:  "false",
		},
		{
			Name:        "featureHighlights",
			Description: "Highlight Grafana Enterprise features",
			Stage:       FeatureStageGeneralAvailability,
			Owner:       grafanaOperatorExperienceSquad,
			Expression:  "false",
		},
		{
			Name:        "storage",
			Description: "Configurable storage for dashboards, datasources, and resources",
			Stage:       FeatureStageExperimental,
			Owner:       grafanaSearchAndStorageSquad,
			Expression:  "false",
		},
		{
			Name:         "canvasPanelNesting",
			Description:  "Allow elements nesting",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaDatavizSquad,
			Expression:   "false",
		},
		{
			Name:        "grpcServer",
			Description: "Run the GRPC server",
			Stage:       FeatureStagePublicPreview,
			Owner:       grafanaSearchAndStorageSquad,
			Expression:  "false",
		},
		{
			Name:        "cloudWatchCrossAccountQuerying",
			Description: "Enables cross-account querying in CloudWatch datasources",
			Stage:       FeatureStageGeneralAvailability,
			Expression:  "true", // enabled by default
			Owner:       awsDatasourcesSquad,
		},
		{
			Name:        "alertingBacktesting",
			Description: "Rule backtesting API for alerting",
			Stage:       FeatureStageExperimental,
			Owner:       grafanaAlertingSquad,
			Expression:  "false",
		},
		{
			Name:        "alertingRuleGroupSortByFolderFullpath",
			Description: "Sort alert rule groups by folder full path in the Prometheus rules API",
			Stage:       FeatureStageExperimental,
			Owner:       grafanaAlertingSquad,
			Expression:  "false",
		},
		{
			Name:         "lokiShardSplitting",
			Description:  "Use stream shards to split queries into smaller subqueries",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaObservabilityLogsSquad,
			Expression:   "false",
		},
		{
			Name:         "lokiQuerySplitting",
			Description:  "Split large interval queries into subqueries with smaller time intervals",
			Stage:        FeatureStageGeneralAvailability,
			FrontendOnly: true,
			Owner:        grafanaObservabilityLogsSquad,
			Expression:   "true", // turned on by default
		},
		{
			Name:         "influxdbBackendMigration",
			Description:  "Query InfluxDB InfluxQL without the proxy",
			Stage:        FeatureStageGeneralAvailability,
			FrontendOnly: true,
			Owner:        grafanaPartnerPluginsSquad,
			Expression:   "true", // enabled by default
		},
		{
			Name:            "liveAPIServer",
			Description:     "Registers a live apiserver",
			Stage:           FeatureStageExperimental,
			RequiresDevMode: true,
			HideFromDocs:    true,
			Owner:           grafanaAppPlatformSquad,
			RequiresRestart: true,
			Expression:      "false",
		},
		{
			Name:         "starsFromAPIServer",
			Description:  "populate star status from apiserver",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaFrontendNavigation,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:        "influxqlStreamingParser",
			Description: "Enable streaming JSON parser for InfluxDB datasource InfluxQL query language",
			Stage:       FeatureStageExperimental,
			Owner:       grafanaPartnerPluginsSquad,
			Expression:  "false",
		},
		{
			Name:         "influxdbRunQueriesInParallel",
			Description:  "Enables running InfluxDB Influxql queries in parallel",
			Stage:        FeatureStagePrivatePreview,
			FrontendOnly: false,
			Owner:        grafanaPartnerPluginsSquad,
			Expression:   "false",
		},
		{
			Name:        "lokiLogsDataplane",
			Description: "Changes logs responses from Loki to be compliant with the dataplane specification.",
			Stage:       FeatureStageExperimental,
			Owner:       grafanaOSSBigTent,
			Expression:  "false",
		},
		{
			Name:        "disableSSEDataplane",
			Description: "Disables dataplane specific processing in server side expressions.",
			Stage:       FeatureStageExperimental,
			Owner:       grafanaDatasourcesCoreServicesSquad,
			Expression:  "false",
		},
		{
			Name:        "renderAuthJWT",
			Description: "Uses JWT-based auth for rendering instead of relying on remote cache",
			Stage:       FeatureStageGeneralAvailability,
			Owner:       grafanaOperatorExperienceSquad,
			Expression:  "true",
		},
		{
			Name:        "refactorVariablesTimeRange",
			Description: "Refactor time range variables flow to reduce number of API calls made when query variables are chained",
			Stage:       FeatureStagePublicPreview,
			Owner:       grafanaDashboardsSquad,
			Expression:  "false",
		},
		{
			Name:         "faroDatasourceSelector",
			Description:  "Enable the data source selector within the Frontend Apps section of the Frontend Observability",
			Stage:        FeatureStagePublicPreview,
			FrontendOnly: true,
			Owner:        appO11ySquad,
			Expression:   "false",
		},
		{
			Name:         "faroSessionReplay",
			Description:  "Enable Faro session replay for Grafana",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaSessionReplaySquad,
			Expression:   "false",
		},
		{
			Name:        "awsDatasourcesTempCredentials",
			Description: "Support temporary security credentials in AWS plugins for Grafana Cloud customers",
			Stage:       FeatureStageGeneralAvailability,
			Expression:  "true", // enabled by default
			Owner:       awsDatasourcesSquad,
		},
		{
			Name:         "mlExpressions",
			Description:  "Enable support for Machine Learning in server-side expressions",
			Stage:        FeatureStageExperimental,
			FrontendOnly: false,
			Owner:        grafanaAlertingSquad,
			Expression:   "false",
		},
		{
			Name:            "datasourceAPIServers",
			Description:     "Expose some datasources as apiservers.",
			Stage:           FeatureStageExperimental,
			Owner:           grafanaAppPlatformSquad,
			RequiresRestart: true, // changes the API routing
			Expression:      "false",
		},
		{
			Name:            "grafanaAPIServerWithExperimentalAPIs",
			Description:     "Register experimental APIs with the k8s API server, including all datasources",
			Stage:           FeatureStageExperimental,
			RequiresRestart: true,
			RequiresDevMode: true,
			Owner:           grafanaAppPlatformSquad,
			Expression:      "false",
		},
		{
			Name:            "provisioning",
			Description:     "Enables Git Sync and as-code provisioning for Grafana resources",
			Stage:           FeatureStageGeneralAvailability,
			RequiresRestart: true,
			Owner:           grafanaAppPlatformSquad,
			Expression:      "true",
		},
		{
			Name:            "provisioningFolderMetadata",
			Description:     "Allow setting folder metadata for provisioned folders",
			Stage:           FeatureStageGeneralAvailability,
			RequiresRestart: true,
			Owner:           grafanaAppPlatformSquad,
			Expression:      "true",
		},
		{
			Name:            "provisioningExport",
			Description:     "Enable export functionality for provisioned resources",
			Stage:           FeatureStageExperimental,
			RequiresRestart: true,
			Owner:           grafanaAppPlatformSquad,
			Expression:      "false",
		},
		{
			Name:            "grafanaAPIServerEnsureKubectlAccess",
			Description:     "Start an additional https handler and write kubectl options",
			Stage:           FeatureStageExperimental,
			RequiresDevMode: true,
			RequiresRestart: true,
			Owner:           grafanaAppPlatformSquad,
			Expression:      "false",
		},
		{
			Name:        "awsAsyncQueryCaching",
			Description: "Enable caching for async queries for Redshift and Athena. Requires that the datasource has caching and async query support enabled",
			Stage:       FeatureStageGeneralAvailability,
			Expression:  "true", // enabled by default
			Owner:       awsDatasourcesSquad,
		},
		{
			Name:            "configurableSchedulerTick",
			Description:     "Enable changing the scheduler base interval via configuration option unified_alerting.scheduler_tick_interval",
			Stage:           FeatureStageExperimental,
			FrontendOnly:    false,
			Owner:           grafanaAlertingSquad,
			RequiresRestart: true,
			HideFromDocs:    true,
			Expression:      "false",
		},
		{
			Name:         "dashgpt",
			Description:  "Enable AI powered features in dashboards",
			Stage:        FeatureStageGeneralAvailability,
			FrontendOnly: true,
			Owner:        grafanaDashboardsSquad,
			Expression:   "true", // enabled by default
		},
		{
			Name:         "aiGeneratedDashboardChanges",
			Description:  "Enable AI powered features for dashboards to auto-summary changes when saving",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaDashboardsSquad,
			Expression:   "false",
		},
		{
			Name:         "reportingCsvEncodingOptions",
			Description:  "Enables CSV encoding options in the reporting feature",
			Stage:        FeatureStageExperimental,
			FrontendOnly: false,
			Owner:        grafanaOperatorExperienceSquad,
			Expression:   "false",
		},
		{
			Name:         "reportingHeaderSettings",
			Description:  "Enables configuration of PDF report settings",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaOperatorExperienceSquad,
			Expression:   "false",
		},
		{
			Name:         "reportingFooterSettings",
			Description:  "Enables the configurable footer settings for PDF reports",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaOperatorExperienceSquad,
			Expression:   "false",
		},
		{
			Name:        "sseGroupByDatasource",
			Description: "Send query to the same datasource in a single request when using server side expressions. The `cloudWatchBatchQueries` feature toggle should be enabled if this used with CloudWatch.",
			Stage:       FeatureStageExperimental,
			Owner:       grafanaDatasourcesCoreServicesSquad,
			Expression:  "false",
		},
		{
			Name:        "sseExpressionErrorIsolation",
			Description: "Isolate expression build errors to the broken expression's refID instead of failing the entire pipeline",
			Stage:       FeatureStageExperimental,
			Owner:       grafanaDatasourcesCoreServicesSquad,
			Expression:  "false",
		},
		{
			Name:         "lokiRunQueriesInParallel",
			Description:  "Enables running Loki queries in parallel",
			Stage:        FeatureStagePrivatePreview,
			FrontendOnly: false,
			Owner:        grafanaOSSBigTent,
			Expression:   "false",
		},
		{
			Name:        "externalServiceAccounts",
			Description: "Automatic service account and token setup for plugins",
			Stage:       FeatureStagePublicPreview,
			Owner:       identityAccessTeam,
			Expression:  "false",
		},
		{
			Name:            "kubernetesSnapshots",
			Description:     "Routes snapshot requests from /api to the /apis endpoint",
			Stage:           FeatureStageExperimental,
			Owner:           grafanaAppPlatformSquad,
			RequiresRestart: true, // changes the API routing
			Expression:      "false",
		},
		{
			Name:            "kubernetesLibraryPanels",
			Description:     "Routes library panel requests from /api to the /apis endpoint",
			Stage:           FeatureStageExperimental,
			Owner:           grafanaAppPlatformSquad,
			RequiresRestart: true, // changes the API routing
			Expression:      "false",
		},
		{
			Name:            "kubernetesShortURLs",
			Description:     "Enables k8s short url api and uses it under the hood when handling legacy /api",
			Stage:           FeatureStageExperimental,
			Owner:           grafanaAppPlatformSquad,
			RequiresRestart: true, // changes the API routing
			Expression:      "false",
		},
		{
			Name:         "useKubernetesShortURLsAPI",
			Description:  "Routes short url requests from /api to the /apis endpoint in the frontend. Depends on kubernetesShortURLs",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaSharingSquad,
			FrontendOnly: true,
			Expression:   "false",
		},
		{
			Name:            "kubernetesCorrelations",
			Description:     "Adds support for Kubernetes correlations",
			Stage:           FeatureStageExperimental,
			Owner:           grafanaDataProSquad,
			RequiresRestart: true,
			Expression:      "false",
		},
		{
			Name:            "kubernetesUnifiedStorageQuotas",
			Description:     "Adds support for Kubernetes unified storage quotas",
			Stage:           FeatureStageExperimental,
			Owner:           grafanaSearchAndStorageSquad,
			RequiresRestart: true,
			Expression:      "false",
		},
		{
			Name:            "kubernetesLogsDrilldown",
			Description:     "Adds support for Kubernetes logs drilldown",
			Stage:           FeatureStageExperimental,
			Owner:           grafanaObservabilityLogsSquad,
			RequiresRestart: true,
			Expression:      "false",
		},
		{
			Name:            "kubernetesQueryCaching",
			Description:     "Adds support for Kubernetes querycaching",
			Stage:           FeatureStageExperimental,
			Owner:           grafanaOperatorExperienceSquad,
			RequiresRestart: true,
			Expression:      "false",
		},
		{
			Name:        "dashboardDisableSchemaValidationV1",
			Description: "Disable schema validation for dashboards/v1",
			Stage:       FeatureStageExperimental,
			Owner:       grafanaAppPlatformSquad,
			Expression:  "false",
		},
		{
			Name:        "dashboardDisableSchemaValidationV2",
			Description: "Disable schema validation for dashboards/v2",
			Stage:       FeatureStageExperimental,
			Owner:       grafanaAppPlatformSquad,
			Expression:  "false",
		},
		{
			Name:        "dashboardSchemaValidationLogging",
			Description: "Log schema validation errors so they can be analyzed later",
			Stage:       FeatureStageExperimental,
			Owner:       grafanaAppPlatformSquad,
			Expression:  "false",
		},
		{
			Name:        "scanRowInvalidDashboardParseFallbackEnabled",
			Description: "Enable fallback parsing behavior when scan row encounters invalid dashboard JSON",
			Stage:       FeatureStageExperimental,
			Owner:       grafanaSearchAndStorageSquad,
			Expression:  "false",
		},
		{
			Name:            "datasourceQueryTypes",
			Description:     "Show query type endpoints in datasource API servers (currently hardcoded for testdata, expressions, and prometheus)",
			Stage:           FeatureStageExperimental,
			Owner:           grafanaAppPlatformSquad,
			RequiresRestart: true, // changes the API routing
			Expression:      "false",
		},
		{
			Name:            "datasourceLegacyIdApi",
			Description:     "Register legacy datasource apis that use the numeric id",
			Stage:           FeatureStageExperimental,
			Owner:           grafanaDatasourcesCoreServicesSquad,
			RequiresRestart: true, // affects the routes at startup
			Expression:      "false",
		},
		{
			Name:            "queryService",
			Description:     "Register /apis/query.grafana.app/ -- will eventually replace /api/ds/query",
			Stage:           FeatureStageExperimental,
			Owner:           grafanaDatasourcesCoreServicesSquad,
			RequiresRestart: true, // Adds a route at startup
			Expression:      "false",
		},
		{
			Name:            "queryServiceWithConnections",
			Description:     "Adds datasource connections to the query service",
			Stage:           FeatureStageExperimental,
			Owner:           grafanaDatasourcesCoreServicesSquad,
			RequiresRestart: true, // Adds a route at startup
			Expression:      "false",
		},
		{
			Name:            "useNewAPIsForDatasourceCRUD",
			Description:     "Use the new datasource API groups for datasource CRUD requests",
			Stage:           FeatureStageExperimental,
			FrontendOnly:    true,
			Owner:           grafanaDatasourcesCoreServicesSquad,
			RequiresRestart: true, // Adds a route at startup
			Expression:      "false",
		},
		{
			Name:            "queryServiceRewrite",
			Description:     "Rewrite requests targeting /ds/query to the query service",
			Stage:           FeatureStageExperimental,
			Owner:           grafanaDatasourcesCoreServicesSquad,
			RequiresRestart: true, // changes the API routing
			Expression:      "false",
		},
		{
			Name:         "queryServiceFromUI",
			Description:  "Routes requests to the new query service",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaDatasourcesCoreServicesSquad,
			FrontendOnly: true, // and can change at startup
			Expression:   "false",
		},
		{
			Name:            "datasourcesRerouteLegacyCRUDAPIs",
			Description:     "Handle datasource CRUD requests to the legacy API routes by querying the new datasource api group endpoints behind the scenes.",
			Stage:           FeatureStageExperimental,
			Owner:           grafanaDatasourcesCoreServicesSquad,
			RequiresRestart: false,
			Expression:      "false",
		},
		{
			Name:            "datasourcesApiServerEnableResourceEndpoint",
			Description:     "Handle datasource resource requests to the legacy API routes by querying the new datasource api group endpoints behind the scenes.",
			Stage:           FeatureStageExperimental,
			Owner:           grafanaDatasourcesCoreServicesSquad,
			RequiresRestart: false,
			Expression:      "false",
		},
		{
			Name:            "datasourcesApiserverEnableResourceEndpointRedirect",
			Description:     "redirect datasource resource requests from the legacy API routes to the new datasource api group endpoints.",
			Stage:           FeatureStageExperimental,
			Owner:           grafanaDatasourcesCoreServicesSquad,
			RequiresRestart: false,
			Expression:      "false",
		},
		{
			Name:            "datasourcesQuerierRawOutput",
			Description:     "use raw output mode for the data source querier",
			Stage:           FeatureStageExperimental,
			Owner:           grafanaDatasourcesCoreServicesSquad,
			RequiresRestart: false,
			Expression:      "false",
		},
		{
			Name:        "cloudWatchBatchQueries",
			Description: "Runs CloudWatch metrics queries as separate batches",
			Stage:       FeatureStageGeneralAvailability,
			Owner:       awsDatasourcesSquad,
			Expression:  "false",
		},
		{
			Name:         "cachingOptimizeSerializationMemoryUsage",
			Description:  "If enabled, the caching backend gradually serializes query responses for the cache, comparing against the configured `[caching]max_value_mb` value as it goes. This can can help prevent Grafana from running out of memory while attempting to cache very large query responses.",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaOperatorExperienceSquad,
			FrontendOnly: false,
			Expression:   "false",
		},
		{
			Name:        "alertmanagerRemoteSecondary",
			Description: "Enable Grafana to sync configuration and state with a remote Alertmanager.",
			Stage:       FeatureStageExperimental,
			Owner:       grafanaAlertingSquad,
			Expression:  "false",
		},
		{
			Name:         "alertingProvenanceLockWrites",
			Description:  "Enables a feature to avoid issues with concurrent writes to the alerting provenance table in MySQL",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "alertingUIUseBackendFilters",
			Description:  "Enables the UI to use certain backend-side filters",
			Stage:        FeatureStagePublicPreview,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "true",
		},
		{
			Name:         "alertingUIUseFullyCompatBackendFilters",
			Description:  "Enables the UI to use rules backend-side filters 100% compatible with the frontend filters",
			Stage:        FeatureStagePublicPreview,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "true",
		},
		{
			Name:         "createAlertRuleFromPanel",
			Description:  "Enables creating alert rules from a panel using a drawer UI",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaAlertingSquad,
			FrontendOnly: true,
			Expression:   "false",
		},
		{
			Name:        "alertmanagerRemotePrimary",
			Description: "Enable Grafana to have a remote Alertmanager instance as the primary Alertmanager.",
			Stage:       FeatureStageExperimental,
			Owner:       grafanaAlertingSquad,
			Expression:  "false",
		},
		{
			Name:            "annotationPermissionUpdate",
			Description:     "Change the way annotation permissions work by scoping them to folders and dashboards.",
			Stage:           FeatureStageGeneralAvailability,
			RequiresDevMode: false,
			Expression:      "true", // enabled by default
			Owner:           identityAccessTeam,
		},
		{
			Name:         "annotationsClustering",
			Description:  "Enables annotation clustering and switches to refactored annotation code",
			Stage:        FeatureStagePublicPreview,
			FrontendOnly: true,
			Owner:        grafanaDatavizSquad,
			Expression:   "false",
		},
		{
			Name:         "dashboardScene",
			Description:  "Enables dashboard rendering using scenes for all roles",
			Stage:        FeatureStageGeneralAvailability,
			FrontendOnly: true,
			Owner:        grafanaDashboardsSquad,
			Expression:   "true", // enabled by default
		},
		{
			Name:         "dashboardNewLayouts",
			Description:  "Enables new dashboard layouts",
			Stage:        FeatureStageGeneralAvailability,
			FrontendOnly: false, // The restore backend feature changes behavior based on this flag
			Owner:        grafanaDashboardsSquad,
			Expression:   "true",
		},
		{
			Name:         "dashboardDefaultLayoutSelector",
			Description:  "Enables default layout selector in dashboard settings",
			Stage:        FeatureStageGeneralAvailability,
			FrontendOnly: true,
			Owner:        grafanaDashboardsSquad,
			Expression:   "true",
		},
		{
			Name:         "dashboardAssistantPopover",
			Description:  "Enables the assistant prompt popover on panel click in dashboard view mode",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaDashboardsSquad,
			Expression:   "false",
		},
		{
			Name:         "dashboardUndoRedo",
			Description:  "Enables undo/redo in dynamic dashboards",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaDashboardsSquad,
			Expression:   "false",
		},
		{
			Name:         "unlimitedLayoutsNesting",
			Description:  "Enables unlimited dashboard panel grouping",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaDashboardsSquad,
			Expression:   "false",
		},
		{
			Name:        "sceneCsvExport",
			Description: "Enables CSV export using scenes dashboard architecture",
			Stage:       FeatureStageExperimental,
			Owner:       grafanaDashboardsSquad,
			Expression:  "false",
		},
		{
			Name:         "drilldownRecommendations",
			Description:  "Enables showing recently used drilldowns or recommendations given by the datasource in the AdHocFilters and GroupBy variables",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaDashboardsSquad,
			Expression:   "false",
		},
		{
			Name:         "perPanelNonApplicableDrilldowns",
			Description:  "Enables viewing non-applicable drilldowns on a panel level",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaDashboardsSquad,
			Expression:   "false",
		},
		{
			Name:         "panelGroupBy",
			Description:  "Enables a group by action per panel",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaDashboardsSquad,
			Expression:   "false",
		},
		{
			Name:         "perPanelFiltering",
			Description:  "Enables filtering by grouping labels on the panel level through legend or tooltip",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaDashboardsSquad,
			Expression:   "false",
		},
		{
			Name:         "dashboardFiltersOverview",
			Description:  "Enables the dashboard filters overview pane",
			Stage:        FeatureStagePublicPreview,
			FrontendOnly: true,
			Owner:        grafanaDashboardsSquad,
			Expression:   "false",
		},
		{
			Name:         "feedbackButton",
			Description:  "Enables the feedback button in the dashboard edit sidebar",
			Stage:        FeatureStagePublicPreview,
			FrontendOnly: true,
			Owner:        grafanaDashboardsSquad,
			Expression:   "true",
		},
		{
			Name:         "panelFilterVariable",
			Description:  "Enables use of the `systemPanelFilterVar` variable to filter panels in a dashboard",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaDashboardsSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "pdfTables",
			Description:  "Enables generating table data as PDF in reporting",
			Stage:        FeatureStagePublicPreview,
			FrontendOnly: false,
			Owner:        grafanaOperatorExperienceSquad,
			Expression:   "false",
		},
		{
			Name:         "reportingV2Layouts",
			Description:  "Enable v2 dashboard layout support in reports (auto-grid, tabs, rows)",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaOperatorExperienceSquad,
			Expression:   "false",
		},
		{
			Name:        "reportRenderBinding",
			Description: "Enables render binding support for report rendering",
			Stage:       FeatureStageExperimental,
			Owner:       grafanaOperatorExperienceSquad,
			Expression:  "false",
		},
		{
			Name:         "canvasPanelPanZoom",
			Description:  "Allow pan and zoom in canvas panel",
			Stage:        FeatureStagePublicPreview,
			FrontendOnly: true,
			Owner:        grafanaDatavizSquad,
			Expression:   "false",
		},
		{
			Name:         "timeComparison",
			Description:  "Enables time comparison option in supported panels",
			Stage:        FeatureStagePublicPreview,
			FrontendOnly: true,
			Owner:        grafanaDatavizSquad,
			Expression:   "false",
		},
		{
			Name:         "tableSharedCrosshair",
			Description:  "Enables shared crosshair in table panel",
			FrontendOnly: true,
			Stage:        FeatureStageExperimental,
			Owner:        grafanaDatavizSquad,
			Expression:   "false",
		},
		{
			Name:            "cloudRBACRoles",
			Description:     "Enabled grafana cloud specific RBAC roles",
			Stage:           FeatureStagePublicPreview,
			Owner:           identityAccessTeam,
			HideFromDocs:    true,
			RequiresRestart: true,
			Expression:      "false",
		},
		{
			Name:        "alertingQueryOptimization",
			Description: "Optimizes eligible queries in order to reduce load on datasources",
			Stage:       FeatureStageGeneralAvailability,
			Owner:       grafanaAlertingSquad,
			Expression:  "false",
		},
		{
			Name:            "jitterAlertRulesWithinGroups",
			Description:     "Distributes alert rule evaluations more evenly over time, including spreading out rules within the same group. Disables sequential evaluation if enabled.",
			FrontendOnly:    false,
			Stage:           FeatureStagePublicPreview,
			Owner:           grafanaAlertingSquad,
			HideFromDocs:    true,
			RequiresRestart: true,
			Expression:      "false",
		},
		{
			Name:            "auditLoggingAppPlatform",
			Description:     "Enable audit logging with Kubernetes under app platform",
			Stage:           FeatureStageExperimental,
			Owner:           grafanaOperatorExperienceSquad,
			HideFromDocs:    true,
			RequiresRestart: true,
			Expression:      "false",
		},
		{
			Name:        "secretsManagementAppPlatformUI",
			Description: "Enable the secrets management app platform UI",
			Stage:       FeatureStagePublicPreview,
			Owner:       grafanaOperatorExperienceSquad,
			Expression:  "false",
		},
		{
			Name:         "secretsKeeperUI",
			Description:  "Enable the Secrets Keeper management UI for configuring external secret storage",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaOperatorExperienceSquad,
			Expression:   "false",
		},
		{
			Name:         "alertingSaveStatePeriodic",
			Description:  "Writes the state periodically to the database, asynchronous to rule evaluation",
			Stage:        FeatureStagePrivatePreview,
			FrontendOnly: false,
			Owner:        grafanaAlertingSquad,
			Expression:   "false",
		},
		{
			Name:         "alertingSaveStateCompressed",
			Description:  "Enables the compressed protobuf-based alert state storage. Default is enabled.",
			Stage:        FeatureStagePublicPreview,
			FrontendOnly: false,
			Owner:        grafanaAlertingSquad,
			Expression:   "true",
		},
		{
			Name:        "scopeApi",
			Description: "In-development feature flag for the scope api using the app platform.",
			Stage:       FeatureStageExperimental,
			Owner:       grafanaAppPlatformSquad,
			Expression:  "false",
		},
		{
			Name:         "useScopeSingleNodeEndpoint",
			Description:  "Use the single node endpoint for the scope api. This is used to fetch the scope parent node.",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaOperatorExperienceSquad,
			Expression:   "false",
			FrontendOnly: true,
			HideFromDocs: true,
		},
		{
			Name:         "useMultipleScopeNodesEndpoint",
			Description:  "Makes the frontend use the 'names' param for fetching multiple scope nodes at once",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaOperatorExperienceSquad,
			Expression:   "false",
			FrontendOnly: true,
			HideFromDocs: true,
		},
		{
			Name:         "logQLScope",
			Description:  "In-development feature that will allow injection of labels into loki queries.",
			Stage:        FeatureStagePrivatePreview,
			Owner:        grafanaOSSBigTent,
			Expression:   "false",
			HideFromDocs: true,
		},
		{
			Name:         "sqlExpressions",
			Description:  "Enables SQL Expressions, which can execute SQL queries against data source results.",
			Stage:        FeatureStagePublicPreview,
			FrontendOnly: false,
			Owner:        grafanaDatasourcesCoreServicesSquad,
			Expression:   "false",
		},
		{
			Name:         "sqlExpressionsColumnAutoComplete",
			Description:  "Enables column autocomplete for SQL Expressions",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaDataProSquad,
			Expression:   "false",
		},
		{
			Name:            "kubernetesAggregator",
			Description:     "Enable grafana's embedded kube-aggregator",
			Stage:           FeatureStageExperimental,
			Owner:           grafanaAppPlatformSquad,
			RequiresRestart: true,
			Expression:      "false",
		},
		{
			Name:            "kubernetesAggregatorCapTokenAuth",
			Description:     "Enable CAP token based authentication in grafana's embedded kube-aggregator",
			Stage:           FeatureStageExperimental,
			Owner:           grafanaAppPlatformSquad,
			RequiresRestart: true,
			Expression:      "false",
		},
		{
			Name:         "groupByVariable",
			Description:  "Enable groupBy variable support in scenes dashboards",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaDashboardsSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:            "scopeFilters",
			Description:     "Enables the use of scope filters in Grafana",
			FrontendOnly:    false,
			Stage:           FeatureStageExperimental,
			Owner:           grafanaDashboardsSquad,
			RequiresRestart: false,
			HideFromDocs:    true,
			Expression:      "false",
		},
		{
			Name:         "oauthRequireSubClaim",
			Description:  "Require that sub claims is present in oauth tokens.",
			Stage:        FeatureStageExperimental,
			Owner:        identityAccessTeam,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "refreshTokenRequired",
			Description:  "Require that refresh tokens are present in oauth tokens.",
			Stage:        FeatureStageExperimental,
			Owner:        identityAccessTeam,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "newDashboardWithFiltersAndGroupBy",
			Description:  "Enables filters and group by variables on all new dashboards. Variables are added only if default data source supports filtering.",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaDashboardsSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "dashboardAdHocAndGroupByWrapper",
			Description:  "Wraps the ad hoc and group by variables in a single wrapper, with all other variables below it",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaDashboardsSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "dashboardUnifiedDrilldownControls",
			Description:  "Renders ad hoc filters and group by in a single unified control",
			Stage:        FeatureStagePrivatePreview,
			FrontendOnly: true,
			Owner:        grafanaDashboardsSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "adHocFilterDefaultValues",
			Description:  "Enables configuring default origin filters for ad-hoc filter variables",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaDashboardsSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "cloudWatchNewLabelParsing",
			Description:  "Updates CloudWatch label parsing to be more accurate",
			Stage:        FeatureStageGeneralAvailability,
			Expression:   "true", // enabled by default
			Owner:        awsDatasourcesSquad,
			FrontendOnly: false,
		},
		{
			Name:            "disableNumericMetricsSortingInExpressions",
			Description:     "In server-side expressions, disable the sorting of numeric-kind metrics by their metric name or labels.",
			Stage:           FeatureStageExperimental,
			FrontendOnly:    false,
			Owner:           grafanaOSSBigTent,
			RequiresRestart: true,
			Expression:      "false",
		},
		{
			Name:         "grafanaManagedRecordingRules",
			Description:  "Enables Grafana-managed recording rules.",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "queryLibrary",
			Description:  "Enables Saved queries (query library) feature",
			Stage:        FeatureStagePublicPreview,
			Owner:        grafanaSharingSquad,
			FrontendOnly: false,
			Expression:   "false",
		},
		{
			Name:         "playlistsRBAC",
			Description:  "Enables RBAC for playlists",
			Stage:        FeatureStageGeneralAvailability,
			Owner:        grafanaSharingSquad,
			FrontendOnly: false,
			Expression:   "false",
		},
		{
			Name:         "savedQueriesRBAC",
			Description:  "Enables Saved queries (query library) RBAC permissions",
			Stage:        FeatureStagePublicPreview,
			Owner:        grafanaSharingSquad,
			FrontendOnly: false,
			Expression:   "false",
		},
		{
			Name:         "newSavedQueriesExperience",
			Description:  "Enables the new Saved queries (query library) modal experience",
			Stage:        FeatureStagePublicPreview,
			Owner:        grafanaSharingSquad,
			FrontendOnly: true,
			Expression:   "false",
		},
		{
			Name:         "newUnconfiguredPanel",
			Description:  "Enables the new unconfigured panel experience",
			Stage:        FeatureStageGeneralAvailability,
			Owner:        grafanaSharingSquad,
			FrontendOnly: true,
			Expression:   "true",
		},
		{
			Name:         "dashboardLibrary",
			Description:  "Displays datasource provisioned dashboards in dashboard empty page, only when coming from datasource configuration page",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaSharingSquad,
			FrontendOnly: false,
			Expression:   "false",
		},
		{
			Name:         "suggestedDashboards",
			Description:  "Displays datasource provisioned and community dashboards in dashboard empty page, only when coming from datasource configuration page",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaSharingSquad,
			FrontendOnly: false,
			Expression:   "false",
		},
		{
			Name:         "dashboardValidatorApp",
			Description:  "Enables dashboard validator app to run compatibility checks between a dashboard and data source",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaSharingSquad,
			FrontendOnly: false,
			Expression:   "false",
		},
		{
			Name:         "dashboardTemplates",
			Description:  "Enables a flow to get started with a new dashboard from a template",
			Stage:        FeatureStagePublicPreview,
			Owner:        grafanaSharingSquad,
			FrontendOnly: false,
			Expression:   "false",
		},
		{
			Name:         "dashboardTemplatesAssistantButton",
			Description:  "Enables the Assistant button in the dashboard templates card",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaSharingSquad,
			FrontendOnly: true,
			Expression:   "false",
		},
		{
			Name:         "suggestedDashboardsAssistantButton",
			Description:  "Enables the 'Customize with Assistant' button on suggested dashboard cards",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaSharingSquad,
			FrontendOnly: true,
			Expression:   "false",
		},
		{
			Name:         "alertingListViewV2",
			Description:  "Enables the new alert list view design",
			Stage:        FeatureStageGeneralAvailability,
			Owner:        grafanaAlertingSquad,
			FrontendOnly: true,
			Expression:   "true",
		},
		{
			Name:         "alertingAlertListPanelEnhancements",
			Description:  "Enables enhanced stat mode for the Alert List panel with thresholds, value mappings, and linking",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaAlertingSquad,
			Expression:   "false",
		},
		{
			Name:         "alertingNavigationV2",
			Description:  "Enables the new Alerting navigation structure with improved menu grouping",
			Stage:        FeatureStageGeneralAvailability,
			Owner:        grafanaAlertingSquad,
			FrontendOnly: false,
			Expression:   "true",
		},

		{
			Name:         "alertingDisableSendAlertsExternal",
			Description:  "Disables the ability to send alerts to an external Alertmanager datasource.",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "alertingSyncNotifiersApiMigration",
			Description:  "Use the new k8s API for fetching integration type schemas",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaAlertingSquad,
			FrontendOnly: true,
			Expression:   "false",
		},
		{
			Name:         "preserveDashboardStateWhenNavigating",
			Description:  "Enables possibility to preserve dashboard variables and time range when navigating between dashboards",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaDashboardsSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "alertingCentralAlertHistory",
			Description:  "Enables the new central alert history.",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaAlertingSquad,
			FrontendOnly: false, // changes navtree from backend
			Expression:   "false",
		},
		{
			Name:        "pluginProxyPreserveTrailingSlash",
			Description: "Preserve plugin proxy trailing slash.",
			Stage:       FeatureStageGeneralAvailability,
			Owner:       grafanaPluginsPlatformSquad,
			Expression:  "false", // disabled by default
		},
		{
			Name:        "azureMonitorPrometheusExemplars",
			Description: "Allows configuration of Azure Monitor as a data source that can provide Prometheus exemplars",
			Stage:       FeatureStageGeneralAvailability,
			Owner:       grafanaPartnerPluginsSquad,
			Expression:  "true", // enabled by default
		},
		{
			Name:         "authZGRPCServer",
			Description:  "Enables the gRPC server for authorization",
			Stage:        FeatureStageExperimental,
			Owner:        identityAccessTeam,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "zanzana",
			Description:  "Use openFGA as authorization engine.",
			Stage:        FeatureStageExperimental,
			Owner:        identityAccessTeam,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "zanzanaNoLegacyClient",
			Description:  "Use openFGA as main authorization engine and disable legacy RBAC clietn.",
			Stage:        FeatureStageExperimental,
			Owner:        identityAccessTeam,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:            "reloadDashboardsOnParamsChange",
			Description:     "Enables reload of dashboards on scopes, time range and variables changes",
			FrontendOnly:    false,
			Stage:           FeatureStageExperimental,
			Owner:           grafanaDashboardsSquad,
			RequiresRestart: false,
			HideFromDocs:    true,
			Expression:      "false",
		},
		{
			Name:            "enableScopesInMetricsExplore",
			Description:     "Enables the scopes usage in Metrics Explore",
			FrontendOnly:    false,
			Stage:           FeatureStageExperimental,
			Owner:           grafanaDashboardsSquad,
			RequiresRestart: false,
			HideFromDocs:    true,
			Expression:      "false",
		},
		{
			Name:        "cloudWatchRoundUpEndTime",
			Description: "Round up end time for metric queries to the next minute to avoid missing data",
			Stage:       FeatureStageGeneralAvailability,
			Owner:       awsDatasourcesSquad,
			Expression:  "true",
		},
		{
			Name:        "prometheusAzureOverrideAudience",
			Description: "Deprecated. Allow override default AAD audience for Azure Prometheus endpoint. Enabled by default. This feature should no longer be used and will be removed in the future.",
			Stage:       FeatureStageDeprecated,
			Owner:       grafanaPartnerPluginsSquad,
			Expression:  "true", // Enabled by default for now
		},

		{
			Name:            "dataplaneAggregator",
			Description:     "Enable grafana dataplane aggregator",
			Stage:           FeatureStageExperimental,
			Owner:           grafanaAppPlatformSquad,
			RequiresRestart: true,
			Expression:      "false",
		},
		{
			Name:         "vizActionsAuth",
			Description:  "Allows authenticated API calls in actions",
			Stage:        FeatureStagePublicPreview,
			Owner:        grafanaDatavizSquad,
			FrontendOnly: true,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "alertingPrometheusRulesPrimary",
			Description:  "Uses Prometheus rules as the primary source of truth for ruler-enabled data sources",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaAlertingSquad,
			FrontendOnly: true,
			Expression:   "false",
		},
		{
			Name:         "exploreLogsShardSplitting",
			Description:  "Deprecated. Replace with lokiShardSplitting. Used in Logs Drilldown to split queries into multiple queries based on the number of shards",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaObservabilityLogsSquad,
			Expression:   "false",
		},
		{
			Name:         "exploreLogsAggregatedMetrics",
			Description:  "Used in Logs Drilldown to query by aggregated metrics",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaObservabilityLogsSquad,
			Expression:   "false",
		},
		{
			Name:         "appPlatformGrpcClientAuth",
			Description:  "Enables the gRPC client to authenticate with the App Platform by using ID & access tokens",
			Stage:        FeatureStageExperimental,
			Owner:        identityAccessTeam,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "groupAttributeSync",
			Description:  "Enable the groupsync extension for managing Group Attribute Sync feature",
			Stage:        FeatureStagePrivatePreview,
			Owner:        identityAccessTeam,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "alertingQueryAndExpressionsStepMode",
			Description:  "Enables step mode for alerting queries and expressions",
			Stage:        FeatureStageGeneralAvailability,
			Owner:        grafanaAlertingSquad,
			FrontendOnly: true,
			Expression:   "true",
		},
		{
			Name:        "improvedExternalSessionHandling",
			Description: "Enables improved support for OAuth external sessions. After enabling this feature, users might need to re-authenticate themselves.",
			Stage:       FeatureStageGeneralAvailability,
			Expression:  "true", // enabled by default
			Owner:       identityAccessTeam,
		},
		{
			Name:        "useSessionStorageForRedirection",
			Description: "Use session storage for handling the redirection after login",
			Stage:       FeatureStageGeneralAvailability,
			Owner:       identityAccessTeam,
			Expression:  "true",
		},
		{
			Name:        "rolePickerDrawer",
			Description: "Enables the new role picker drawer design",
			Stage:       FeatureStageExperimental,
			Owner:       identityAccessTeam,
			Expression:  "false",
		},
		{
			Name:         "managedDualWriter",
			Description:  "Pick the dual write mode from database configs",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaSearchAndStorageSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:        "pluginsSriChecks",
			Description: "Enables SRI checks for plugin assets",
			Stage:       FeatureStageGeneralAvailability,
			Owner:       grafanaPluginsPlatformSquad,
			Expression:  "false", // disabled by default
		},
		{
			Name:        "unifiedStorageBigObjectsSupport",
			Description: "Enables to save big objects in blob storage",
			Stage:       FeatureStageExperimental,
			Owner:       grafanaSearchAndStorageSquad,
			Expression:  "false",
		},
		{
			Name:        "timeRangeProvider",
			Description: "Enables time pickers sync",
			Stage:       FeatureStageExperimental,
			Owner:       grafanaFrontendPlatformSquad,
			Expression:  "false",
		},
		{
			Name:         "timeRangePan",
			Description:  "Enables time range panning functionality",
			Stage:        FeatureStageGeneralAvailability,
			FrontendOnly: true,
			Owner:        grafanaDatavizSquad,
			Expression:   "true",
		},
		{
			Name:         "newTimeRangeZoomShortcuts",
			Description:  "Enables new keyboard shortcuts for time range zoom operations",
			Stage:        FeatureStageGeneralAvailability,
			FrontendOnly: true,
			Owner:        grafanaDatavizSquad,
			Expression:   "true",
		},
		{
			Name:        "azureMonitorDisableLogLimit",
			Description: "Disables the log limit restriction for Azure Monitor when true. The limit is enabled by default.",
			Stage:       FeatureStageGeneralAvailability,
			Owner:       grafanaPartnerPluginsSquad,
			Expression:  "false",
		},
		{
			Name:            "playlistsReconciler",
			Description:     "Enables experimental reconciler for playlists",
			Stage:           FeatureStageExperimental,
			Owner:           grafanaAppPlatformSquad,
			RequiresRestart: true,
			Expression:      "false",
		},
		{
			Name:         "prometheusSpecialCharsInLabelValues",
			Description:  "Adds support for quotes and special characters in label values for Prometheus queries",
			FrontendOnly: true,
			Stage:        FeatureStageExperimental,
			Owner:        grafanaOSSBigTent,
			Expression:   "false",
		},
		{
			Name:            "enableExtensionsAdminPage",
			Description:     "Enables the extension admin page regardless of development mode",
			Stage:           FeatureStageExperimental,
			Owner:           grafanaPluginsPlatformSquad,
			RequiresRestart: true,
			Expression:      "false",
		},
		{
			Name:        "enableSCIM",
			Description: "Enables SCIM support for user and group management",
			Stage:       FeatureStageGeneralAvailability,
			Owner:       identityAccessTeam,
			Expression:  "true",
		},
		{
			Name:         "crashDetection",
			Description:  "Enables browser crash detection reporting to Faro.",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaObservabilityTracesAndProfilingSquad,
			FrontendOnly: true,
			Expression:   "false",
		},
		{
			Name:         "alertingUIOptimizeReducer",
			Description:  "Enables removing the reducer from the alerting UI when creating a new alert rule and using instant query",
			Stage:        FeatureStageGeneralAvailability,
			FrontendOnly: true,
			Owner:        grafanaAlertingSquad,
			Expression:   "true", // enabled by default
		},
		{
			Name:        "azureMonitorEnableUserAuth",
			Description: "Enables user auth for Azure Monitor datasource only",
			Stage:       FeatureStageGeneralAvailability,
			Owner:       grafanaPartnerPluginsSquad,
			Expression:  "true", // Enabled by default for now
		},
		{
			Name:         "alertingAIGenAlertRules",
			Description:  "Enable AI-generated alert rules.",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "alertingAIFeedback",
			Description:  "Enable AI-generated feedback from the Grafana UI.",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "alertingAIImproveAlertRules",
			Description:  "Enable AI-improve alert rules labels and annotations.",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "alertingAIGenTemplates",
			Description:  "Enable AI-generated alerting templates.",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "alertingEnrichmentPerRule",
			Description:  "Enable enrichment per rule in the alerting UI.",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "alertingEnrichmentAssistantInvestigations",
			Description:  "Enable Assistant Investigations enrichment type.",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "alertingAIAnalyzeCentralStateHistory",
			Description:  "Enable AI-analyze central state history.",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "alertingNotificationsStepMode",
			Description:  "Enables simplified step mode in the notifications section",
			Stage:        FeatureStageGeneralAvailability,
			Owner:        grafanaAlertingSquad,
			FrontendOnly: true,
			Expression:   "true",
		},
		{
			Name:         "unifiedStorageSearchUI",
			Description:  "Enable unified storage search UI",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaSearchAndStorageSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:        "elasticsearchCrossClusterSearch",
			Description: "Enables cross cluster search in the Elasticsearch data source",
			Stage:       FeatureStageGeneralAvailability,
			Owner:       grafanaPartnerPluginsSquad,
			Expression:  "false",
		},
		{
			// Remove this flag once Loki v4 is released and the min supported version is v3.0+,
			// since users on v2.9 need it to disable the feature, as it doesn't work for them.
			Name:        "lokiLabelNamesQueryApi",
			Description: "Defaults to using the Loki `/labels` API instead of `/series`",
			Stage:       FeatureStageGeneralAvailability,
			Owner:       grafanaOSSBigTent,
			Expression:  "true",
		},
		{
			Name:        "improvedExternalSessionHandlingSAML",
			Description: "Enables improved support for SAML external sessions. Ensure the NameID format is correctly configured in Grafana for SAML Single Logout to function properly.",
			Stage:       FeatureStageGeneralAvailability,
			Expression:  "true", // enabled by default
			Owner:       identityAccessTeam,
		},
		{
			Name:         "teamHttpHeadersTempo",
			Description:  "Enables LBAC for datasources for Tempo to apply LBAC filtering of traces to the client requests for users in teams",
			Stage:        FeatureStageExperimental,
			FrontendOnly: false,
			Owner:        identityAccessTeam,
			Expression:   "false",
		},
		{
			Name:         "teamHttpHeadersFromAppPlatform",
			Description:  "Use the Kubernetes TeamLBACRule API for team HTTP headers on datasource query requests",
			Stage:        FeatureStageExperimental,
			FrontendOnly: false,
			Owner:        identityAccessTeam,
			Expression:   "false",
		},
		{
			Name:         "teamLBACApiReadFromAppPlatform",
			Description:  "Use the Kubernetes TeamLBACRule API for reading team LBAC rules in the legacy API server",
			Stage:        FeatureStageExperimental,
			FrontendOnly: false,
			Owner:        identityAccessTeam,
			Expression:   "false",
		},
		{
			Name:        "grafanaAdvisor",
			Description: "Enables Advisor app",
			Stage:       FeatureStageGeneralAvailability,
			Owner:       grafanaPluginsPlatformSquad,
			Expression:  "true",
		},
		{
			Name:        "elasticsearchImprovedParsing",
			Description: "Enables less memory intensive Elasticsearch result parsing",
			Stage:       FeatureStageExperimental,
			Owner:       grafanaPartnerPluginsSquad,
			Expression:  "false",
		},
		{
			Name:            "datasourceConnectionsTab",
			Description:     "Shows defined connections for a data source in the plugins detail page",
			Stage:           FeatureStagePrivatePreview,
			Owner:           grafanaPluginsPlatformSquad,
			RequiresDevMode: false,
			FrontendOnly:    true,
			Expression:      "false",
		},
		{
			Name:         "fetchRulesUsingPost",
			Description:  "Use a POST request to list rules by passing down the namespaces user has access to",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "fetchRulesInCompactMode",
			Description:  "Add compact=true when fetching rules",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "newLogsPanel",
			Description:  "Enables the new logs panel",
			Stage:        FeatureStageGeneralAvailability,
			FrontendOnly: true,
			Owner:        grafanaObservabilityLogsSquad,
			Expression:   "true",
		},
		{
			Name:            "grafanaconThemes",
			Description:     "Enables the temporary themes for GrafanaCon",
			Stage:           FeatureStageGeneralAvailability,
			Owner:           grafanaFrontendPlatformSquad,
			HideFromDocs:    true,
			RequiresRestart: true,
			Expression:      "true",
		},
		{
			Name:         "alertingJiraIntegration",
			Description:  "Enables the new Jira integration for contact points in cloud alert managers.",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaAlertingSquad,
			FrontendOnly: true,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:            "alertingUseNewSimplifiedRoutingHashAlgorithm",
			Description:     "",
			Stage:           FeatureStagePublicPreview,
			Owner:           grafanaAlertingSquad,
			HideFromDocs:    true,
			RequiresRestart: true,
			Expression:      "true",
		},
		{
			Name:         "useScopesNavigationEndpoint",
			Description:  "Use the scopes navigation endpoint instead of the dashboardbindings endpoint",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaOperatorExperienceSquad,
			FrontendOnly: true,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "scopeSearchAllLevels",
			Description:  "Enable scope search to include all levels of the scope node tree",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaOperatorExperienceSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "alertingRuleVersionHistoryRestore",
			Description:  "Enables the alert rule version history restore feature",
			FrontendOnly: true,
			Stage:        FeatureStageGeneralAvailability,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "true", // enabled by default
		},
		{
			Name:         "newShareReportDrawer",
			Description:  "Enables the report creation drawer in a dashboard",
			Stage:        FeatureStagePublicPreview,
			Owner:        grafanaOperatorExperienceSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "rendererDisableAppPluginsPreload",
			Description:  "Disable pre-loading app plugins when the request is coming from the renderer",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaOperatorExperienceSquad,
			HideFromDocs: true,
			FrontendOnly: true,
			Expression:   "false",
		},
		{
			Name:         "assetSriChecks",
			Description:  "Enables SRI checks for Grafana JavaScript assets",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaFrontendOpsWG,
			FrontendOnly: true,
			Expression:   "false",
		},
		{
			Name:        "alertRuleRestore",
			Description: "Enables the alert rule restore feature",
			Stage:       FeatureStagePublicPreview,
			Owner:       grafanaAlertingSquad,
			Expression:  "true", // enabled by default
		},
		{
			Name:         "infinityRunQueriesInParallel",
			Description:  "Enables running Infinity queries in parallel",
			Stage:        FeatureStagePrivatePreview,
			FrontendOnly: false,
			Owner:        grafanaOSSBigTent,
			Expression:   "false",
		},
		{
			Name:         "alertingMigrationUI",
			Description:  "Enables the alerting migration UI, to migrate data source-managed rules to Grafana-managed rules",
			FrontendOnly: true,
			Stage:        FeatureStageGeneralAvailability,
			Owner:        grafanaAlertingSquad,
			Expression:   "true",
		},
		{
			Name:         "alertingImportYAMLUI",
			Description:  "Enables a UI feature for importing rules from a Prometheus file to Grafana-managed rules",
			FrontendOnly: true,
			Stage:        FeatureStageGeneralAvailability,
			Owner:        grafanaAlertingSquad,
			Expression:   "true",
		},
		{
			Name:         "alertingMigrationWizardUI",
			Description:  "Enables the migration wizard UI to migrate alert rules and notification resources from external sources to Grafana Alerting",
			FrontendOnly: true,
			Stage:        FeatureStageExperimental,
			Owner:        grafanaAlertingSquad,
			Expression:   "false",
		},
		{
			Name:        "azureMonitorLogsBuilderEditor",
			Description: "Enables the logs builder mode for the Azure Monitor data source",
			Stage:       FeatureStagePublicPreview,
			Owner:       grafanaPartnerPluginsSquad,
			Expression:  "false",
		},
		{
			Name:        "localeFormatPreference",
			Description: "Specifies the locale so the correct format for numbers and dates can be shown",
			Stage:       FeatureStageDeprecated, // not continuing the work for now, will be removed
			Owner:       grafanaFrontendPlatformSquad,
			Expression:  "false",
		},
		{
			Name:         "unifiedStorageGrpcConnectionPool",
			Description:  "Enables the unified storage grpc connection pool",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaSearchAndStorageSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "alertingRulePermanentlyDelete",
			Description:  "Enables UI functionality to permanently delete alert rules",
			FrontendOnly: true,
			Stage:        FeatureStageGeneralAvailability,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "true", // enabled by default
		},
		{
			Name:         "alertingRuleRecoverDeleted",
			Description:  "Enables the UI functionality to recover and view deleted alert rules",
			FrontendOnly: false, // changes navtree from the backend
			Stage:        FeatureStageGeneralAvailability,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "true", // enabled by default
		},
		{
			Name:         "multiTenantTempCredentials",
			Description:  "use multi-tenant path for awsTempCredentials",
			Stage:        FeatureStageExperimental,
			HideFromDocs: true,
			Owner:        awsDatasourcesSquad,
			Expression:   "false",
		},
		{
			Name:         "unifiedNavbars",
			Description:  "Enables unified navbars",
			Stage:        FeatureStageGeneralAvailability,
			Owner:        grafanaPluginsPlatformSquad,
			FrontendOnly: true,
			Expression:   "false", // enabled by default
		},
		{
			Name:         "logsPanelControls",
			Description:  "Enables a control component for the logs panel in Explore",
			Stage:        FeatureStagePublicPreview,
			FrontendOnly: true,
			Owner:        grafanaObservabilityLogsSquad,
			Expression:   "true",
		},
		{
			Name:         "metricsFromProfiles",
			Description:  "Enables creating metrics from profiles and storing them as recording rules",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaObservabilityTracesAndProfilingSquad,
			FrontendOnly: true,
			Expression:   "false",
		},
		{
			Name:         "grafanaAssistantInProfilesDrilldown",
			Description:  "Enables integration with Grafana Assistant in Profiles Drilldown",
			Stage:        FeatureStageGeneralAvailability,
			Owner:        grafanaObservabilityTracesAndProfilingSquad,
			FrontendOnly: true,
			Expression:   "true",
		},
		{
			Name:        "tempoAlerting",
			Description: "Enables creating alerts from Tempo data source",
			Stage:       FeatureStageExperimental,
			Owner:       grafanaDataSourcesPlugins,
			Expression:  "false",
		},
		{
			Name:         "pluginsAutoUpdate",
			Description:  "Enables auto-updating of users installed plugins",
			Stage:        FeatureStageExperimental,
			FrontendOnly: false,
			Owner:        grafanaPluginsPlatformSquad,
			Expression:   "false",
		},
		{
			Name:         "alertingListViewV2PreviewToggle",
			Description:  "Enables the alerting list view v2 preview toggle",
			FrontendOnly: true,
			Stage:        FeatureStagePublicPreview,
			Owner:        grafanaAlertingSquad,
			Expression:   "true",
		},
		{
			Name:        "alertRuleUseFiredAtForStartsAt",
			Description: "Use FiredAt for StartsAt when sending alerts to Alertmaanger",
			Stage:       FeatureStageExperimental,
			Owner:       grafanaAlertingSquad,
			Expression:  "false",
		},
		{
			Name:         "alertingBulkActionsInUI",
			Description:  "Enables the alerting bulk actions in the UI",
			FrontendOnly: true,
			Stage:        FeatureStageGeneralAvailability,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "true", // enabled by default
		},
		{
			Name:         "kubernetesAuthZResourcePermissionsRedirect",
			Description:  "Redirects the traffic from the legacy resource permissions endpoints to the new K8s AuthZ endpoints",
			Stage:        FeatureStageExperimental,
			Owner:        identityAccessTeam,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "kubernetesAuthzResourcePermissionApis",
			Description:  "Registers AuthZ resource permission /apis endpoints",
			Stage:        FeatureStageExperimental,
			Owner:        identityAccessTeam,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "kubernetesAuthzZanzanaSync",
			Description:  "Enable sync of Zanzana authorization store on AuthZ CRD mutations",
			Stage:        FeatureStageExperimental,
			Owner:        identityAccessTeam,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "kubernetesAuthzGlobalRolesApi",
			Description:  "Registers AuthZ Global Roles /apis endpoint",
			Stage:        FeatureStageExperimental,
			Owner:        identityAccessTeam,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "kubernetesAuthzRolesApi",
			Description:  "Registers AuthZ Roles /apis endpoint",
			Stage:        FeatureStageExperimental,
			Owner:        identityAccessTeam,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "kubernetesAuthzTeamLBACRuleApi",
			Description:  "Registers AuthZ TeamLBACRule /apis endpoint",
			Stage:        FeatureStageExperimental,
			Owner:        identityAccessTeam,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "kubernetesAuthzRoleBindingsApi",
			Description:  "Registers AuthZ Role Bindings /apis endpoint",
			Stage:        FeatureStageExperimental,
			Owner:        identityAccessTeam,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "kubernetesAuthzRolesAndRoleBindingsRedirect",
			Description:  "Redirects the traffic from the legacy roles and role bindings endpoints to the new K8s AuthZ endpoints",
			Stage:        FeatureStageExperimental,
			Owner:        identityAccessTeam,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "kubernetesAuthzDatasourceResourcePermissions",
			Description:  "Enables datasource resource permissions via the K8s IAM resource permission APIs",
			Stage:        FeatureStageExperimental,
			Owner:        identityAccessTeam,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:        "restoreDashboards",
			Description: "Enables restore deleted dashboards feature",
			Stage:       FeatureStageGeneralAvailability,
			Owner:       grafanaFrontendNavigation,
			Expression:  "true",
		},
		{
			Name:         "recentlyViewedDashboards",
			Description:  "Enables recently viewed dashboards section in the browsing dashboard page",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaFrontendNavigation,
			FrontendOnly: true,
			Expression:   "false",
		},
		{
			Name:         "experimentRecentlyViewedDashboards",
			Description:  "A/A test for recently viewed dashboards feature",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaFrontendNavigation,
			FrontendOnly: true,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "createdByMeSearchFilter",
			Description:  "Enables the created by me search filter on the browse dashboards page",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaFrontendNavigation,
			FrontendOnly: true,
			Expression:   "false",
		},
		{
			Name:         "alertEnrichment",
			Description:  "Enable configuration of alert enrichments in Grafana Cloud.",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "alertEnrichmentMultiStep",
			Description:  "Allow multiple steps per enrichment.",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "alertEnrichmentConditional",
			Description:  "Enable conditional alert enrichment steps.",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "alertEnrichmentPreview",
			Description:  "Enable alert enrichment preview (notification-history-based) in view and edit drawers.",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "alertingImportAlertmanagerAPI",
			Description:  "Enables the API to import Alertmanager configuration",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "alertingDisableDMAinUI",
			Description:  "Disables the DMA feature in the UI",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "sharingDashboardImage",
			Description:  "Enables image sharing functionality for dashboards",
			Stage:        FeatureStageGeneralAvailability,
			Owner:        grafanaSharingSquad,
			FrontendOnly: true,
			Expression:   "true",
		},
		{
			Name:        "preferLibraryPanelTitle",
			Description: "Prefer library panel title over viz panel title.",
			Stage:       FeatureStagePrivatePreview,
			Owner:       grafanaDashboardsSquad,
			Expression:  "false",
		},
		{
			Name:         "newInfluxDSConfigPageDesign",
			Description:  "Enables new design for the InfluxDB data source configuration page",
			Stage:        FeatureStagePrivatePreview,
			FrontendOnly: false,
			Owner:        grafanaPartnerPluginsSquad,
			Expression:   "false",
		},
		{
			Name:         "enableAppChromeExtensions",
			Description:  "Set this to true to enable all app chrome extensions registered by plugins.",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaPluginsPlatformSquad,
			HideFromDocs: true,
			FrontendOnly: true,
			Expression:   "false", // extensions will be disabled by default
		},
		{
			Name:         "enableDashboardEmptyExtensions",
			Description:  "Set this to true to enable all dashboard empty state extensions registered by plugins.",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaDashboardsSquad,
			HideFromDocs: true,
			FrontendOnly: true,
			Expression:   "false", // extensions will be disabled by default
		},
		{
			Name:         "foldersAppPlatformAPI",
			Description:  "Enables use of app platform API for folders",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaFrontendNavigation,
			HideFromDocs: true,
			FrontendOnly: true,
			Expression:   "false",
		},
		{
			Name:         "otelLogsFormatting",
			Description:  "Applies OTel formatting templates to displayed logs",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaObservabilityLogsSquad,
			Expression:   "false",
		},
		{
			Name:         "alertingNotificationHistory",
			Description:  "Enables the notification history feature",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "unifiedStorageSearchDualReaderEnabled",
			Description:  "Enable dual reader for unified storage search",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaSearchAndStorageSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "dashboardLevelTimeMacros",
			Description:  "Supports __from and __to macros that always use the dashboard level time range",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaDashboardsSquad,
			FrontendOnly: true,
			Expression:   "false",
		},
		{
			Name:         "alertmanagerRemoteSecondaryWithRemoteState",
			Description:  "Starts Grafana in remote secondary mode pulling the latest state from the remote Alertmanager to avoid duplicate notifications.",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "restrictedPluginApis",
			Description:  "Enables sharing a list of APIs with a list of plugins",
			Stage:        FeatureStageGeneralAvailability,
			Owner:        grafanaPluginsPlatformSquad,
			HideFromDocs: true,
			FrontendOnly: true,
			Expression:   "true",
		},
		{
			Name:         "favoriteDatasources",
			Description:  "Enable favorite datasources",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaPluginsPlatformSquad,
			FrontendOnly: true,
			Expression:   "false",
		},
		{
			Name:         "newLogContext",
			Description:  "New Log Context component",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaObservabilityLogsSquad,
			FrontendOnly: true,
			Expression:   "false",
		},
		{
			Name:         "newClickhouseConfigPageDesign",
			Description:  "Enables new design for the Clickhouse data source configuration page",
			Stage:        FeatureStagePrivatePreview,
			FrontendOnly: false,
			Owner:        grafanaPartnerPluginsSquad,
			Expression:   "false",
		},
		{
			Name:         "teamFolders",
			Description:  "Enables team folders functionality",
			Stage:        FeatureStageExperimental,
			FrontendOnly: false,
			Owner:        grafanaFrontendNavigation,
			Expression:   "false",
		},
		{
			Name:        "interactiveLearning",
			Description: "Enables the interactive learning app",
			Stage:       FeatureStagePublicPreview,
			Owner:       grafanaPathfinderSquad,
			Expression:  "false",
		},
		{
			Name:         "alertingTriage",
			Description:  "Enables the alerting triage feature",
			Stage:        FeatureStageExperimental,
			FrontendOnly: false, // changes navtree in backend
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "alertingAlertsActivityBanner",
			Description:  "Shows a promotional banner for the Alerts Activity feature on the Rule List page",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "graphiteBackendMode",
			Description:  "Enables the Graphite data source full backend mode",
			Stage:        FeatureStagePrivatePreview,
			FrontendOnly: false,
			Owner:        grafanaPartnerPluginsSquad,
			Expression:   "false",
		},
		{
			Name:         "azureResourcePickerUpdates",
			Description:  "Enables the updated Azure Monitor resource picker",
			Stage:        FeatureStageGeneralAvailability,
			FrontendOnly: true,
			Owner:        grafanaPartnerPluginsSquad,
			Expression:   "true",
		},
		{
			Name:            "prometheusTypeMigration",
			Description:     "Checks for deprecated Prometheus authentication methods (SigV4 and Azure), installs the relevant data source, and migrates the Prometheus data sources",
			Stage:           FeatureStageDeprecated,
			RequiresRestart: true,
			Owner:           grafanaPartnerPluginsSquad,
			Expression:      "true",
		},
		{
			Name:            "pluginContainers",
			Description:     "Enables running plugins in containers",
			Stage:           FeatureStagePrivatePreview,
			Owner:           grafanaPluginsPlatformSquad,
			Expression:      "false",
			RequiresRestart: true,
		},
		{
			Name:         "cdnPluginsLoadFirst",
			Description:  "Prioritize loading plugins from the CDN before other sources",
			Stage:        FeatureStageExperimental,
			FrontendOnly: false,
			Owner:        grafanaPluginsPlatformSquad,
			Expression:   "false",
		},
		{
			Name:         "cdnPluginsUrls",
			Description:  "Enable loading plugins via declarative URLs",
			Stage:        FeatureStageExperimental,
			FrontendOnly: false,
			Owner:        grafanaPluginsPlatformSquad,
			Expression:   "false",
		},
		{
			Name:         "pluginInstallAPISync",
			Description:  "Enable syncing plugin installations to the installs API",
			FrontendOnly: false,
			Stage:        FeatureStageExperimental,
			Owner:        grafanaPluginsPlatformSquad,
			Expression:   "false",
		},
		{
			Name:         "newVizSuggestions",
			Description:  "Enable new visualization suggestions",
			Stage:        FeatureStageGeneralAvailability,
			FrontendOnly: true,
			Owner:        grafanaDatavizSquad,
			Expression:   "true",
		},
		{
			Name:         "panelStyleActions",
			Description:  "Enable style actions (copy/paste) in the panel editor",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaDatavizSquad,
			Expression:   "false",
		},
		{
			Name:         "vizPresets",
			Description:  "Enable visualization presets",
			Stage:        FeatureStagePublicPreview,
			FrontendOnly: true,
			Owner:        grafanaDatavizSquad,
			Expression:   "false",
		},
		{
			Name:         "externalVizSuggestions",
			Description:  "Enable all plugins to supply visualization suggestions (including 3rd party plugins)",
			Stage:        FeatureStageGeneralAvailability,
			FrontendOnly: true,
			Owner:        grafanaDatavizSquad,
			Expression:   "true",
		},
		{
			Name:         "nestedFramesFieldOverrides",
			Description:  "Enable field overrides for FieldType.nestedFrames fields (like in nested tables)",
			Stage:        FeatureStagePublicPreview,
			FrontendOnly: true,
			Owner:        grafanaDatavizSquad,
			Expression:   "false",
		},
		{
			Name:         "vizLegendFacetedFilter",
			Description:  "Enable faceted labels filter for series visibility in the legend",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaDatavizSquad,
			Expression:   "false",
		},
		{
			Name:         "heatmapRowsAxisOptions",
			Description:  "Enable Y-axis scale configuration options for pre-bucketed heatmap data (heatmap-rows)",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaDatavizSquad,
			Expression:   "false",
		},
		{
			Name:         "pieChartGradientColorScheme",
			Description:  "Enable gradient color scheme option for the pie chart panel",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaDatavizSquad,
			Expression:   "false",
		},
		{
			Name:         "preventPanelChromeOverflow",
			Description:  "Restrict PanelChrome contents with overflow: hidden;",
			Stage:        FeatureStagePublicPreview,
			FrontendOnly: true,
			Owner:        grafanaFrontendPlatformSquad,
			Expression:   "true",
		},
		{
			Name:        "jaegerEnableGrpcEndpoint",
			Description: "Enable querying trace data through Jaeger's gRPC endpoint (HTTP)",
			Stage:       FeatureStageExperimental,
			Owner:       grafanaOSSBigTent,
			Expression:  "false",
		},
		{
			Name:         "pluginStoreServiceLoading",
			Description:  "Load plugins on store service startup instead of wire provider, and call RegisterFixedRoles after all plugins are loaded",
			Stage:        FeatureStageExperimental,
			FrontendOnly: false,
			Owner:        grafanaPluginsPlatformSquad,
			Expression:   "false",
		},
		{
			Name:         "newPanelPadding",
			Description:  "Increases panel padding globally",
			Stage:        FeatureStagePublicPreview,
			FrontendOnly: true,
			Owner:        grafanaDashboardsSquad,
			Expression:   "true",
		},
		{
			Name:         "onlyStoreActionSets",
			Description:  "When storing dashboard and folder resource permissions, only store action sets and not the full list of underlying permission",
			Stage:        FeatureStageGeneralAvailability,
			FrontendOnly: false,
			HideFromDocs: true,
			Owner:        identityAccessTeam,
			Expression:   "true",
		},
		{
			Name:         "excludeRedundantManagedPermissions",
			Description:  "Exclude redundant individual dashboard/folder permissions from managed roles at query time",
			Stage:        FeatureStageExperimental,
			FrontendOnly: false,
			HideFromDocs: true,
			Owner:        identityAccessTeam,
			Expression:   "false",
		},
		{
			Name:         "pluginInsights",
			Description:  "Show insights for plugins in the plugin details page",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaPluginsPlatformSquad,
			Expression:   "false",
		},
		{
			Name:            "panelTimeSettings",
			Description:     "Enables a new panel time settings drawer",
			FrontendOnly:    false,
			Stage:           FeatureStagePublicPreview,
			Owner:           grafanaDashboardsSquad,
			RequiresRestart: false,
			HideFromDocs:    false,
			Expression:      "false",
		},
		{
			Name:        "elasticsearchRawDSLQuery",
			Description: "Enables the raw DSL query editor in the Elasticsearch data source",
			Stage:       FeatureStageExperimental,
			Owner:       grafanaPartnerPluginsSquad,
			Expression:  "false",
		},
		{
			Name:        "elasticsearchESQLQuery",
			Description: "Enables the ES|QL query editor in the Elasticsearch data source",
			Stage:       FeatureStageExperimental,
			Owner:       grafanaPartnerPluginsSquad,
			Expression:  "false",
		},
		{
			Name:        "awsDatasourcesHttpProxy",
			Description: "Enables http proxy settings for aws datasources",
			Stage:       FeatureStageExperimental,
			Owner:       awsDatasourcesSquad,
			Expression:  "false",
		},
		{
			Name:         "transformationsEmptyPlaceholder",
			Description:  "Show transformation quick-start cards in empty transformations state",
			Stage:        FeatureStagePublicPreview,
			FrontendOnly: true,
			Owner:        grafanaDataProSquad,
			Expression:   "false",
		},
		{
			Name:            "opentsdbBackendMigration",
			Description:     "Run queries through the data source backend",
			Stage:           FeatureStageGeneralAvailability,
			Owner:           grafanaOSSBigTent,
			Expression:      "false",
			RequiresRestart: true,
		},
		{
			Name:         "ttlPluginInstanceManager",
			Description:  "Enable TTL plugin instance manager",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaPluginsPlatformSquad,
			Expression:   "false",
		},
		{
			Name:         "lokiQueryLimitsContext",
			Description:  "Send X-Loki-Query-Limits-Context header to Loki on first split request",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaObservabilityLogsSquad,
			Expression:   "false",
		},
		{
			Name:            "rudderstackUpgrade",
			Description:     "Enables the new version of rudderstack",
			FrontendOnly:    true,
			Stage:           FeatureStageExperimental,
			Owner:           grafanaFrontendPlatformSquad,
			Expression:      "false",
			RequiresRestart: false,
			HideFromDocs:    false,
		},
		{
			Name:            "kubernetesAlertingHistorian",
			Description:     "Adds support for Kubernetes alerting historian APIs",
			Stage:           FeatureStageExperimental,
			Owner:           grafanaAlertingSquad,
			RequiresRestart: true,
			Expression:      "false",
		},
		{
			Name:         "useMTPlugins",
			Description:  "Enables plugins decoupling from bootdata",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaPluginsPlatformSquad,
			FrontendOnly: true,
			Expression:   "false",
			HideFromDocs: true,
		},
		{
			Name:         "multiPropsVariables",
			Description:  "Enables support for variables whose values can have multiple properties",
			Stage:        FeatureStageGeneralAvailability,
			FrontendOnly: true,
			Owner:        grafanaDashboardsSquad,
			Expression:   "true", // enabled by default
		},
		{
			Name:         "dashboardSectionVariables",
			Description:  "Enables support for section level variables (rows and tabs)",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaDashboardsSquad,
			Expression:   "false",
		},
		{
			Name:         "smoothingTransformation",
			Description:  "Enables the ASAP smoothing transformation for time series data",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaDataProSquad,
			Expression:   "false",
		},
		{
			Name:         "secretsManagementAppPlatformAwsKeeper",
			Description:  "Enables the creation of keepers that manage secrets stored on AWS secrets manager",
			Stage:        FeatureStageExperimental,
			HideFromDocs: true,
			FrontendOnly: false,
			Owner:        grafanaOperatorExperienceSquad,
			Expression:   "false",
		},
		{
			Name:         "profilesExemplars",
			Description:  "Enables profiles exemplars support in profiles drilldown",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaObservabilityTracesAndProfilingSquad,
			FrontendOnly: false,
			Expression:   "false",
		},
		{
			Name:            "alertingSyncDispatchTimer",
			Description:     "Use synchronized dispatch timer to minimize duplicate notifications across alertmanager HA pods",
			Stage:           FeatureStageExperimental,
			Owner:           grafanaAlertingSquad,
			RequiresRestart: true,
			HideFromDocs:    true,
			Expression:      "false",
		},
		{
			Name:         "queryWithAssistant",
			Description:  "Enables the Query with Assistant button in the query editor",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaOSSBigTent,
			Expression:   "false",
		},
		{
			Name:         "queryEditorNext",
			Description:  "Enables next generation query editor experience",
			Stage:        FeatureStagePrivatePreview,
			FrontendOnly: true,
			Owner:        grafanaDataProSquad,
			Expression:   "false",
		},
		{
			Name:         "kubernetesTeamBindings",
			Description:  "Enables search for team bindings in the app platform API",
			Stage:        FeatureStageExperimental,
			Owner:        identityAccessTeam,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "kubernetesTeamsApi",
			Description:  "Enables team APIs in the app platform",
			Stage:        FeatureStageExperimental,
			Owner:        identityAccessTeam,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "kubernetesTeamsRedirect",
			Description:  "Redirects the request of the team endpoints to the app platform APIs",
			Stage:        FeatureStageExperimental,
			Owner:        identityAccessTeam,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "kubernetesUsersApi",
			Description:  "Enables user APIs in the app platform",
			Stage:        FeatureStageExperimental,
			Owner:        identityAccessTeam,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "kubernetesServiceAccountsApi",
			Description:  "Enables service account APIs in the app platform",
			Stage:        FeatureStageExperimental,
			Owner:        identityAccessTeam,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "kubernetesServiceAccountTokensApi",
			Description:  "Enables service account token APIs in the app platform",
			Stage:        FeatureStageExperimental,
			Owner:        identityAccessTeam,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "kubernetesSsoSettingsApi",
			Description:  "Enables SSO settings APIs in the app platform",
			Stage:        FeatureStageExperimental,
			Owner:        identityAccessTeam,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "kubernetesExternalGroupMappingsApi",
			Description:  "Enables external group mapping APIs in the app platform",
			Stage:        FeatureStageExperimental,
			Owner:        identityAccessTeam,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "kubernetesExternalGroupMappingsRedirect",
			Description:  "Redirects the request of the external group mapping endpoints to the app platform APIs",
			Stage:        FeatureStageExperimental,
			Owner:        identityAccessTeam,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "kubernetesTeamSync",
			Description:  "Use the new APIs for syncing users to teams",
			Stage:        FeatureStageExperimental,
			Owner:        identityAccessTeam,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "kubernetesUsersRedirect",
			Description:  "Redirects the requests of the user service to the app platform APIs",
			Stage:        FeatureStageExperimental,
			Owner:        identityAccessTeam,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "alertingMultiplePolicies",
			Description:  "Enables the ability to create multiple alerting policies",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "alertingPolicyRoutingSettings",
			Description:  "Use notification settings policy field instead of labels for named policy routing in alert rules",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:            "appPluginAPIServer",
			Description:     "Registers an API server for each backend app plugin exposing a settings endpoint",
			Stage:           FeatureStageExperimental,
			Owner:           grafanaPluginsPlatformSquad,
			RequiresRestart: true,
			Expression:      "false",
		},
		{
			Name:         "alertingIgnorePendingForNoDataAndError",
			Description:  "Makes NoData and Error alerts fire immediately, without 'pending' stage",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "alertingNotificationHistoryRuleViewer",
			Description:  "Enables the notification history tab in the rule viewer",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "alertingNotificationHistoryGlobal",
			Description:  "Enables the notification history global menu item viewer",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "alertingNotificationHistoryTriage",
			Description:  "Enables the notification history timeline in the triage instance details drawer",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "alertingNotificationHistoryDetail",
			Description:  "Enables the notification history detail page",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaAlertingSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "react19",
			Description:  "Whether to use the new React 19 runtime",
			Stage:        FeatureStageExperimental,
			FrontendOnly: false,
			Owner:        grafanaFrontendPlatformSquad,
			Expression:   "false",
		},
		{
			Name:         "frontendServiceUseSettingsService",
			Description:  "Enables the frontend service to fetch tenant-specific settings overrides from the settings service",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaFrontendPlatformSquad,
			Expression:   "false",
			HideFromDocs: true,
		},
		{
			Name:         "functionalSharedPreferences",
			Description:  "Whether to use the new SharedPreferences functional component",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaFrontendPlatformSquad,
			Expression:   "false",
		},
		{
			Name:         "managedPluginsV2",
			Description:  "Enables managed plugins v2 (expanded rollout, community plugin coverage)",
			Stage:        FeatureStageExperimental,
			HideFromDocs: true,
			Owner:        grafanaPluginsPlatformSquad,
			Expression:   "false",
		},
		{
			Name:         "rememberUserOrgForSso",
			Description:  "Remember the last viewed organization for users using SSO",
			Stage:        FeatureStageGeneralAvailability,
			Owner:        identityAccessTeam,
			HideFromDocs: true,
			Expression:   "true", // enabled by default
		},
		{
			Name:         "dsAbstractionApp",
			Description:  "Registers the dsabstraction app for querying datasources via unified SQL",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaDatasourcesCoreServicesSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:            "datasourcesApiServerEnableHealthEndpoint",
			Description:     "Handle datasource health requests to the legacy API routes by querying the new datasource api group endpoints behind the scenes.",
			Stage:           FeatureStageExperimental,
			Owner:           grafanaDatasourcesCoreServicesSquad,
			RequiresRestart: false,
			Expression:      "false",
		},
		{
			Name:         "analyticsFramework",
			Description:  "Enables new analytics framework",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaFrontendPlatformSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:            "datasourcesApiServerEnableHealthEndpointFrontend",
			Description:     "Send Datsource health requests to /apis/ API routes instead of the legacy /api/datasources/uid/{uid}/health route.",
			Stage:           FeatureStageExperimental,
			Owner:           grafanaDatasourcesCoreServicesSquad,
			RequiresRestart: false,
			Expression:      "false",
			FrontendOnly:    true,
		},
		{
			Name:         "flameGraphWithCallTree",
			Description:  "Enables the new Flame Graph UI containing the Call Tree view",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaObservabilityTracesAndProfilingSquad,
			FrontendOnly: true,
			Expression:   "false",
		},
		{
			Name:        "advisorDatasourceIntegration",
			Description: "Enables the advisor report integration with datasource pages",
			Stage:       FeatureStageExperimental,
			Owner:       grafanaPluginsPlatformSquad,
			Expression:  "false",
		},
		{
			Name:        "inlineLogDetailsNoScrolls",
			Description: "Enables an inline version of Log Details that creates no new scrolls",
			Stage:       FeatureStageExperimental,
			Owner:       grafanaObservabilityLogsSquad,
			Expression:  "false",
		},
		{
			Name:            "colorblindThemes",
			Description:     "Enables the new colorblind-friendly themes",
			Stage:           FeatureStageGeneralAvailability,
			Owner:           grafanaFrontendPlatformSquad,
			HideFromDocs:    true,
			RequiresRestart: true,
			Expression:      "false",
		}, {
			Name:         "yAxisTickControl",
			Description:  "Enables fine-grained Y-axis tick options beyond the auto-ticks",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaDatavizSquad,
			Expression:   "false",
		},
		{
			Name:         "logsTablePanelNG",
			Description:  "Enables the logs tableNG panel to replace existing tableRT",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaObservabilityLogsSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "useMTPluginSettings",
			Description:  "Enables plugins setting from new apis",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaFrontendPlatformSquad,
			FrontendOnly: true,
			Expression:   "false",
			HideFromDocs: true,
		},
		{
			Name:         "frontendServiceSSOAutoLogin",
			Description:  "Returns SSO auto-login information in /bootdata to automatically log in users with SSO when they access Grafana",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaFrontendPlatformSquad,
			HideFromDocs: true,
			Expression:   "false",
		},
		{
			Name:         "splashScreen",
			Description:  "Enables the splash screen modal for introducing new Grafana features on first session",
			Stage:        FeatureStagePublicPreview,
			Owner:        grafanaFrontendPlatformSquad,
			FrontendOnly: true,
			Expression:   "true",
		},
		{
			Name:         "streamingForwardTeamHeadersTempo",
			Description:  "Enables forwarding team headers from tempo for streaming requests with LBAC rules",
			Stage:        FeatureStagePrivatePreview,
			Owner:        grafanaOSSBigTent,
			Expression:   "false",
			HideFromDocs: true,
		},
		{
			Name:        "lokiAlignedQuerySplitting",
			Description: "Aligns query splitting chunks with UTC midnight",
			Stage:       FeatureStageExperimental,
			Owner:       grafanaObservabilityLogsSquad,
			Expression:  "false",
		},
		{
			Name:        "queryFetchConfigFromSettingsService",
			Description: "Enables the query service to fetch the configuration from the settings service",
			Stage:       FeatureStageExperimental,
			Owner:       grafanaDatasourcesCoreServicesSquad,
			Expression:  "false",
		},
		{
			Name:        "queryServiceQueryCaching",
			Description: "Enables the query service to do query caching",
			Stage:       FeatureStageExperimental,
			Owner:       grafanaOperatorExperienceSquad,
			Expression:  "false",
		},
		{
			Name:         "tracesDrilldownTimeSeeker",
			Description:  "Enables the time seeker in traces drilldown",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaObservabilityTracesAndProfilingSquad,
			FrontendOnly: true,
			Expression:   "false",
		},
		{
			Name:         "clearPreviousFieldValues",
			Description:  "Mitigates React fiber's retention of previous props/state, causing 2x memory use: https://github.com/facebook/react/issues/36176",
			Stage:        FeatureStageExperimental,
			FrontendOnly: true,
			Owner:        grafanaDatavizSquad,
			Expression:   "false",
			HideFromDocs: true,
		},
		{
			Name:         "enableDatasourceMetaApiPluginLoading",
			Description:  "Enables loading datasource plugins from the MetaAPI instead of bootData settings",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaFrontendPlatformSquad,
			FrontendOnly: true,
			Expression:   "false",
		},
		{
			Name:         "enableColorblindSafePanelOptions",
			Description:  "Enables new colorblind safe palette and line fill patterns for panels",
			Stage:        FeatureStageExperimental,
			Owner:        grafanaDatavizSquad,
			FrontendOnly: true,
			Expression:   "false",
		},
	}
)

//go:embed toggles_gen.json
var f embed.FS

// Get the cached feature list (exposed as a k8s resource)
func GetEmbeddedFeatureList() (featuretoggleapi.FeatureList, error) {
	features := featuretoggleapi.FeatureList{}
	body, err := f.ReadFile("toggles_gen.json")
	if err == nil {
		err = json.Unmarshal(body, &features)
	}
	return features, err
}
