mikebridge opened a new pull request, #44413: URL: https://github.com/apache/superset/pull/44413
### SUMMARY Fix [SC-121353](https://app.shortcut.com/preset/story/121353): dashboard datasets metadata resolves charts by datasource type, includes semantic views, and isolates provider discovery failures so a broken view does not hide table metadata. Semantic capability fields reach the dashboard store; message-only backend errors render instead of a loading indicator. Semantic payload UID is normalized only at the API serialization boundary to match the chart datasource key. Related: [SC-120295](https://app.shortcut.com/preset/story/120295), [superset-shell#5140](https://github.com/preset-io/superset-shell/pull/5140), [#44269](https://github.com/apache/superset/pull/44269), [#43848](https://github.com/apache/superset/pull/43848). Access policy unchanged: existing `raise_for_access(datasource=SemanticView)` is type-aware, including parent semantic-layer grants, with sc-119501 coverage in `tests/unit_tests/dashboards/semantic_view_access_test.py` and `tests/unit_tests/security/manager_test.py`. New serializer access tests mock `can_access_datasource`: they prove narrowing wiring, not the underlying gate. ### BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF No browser capture. Before: semantic metadata omitted, message-only backend errors could remain a spinner. After: semantic metadata and capabilities reach the store; message-only errors render. Verified via backend and React unit tests, not live provider or embedded-browser acceptance. ### TESTING INSTRUCTIONS Automated: affected dashboards/semantic-layer/model/DAO suites (630 passed), Chart Jest (5 passed), source-resolved targeted tsc (exit 0). Controls reproduced provider exceptions, lost capability fields, incorrect UID boundary and actual enum TS2322. MyPy/other applicable hooks pass. The configured frontend type hook still lacks built workspace declarations; the source-resolved lane uses existing source paths, references dropped, without declaration copies. Exact-head CI must build packages. Manual follow-up: load a dashboard with both a table-backed and semantic chart. Confirm distinct metadata when ids match; simulate provider discovery failure and confirm table metadata remains. Confirm semantic charts do not offer unsupported drill-to-detail and show a message-only chart-data failure. Do not enable shared flags. ### ADDITIONAL INFORMATION - [x] Has associated issue: SC-121353 - [ ] Required feature flags: no new flag; existing semantic-view setup required - [x] Changes UI - [ ] Includes DB Migration - [ ] Introduces new feature or API - [ ] Removes existing feature or API Known follow-ups, deliberately outside this endpoint fix: - Align `SemanticView.uid` (provider identity) with the host `id__type` convention across consumers. `exploreReducer.ts:293` has the same latent mismatch; changing model UID globally is a provider-contract change, not made here. - Embedded-guest/promiscuous chart-data membership gate (`security/manager.py:4960`) compares table-only `slc.datasource`; `Dashboard.datasources` is also table-only. This metadata fix does not resolve those chart-data/drill/thumbnail assumptions. - Chart export still uses `model.table`/table dataset UUIDs; semantic export is not introduced by this PR. - New import edge `models.dashboard → semantic_layers.models` (also used by API serializer): safe in the checked initialization graph because the datasource DAO already imports SemanticView; keep this edge in mind in future cycle refactors. Independent final-source re-check approved the published source tree; exact-head CI and maintainer review remain before merge. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
