You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by el...@apache.org on 2026/10/09 18:51:12 UTC

(superset) branch hughhhh/pfm-6-explore-indicator updated (b83e550984e -> d808efd1f0a)

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

eschutho pushed a change to branch hughhhh/pfm-6-explore-indicator
in repository https://gitbox.apache.org/repos/asf/superset.git


 discard b83e550984e Merge branch 'master' into hughhhh/pfm-6-explore-indicator
 discard 6641896ca24 fix: pfm 8 merge and review (#45132)
    omit 5a88d872bac Update superset/migrations/versions/2026-09-23_00-01_a7f3c2e91d84_add_partition_filter_mapping.py
    omit 0fb2ea4c65e fix: partition-filtering on pfm-6 (#45058)
    omit 0655674ed36 Cursor/resolve pfm conflicts b2f7 (#45040)
    omit ed46a93d187 resolve conflicts
    omit 85f0deb0f55 Merge branch 'master' into hughhhh/pfm-6-explore-indicator
    omit 5596d7eecbd fix(explore): stop designating a partition column changing its flags
    omit d01cfc542f6 chore: regenerate the message catalogs
    omit 2b69a1fe01b fix(datasets): preview a filter the way the chart path mirrors it
    omit c98c51af1a7 fix(security): stop a transform cancelling the placeholder-position gate
    omit cadd36d2a2c fix(datasets): decline a literal the engine reads more coarsely than we can
    omit d733f868a8a fix(datasets): hold a text partition key to a text probe result
    omit 0d72d17e353 fix(datasets): drop a mirror the ranking subquery has no filter for
    omit 645d0b765b1 fix(datasource): stop an edit reopening a row the user collapsed
    omit 559f72e4f82 fix(security): deny the full-text functions that run their argument as a query
    omit 4295563dd29 fix(explore): narrow the mapping where the glyph's gate already proves it
    omit ef1c5e8a5d4 docs(datasets): add the indicator to the list of things the cache carries
    omit 457fb5b752c chore: regenerate the message catalogs
    omit eee9c0f42df fix(datasets): refuse a transform whose result the partition column cannot hold
    omit f37eac11259 fix(datasets): only claim mirroring once a probe has reported
    omit ec930bf53ec fix(datasets): stop a column sync resetting flags it was not asked to change
    omit e0c863955ff fix(explore): stop the glyph promising a mirror the engine's resolution declines
    omit eccd5aaba73 fix(datasets): read a filter literal as the instant the engine compares
    omit 72899b2b4d9 fix(datasets): reject a partition column the sync does not find (R5-02)
    omit 1a17cc34850 fix(datasets): mirror a strict bound non-strictly (R5-04)
    omit f68fda0367f test(datasets): type the two new partition mapping test fixtures
    omit 63606b42058 docs(datasets): name the cache backend the probe guards need
    omit 77b9c113ef0 fix(security): deny the schema_to_xml family and enforce the denylist on save
    omit d90c82894d8 perf(datasets): skip the partition probe during cache-key extraction
    omit 3338f5e18c9 fix(datasource): restore the collection table's row-class and reveal props
    omit f71bcd96cfd fix(datasets): carry the column-side mapping through a duplicate
    omit a605fecb5b2 fix(datasets): repair mapping references after a metadata refresh
    omit 91fcb917391 fix(datasets): disarm parked transforms before an overwrite import
    omit 05a8b76febd fix(datasets): default an omitted monotonic declaration to false on import
    omit 3e151edca98 fix(datasets): probe an epoch-millisecond filter as SQL, not a bind value
    omit 267707cc05d fix(datasets): widen a mirror to the day when the engine drops the time
    omit 57e873ef7a0 fix(datasets): substitute a probe's rendered SQL literally
    omit aaf7aed0b48 test(sql): cover the two SQLStatement methods directly
    omit 73be6b7c6a5 docs(datasets): say what a partition value transform may be
    omit 157bb434cd2 chore: regenerate the message catalogs
    omit b3bcd24d357 fix(datasets): validate the mapping against every column, not just physical
    omit b2ac89450cb fix(datasets): probe the transform the engine will actually run
    omit fdbb33024da Merge branch 'master' into hughhhh/pfm-6-explore-indicator
    omit ee044862168 chore: regenerate the OpenAPI spec and message catalogs
    omit 74df5b6c92b fix(datasets): stop the editor losing edits it cannot show, or a sibling's
    omit b1cb7768e5e fix(explore): keep the pruning glyphs across a dataset save
    omit 501d58e3666 fix(datasets): mirror equality only where the engine compares exactly
    omit 642e236e667 fix(datasets): repair a dangling mapping against what the request asked for
    omit 7c1692711fe fix(datasets): stop create minting a dataset no write can fix
    omit bca9dc6b2b0 fix(datasets): mirror the window each query actually filters
    omit 7f997ad2343 fix(datasets): probe the transform with the value the predicate compares
    omit 4760967c0b7 fix(datasets): stop import discarding what a PUT deliberately keeps
    omit 4365f073641 fix(datasets): let preview refuse what the query path already refuses
    omit 7c42ff8a48b fix(datasets): require a value transform to be a bare scalar expression
    omit fa6fbe42758 fix(datasets): stop the probe mangling its own SQL and its own results
    omit 9e8f42d5d4e fix(datasets): let import accept the null export writes
    omit 542e1dc583b Merge branch 'master' into hughhhh/pfm-6-explore-indicator
    omit 115c194f58d fix(datasets): gate every door a partition value transform enters by
    omit 5cfd5ddbf81 fix(datasets): disarm a parked transform before a mapping change arms it
    omit 2fc5ac8c890 fix(explore): guard the map-a-different-column link against having no target
    omit 69517c2e4df test(datasets): drop the permission the preview route no longer defines
    omit 6aa303b0f6f Merge branch 'master' into hughhhh/pfm-6-explore-indicator
    omit ff786951f84 fix(explore): hoist transformCanPreview, pin the empty-string sentinel
    omit dbdc586ad2d Merge branch 'master' into hughhhh/pfm-6-explore-indicator
    omit ad1c88876c6 Merge branch 'hughhhh/pfm-5-editor-ui' into hughhhh/pfm-6-explore-indicator
    omit 1229c467408 Merge branch 'hughhhh/pfm-3-preview-and-editor' into hughhhh/pfm-5-editor-ui
    omit ffa098b764f refactor(datasets): name the shared transform bound in the preview schema
    omit 1e132aefc97 fix(explore): only promise pruning where the query actually prunes
    omit 2acca1ecacd Merge branch 'hughhhh/pfm-5-editor-ui' into hughhhh/pfm-6-explore-indicator
    omit 6113387c98d fix(datasets): make the editor's claims match what will actually mirror
    omit 02e6eabf160 Merge branch 'hughhhh/pfm-3-preview-and-editor' into hughhhh/pfm-5-editor-ui
    omit 17f8f28b419 fix(datasets): close the gate preview went around, and stop it 500ing
    omit 4f8261152ad Merge branch 'hughhhh/pfm-2-query-rewrite' into hughhhh/pfm-3-preview-and-editor
    omit 7951536198d fix(datasets): give the query path the same transform gate as the editor
    omit a1c65d7ef4e Merge branch 'hughhhh/pfm-1-model-migration-api' into hughhhh/pfm-2-query-rewrite
    omit 0b4ba99bdcd fix(datasets): validate a partition mapping at every door, not just PUT
    omit e643b1fee05 fix(explore): let the time range control config infer its own control type
    omit adff6384811 Merge branch 'hughhhh/pfm-3-preview-and-editor' into hughhhh/pfm-5-editor-ui
    omit fb1ba20f899 Merge branch 'hughhhh/pfm-2-query-rewrite' into hughhhh/pfm-3-preview-and-editor
    omit 2e1ac098991 Merge branch 'hughhhh/pfm-5-editor-ui' into hughhhh/pfm-6-explore-indicator
    omit 74564b9206a Merge branch 'hughhhh/pfm-1-model-migration-api' into hughhhh/pfm-2-query-rewrite
    omit b4676ae2024 Merge remote-tracking branch 'origin/master' into hughhhh/pfm-1-model-migration-api
    omit e4ec66c440c i18n: extract the new value transform validation string
    omit 8b837659882 fix(datasets): stop the save when the value transform cannot be saved
    omit db0a80d42ed fix(datasets): stop the value transform input dropping keystrokes
    omit b7a1225280d test(explore): make the time range regression tests type-check
    omit e6a79ea05b7 test(explore): pin every chart that carries a standalone time range
    omit 739c5e02209 fix(datasets): do not carry a value transform to a new datetime column
    omit 72768639b1c fix(explore): a control can never be its own validation dependant
    omit e21eac27283 fix(explore): stop the time range control clobbering its own value
    omit cbe881fcc83 fix(datasets): stop a stale partition transform surviving an API write
    omit d57db4cb383 fix(explore): stop a removed or re-pointed mapping resurrecting a stale transform
    omit 4f58ef24b2c fix(explore): keep exactly one column holding a partition mapping
    omit 219d1060535 style(explore): re-attach the partition column defaults docstring
    omit 3e98de012b1 chore(translations): extract the partition pruning indicator string
    omit 46e4cd7c54e fix(explore): keep the time range pruning glyph in sync with field updates
    omit 1270cda6df6 style(explore): apply oxfmt to the partition mapping helpers
    omit bdfaeb9299d fix(explore): only show the pruning glyph on filters that actually mirror
    omit f06a9ad100d feat(explore): indicate when a filter is mirrored onto a partition column
    omit 2c52c5fc286 style: let ruff format the preview sample-input return
    omit 06a6239d4c8 fix(datasets): correct the NULL-partition docs and stop hopeless previews
    omit 97493b2573f chore(translations): regenerate messages.pot for the partition mapping editor
    omit 98dcd5e19a8 fix: satisfy the frontend hooks on the partition mapping editor
    omit b4b1c05cc2e fix(datasets): drop an unused import from the dataset schemas
    omit fff6aecdb7c docs: correct where the partition mapping controls live
    omit 1ec461fcccb fix(datasets): wrap long text in the partition mapping row expand
    omit d54b81256da feat(datasets): add the partition filter mapping editor UI
    omit 7ee7f03aef8 chore(datasets): add the preview strings to the message catalogs
    omit 8eb46d930a6 docs: document partition filter mapping
    omit 2c664ba8cc0 docs: regenerate the OpenAPI spec for the preview schema bounds
    omit d9125ebe190 fix(datasets): make the preview throttle atomic, bounded and fixed-window
    omit e1c750fc7a9 feat(datasets): add partition mapping preview endpoint and editor plumbing
    omit 3d028a015a3 feat(datasets): mirror grain-bearing ranges by widening both bounds
    omit f4124ac86c3 fix(datasets): key the transform probe on the connection
    omit 1987cb8cfd6 fix(datasets): keep mirrored predicates no narrower than the filter
    omit 2f6aaf142d2 feat(datasets): mirror filters onto the partition column at query time
    omit ae33f9f1106 test(mobile): pin the mobile dashboard tests to the world_health sample
    omit f0febd8ab5b fix(datasets): gate partition mapping validation on the feature flag
    omit 17a5f683121 fix(datasets): make the Explore mapping indicator agree with save-time validation
    omit b54daf52dc5 chore(datasets): regenerate the message catalogs and the OpenAPI spec
    omit 3fb09a3e083 fix(datasets): don't let a partition mapping be clobbered, blocked or orphaned
    omit d61bff53f90 test(sql): drop a leftover merge-resolution note from parse_tests
    omit 51a1483ef6c fix(datasets): rebase the partition mapping migration onto master's head
    omit 2f4c14bf23d docs(datasets): scope the PARTITION_FILTER_MAPPING flag description
    omit a6fd901d57e feat(datasets): add partition filter mapping model, migration and validation
     add 2ec20003ed5 chore: Update CODEOWNERS to include @sadpandajoe (#45120)
     add e5c5e918359 feat(mcp): add typed Sunburst chart support (#43771)
     add 4ca736d81c5 fix(semantic-layer): require write access for configuration schema enrichment (#45107)
     add 6efc896e5b9 test(dashboard): wait for async submenu and debounced validation in flaky tests (#45106)
     add 3bc9e9e479f fix(datasets): accept certification fields on dataset column and metric PUT (#45091)
     add cd34cc1019f chore(deps): bump chromaui/action from 18.10.1 to 18.10.2 (#45134)
     add 1b35374fecb fix(semantic-layer): honor provider preferred time dimension (#44997)
     add ffc81d92a2c feat(dashboard): add column allowlist to Group By native filter (#43736)
     add 3fc078abe6b fix(soft-delete): preserve a shared datasource permission on purge (#45034)
     add a4a0899e92c perf(versioning): defer capture policy until versioned work (#44928)
     add 99899bd392f fix(date-parser): reject malformed time ranges instead of scanning everything (#45098)
     add 13c5ff8c87f chore(deps-dev): bump wait-on from 9.4.0 to 9.5.1 in /superset-frontend (#45048)
     add 61df1692584 chore(deps): bump mapbox-gl from 3.31.0 to 3.32.0 in /superset-frontend (#45049)
     add 035ae052525 chore(deps-dev): bump vitest from 5.0.2 to 5.0.3 in /superset-embedded-sdk (#45074)
     add 9635e7f1f91 chore(deps): bump the swc group across 2 directories with 1 update (#45118)
     add 9e7a05e6ed1 chore(deps-dev): bump @types/node in /superset-embedded-sdk (#45121)
     add cda7a1e8189 chore(deps): bump swagger-ui-react from 5.33.0 to 5.33.1 in /docs (#45122)
     add cfb0ed61eb8 chore(deps): bump yargs from 18.1.0 to 18.2.0 in /superset-frontend (#45129)
     add a8fc576cfe3 chore(deps-dev): bump oxfmt in /docs (#45119)
     add bedcadb4071 feat(datasets): add partition filter mapping model, migration and validation
     add 86532a4586a docs(datasets): scope the PARTITION_FILTER_MAPPING flag description
     add 65d414db57d fix(datasets): rebase the partition mapping migration onto master's head
     add ce79a5b0d17 test(sql): drop a leftover merge-resolution note from parse_tests
     add 880a585e121 fix(datasets): don't let a partition mapping be clobbered, blocked or orphaned
     add 91c08796a53 chore(datasets): regenerate the message catalogs and the OpenAPI spec
     add cf5cb0753dd fix(datasets): make the Explore mapping indicator agree with save-time validation
     add 5766fc9dfd7 fix(datasets): gate partition mapping validation on the feature flag
     add 4feadb3df2c feat(datasets): mirror filters onto the partition column at query time
     add 5b0029cf39d fix(datasets): keep mirrored predicates no narrower than the filter
     add 8d2cc3828ef fix(datasets): key the transform probe on the connection
     add 98055d6cafd feat(datasets): mirror grain-bearing ranges by widening both bounds
     add c9d55f8c363 feat(datasets): add partition mapping preview endpoint and editor plumbing
     add 49efedce789 fix(datasets): make the preview throttle atomic, bounded and fixed-window
     add 525c57f9a07 docs: regenerate the OpenAPI spec for the preview schema bounds
     add 94d0695d7b5 chore(datasets): add the preview strings to the message catalogs
     add ca52c1c8de6 docs: document partition filter mapping
     add 9c4c7480f9d feat(datasets): add the partition filter mapping editor UI
     add c4899710632 fix(datasets): wrap long text in the partition mapping row expand
     add 0d84c0ad9d3 docs: correct where the partition mapping controls live
     add bc18af015d4 fix(datasets): drop an unused import from the dataset schemas
     add d48076a9c6b fix: satisfy the frontend hooks on the partition mapping editor
     add 0cd9620b804 fix(datasets): correct the NULL-partition docs and stop hopeless previews
     add 8b832af48a2 style: let ruff format the preview sample-input return
     add 6b6450f1121 feat(explore): indicate when a filter is mirrored onto a partition column
     add 34c64203f6a fix(explore): only show the pruning glyph on filters that actually mirror
     add ade1f932a1c style(explore): apply oxfmt to the partition mapping helpers
     add 1613201ffed fix(explore): keep the time range pruning glyph in sync with field updates
     add 21e98cd830a style(explore): re-attach the partition column defaults docstring
     add 89e06d861fd fix(explore): keep exactly one column holding a partition mapping
     add faaa56bd408 fix(explore): stop a removed or re-pointed mapping resurrecting a stale transform
     add d4b326113b1 fix(datasets): stop a stale partition transform surviving an API write
     add aed5c95c90e fix(explore): stop the time range control clobbering its own value
     add 74fb38b70e4 fix(explore): a control can never be its own validation dependant
     add d43a63d64fc fix(datasets): do not carry a value transform to a new datetime column
     add 7d0aa442b3b test(explore): pin every chart that carries a standalone time range
     add c6389bae76b test(explore): make the time range regression tests type-check
     add c8789aa60ae fix(datasets): stop the value transform input dropping keystrokes
     add 74b5d7a4122 fix(datasets): stop the save when the value transform cannot be saved
     add d74a1a196ee fix(explore): let the time range control config infer its own control type
     add 990410fc4fc fix(datasets): validate a partition mapping at every door, not just PUT
     add 39ebc9413df fix(datasets): give the query path the same transform gate as the editor
     add c747508743a fix(datasets): close the gate preview went around, and stop it 500ing
     add af2b291095e fix(datasets): make the editor's claims match what will actually mirror
     add 3668d11d9ff fix(explore): only promise pruning where the query actually prunes
     add c468ce5ab8c refactor(datasets): name the shared transform bound in the preview schema
     add 01eba8dfb43 fix(explore): hoist transformCanPreview, pin the empty-string sentinel
     add 04a2986326d test(datasets): drop the permission the preview route no longer defines
     add 311c4851779 fix(explore): guard the map-a-different-column link against having no target
     add a004a0ff5b3 fix(datasets): disarm a parked transform before a mapping change arms it
     add deaca20d9f5 fix(datasets): gate every door a partition value transform enters by
     add b9e388c6c48 fix(datasets): let import accept the null export writes
     add 1f65535fe44 fix(datasets): stop the probe mangling its own SQL and its own results
     add 681400f504f fix(datasets): require a value transform to be a bare scalar expression
     add 3fc2465e6bd fix(datasets): let preview refuse what the query path already refuses
     add 4e9e76c6292 fix(datasets): stop import discarding what a PUT deliberately keeps
     add 2bc3d778d36 fix(datasets): probe the transform with the value the predicate compares
     add 84439af53bb fix(datasets): mirror the window each query actually filters
     add 85b1addb68a fix(datasets): stop create minting a dataset no write can fix
     add fced8ba878e fix(datasets): repair a dangling mapping against what the request asked for
     add f3f49af437e fix(datasets): mirror equality only where the engine compares exactly
     add e722491958c fix(explore): keep the pruning glyphs across a dataset save
     add 24ca0e49b2a fix(datasets): stop the editor losing edits it cannot show, or a sibling's
     add 39699dac635 chore: regenerate the OpenAPI spec and message catalogs
     add e84b6d2abb8 fix(datasets): probe the transform the engine will actually run
     add 3ba0f3cce6c fix(datasets): validate the mapping against every column, not just physical
     add fed6baab66f docs(datasets): say what a partition value transform may be
     add 257df8dcd77 test(sql): cover the two SQLStatement methods directly
     add 0690d1eb102 fix(datasets): substitute a probe's rendered SQL literally
     add deb0b756f33 fix(datasets): widen a mirror to the day when the engine drops the time
     add 63cb0cdd98b fix(datasets): probe an epoch-millisecond filter as SQL, not a bind value
     add 605276f4079 fix(datasets): default an omitted monotonic declaration to false on import
     add 52c758a4ddd fix(datasets): disarm parked transforms before an overwrite import
     add 4b93825cd94 fix(datasets): repair mapping references after a metadata refresh
     add e278dd03682 fix(datasets): carry the column-side mapping through a duplicate
     add ea3ecf65146 fix(datasource): restore the collection table's row-class and reveal props
     add 380956a582d perf(datasets): skip the partition probe during cache-key extraction
     add 90bc18f54a9 fix(security): deny the schema_to_xml family and enforce the denylist on save
     add 9c93e1072d1 docs(datasets): name the cache backend the probe guards need
     add fea9e2117bf test(datasets): type the two new partition mapping test fixtures
     add 909a4ccb7e5 fix(datasets): mirror a strict bound non-strictly (R5-04)
     add 65e0a41ad6e fix(datasets): reject a partition column the sync does not find (R5-02)
     add b4a5c78505d fix(datasets): read a filter literal as the instant the engine compares
     add b12ccffba1c fix(explore): stop the glyph promising a mirror the engine's resolution declines
     add c51d1bbb162 fix(datasets): stop a column sync resetting flags it was not asked to change
     add f8ae1a29a03 fix(datasets): only claim mirroring once a probe has reported
     add 4b95c29163d fix(datasets): refuse a transform whose result the partition column cannot hold
     add 6c987dc1ad8 docs(datasets): add the indicator to the list of things the cache carries
     add 8967be64c1c fix(explore): narrow the mapping where the glyph's gate already proves it
     add 7637aa2656f fix(security): deny the full-text functions that run their argument as a query
     add c8a9ed11f83 fix(datasource): stop an edit reopening a row the user collapsed
     add b6df89506ea fix(datasets): drop a mirror the ranking subquery has no filter for
     add e61f2905af5 fix(datasets): hold a text partition key to a text probe result
     add 75a38ccf930 fix(datasets): decline a literal the engine reads more coarsely than we can
     add 770a0e00c88 fix(security): stop a transform cancelling the placeholder-position gate
     add 8dd7a5449df fix(datasets): preview a filter the way the chart path mirrors it
     add 6b25a733cb1 chore: regenerate the message catalogs
     add bafd0b55467 fix(explore): stop designating a partition column changing its flags
     add 981ea239977 resolve conflicts
     add e302b64c33d Cursor/resolve pfm conflicts b2f7 (#45040)
     add 403df88c485 fix: partition-filtering on pfm-6 (#45058)
     add 2dc8c4b52e7 Update superset/migrations/versions/2026-09-23_00-01_a7f3c2e91d84_add_partition_filter_mapping.py
     add 32f997b826f fix: pfm 8 merge and review (#45132)
     add f1dce857667 fix(datasets): check the literal resolution of an unflagged DATE column
     add 8f4085c62ad chore(datasets): name the migration's real parent in its docstring
     add 1ee6c37febe fix(datasets): decline an offset-bearing filter value on a full-resolution column
     add 159185ed034 fix(datasets): probe a numeric filter value in the column's number type
     add a533814e7b0 fix(datasets): say why preview withdraws text equality
     add 1fa334d2899 fix(datasets): preview an array column with the literal the chart probes
     add dee9cca8f8a fix(datasets): preview a numeric temporal column in its stored representation
     add e61585070ea fix(datasets): stop the partition column help claiming it hides the column
     add d808efd1f0a chore: regenerate the message catalogs

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (b83e550984e)
            \
             N -- N -- N   refs/heads/hughhhh/pfm-6-explore-indicator (d808efd1f0a)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

No new revisions were added by this update.

Summary of changes:
 .github/CODEOWNERS                                 |    8 +-
 .github/workflows/chromatic.yml                    |    2 +-
 UPDATING.md                                        |   38 +
 docs/admin_docs/configuration/mcp-server.mdx       |   97 +-
 .../extensions/contribution-types.md               |   16 +
 docs/developer_docs/extensions/mcp.md              |    9 +
 .../using-superset/exporting-dashboard-data.mdx    |    4 +-
 .../docs/using-superset/using-ai-with-superset.mdx |   32 +
 docs/package.json                                  |    6 +-
 docs/static/resources/openapi.json                 |   32 +
 docs/yarn.lock                                     |  404 +-
 .../src/superset_core/semantic_layers/view.py      |    3 +
 superset-embedded-sdk/package-lock.json            |  184 +-
 superset-embedded-sdk/package.json                 |    4 +-
 superset-frontend/package-lock.json                |  308 +-
 superset-frontend/package.json                     |   12 +-
 .../packages/superset-ui-core/package.json         |    2 +-
 .../plugin-chart-point-cluster-map/package.json    |    2 +-
 .../DynamicGroupBy/DynamicGroupByPlugin.test.tsx   |   56 +
 .../DynamicGroupBy/DynamicGroupByPlugin.tsx        |   52 +-
 .../DynamicGroupBy/columnAllowlist.test.ts         |   67 +
 .../components/DynamicGroupBy/columnAllowlist.ts   |  105 +
 .../components/DynamicGroupBy/types.ts             |    5 +
 .../PartitionColumnFields.tsx                      |    2 +-
 .../PartitionFilterMapping.test.tsx                |    1 +
 .../components/PartitionFilterMapping/types.ts     |    1 +
 .../PartitionFilterMapping/utils.test.ts           |   32 +
 .../components/PartitionFilterMapping/utils.ts     |   24 +-
 .../components/gridComponents/Chart/Chart.test.tsx |   24 +-
 .../FilterControls/GroupByFilterCard.test.tsx      |  159 +
 .../FilterBar/FilterControls/GroupByFilterCard.tsx |   41 +-
 .../FiltersConfigForm/ColumnSelect.test.tsx        |   39 +
 .../FiltersConfigForm/ColumnSelect.tsx             |   99 +-
 .../FiltersConfigForm/FiltersConfigForm.tsx        |  197 +-
 .../GroupByColumnAllowlist.test.tsx                |  429 ++
 .../FiltersConfigModal/FiltersConfigModal.test.tsx |    6 +-
 .../transformers/customizationTransformer.test.ts  |  109 +
 .../transformers/customizationTransformer.ts       |   59 +-
 .../nativeFilters/FiltersConfigModal/types.ts      |    4 +
 superset-websocket/package-lock.json               |    8 +-
 superset-websocket/package.json                    |    2 +-
 superset/charts/data/form_data.py                  |    2 +-
 .../commands/deletion_retention/purge_policy.py    |   26 +-
 superset/common/form_data_query_context.py         | 1599 +++++-
 superset/common/tabular_query.py                   |    7 +-
 superset/connectors/sqla/partition_mapping.py      |   42 +-
 superset/dashboards/excel_export/workbook.py       |   11 +-
 superset/datasets/schemas.py                       |   39 +-
 superset/mcp_service/app.py                        |    8 +-
 superset/mcp_service/chart/chart_helpers.py        |  524 +-
 superset/mcp_service/chart/chart_utils.py          | 1059 +++-
 superset/mcp_service/chart/compile.py              |  145 +-
 superset/mcp_service/chart/plugin.py               |  202 +-
 superset/mcp_service/chart/plugins/__init__.py     |    3 +
 superset/mcp_service/chart/plugins/big_number.py   |   23 +-
 superset/mcp_service/chart/plugins/bubble.py       |    4 +-
 superset/mcp_service/chart/plugins/gantt.py        |   32 +
 superset/mcp_service/chart/plugins/gauge.py        |   40 +-
 superset/mcp_service/chart/plugins/histogram.py    |   10 +-
 .../mcp_service/chart/plugins/mixed_timeseries.py  |   84 +-
 superset/mcp_service/chart/plugins/pivot_table.py  |    4 +
 superset/mcp_service/chart/plugins/sunburst.py     |  288 +
 superset/mcp_service/chart/plugins/table.py        |   25 +
 superset/mcp_service/chart/plugins/treemap.py      |    3 +-
 superset/mcp_service/chart/plugins/waterfall.py    |    6 +-
 superset/mcp_service/chart/plugins/xy.py           |   30 +-
 superset/mcp_service/chart/preview_utils.py        |  376 +-
 superset/mcp_service/chart/query_result.py         | 1756 ++++++-
 superset/mcp_service/chart/registry.py             |   18 +
 .../mcp_service/chart/resources/chart_configs.py   |   55 +-
 superset/mcp_service/chart/response_preflight.py   |  204 +
 superset/mcp_service/chart/schemas.py              | 1421 ++++-
 superset/mcp_service/chart/sunburst.py             |  436 ++
 superset/mcp_service/chart/tool/generate_chart.py  |  122 +-
 superset/mcp_service/chart/tool/get_chart_data.py  |  642 ++-
 .../mcp_service/chart/tool/get_chart_preview.py    |  160 +-
 superset/mcp_service/chart/tool/get_chart_sql.py   |  195 +-
 .../chart/tool/get_chart_type_schema.py            |   23 +-
 superset/mcp_service/chart/tool/update_chart.py    |  469 +-
 .../mcp_service/chart/tool/update_chart_preview.py |  366 +-
 .../chart/validation/dataset_validator.py          |  431 +-
 .../validation/runtime/chart_type_suggester.py     |   13 +-
 .../mcp_service/common/time_range_validation.py    |   81 +-
 superset/mcp_service/dataset/schemas.py            |   10 +-
 superset/mcp_service/dataset/tool/query_dataset.py |  149 +-
 superset/mcp_service/semantic_layer/schemas.py     |    8 +-
 .../mcp_service/semantic_layer/tool/get_table.py   |  128 +-
 superset/mcp_service/utils/cache_utils.py          |   32 +-
 superset/mcp_service/utils/response_utils.py       |  294 +-
 superset/mcp_service/utils/serialization.py        |   51 +-
 ...01_a7f3c2e91d84_add_partition_filter_mapping.py |    2 +-
 superset/models/helpers.py                         |  113 +-
 superset/security/manager.py                       |  102 +-
 superset/semantic_layers/api.py                    |    8 +-
 superset/semantic_layers/models.py                 |   36 +-
 superset/translations/ar/LC_MESSAGES/messages.po   |   34 +-
 superset/translations/ca/LC_MESSAGES/messages.po   |   34 +-
 superset/translations/cs/LC_MESSAGES/messages.po   |   34 +-
 superset/translations/de/LC_MESSAGES/messages.po   |   34 +-
 superset/translations/en/LC_MESSAGES/messages.po   |   34 +-
 superset/translations/es/LC_MESSAGES/messages.po   |   34 +-
 superset/translations/fa/LC_MESSAGES/messages.po   |   34 +-
 superset/translations/fi/LC_MESSAGES/messages.po   |   34 +-
 superset/translations/fr/LC_MESSAGES/messages.po   |   34 +-
 superset/translations/it/LC_MESSAGES/messages.po   |   34 +-
 superset/translations/ja/LC_MESSAGES/messages.po   |   34 +-
 superset/translations/ko/LC_MESSAGES/messages.po   |   34 +-
 superset/translations/lv/LC_MESSAGES/messages.po   |   34 +-
 superset/translations/messages.pot                 |   25 +-
 superset/translations/mi/LC_MESSAGES/messages.po   |   34 +-
 superset/translations/nl/LC_MESSAGES/messages.po   |   34 +-
 superset/translations/pl/LC_MESSAGES/messages.po   |   34 +-
 superset/translations/pt/LC_MESSAGES/messages.po   |   34 +-
 .../translations/pt_BR/LC_MESSAGES/messages.po     |   34 +-
 superset/translations/ro/LC_MESSAGES/messages.po   |   34 +-
 superset/translations/ru/LC_MESSAGES/messages.po   |   34 +-
 superset/translations/sk/LC_MESSAGES/messages.po   |   34 +-
 superset/translations/sl/LC_MESSAGES/messages.po   |   34 +-
 superset/translations/sr/LC_MESSAGES/messages.po   |   34 +-
 .../translations/sr_Latn/LC_MESSAGES/messages.po   |   34 +-
 superset/translations/ta/LC_MESSAGES/messages.po   |   34 +-
 superset/translations/th/LC_MESSAGES/messages.po   |   34 +-
 superset/translations/tr/LC_MESSAGES/messages.po   |   34 +-
 superset/translations/uk/LC_MESSAGES/messages.po   |   34 +-
 superset/translations/zh/LC_MESSAGES/messages.po   |   34 +-
 .../translations/zh_TW/LC_MESSAGES/messages.po     |   34 +-
 superset/utils/date_parser.py                      |    4 +
 superset/versioning/baseline/listener.py           |    6 +-
 superset/versioning/changes/listener.py            |   15 +-
 superset/versioning/metrics.py                     |    6 +-
 superset/versioning/unit_of_work.py                |   42 +-
 .../deletion_retention/purge_tests.py              |  200 +
 .../charts/data/test_time_range_validation.py      |   48 +
 .../common/test_form_data_query_context.py         |  296 +-
 .../dashboards/test_excel_export_sync_budget.py    |   47 +
 tests/unit_tests/datasets/dao/dao_tests.py         |   65 +
 .../datasets/partition_mapping_preview_test.py     |   73 +
 tests/unit_tests/datasets/schema_tests.py          |   52 +
 .../mcp_service/chart/query_result_fixtures.py     |  165 +
 ...test_axis_offset_and_spatial_query_contracts.py |  474 ++
 .../mcp_service/chart/test_bubble_chart.py         |   10 +-
 .../mcp_service/chart/test_chart_helpers.py        |  504 +-
 .../chart/test_chart_plugin_contract.py            |  227 +-
 .../mcp_service/chart/test_chart_utils.py          |  113 +
 tests/unit_tests/mcp_service/chart/test_compile.py |  470 +-
 .../mcp_service/chart/test_gantt_chart.py          |   35 +-
 ..._metric_aggregation_and_comparison_contracts.py |  379 ++
 ...ative_form_data_and_dataset_rebind_contracts.py | 1326 +++++
 .../mcp_service/chart/test_new_chart_types.py      |    4 +-
 .../mcp_service/chart/test_preview_utils.py        |  292 +-
 .../mcp_service/chart/test_query_result.py         | 2027 ++++++-
 .../unit_tests/mcp_service/chart/test_registry.py  |   33 +-
 .../mcp_service/chart/test_response_preflight.py   |  486 ++
 .../test_review_query_and_preview_regressions.py   |  438 ++
 .../mcp_service/chart/test_sunburst_chart.py       | 5547 ++++++++++++++++++++
 .../mcp_service/chart/test_treemap_completeness.py |   56 +-
 .../mcp_service/chart/tool/test_generate_chart.py  |   95 +
 .../mcp_service/chart/tool/test_get_chart_data.py  | 2378 ++++++++-
 .../chart/tool/test_get_chart_preview.py           |  362 +-
 .../mcp_service/chart/tool/test_get_chart_sql.py   |  332 +-
 .../mcp_service/chart/tool/test_update_chart.py    |  834 ++-
 .../chart/tool/test_update_chart_preview.py        |  245 +-
 .../chart/validation/test_dataset_validator.py     |  228 +-
 .../common/test_time_range_validation.py           |   82 +-
 .../mcp_service/dataset/tool/test_query_dataset.py |  954 +++-
 .../explore/tool/test_generate_explore_link.py     |  476 +-
 .../semantic_layer/tool/test_get_table.py          | 1009 +++-
 .../mcp_service/test_chart_tool_inventory.py       |    2 +-
 .../unit_tests/mcp_service/test_dashboard_scope.py |   11 +-
 .../unit_tests/mcp_service/test_tool_inventory.py  |    2 +-
 .../mcp_service/utils/test_cache_utils.py          |   32 +-
 .../mcp_service/utils/test_response_utils.py       |  246 +
 .../mcp_service/utils/test_serialization.py        |   68 +
 .../unit_tests/models/partition_mirroring_test.py  |  117 +
 .../unit_tests/models/test_certification_mixin.py  |   76 +
 tests/unit_tests/security/manager_test.py          |  203 +
 tests/unit_tests/semantic_layers/api_test.py       |   77 +
 tests/unit_tests/semantic_layers/models_test.py    |   97 +-
 tests/unit_tests/utils/date_parser_tests.py        |   47 +
 tests/unit_tests/versioning/test_listener.py       |   16 +-
 .../unit_tests/versioning/test_runtime_capture.py  |  157 +
 181 files changed, 33729 insertions(+), 3503 deletions(-)
 create mode 100644 superset-frontend/src/chartCustomizations/components/DynamicGroupBy/columnAllowlist.test.ts
 create mode 100644 superset-frontend/src/chartCustomizations/components/DynamicGroupBy/columnAllowlist.ts
 create mode 100644 superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/GroupByColumnAllowlist.test.tsx
 create mode 100644 superset/mcp_service/chart/plugins/sunburst.py
 create mode 100644 superset/mcp_service/chart/response_preflight.py
 create mode 100644 superset/mcp_service/chart/sunburst.py
 create mode 100644 tests/unit_tests/charts/data/test_time_range_validation.py
 create mode 100644 tests/unit_tests/mcp_service/chart/query_result_fixtures.py
 create mode 100644 tests/unit_tests/mcp_service/chart/test_axis_offset_and_spatial_query_contracts.py
 create mode 100644 tests/unit_tests/mcp_service/chart/test_metric_aggregation_and_comparison_contracts.py
 create mode 100644 tests/unit_tests/mcp_service/chart/test_native_form_data_and_dataset_rebind_contracts.py
 create mode 100644 tests/unit_tests/mcp_service/chart/test_response_preflight.py
 create mode 100644 tests/unit_tests/mcp_service/chart/test_review_query_and_preview_regressions.py
 create mode 100644 tests/unit_tests/mcp_service/chart/test_sunburst_chart.py
 create mode 100644 tests/unit_tests/models/test_certification_mixin.py