This is an automated email from the ASF dual-hosted git repository.

rusackas pushed a commit to branch docs/federate-contributing-links
in repository https://gitbox.apache.org/repos/asf/superset.git


The following commit(s) were added to 
refs/heads/docs/federate-contributing-links by this push:
     new 278dd5b9dd docs: federate FEATURE_FLAGS.md into dynamic docs page
278dd5b9dd is described below

commit 278dd5b9dd573ae9b3153de386eec58b78a9cb7b
Author: Evan Rusackas <[email protected]>
AuthorDate: Thu Dec 18 17:11:27 2025 -0800

    docs: federate FEATURE_FLAGS.md into dynamic docs page
    
    - Annotate feature flags in config.py with @lifecycle, @docs, @category
    - Add scripts/extract_feature_flags.py to parse annotations to JSON
    - Create docs/docs/configuration/feature-flags.mdx that renders the JSON
    - Delete RESOURCES/FEATURE_FLAGS.md
    - Update all links to point to new docs page
    
    The feature flags documentation is now auto-generated from the source
    of truth in config.py, ensuring docs stay in sync with code.
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-Authored-By: Claude Opus 4.5 <[email protected]>
---
 README.md                                          |   2 +-
 RESOURCES/FEATURE_FLAGS.md                         | 103 ------
 .../contributing/development-setup.md              |   2 +-
 docs/docs/configuration/configuring-superset.mdx   |   2 +-
 docs/docs/configuration/feature-flags.mdx          | 107 ++++++
 docs/docs/configuration/networking-settings.mdx    |   2 +-
 docs/docs/contributing/development.mdx             |   2 +-
 docs/static/feature-flags.json                     | 373 +++++++++++++++++++++
 .../configuration/configuring-superset.mdx         |   2 +-
 .../configuration/networking-settings.mdx          |   2 +-
 .../version-6.0.0/contributing/development.mdx     |   2 +-
 docs/versioned_docs/version-6.0.0/intro.md         |   2 +-
 scripts/extract_feature_flags.py                   | 194 +++++++++++
 superset/config.py                                 | 360 +++++++++++++-------
 14 files changed, 924 insertions(+), 231 deletions(-)

diff --git a/README.md b/README.md
index 455b764eae..1930ae85cf 100644
--- a/README.md
+++ b/README.md
@@ -172,7 +172,7 @@ how to set up a development environment.
 ## Resources
 
 - [Superset "In the Wild"](https://superset.apache.org/inTheWild) - see who's 
using Superset, and [add your 
organization](https://github.com/apache/superset/edit/master/RESOURCES/INTHEWILD.yaml)
 to the list!
-- [Feature 
Flags](https://github.com/apache/superset/blob/master/RESOURCES/FEATURE_FLAGS.md)
 - the status of Superset's Feature Flags.
+- [Feature 
Flags](https://superset.apache.org/docs/configuration/feature-flags) - the 
status of Superset's Feature Flags.
 - [Standard 
Roles](https://github.com/apache/superset/blob/master/RESOURCES/STANDARD_ROLES.md)
 - How RBAC permissions map to roles.
 - [Superset Wiki](https://github.com/apache/superset/wiki) - Tons of 
additional community resources: best practices, community content and other 
information.
 - [Superset SIPs](https://github.com/orgs/apache/projects/170) - The status of 
Superset's SIPs (Superset Improvement Proposals) for both consensus and 
implementation status.
diff --git a/RESOURCES/FEATURE_FLAGS.md b/RESOURCES/FEATURE_FLAGS.md
deleted file mode 100644
index 32e291b083..0000000000
--- a/RESOURCES/FEATURE_FLAGS.md
+++ /dev/null
@@ -1,103 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-
-# Superset Feature Flags
-
-This is a list of the current Superset optional features. See config.py for 
default values. These features can be turned on/off by setting your preferred 
values in superset_config.py to True/False respectively
-
-## In Development
-
-These features are considered **unfinished** and should only be used on 
development environments.
-
-[//]: # "PLEASE KEEP THE LIST SORTED ALPHABETICALLY"
-
-- ALERT_REPORT_TABS
-- DATE_RANGE_TIMESHIFTS_ENABLED
-- ENABLE_ADVANCED_DATA_TYPES
-- PRESTO_EXPAND_DATA
-- SHARE_QUERIES_VIA_KV_STORE
-- TAGGING_SYSTEM
-- CHART_PLUGINS_EXPERIMENTAL
-
-## In Testing
-
-These features are **finished** but currently being tested. They are usable, 
but may still contain some bugs.
-
-[//]: # "PLEASE KEEP THE LIST SORTED ALPHABETICALLY"
-
-- ALERT_REPORTS: 
[(docs)](https://superset.apache.org/docs/configuration/alerts-reports)
-- ALLOW_FULL_CSV_EXPORT
-- CACHE_IMPERSONATION
-- CONFIRM_DASHBOARD_DIFF
-- DYNAMIC_PLUGINS
-- DATE_FORMAT_IN_EMAIL_SUBJECT: 
[(docs)](https://superset.apache.org/docs/configuration/alerts-reports#commons)
-- ENABLE_SUPERSET_META_DB: 
[(docs)](https://superset.apache.org/docs/configuration/databases/#querying-across-databases)
-- ESTIMATE_QUERY_COST
-- GLOBAL_ASYNC_QUERIES 
[(docs)](https://superset.apache.org/docs/contributing/misc#async-chart-queries)
-- IMPERSONATE_WITH_EMAIL_PREFIX
-- PLAYWRIGHT_REPORTS_AND_THUMBNAILS
-- RLS_IN_SQLLAB
-- SSH_TUNNELING 
[(docs)](https://superset.apache.org/docs/configuration/setup-ssh-tunneling)
-- USE_ANALAGOUS_COLORS
-
-## Stable
-
-These features flags are **safe for production**. They have been tested and 
will be supported for the at least the current major version cycle.
-
-[//]: # "PLEASE KEEP THESE LISTS SORTED ALPHABETICALLY"
-
-### Flags on the path to feature launch and flag deprecation/removal
-
-- DASHBOARD_VIRTUALIZATION
-
-### Flags retained for runtime configuration
-
-Currently some of our feature flags act as dynamic configurations that can 
change
-on the fly. This acts in contradiction with the typical ephemeral feature flag 
use case,
-where the flag is used to mature a feature, and eventually deprecated once the 
feature is
-solid. Eventually we'll likely refactor these under a more formal "dynamic 
configurations" managed
-independently. This new framework will also allow for non-boolean 
configurations.
-
-- ALERTS_ATTACH_REPORTS
-- ALLOW_ADHOC_SUBQUERY
-- DASHBOARD_RBAC 
[(docs)](https://superset.apache.org/docs/using-superset/creating-your-first-dashboard#manage-access-to-dashboards)
-- DATAPANEL_CLOSED_BY_DEFAULT
-- DRILL_BY
-- DRUID_JOINS
-- EMBEDDABLE_CHARTS
-- EMBEDDED_SUPERSET
-- ENABLE_TEMPLATE_PROCESSING
-- ESCAPE_MARKDOWN_HTML
-- LISTVIEWS_DEFAULT_CARD_VIEW
-- SCHEDULED_QUERIES 
[(docs)](https://superset.apache.org/docs/configuration/alerts-reports)
-- SLACK_ENABLE_AVATARS (see `superset/config.py` for more information)
-- SQLLAB_BACKEND_PERSISTENCE
-- SQL_VALIDATORS_BY_ENGINE 
[(docs)](https://superset.apache.org/docs/configuration/sql-templating)
-- THUMBNAILS [(docs)](https://superset.apache.org/docs/configuration/cache)
-
-## Deprecated Flags
-
-These features flags currently default to True and **will be removed in a 
future major release**. For this current release you can turn them off by 
setting your config to False, but it is advised to remove or set these flags in 
your local configuration to **True** so that you do not experience any 
unexpected changes in a future release.
-
-[//]: # "PLEASE KEEP THE LIST SORTED ALPHABETICALLY"
-
-- AVOID_COLORS_COLLISION
-- DRILL_TO_DETAIL
-- ENABLE_JAVASCRIPT_CONTROLS
-- KV_STORE
diff --git a/docs/developer_portal/contributing/development-setup.md 
b/docs/developer_portal/contributing/development-setup.md
index a25cca8dbc..6d8fb38522 100644
--- a/docs/developer_portal/contributing/development-setup.md
+++ b/docs/developer_portal/contributing/development-setup.md
@@ -618,7 +618,7 @@ export enum FeatureFlag {
 those specified under FEATURE_FLAGS in `superset_config.py`. For example, 
`DEFAULT_FEATURE_FLAGS = { 'FOO': True, 'BAR': False }` in `superset/config.py` 
and `FEATURE_FLAGS = { 'BAR': True, 'BAZ': True }` in `superset_config.py` will 
result
 in combined feature flags of `{ 'FOO': True, 'BAR': True, 'BAZ': True }`.
 
-The current status of the usability of each flag (stable vs testing, etc) can 
be found in `RESOURCES/FEATURE_FLAGS.md`.
+The current status of the usability of each flag (stable vs testing, etc) can 
be found in the [Feature 
Flags](https://superset.apache.org/docs/configuration/feature-flags) 
documentation.
 
 ## Git Hooks
 
diff --git a/docs/docs/configuration/configuring-superset.mdx 
b/docs/docs/configuration/configuring-superset.mdx
index 0a50b07fe6..845fd91e3c 100644
--- a/docs/docs/configuration/configuring-superset.mdx
+++ b/docs/docs/configuration/configuring-superset.mdx
@@ -441,4 +441,4 @@ FEATURE_FLAGS = {
 }
 ```
 
-A current list of feature flags can be found in 
[RESOURCES/FEATURE_FLAGS.md](https://github.com/apache/superset/blob/master/RESOURCES/FEATURE_FLAGS.md).
+A current list of feature flags can be found in the [Feature 
Flags](/docs/configuration/feature-flags) documentation.
diff --git a/docs/docs/configuration/feature-flags.mdx 
b/docs/docs/configuration/feature-flags.mdx
new file mode 100644
index 0000000000..b573b07d32
--- /dev/null
+++ b/docs/docs/configuration/feature-flags.mdx
@@ -0,0 +1,107 @@
+---
+title: Feature Flags
+hide_title: true
+sidebar_position: 2
+version: 1
+---
+
+import featureFlags from '@site/static/feature-flags.json';
+
+export const FlagTable = ({flags}) => (
+  <table>
+    <thead>
+      <tr>
+        <th>Flag</th>
+        <th>Default</th>
+        <th>Description</th>
+      </tr>
+    </thead>
+    <tbody>
+      {flags.map((flag) => (
+        <tr key={flag.name}>
+          <td><code>{flag.name}</code></td>
+          <td><code>{flag.default ? 'True' : 'False'}</code></td>
+          <td>
+            {flag.description}
+            {flag.docs && (
+              <> (<a href={flag.docs}>docs</a>)</>
+            )}
+          </td>
+        </tr>
+      ))}
+    </tbody>
+  </table>
+);
+
+# Feature Flags
+
+Superset uses feature flags to control the availability of features. Feature 
flags allow
+gradual rollout of new functionality and provide a way to enable experimental 
features.
+
+To enable a feature flag, add it to your `superset_config.py`:
+
+```python
+FEATURE_FLAGS = {
+    "ENABLE_TEMPLATE_PROCESSING": True,
+}
+```
+
+## Lifecycle
+
+Feature flags progress through lifecycle stages:
+
+| Stage | Description |
+|-------|-------------|
+| **Development** | Experimental features under active development. May be 
incomplete or unstable. |
+| **Testing** | Feature complete but undergoing testing. Usable but may 
contain bugs. |
+| **Stable** | Production-ready features. Safe for all deployments. |
+| **Deprecated** | Features scheduled for removal. Migrate away from these. |
+
+---
+
+## Development
+
+These features are experimental and under active development. Use only in 
development environments.
+
+<FlagTable flags={featureFlags.flags.development} />
+
+---
+
+## Testing
+
+These features are complete but still being tested. They are usable but may 
have bugs.
+
+<FlagTable flags={featureFlags.flags.testing} />
+
+---
+
+## Stable
+
+These features are production-ready and safe to enable.
+
+<FlagTable flags={featureFlags.flags.stable} />
+
+---
+
+## Deprecated
+
+These features are scheduled for removal. Plan to migrate away from them.
+
+<FlagTable flags={featureFlags.flags.deprecated} />
+
+---
+
+## Adding New Feature Flags
+
+When adding a new feature flag to `superset/config.py`, include the following 
annotations:
+
+```python
+# Description of what the feature does
+# @lifecycle: development | testing | stable | deprecated
+# @docs: https://superset.apache.org/docs/... (optional)
+# @category: runtime_config | path_to_deprecation (optional, for stable flags)
+"MY_NEW_FEATURE": False,
+```
+
+This documentation is auto-generated from the annotations in
+[config.py](https://github.com/apache/superset/blob/master/superset/config.py).
diff --git a/docs/docs/configuration/networking-settings.mdx 
b/docs/docs/configuration/networking-settings.mdx
index 8165cedbac..020071ed91 100644
--- a/docs/docs/configuration/networking-settings.mdx
+++ b/docs/docs/configuration/networking-settings.mdx
@@ -51,7 +51,7 @@ Restart Superset for this configuration change to take effect.
 
 #### Making a Dashboard Public
 
-1. Add the `'DASHBOARD_RBAC': True` [Feature 
Flag](https://github.com/apache/superset/blob/master/RESOURCES/FEATURE_FLAGS.md)
 to `superset_config.py`
+1. Add the `'DASHBOARD_RBAC': True` [Feature 
Flag](/docs/configuration/feature-flags) to `superset_config.py`
 2. Add the `Public` role to your dashboard as described 
[here](https://superset.apache.org/docs/using-superset/creating-your-first-dashboard/#manage-access-to-dashboards)
 
 #### Embedding a Public Dashboard
diff --git a/docs/docs/contributing/development.mdx 
b/docs/docs/contributing/development.mdx
index c43e703152..f6514091d0 100644
--- a/docs/docs/contributing/development.mdx
+++ b/docs/docs/contributing/development.mdx
@@ -599,7 +599,7 @@ export enum FeatureFlag {
 those specified under FEATURE_FLAGS in `superset_config.py`. For example, 
`DEFAULT_FEATURE_FLAGS = { 'FOO': True, 'BAR': False }` in `superset/config.py` 
and `FEATURE_FLAGS = { 'BAR': True, 'BAZ': True }` in `superset_config.py` will 
result
 in combined feature flags of `{ 'FOO': True, 'BAR': True, 'BAZ': True }`.
 
-The current status of the usability of each flag (stable vs testing, etc) can 
be found in `RESOURCES/FEATURE_FLAGS.md`.
+The current status of the usability of each flag (stable vs testing, etc) can 
be found in the [Feature Flags](/docs/configuration/feature-flags) 
documentation.
 
 ## Git Hooks
 
diff --git a/docs/static/feature-flags.json b/docs/static/feature-flags.json
new file mode 100644
index 0000000000..d36ad6dfbc
--- /dev/null
+++ b/docs/static/feature-flags.json
@@ -0,0 +1,373 @@
+{
+  "generated": true,
+  "source": "superset/config.py",
+  "flags": {
+    "development": [
+      {
+        "name": "AG_GRID_TABLE_ENABLED",
+        "default": false,
+        "lifecycle": "development",
+        "description": "Enables Table V2 (AG Grid) viz plugin"
+      },
+      {
+        "name": "ALERT_REPORT_TABS",
+        "default": false,
+        "lifecycle": "development",
+        "description": "Enables experimental tabs UI for Alerts and Reports"
+      },
+      {
+        "name": "CHART_PLUGINS_EXPERIMENTAL",
+        "default": false,
+        "lifecycle": "development",
+        "description": "Enables experimental chart plugins"
+      },
+      {
+        "name": "CSV_UPLOAD_PYARROW_ENGINE",
+        "default": false,
+        "lifecycle": "development",
+        "description": "Experimental PyArrow engine for CSV parsing (may have 
issues with dates/nulls)"
+      },
+      {
+        "name": "DATASET_FOLDERS",
+        "default": false,
+        "lifecycle": "development",
+        "description": "Allow metrics and columns to be grouped into folders 
in the chart builder"
+      },
+      {
+        "name": "DATE_RANGE_TIMESHIFTS_ENABLED",
+        "default": false,
+        "lifecycle": "development",
+        "description": "Enable support for date range timeshifts (e.g., 
\"2015-01-03 : 2015-01-04\") in addition to relative timeshifts (e.g., \"1 day 
ago\")"
+      },
+      {
+        "name": "ENABLE_ADVANCED_DATA_TYPES",
+        "default": false,
+        "lifecycle": "development",
+        "description": "Enables advanced data type support"
+      },
+      {
+        "name": "ENABLE_EXTENSIONS",
+        "default": false,
+        "lifecycle": "development",
+        "description": "Enable Superset extensions for custom functionality 
without modifying core"
+      },
+      {
+        "name": "MATRIXIFY",
+        "default": false,
+        "lifecycle": "development",
+        "description": "Enable Matrixify feature for matrix-style chart 
layouts"
+      },
+      {
+        "name": "OPTIMIZE_SQL",
+        "default": false,
+        "lifecycle": "development",
+        "description": "Try to optimize SQL queries \u2014 for now only 
predicate pushdown is supported"
+      },
+      {
+        "name": "PRESTO_EXPAND_DATA",
+        "default": false,
+        "lifecycle": "development",
+        "description": "Expand nested types in Presto into extra 
columns/arrays. Experimental, doesn't work with all nested types."
+      },
+      {
+        "name": "TABLE_V2_TIME_COMPARISON_ENABLED",
+        "default": false,
+        "lifecycle": "development",
+        "description": "Enable Table V2 time comparison feature"
+      },
+      {
+        "name": "TAGGING_SYSTEM",
+        "default": false,
+        "lifecycle": "development",
+        "description": "Enables the tagging system for organizing assets"
+      }
+    ],
+    "testing": [
+      {
+        "name": "ALERT_REPORTS",
+        "default": false,
+        "lifecycle": "testing",
+        "description": "Enables Alerts and Reports functionality",
+        "docs": "https://superset.apache.org/docs/configuration/alerts-reports";
+      },
+      {
+        "name": "ALERT_REPORTS_FILTER",
+        "default": false,
+        "lifecycle": "testing",
+        "description": "Enables filter functionality in Alerts and Reports"
+      },
+      {
+        "name": "ALERT_REPORT_SLACK_V2",
+        "default": false,
+        "lifecycle": "testing",
+        "description": "Enables Slack V2 integration for Alerts and Reports"
+      },
+      {
+        "name": "ALLOW_FULL_CSV_EXPORT",
+        "default": false,
+        "lifecycle": "testing",
+        "description": "Allow users to export full CSV of table viz type. 
Warning: Could cause server memory/compute issues with large datasets."
+      },
+      {
+        "name": "CACHE_IMPERSONATION",
+        "default": false,
+        "lifecycle": "testing",
+        "description": "Enable caching per impersonation key in datasources 
with user impersonation"
+      },
+      {
+        "name": "DATE_FORMAT_IN_EMAIL_SUBJECT",
+        "default": false,
+        "lifecycle": "testing",
+        "description": "Allow users to optionally specify date formats in 
email subjects",
+        "docs": "https://superset.apache.org/docs/configuration/alerts-reports";
+      },
+      {
+        "name": "DYNAMIC_PLUGINS",
+        "default": false,
+        "lifecycle": "testing",
+        "description": "Enable dynamic plugin loading"
+      },
+      {
+        "name": "ENABLE_DASHBOARD_DOWNLOAD_WEBDRIVER_SCREENSHOT",
+        "default": false,
+        "lifecycle": "testing",
+        "description": "Generate screenshots (PDF/JPG) of dashboards using web 
driver. Depends on ENABLE_DASHBOARD_SCREENSHOT_ENDPOINTS."
+      },
+      {
+        "name": "ENABLE_DASHBOARD_SCREENSHOT_ENDPOINTS",
+        "default": false,
+        "lifecycle": "testing",
+        "description": "Enables endpoints to cache and retrieve dashboard 
screenshots via webdriver. Requires Celery and THUMBNAIL_CACHE_CONFIG."
+      },
+      {
+        "name": "ENABLE_SUPERSET_META_DB",
+        "default": false,
+        "lifecycle": "testing",
+        "description": "Allows users to add a superset:// DB that can query 
across databases. Experimental with potential security/performance risks. See 
SUPERSET_META_DB_LIMIT.",
+        "docs": 
"https://superset.apache.org/docs/configuration/databases/#querying-across-databases";
+      },
+      {
+        "name": "ESTIMATE_QUERY_COST",
+        "default": false,
+        "lifecycle": "testing",
+        "description": "Enable query cost estimation. Supported in Presto, 
Postgres, and BigQuery. Requires `cost_estimate_enabled: true` in database 
`extra` attribute."
+      },
+      {
+        "name": "GLOBAL_ASYNC_QUERIES",
+        "default": false,
+        "lifecycle": "testing",
+        "description": "Enable async queries for dashboards and Explore via 
WebSocket. Requires Redis 5.0+ and Celery workers.",
+        "docs": 
"https://superset.apache.org/docs/contributing/misc#async-chart-queries";
+      },
+      {
+        "name": "IMPERSONATE_WITH_EMAIL_PREFIX",
+        "default": false,
+        "lifecycle": "testing",
+        "description": "When impersonating a user, use the email prefix 
instead of username"
+      },
+      {
+        "name": "PLAYWRIGHT_REPORTS_AND_THUMBNAILS",
+        "default": false,
+        "lifecycle": "testing",
+        "description": "Replace Selenium with Playwright for reports and 
thumbnails. Supports deck.gl visualizations. Requires playwright pip package."
+      },
+      {
+        "name": "RLS_IN_SQLLAB",
+        "default": false,
+        "lifecycle": "testing",
+        "description": "Apply RLS rules to SQL Lab queries. Requires query 
parsing/manipulation. May break queries or allow RLS bypass. Use with care!"
+      },
+      {
+        "name": "SSH_TUNNELING",
+        "default": false,
+        "lifecycle": "testing",
+        "description": "Allow users to enable SSH tunneling when creating a DB 
connection. DB engine must support SSH Tunnels.",
+        "docs": 
"https://superset.apache.org/docs/configuration/setup-ssh-tunneling";
+      },
+      {
+        "name": "USE_ANALOGOUS_COLORS",
+        "default": false,
+        "lifecycle": "testing",
+        "description": "Use analogous colors in charts"
+      }
+    ],
+    "stable": [
+      {
+        "name": "ALERTS_ATTACH_REPORTS",
+        "default": true,
+        "lifecycle": "stable",
+        "description": "When enabled, alerts send email/slack with screenshot 
AND link. When disabled, alerts send only link; reports still send screenshot.",
+        "category": "runtime_config"
+      },
+      {
+        "name": "ALLOW_ADHOC_SUBQUERY",
+        "default": false,
+        "lifecycle": "stable",
+        "description": "Allow ad-hoc subqueries in SQL Lab",
+        "category": "runtime_config"
+      },
+      {
+        "name": "CACHE_QUERY_BY_USER",
+        "default": false,
+        "lifecycle": "stable",
+        "description": "Enable caching per user key for Superset cache",
+        "category": "runtime_config"
+      },
+      {
+        "name": "CSS_TEMPLATES",
+        "default": true,
+        "lifecycle": "stable",
+        "description": "Enables CSS Templates in Settings menu and dashboard 
forms",
+        "category": "runtime_config"
+      },
+      {
+        "name": "DASHBOARD_RBAC",
+        "default": false,
+        "lifecycle": "stable",
+        "description": "Role-based access control for dashboards",
+        "docs": 
"https://superset.apache.org/docs/using-superset/creating-your-first-dashboard";,
+        "category": "runtime_config"
+      },
+      {
+        "name": "DASHBOARD_VIRTUALIZATION",
+        "default": true,
+        "lifecycle": "stable",
+        "description": "Enables dashboard virtualization for improved 
performance",
+        "category": "path_to_deprecation"
+      },
+      {
+        "name": "DATAPANEL_CLOSED_BY_DEFAULT",
+        "default": false,
+        "lifecycle": "stable",
+        "description": "Data panel closed by default in chart builder",
+        "category": "runtime_config"
+      },
+      {
+        "name": "DRILL_BY",
+        "default": true,
+        "lifecycle": "stable",
+        "description": "Enable drill-by functionality in charts",
+        "category": "runtime_config"
+      },
+      {
+        "name": "DRUID_JOINS",
+        "default": false,
+        "lifecycle": "stable",
+        "description": "Enable Druid JOINs (requires Druid version with JOIN 
support)",
+        "category": "runtime_config"
+      },
+      {
+        "name": "EMBEDDABLE_CHARTS",
+        "default": true,
+        "lifecycle": "stable",
+        "description": "Enable sharing charts with embedding",
+        "category": "runtime_config"
+      },
+      {
+        "name": "EMBEDDED_SUPERSET",
+        "default": false,
+        "lifecycle": "stable",
+        "description": "Enable embedded Superset functionality",
+        "category": "runtime_config"
+      },
+      {
+        "name": "ENABLE_FACTORY_RESET_COMMAND",
+        "default": false,
+        "lifecycle": "stable",
+        "description": "Enable factory reset CLI command",
+        "category": "internal"
+      },
+      {
+        "name": "ENABLE_TEMPLATE_PROCESSING",
+        "default": false,
+        "lifecycle": "stable",
+        "description": "Enable Jinja templating in SQL queries",
+        "category": "runtime_config"
+      },
+      {
+        "name": "ESCAPE_MARKDOWN_HTML",
+        "default": false,
+        "lifecycle": "stable",
+        "description": "Escape HTML in Markdown components (rather than 
rendering it)",
+        "category": "runtime_config"
+      },
+      {
+        "name": "FILTERBAR_CLOSED_BY_DEFAULT",
+        "default": false,
+        "lifecycle": "stable",
+        "description": "Filter bar closed by default when opening dashboard",
+        "category": "runtime_config"
+      },
+      {
+        "name": "FORCE_GARBAGE_COLLECTION_AFTER_EVERY_REQUEST",
+        "default": false,
+        "lifecycle": "stable",
+        "description": "Force garbage collection after every request",
+        "category": "runtime_config"
+      },
+      {
+        "name": "LISTVIEWS_DEFAULT_CARD_VIEW",
+        "default": false,
+        "lifecycle": "stable",
+        "description": "Use card view as default in list views",
+        "category": "runtime_config"
+      },
+      {
+        "name": "MENU_HIDE_USER_INFO",
+        "default": false,
+        "lifecycle": "stable",
+        "description": "Hide user info in the navigation menu",
+        "category": "runtime_config"
+      },
+      {
+        "name": "SLACK_ENABLE_AVATARS",
+        "default": false,
+        "lifecycle": "stable",
+        "description": "Use Slack avatars for users. Requires adding 
slack-edge.com to TALISMAN_CONFIG.",
+        "category": "runtime_config"
+      },
+      {
+        "name": "SQLLAB_BACKEND_PERSISTENCE",
+        "default": true,
+        "lifecycle": "stable",
+        "description": "Enable SQL Lab backend persistence for query state",
+        "category": "runtime_config"
+      },
+      {
+        "name": "SQLLAB_FORCE_RUN_ASYNC",
+        "default": false,
+        "lifecycle": "stable",
+        "description": "Force SQL Lab to run async via Celery regardless of 
database settings",
+        "category": "runtime_config"
+      },
+      {
+        "name": "THUMBNAILS",
+        "default": false,
+        "lifecycle": "stable",
+        "description": "Exposes API endpoint to compute thumbnails",
+        "docs": "https://superset.apache.org/docs/configuration/cache";,
+        "category": "runtime_config"
+      }
+    ],
+    "deprecated": [
+      {
+        "name": "AVOID_COLORS_COLLISION",
+        "default": true,
+        "lifecycle": "deprecated",
+        "description": "Avoid color collisions in charts by using distinct 
colors"
+      },
+      {
+        "name": "DRILL_TO_DETAIL",
+        "default": true,
+        "lifecycle": "deprecated",
+        "description": "Enable drill-to-detail functionality in charts"
+      },
+      {
+        "name": "ENABLE_JAVASCRIPT_CONTROLS",
+        "default": false,
+        "lifecycle": "deprecated",
+        "description": "Allow JavaScript in chart controls. WARNING: XSS 
security vulnerability!"
+      }
+    ]
+  }
+}
diff --git 
a/docs/versioned_docs/version-6.0.0/configuration/configuring-superset.mdx 
b/docs/versioned_docs/version-6.0.0/configuration/configuring-superset.mdx
index 0a50b07fe6..845fd91e3c 100644
--- a/docs/versioned_docs/version-6.0.0/configuration/configuring-superset.mdx
+++ b/docs/versioned_docs/version-6.0.0/configuration/configuring-superset.mdx
@@ -441,4 +441,4 @@ FEATURE_FLAGS = {
 }
 ```
 
-A current list of feature flags can be found in 
[RESOURCES/FEATURE_FLAGS.md](https://github.com/apache/superset/blob/master/RESOURCES/FEATURE_FLAGS.md).
+A current list of feature flags can be found in the [Feature 
Flags](/docs/configuration/feature-flags) documentation.
diff --git 
a/docs/versioned_docs/version-6.0.0/configuration/networking-settings.mdx 
b/docs/versioned_docs/version-6.0.0/configuration/networking-settings.mdx
index 8165cedbac..020071ed91 100644
--- a/docs/versioned_docs/version-6.0.0/configuration/networking-settings.mdx
+++ b/docs/versioned_docs/version-6.0.0/configuration/networking-settings.mdx
@@ -51,7 +51,7 @@ Restart Superset for this configuration change to take effect.
 
 #### Making a Dashboard Public
 
-1. Add the `'DASHBOARD_RBAC': True` [Feature 
Flag](https://github.com/apache/superset/blob/master/RESOURCES/FEATURE_FLAGS.md)
 to `superset_config.py`
+1. Add the `'DASHBOARD_RBAC': True` [Feature 
Flag](/docs/configuration/feature-flags) to `superset_config.py`
 2. Add the `Public` role to your dashboard as described 
[here](https://superset.apache.org/docs/using-superset/creating-your-first-dashboard/#manage-access-to-dashboards)
 
 #### Embedding a Public Dashboard
diff --git a/docs/versioned_docs/version-6.0.0/contributing/development.mdx 
b/docs/versioned_docs/version-6.0.0/contributing/development.mdx
index d461ea087b..8e6822adc5 100644
--- a/docs/versioned_docs/version-6.0.0/contributing/development.mdx
+++ b/docs/versioned_docs/version-6.0.0/contributing/development.mdx
@@ -599,7 +599,7 @@ export enum FeatureFlag {
 those specified under FEATURE_FLAGS in `superset_config.py`. For example, 
`DEFAULT_FEATURE_FLAGS = { 'FOO': True, 'BAR': False }` in `superset/config.py` 
and `FEATURE_FLAGS = { 'BAR': True, 'BAZ': True }` in `superset_config.py` will 
result
 in combined feature flags of `{ 'FOO': True, 'BAR': True, 'BAZ': True }`.
 
-The current status of the usability of each flag (stable vs testing, etc) can 
be found in `RESOURCES/FEATURE_FLAGS.md`.
+The current status of the usability of each flag (stable vs testing, etc) can 
be found in the [Feature Flags](/docs/configuration/feature-flags) 
documentation.
 
 ## Git Hooks
 
diff --git a/docs/versioned_docs/version-6.0.0/intro.md 
b/docs/versioned_docs/version-6.0.0/intro.md
index 67e3e205f2..ce2f3c3155 100644
--- a/docs/versioned_docs/version-6.0.0/intro.md
+++ b/docs/versioned_docs/version-6.0.0/intro.md
@@ -172,7 +172,7 @@ how to set up a development environment.
 ## Resources
 
 - [Superset "In the 
Wild"](https://github.com/apache/superset/blob/master/RESOURCES/INTHEWILD.md) - 
open a PR to add your org to the list!
-- [Feature 
Flags](https://github.com/apache/superset/blob/master/RESOURCES/FEATURE_FLAGS.md)
 - the status of Superset's Feature Flags.
+- [Feature 
Flags](https://superset.apache.org/docs/configuration/feature-flags) - the 
status of Superset's Feature Flags.
 - [Standard 
Roles](https://github.com/apache/superset/blob/master/RESOURCES/STANDARD_ROLES.md)
 - How RBAC permissions map to roles.
 - [Superset Wiki](https://github.com/apache/superset/wiki) - Tons of 
additional community resources: best practices, community content and other 
information.
 - [Superset SIPs](https://github.com/orgs/apache/projects/170) - The status of 
Superset's SIPs (Superset Improvement Proposals) for both consensus and 
implementation status.
diff --git a/scripts/extract_feature_flags.py b/scripts/extract_feature_flags.py
new file mode 100644
index 0000000000..cf34639a60
--- /dev/null
+++ b/scripts/extract_feature_flags.py
@@ -0,0 +1,194 @@
+#!/usr/bin/env python3
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+"""
+Extract feature flag metadata from superset/config.py.
+
+This script parses the annotated feature flags in config.py and outputs
+a JSON file that can be consumed by the documentation site to generate
+dynamic feature flag tables.
+
+Usage:
+    python scripts/extract_feature_flags.py > docs/static/feature-flags.json
+
+Annotations supported:
+    @lifecycle: development | testing | stable | deprecated
+    @docs: URL to documentation
+    @category: runtime_config | path_to_deprecation | internal (for stable 
flags)
+"""
+
+import json
+import re
+import sys
+from pathlib import Path
+from typing import TypedDict
+
+
+class FeatureFlag(TypedDict, total=False):
+    name: str
+    default: bool
+    lifecycle: str
+    description: str
+    docs: str | None
+    category: str | None
+
+
+def extract_feature_flags(config_path: Path) -> list[FeatureFlag]:
+    """
+    Parse config.py and extract feature flag metadata from comments.
+
+    Each flag should have a comment block above it with:
+    - Description (first line(s) before @annotations)
+    - @lifecycle: development | testing | stable | deprecated
+    - @docs: URL (optional)
+    - @category: runtime_config | path_to_deprecation | internal (optional)
+    """
+    content = config_path.read_text()
+
+    # Find the DEFAULT_FEATURE_FLAGS dict
+    match = re.search(
+        r"DEFAULT_FEATURE_FLAGS:\s*dict\[str,\s*bool\]\s*=\s*\{(.+?)\n\}",
+        content,
+        re.DOTALL,
+    )
+    if not match:
+        print("ERROR: Could not find DEFAULT_FEATURE_FLAGS in config.py", 
file=sys.stderr)
+        sys.exit(1)
+
+    flags_content = match.group(1)
+    flags: list[FeatureFlag] = []
+
+    # Split content into lines for easier processing
+    lines = flags_content.split("\n")
+
+    current_comments: list[str] = []
+
+    for i, line in enumerate(lines):
+        stripped = line.strip()
+
+        # Skip section headers and dividers
+        if "====" in stripped or "----" in stripped:
+            current_comments = []
+            continue
+
+        # Collect comment lines
+        if stripped.startswith("#"):
+            comment_text = stripped[1:].strip()
+            # Skip section description comments
+            if comment_text.startswith("These features") or 
comment_text.startswith("These flags"):
+                current_comments = []
+                continue
+            current_comments.append(comment_text)
+            continue
+
+        # Check for flag definition
+        flag_match = re.match(r'"([A-Z0-9_]+)":\s*(True|False),?', stripped)
+        if flag_match:
+            if current_comments:
+                flag_name = flag_match.group(1)
+                default_value = flag_match.group(2) == "True"
+
+                flag = parse_comment_lines(current_comments, flag_name, 
default_value)
+                if flag:
+                    flags.append(flag)
+
+            current_comments = []  # Always reset after a flag definition
+
+    return flags
+
+
+def parse_comment_lines(comment_lines: list[str], flag_name: str, default: 
bool) -> FeatureFlag | None:
+    """Parse comment lines to extract flag metadata."""
+    if not comment_lines:
+        return None
+
+    lifecycle = None
+    docs = None
+    category = None
+    description_lines = []
+
+    for line in comment_lines:
+        if line.startswith("@lifecycle:"):
+            lifecycle = line.split(":", 1)[1].strip()
+        elif line.startswith("@docs:"):
+            docs = line.split(":", 1)[1].strip()
+        elif line.startswith("@category:"):
+            category = line.split(":", 1)[1].strip()
+        elif line and not line.startswith("@"):
+            description_lines.append(line)
+
+    if not lifecycle:
+        # Skip flags without lifecycle annotation
+        return None
+
+    description = " ".join(description_lines)
+
+    flag: FeatureFlag = {
+        "name": flag_name,
+        "default": default,
+        "lifecycle": lifecycle,
+        "description": description,
+    }
+
+    if docs:
+        flag["docs"] = docs
+    if category:
+        flag["category"] = category
+
+    return flag
+
+
+def main():
+    # Find config.py relative to this script
+    script_dir = Path(__file__).parent
+    repo_root = script_dir.parent
+    config_path = repo_root / "superset" / "config.py"
+
+    if not config_path.exists():
+        print(f"ERROR: Could not find {config_path}", file=sys.stderr)
+        sys.exit(1)
+
+    flags = extract_feature_flags(config_path)
+
+    # Group by lifecycle
+    grouped = {
+        "development": [],
+        "testing": [],
+        "stable": [],
+        "deprecated": [],
+    }
+
+    for flag in flags:
+        lifecycle = flag.get("lifecycle", "stable")
+        if lifecycle in grouped:
+            grouped[lifecycle].append(flag)
+
+    # Sort each group alphabetically by name
+    for lifecycle in grouped:
+        grouped[lifecycle].sort(key=lambda f: f["name"])
+
+    output = {
+        "generated": True,
+        "source": "superset/config.py",
+        "flags": grouped,
+    }
+
+    print(json.dumps(output, indent=2))
+
+
+if __name__ == "__main__":
+    main()
diff --git a/superset/config.py b/superset/config.py
index a33294ed65..5701d38d73 100644
--- a/superset/config.py
+++ b/superset/config.py
@@ -519,142 +519,264 @@ CURRENCIES = ["USD", "EUR", "GBP", "INR", "MXN", "JPY", 
"CNY"]
 # ---------------------------------------------------
 # Feature flags
 # ---------------------------------------------------
-# Feature flags that are set by default go here. Their values can be
-# overwritten by those specified under FEATURE_FLAGS in superset_config.py
-# For example, DEFAULT_FEATURE_FLAGS = { 'FOO': True, 'BAR': False } here
-# and FEATURE_FLAGS = { 'BAR': True, 'BAZ': True } in superset_config.py
-# will result in combined feature flags of { 'FOO': True, 'BAR': True, 'BAZ': 
True }
+# Feature flags control optional functionality in Superset. They can be set in
+# superset_config.py to override the defaults below.
+#
+# Example: FEATURE_FLAGS = { 'ALERT_REPORTS': True }
+#
+# Each flag is annotated with:
+#   @lifecycle: development | testing | stable | deprecated
+#   @docs: URL to documentation (optional)
+#   @category: runtime_config | path_to_deprecation (for stable flags)
+#
+# Lifecycle meanings:
+#   - development: Unfinished, for dev environments only
+#   - testing: Complete but being validated, may have bugs
+#   - stable: Production-ready, tested and supported
+#   - deprecated: Will be removed in a future major release
+
 DEFAULT_FEATURE_FLAGS: dict[str, bool] = {
-    # When using a recent version of Druid that supports JOINs turn this on
-    "DRUID_JOINS": False,
-    "DYNAMIC_PLUGINS": False,
-    "ENABLE_TEMPLATE_PROCESSING": False,
-    # Allow for javascript controls components
-    # this enables programmers to customize certain charts (like the
-    # geospatial ones) by inputting javascript in controls. This exposes
-    # an XSS security vulnerability
-    "ENABLE_JAVASCRIPT_CONTROLS": False,  # deprecated
+    # =================================================================
+    # IN DEVELOPMENT
+    # =================================================================
+    # These features are considered unfinished and should only be used
+    # on development environments.
+    # -----------------------------------------------------------------
+    # Enables Table V2 (AG Grid) viz plugin
+    # @lifecycle: development
+    "AG_GRID_TABLE_ENABLED": False,
+    # Enables experimental tabs UI for Alerts and Reports
+    # @lifecycle: development
+    "ALERT_REPORT_TABS": False,
+    # Enables experimental chart plugins
+    # @lifecycle: development
+    "CHART_PLUGINS_EXPERIMENTAL": False,
     # Experimental PyArrow engine for CSV parsing (may have issues with 
dates/nulls)
+    # @lifecycle: development
     "CSV_UPLOAD_PYARROW_ENGINE": False,
-    # When this feature is enabled, nested types in Presto will be
-    # expanded into extra columns and/or arrays. This is experimental,
-    # and doesn't work with all nested types.
+    # Allow metrics and columns to be grouped into folders in the chart builder
+    # @lifecycle: development
+    "DATASET_FOLDERS": False,
+    # Enable support for date range timeshifts (e.g., "2015-01-03 : 
2015-01-04")
+    # in addition to relative timeshifts (e.g., "1 day ago")
+    # @lifecycle: development
+    "DATE_RANGE_TIMESHIFTS_ENABLED": False,
+    # Enables advanced data type support
+    # @lifecycle: development
+    "ENABLE_ADVANCED_DATA_TYPES": False,
+    # Enable Superset extensions for custom functionality without modifying 
core
+    # @lifecycle: development
+    "ENABLE_EXTENSIONS": False,
+    # Enable Matrixify feature for matrix-style chart layouts
+    # @lifecycle: development
+    "MATRIXIFY": False,
+    # Try to optimize SQL queries — for now only predicate pushdown is 
supported
+    # @lifecycle: development
+    "OPTIMIZE_SQL": False,
+    # Expand nested types in Presto into extra columns/arrays. Experimental,
+    # doesn't work with all nested types.
+    # @lifecycle: development
     "PRESTO_EXPAND_DATA": False,
-    # Exposes API endpoint to compute thumbnails
-    "THUMBNAILS": False,
-    # Enables the endpoints to cache and retrieve dashboard screenshots via 
webdriver.
-    # Requires configuring Celery and a cache using THUMBNAIL_CACHE_CONFIG.
-    "ENABLE_DASHBOARD_SCREENSHOT_ENDPOINTS": False,
-    # Generate screenshots (PDF or JPG) of dashboards using the web driver.
-    # When disabled, screenshots are generated on the fly by the browser.
-    # This feature flag is used by the download feature in the dashboard view.
-    # It is dependent on ENABLE_DASHBOARD_SCREENSHOT_ENDPOINT being enabled.
-    "ENABLE_DASHBOARD_DOWNLOAD_WEBDRIVER_SCREENSHOT": False,
+    # Enable Table V2 time comparison feature
+    # @lifecycle: development
+    "TABLE_V2_TIME_COMPARISON_ENABLED": False,
+    # Enables the tagging system for organizing assets
+    # @lifecycle: development
     "TAGGING_SYSTEM": False,
-    "SQLLAB_BACKEND_PERSISTENCE": True,
-    "LISTVIEWS_DEFAULT_CARD_VIEW": False,
-    # When True, this escapes HTML (rather than rendering it) in Markdown 
components
-    "ESCAPE_MARKDOWN_HTML": False,
-    "DASHBOARD_VIRTUALIZATION": True,
-    # This feature flag is stil in beta and is not recommended for production 
use.
-    "GLOBAL_ASYNC_QUERIES": False,
-    "EMBEDDED_SUPERSET": False,
-    # Enables Alerts and reports new implementation
-    "ALERT_REPORTS": False,
-    "ALERT_REPORT_TABS": False,
+    # =================================================================
+    # IN TESTING
+    # =================================================================
+    # These features are finished but currently being tested.
+    # They are usable, but may still contain some bugs.
+    # -----------------------------------------------------------------
+    # Enables filter functionality in Alerts and Reports
+    # @lifecycle: testing
     "ALERT_REPORTS_FILTER": False,
+    # Enables Alerts and Reports functionality
+    # @lifecycle: testing
+    # @docs: https://superset.apache.org/docs/configuration/alerts-reports
+    "ALERT_REPORTS": False,
+    # Enables Slack V2 integration for Alerts and Reports
+    # @lifecycle: testing
     "ALERT_REPORT_SLACK_V2": False,
-    "DASHBOARD_RBAC": False,
-    "ENABLE_ADVANCED_DATA_TYPES": False,
-    # Enabling ALERTS_ATTACH_REPORTS, the system sends email and slack message
-    # with screenshot and link
-    # Disables ALERTS_ATTACH_REPORTS, the system DOES NOT generate screenshot
-    # for report with type 'alert' and sends email and slack message with only 
link;
-    # for report with type 'report' still send with email and slack message 
with
-    # screenshot and link
-    "ALERTS_ATTACH_REPORTS": True,
     # Allow users to export full CSV of table viz type.
-    # This could cause the server to run out of memory or compute.
+    # Warning: Could cause server memory/compute issues with large datasets.
+    # @lifecycle: testing
     "ALLOW_FULL_CSV_EXPORT": False,
-    "ALLOW_ADHOC_SUBQUERY": False,
-    "USE_ANALOGOUS_COLORS": False,
-    # Apply RLS rules to SQL Lab queries. This requires parsing and 
manipulating the
-    # query, and might break queries and/or allow users to bypass RLS. Use 
with care!
-    "RLS_IN_SQLLAB": False,
-    # Try to optimize SQL queries — for now only predicate pushdown is 
supported.
-    "OPTIMIZE_SQL": False,
-    # When impersonating a user, use the email prefix instead of the username
-    "IMPERSONATE_WITH_EMAIL_PREFIX": False,
-    # Enable caching per impersonation key (e.g username) in a datasource 
where user
-    # impersonation is enabled
+    # Enable caching per impersonation key in datasources with user 
impersonation
+    # @lifecycle: testing
     "CACHE_IMPERSONATION": False,
-    # Enable caching per user key for Superset cache (not database cache 
impersonation)
+    # Allow users to optionally specify date formats in email subjects
+    # @lifecycle: testing
+    # @docs: https://superset.apache.org/docs/configuration/alerts-reports
+    "DATE_FORMAT_IN_EMAIL_SUBJECT": False,
+    # Enable dynamic plugin loading
+    # @lifecycle: testing
+    "DYNAMIC_PLUGINS": False,
+    # Enables endpoints to cache and retrieve dashboard screenshots via 
webdriver.
+    # Requires Celery and THUMBNAIL_CACHE_CONFIG.
+    # @lifecycle: testing
+    "ENABLE_DASHBOARD_SCREENSHOT_ENDPOINTS": False,
+    # Generate screenshots (PDF/JPG) of dashboards using web driver.
+    # Depends on ENABLE_DASHBOARD_SCREENSHOT_ENDPOINTS.
+    # @lifecycle: testing
+    "ENABLE_DASHBOARD_DOWNLOAD_WEBDRIVER_SCREENSHOT": False,
+    # Allows users to add a superset:// DB that can query across databases.
+    # Experimental with potential security/performance risks. See 
SUPERSET_META_DB_LIMIT.
+    # @lifecycle: testing
+    # @docs: 
https://superset.apache.org/docs/configuration/databases/#querying-across-databases
+    "ENABLE_SUPERSET_META_DB": False,
+    # Enable query cost estimation. Supported in Presto, Postgres, and 
BigQuery.
+    # Requires `cost_estimate_enabled: true` in database `extra` attribute.
+    # @lifecycle: testing
+    "ESTIMATE_QUERY_COST": False,
+    # Enable async queries for dashboards and Explore via WebSocket.
+    # Requires Redis 5.0+ and Celery workers.
+    # @lifecycle: testing
+    # @docs: 
https://superset.apache.org/docs/contributing/misc#async-chart-queries
+    "GLOBAL_ASYNC_QUERIES": False,
+    # When impersonating a user, use the email prefix instead of username
+    # @lifecycle: testing
+    "IMPERSONATE_WITH_EMAIL_PREFIX": False,
+    # Replace Selenium with Playwright for reports and thumbnails.
+    # Supports deck.gl visualizations. Requires playwright pip package.
+    # @lifecycle: testing
+    "PLAYWRIGHT_REPORTS_AND_THUMBNAILS": False,
+    # Apply RLS rules to SQL Lab queries. Requires query parsing/manipulation.
+    # May break queries or allow RLS bypass. Use with care!
+    # @lifecycle: testing
+    "RLS_IN_SQLLAB": False,
+    # Allow users to enable SSH tunneling when creating a DB connection.
+    # DB engine must support SSH Tunnels.
+    # @lifecycle: testing
+    # @docs: https://superset.apache.org/docs/configuration/setup-ssh-tunneling
+    "SSH_TUNNELING": False,
+    # Use analogous colors in charts
+    # @lifecycle: testing
+    "USE_ANALOGOUS_COLORS": False,
+    # =================================================================
+    # STABLE - PATH TO DEPRECATION
+    # =================================================================
+    # These flags are stable and on path to becoming default behavior,
+    # after which the flag will be deprecated.
+    # -----------------------------------------------------------------
+    # Enables dashboard virtualization for improved performance
+    # @lifecycle: stable
+    # @category: path_to_deprecation
+    "DASHBOARD_VIRTUALIZATION": True,
+    # =================================================================
+    # STABLE - RUNTIME CONFIGURATION
+    # =================================================================
+    # These flags act as runtime configuration options. They are stable
+    # but will be retained as configuration options rather than deprecated.
+    # -----------------------------------------------------------------
+    # When enabled, alerts send email/slack with screenshot AND link.
+    # When disabled, alerts send only link; reports still send screenshot.
+    # @lifecycle: stable
+    # @category: runtime_config
+    "ALERTS_ATTACH_REPORTS": True,
+    # Allow ad-hoc subqueries in SQL Lab
+    # @lifecycle: stable
+    # @category: runtime_config
+    "ALLOW_ADHOC_SUBQUERY": False,
+    # Enable caching per user key for Superset cache
+    # @lifecycle: stable
+    # @category: runtime_config
     "CACHE_QUERY_BY_USER": False,
+    # Enables CSS Templates in Settings menu and dashboard forms
+    # @lifecycle: stable
+    # @category: runtime_config
+    "CSS_TEMPLATES": True,
+    # Role-based access control for dashboards
+    # @lifecycle: stable
+    # @category: runtime_config
+    # @docs: 
https://superset.apache.org/docs/using-superset/creating-your-first-dashboard
+    "DASHBOARD_RBAC": False,
+    # Data panel closed by default in chart builder
+    # @lifecycle: stable
+    # @category: runtime_config
+    "DATAPANEL_CLOSED_BY_DEFAULT": False,
+    # Enable drill-by functionality in charts
+    # @lifecycle: stable
+    # @category: runtime_config
+    "DRILL_BY": True,
+    # Enable Druid JOINs (requires Druid version with JOIN support)
+    # @lifecycle: stable
+    # @category: runtime_config
+    "DRUID_JOINS": False,
     # Enable sharing charts with embedding
+    # @lifecycle: stable
+    # @category: runtime_config
     "EMBEDDABLE_CHARTS": True,
-    "DRILL_TO_DETAIL": True,  # deprecated
-    "DRILL_BY": True,
-    "DATAPANEL_CLOSED_BY_DEFAULT": False,
-    # When you open the dashboard, the filter panel will be closed
+    # Enable embedded Superset functionality
+    # @lifecycle: stable
+    # @category: runtime_config
+    "EMBEDDED_SUPERSET": False,
+    # Enable Jinja templating in SQL queries
+    # @lifecycle: stable
+    # @category: runtime_config
+    "ENABLE_TEMPLATE_PROCESSING": False,
+    # Escape HTML in Markdown components (rather than rendering it)
+    # @lifecycle: stable
+    # @category: runtime_config
+    "ESCAPE_MARKDOWN_HTML": False,
+    # Filter bar closed by default when opening dashboard
+    # @lifecycle: stable
+    # @category: runtime_config
     "FILTERBAR_CLOSED_BY_DEFAULT": False,
-    # The feature is off by default, and currently only supported in Presto 
and Postgres,  # noqa: E501
-    # and Bigquery.
-    # It also needs to be enabled on a per-database basis, by adding the 
key/value pair
-    # `cost_estimate_enabled: true` to the database `extra` attribute.
-    "ESTIMATE_QUERY_COST": False,
-    # Allow users to enable ssh tunneling when creating a DB.
-    # Users must check whether the DB engine supports SSH Tunnels
-    # otherwise enabling this flag won't have any effect on the DB.
-    "SSH_TUNNELING": False,
-    "AVOID_COLORS_COLLISION": True,
-    # Do not show user info in the menu
+    # Force garbage collection after every request
+    # @lifecycle: stable
+    # @category: runtime_config
+    "FORCE_GARBAGE_COLLECTION_AFTER_EVERY_REQUEST": False,
+    # Use card view as default in list views
+    # @lifecycle: stable
+    # @category: runtime_config
+    "LISTVIEWS_DEFAULT_CARD_VIEW": False,
+    # Hide user info in the navigation menu
+    # @lifecycle: stable
+    # @category: runtime_config
     "MENU_HIDE_USER_INFO": False,
-    # Allows users to add a ``superset://`` DB that can query across 
databases. This is
-    # an experimental feature with potential security and performance risks, 
so use with
-    # caution. If the feature is enabled you can also set a limit for how much 
data is
-    # returned from each database in the ``SUPERSET_META_DB_LIMIT`` 
configuration value
-    # in this file.
-    "ENABLE_SUPERSET_META_DB": False,
-    # Set to True to replace Selenium with Playwright to execute reports and 
thumbnails.
-    # Unlike Selenium, Playwright reports support deck.gl visualizations
-    # Enabling this feature flag requires installing "playwright" pip package
-    "PLAYWRIGHT_REPORTS_AND_THUMBNAILS": False,
-    # Set to True to enable experimental chart plugins
-    "CHART_PLUGINS_EXPERIMENTAL": False,
-    # Regardless of database configuration settings, force SQLLAB to run async
-    # using Celery
+    # Use Slack avatars for users. Requires adding slack-edge.com to 
TALISMAN_CONFIG.
+    # @lifecycle: stable
+    # @category: runtime_config
+    "SLACK_ENABLE_AVATARS": False,
+    # Enable SQL Lab backend persistence for query state
+    # @lifecycle: stable
+    # @category: runtime_config
+    "SQLLAB_BACKEND_PERSISTENCE": True,
+    # Force SQL Lab to run async via Celery regardless of database settings
+    # @lifecycle: stable
+    # @category: runtime_config
     "SQLLAB_FORCE_RUN_ASYNC": False,
-    # Set to True to to enable factory resent CLI command
+    # Exposes API endpoint to compute thumbnails
+    # @lifecycle: stable
+    # @category: runtime_config
+    # @docs: https://superset.apache.org/docs/configuration/cache
+    "THUMBNAILS": False,
+    # =================================================================
+    # STABLE - INTERNAL/ADMIN
+    # =================================================================
+    # These flags are for internal use or administrative purposes.
+    # -----------------------------------------------------------------
+    # Enable factory reset CLI command
+    # @lifecycle: stable
+    # @category: internal
     "ENABLE_FACTORY_RESET_COMMAND": False,
-    # Whether Superset should use Slack avatars for users.
-    # If on, you'll want to add "https://avatars.slack-edge.com"; to the list 
of allowed
-    # domains in your TALISMAN_CONFIG
-    "SLACK_ENABLE_AVATARS": False,
-    # Adds a theme editor as a modal dialog in the navbar. Allows people to 
type in JSON
-    # Enables CSS Templates functionality in Settings menu and dashboard forms.
-    # When disabled, users can still add custom CSS to dashboards but cannot 
use
-    # pre-built CSS templates.
-    "CSS_TEMPLATES": True,
-    # Allow users to optionally specify date formats in email subjects, which 
will
-    # be parsed if enabled
-    "DATE_FORMAT_IN_EMAIL_SUBJECT": False,
-    # Allow metrics and columns to be grouped into (potentially nested) 
folders in the
-    # chart builder
-    "DATASET_FOLDERS": False,
-    # Enable Table V2 Viz plugin
-    "AG_GRID_TABLE_ENABLED": False,
-    # Enable Table v2 time comparison feature
-    "TABLE_V2_TIME_COMPARISON_ENABLED": False,
-    # Enable Superset extensions, which allow users to add custom functionality
-    # to Superset without modifying the core codebase.
-    "ENABLE_EXTENSIONS": False,
-    # Enable support for date range timeshifts (e.g., "2015-01-03 : 
2015-01-04")
-    # in addition to relative timeshifts (e.g., "1 day ago")
-    "DATE_RANGE_TIMESHIFTS_ENABLED": False,
-    # Enable Matrixify feature for matrix-style chart layouts
-    "MATRIXIFY": False,
-    # Force garbage collection after every request
-    "FORCE_GARBAGE_COLLECTION_AFTER_EVERY_REQUEST": False,
+    # =================================================================
+    # DEPRECATED
+    # =================================================================
+    # These flags default to True and will be removed in a future major
+    # release. Set to True in your config to avoid unexpected changes.
+    # -----------------------------------------------------------------
+    # Avoid color collisions in charts by using distinct colors
+    # @lifecycle: deprecated
+    "AVOID_COLORS_COLLISION": True,
+    # Enable drill-to-detail functionality in charts
+    # @lifecycle: deprecated
+    "DRILL_TO_DETAIL": True,
+    # Allow JavaScript in chart controls. WARNING: XSS security vulnerability!
+    # @lifecycle: deprecated
+    "ENABLE_JAVASCRIPT_CONTROLS": False,
 }
 
 # ------------------------------

Reply via email to