kaxil opened a new pull request, #74420: URL: https://github.com/apache/airflow/pull/74420
Follow-up to #70298, which added Durable and Deferrable badges and filters to each provider's page. Finding every operator with either capability still meant opening providers one at a time. This adds `/durable/`: one page listing all of them (249 modules across 24 providers on today's data), grouped by provider, with filters for capability, provider, module type and a name search.  The page reads the `supports_durable_execution` and `supports_deferrable` flags that #70298 already writes to `modules.json`, so there is no extractor or schema change. It is a static Eleventy page like Explore and Stats, so it stays current without extra wiring: the incremental `registry-build.yml` run on each provider release merges that provider's fresh modules into `modules.json`, rebuilds the whole site, and the S3 sync uploads root pages such as `durable/index.html` alongside the target provider's pages. ## Design rationale - **The capability buttons mean exactly what the badges mean.** On a provider page, "Durable (includes deferrable)" is the union of both flags. Here "Durable" and "Deferrable" filter on the badge of the same name, and the default button is named for the union, "Durable or deferrable". Someone arriving from the Amazon page sees the same 105 modules under the default view. - **Each explainer states the default, because the badges are capabilities, not guarantees.** Durable is on by default for most operators but opt-in for `AgentOperator` and `@task.agent`, and several job-reconnect operators turn it off below Airflow 3.3. Deferrable is off unless `deferrable=True` is passed or `[operators] default_deferrable` is set, and a retried deferrable task starts `execute()` over. Without this the page would read as a promise that all 249 operators never redo work. - **Compact rows grouped by provider instead of the provider page's cards.** A two-column grid of 249 cards was over 25,000px tall. Each row links to the module's anchor on its provider page, where the import path, docs and source links already are. Within a provider, Durable modules come first, since they are the rarer ones. - **Filter state is in the query string** (`?capability=durable&provider=amazon`), so a filtered view can be shared. The page is linked from the Explore quick links and from a line under the Modules header on every provider page that has at least one durable or deferrable module. It is not in the top nav. The provider page's module-card rules are now scoped to `:is(.provider-detail-page, .durable-page)`, which keeps their specificity, so the provider page renders as before. ## Screenshots Durable filter (desktop, light):  Dark mode at 1024px, and mobile at 390px:   New link on a provider page:  ## Known issues - A change to the detection logic in `extract_parameters.py` reaches a provider's rows only when that provider is next extracted (its next release, or a full registry build). This is true of every registry page that reads `modules.json`. --- * Read the **[Pull Request Guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#pull-request-guidelines)** for more information. Note: commit author/co-author name and email in commits become permanently public when merged. * For fundamental code changes, an Airflow Improvement Proposal ([AIP](https://cwiki.apache.org/confluence/display/AIRFLOW/Airflow+Improvement+Proposals)) is needed. * When adding dependency, check compliance with the [ASF 3rd Party License Policy](https://www.apache.org/legal/resolved.html#category-x). * For significant user-facing changes create newsfragment: `{pr_number}.significant.rst`, in [airflow-core/newsfragments](https://github.com/apache/airflow/tree/main/airflow-core/newsfragments). You can add this file in a follow-up commit after the PR is created so you know the PR number. -- 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]
