eschutho opened a new pull request, #42816: URL: https://github.com/apache/superset/pull/42816
### SUMMARY Follow-up to #42624, logging-only. Enriches the report readiness/capture log lines with a structured per-state chart-holder breakdown, proven out in production while diagnosing blank-report incidents (the same investigations that produced #42624). What's added: - **`ChartHolderDiagnostics`** (`report_execution.py`): structured counts separating *capture readiness* from *semantic success* — `rendered/empty/error/virtualized/unready` per capture, with `TERMINAL_CHART_HOLDER_STATES` and an explicit `CHART_HOLDER_SEMANTIC_POLICY = deliver_terminal_errors_with_warning`. - **Enriched `report_readiness_poll` / `_ready` / `_terminal`** lines on both the Playwright and Selenium paths: the existing mounted/ready counts gain the full per-state breakdown and `semantic_success`. - **`report_readiness_tile`**: per-tile readiness diagnostics during tiled capture. Each holder's strongest observed terminal state is aggregated across tiles, so the final ready line reports true whole-dashboard counts even though virtualization means any single viewport only sees a fraction of the charts. - **`report_semantic_status`**: a WARNING emitted whenever capture readiness is satisfied but the artifact contains terminal chart *errors* — delivery is not semantic completeness, and this makes that distinction operator-visible and alertable, per tile and per capture. - Restores the explicit zero-holder diagnostic on the no-context (thumbnail) path. Example of what the tile lines look like in production (52-chart dashboard, 6 tiles — note `virtualized_holders` showing why per-viewport counts can't be summed naively): ``` report_readiness_tile ... expected_holders=52 mounted_holders=52 ready_holders=52 rendered_holders=10 empty_holders=0 error_holders=0 virtualized_holders=42 unready_holders=0 semantic_success=True tile=1/6 ... report_readiness_ready ... expected_holders=52 mounted_holders=52 ready_holders=52 rendered_holders=52 ... semantic_success=True ``` **No behavior changes**: readiness predicates, budgets, and delivery are untouched; this only changes what gets logged. Log call style stays lazy `%`-formatting throughout. ### TESTING INSTRUCTIONS - Unit tests pin the `ChartHolderDiagnostics` counts (terminal-error separation, unready counting, zero-holder non-success) and the enriched line formats on the poll/ready/terminal/tile paths. - Full `tests/unit_tests/utils/ + commands/report/ + tasks/` scope: 1345 passing; ruff and mypy clean. ### ADDITIONAL INFORMATION - [x] Has associated issue: follow-up to #42624 - [ ] Required feature flags: - [ ] Changes UI - [ ] Includes DB Migration -- 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]
