You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by po...@apache.org on 2023/06/09 18:02:11 UTC

[airflow] branch v2-6-test updated (cf81851660 -> c3d61c7bb5)

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

potiuk pushed a change to branch v2-6-test
in repository https://gitbox.apache.org/repos/asf/airflow.git


    omit cf81851660 Synchronize dev scripts with main
     new e41e199f17 Synchronize dev scripts with main
     new c3d61c7bb5 Remove yandex from 2.6 branch

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   (cf81851660)
            \
             N -- N -- N   refs/heads/v2-6-test (c3d61c7bb5)

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.

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 Dockerfile.ci                                      |   2 +-
 .../providers/yandex/.latest-doc-only-change.txt   |   1 -
 airflow/providers/yandex/CHANGELOG.rst             | 200 --------
 airflow/providers/yandex/__init__.py               |  16 -
 airflow/providers/yandex/hooks/__init__.py         |  16 -
 airflow/providers/yandex/hooks/yandex.py           | 176 -------
 .../providers/yandex/hooks/yandexcloud_dataproc.py |  35 --
 airflow/providers/yandex/operators/__init__.py     |  16 -
 .../yandex/operators/yandexcloud_dataproc.py       | 525 ---------------------
 airflow/providers/yandex/provider.yaml             |  70 ---
 generated/provider_dependencies.json               |   8 -
 images/breeze/output-commands-hash.txt             |  10 +-
 images/breeze/output_build-docs.svg                |   4 +-
 ...management_generate-issue-content-providers.svg |   2 +-
 ...e-management_prepare-provider-documentation.svg |   2 +-
 ...elease-management_prepare-provider-packages.svg |   2 +-
 scripts/docker/entrypoint_ci.sh                    |   2 +-
 17 files changed, 12 insertions(+), 1075 deletions(-)
 delete mode 100644 airflow/providers/yandex/.latest-doc-only-change.txt
 delete mode 100644 airflow/providers/yandex/CHANGELOG.rst
 delete mode 100644 airflow/providers/yandex/__init__.py
 delete mode 100644 airflow/providers/yandex/hooks/__init__.py
 delete mode 100644 airflow/providers/yandex/hooks/yandex.py
 delete mode 100644 airflow/providers/yandex/hooks/yandexcloud_dataproc.py
 delete mode 100644 airflow/providers/yandex/operators/__init__.py
 delete mode 100644 airflow/providers/yandex/operators/yandexcloud_dataproc.py
 delete mode 100644 airflow/providers/yandex/provider.yaml


[airflow] 01/02: Synchronize dev scripts with main

Posted by po...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch v2-6-test
in repository https://gitbox.apache.org/repos/asf/airflow.git

commit e41e199f17fe378f08213d71d18a4c556744810e
Author: Jarek Potiuk <ja...@potiuk.com>
AuthorDate: Fri Jun 9 19:30:26 2023 +0200

    Synchronize dev scripts with main
    
    A number of dev scripts have been cherry-picked in a different order
    from main and that made it quite a bit more difficult to apply all of
    the cherry-picks consistently. Also we are supporting wider range of
    Python versions (3.7 - 3.11) than either previous 2.6 or main,
    so the breeze scripts and tests had to be updated to reflect
    those differences.
    
    Those changes are in dev tooling only, they have no impact on airflow
    source code.
---
 .github/CODEOWNERS                                 |  11 +-
 .github/ISSUE_TEMPLATE/airflow_bug_report.yml      |   2 +-
 .../airflow_helmchart_bug_report.yml               |   3 +-
 .../airflow_providers_bug_report.yml               |   3 +
 .github/actions/breeze/action.yml                  |   6 +-
 .github/actions/build-ci-images/action.yml         |   8 +
 .github/workflows/build-images.yml                 |  19 +-
 .github/workflows/ci.yml                           | 176 ++++++----------
 .github/workflows/codeql-analysis.yml              |   4 +-
 .github/workflows/recheck-old-bug-report.yml       |   2 +-
 .github/workflows/release_dockerhub_image.yml      |   7 +-
 .github/workflows/stale.yml                        |   4 +-
 .pre-commit-config.yaml                            |  15 +-
 BREEZE.rst                                         | 222 +++++++++++++++++---
 Dockerfile                                         |   2 +-
 Dockerfile.ci                                      |  54 ++++-
 IMAGES.rst                                         |   2 +-
 README.md                                          |   2 +-
 STATIC_CODE_CHECKS.rst                             |  14 +-
 dev/breeze/README.md                               |   2 +-
 dev/breeze/SELECTIVE_CHECKS.md                     |  17 +-
 .../0002-implement-standalone-python-command.md    |   6 +-
 .../0007-using-database-volumes-for-backends.md    |   2 +-
 dev/breeze/setup.cfg                               |   5 +-
 .../src/airflow_breeze/commands/ci_commands.py     |  25 ++-
 .../airflow_breeze/commands/ci_commands_config.py  |  10 +-
 .../airflow_breeze/commands/ci_image_commands.py   |  36 +++-
 .../commands/ci_image_commands_config.py           |  27 ++-
 .../airflow_breeze/commands/developer_commands.py  | 117 ++++++++++-
 .../commands/developer_commands_config.py          |  24 ++-
 .../airflow_breeze/commands/kubernetes_commands.py |   7 +-
 .../src/airflow_breeze/commands/main_command.py    |   6 +-
 .../commands/minor_release_command.py              |   2 +-
 .../commands/production_image_commands.py          |  34 +--
 .../commands/production_image_commands_config.py   |  27 ++-
 .../commands/release_candidate_command.py          |  19 +-
 .../src/airflow_breeze/commands/release_command.py |   6 +-
 .../commands/release_management_commands.py        | 228 +++++++++++++++++++--
 .../commands/release_management_commands_config.py |  29 ++-
 .../airflow_breeze/commands/testing_commands.py    |  72 +++++--
 .../commands/testing_commands_config.py            |   5 +
 dev/breeze/src/airflow_breeze/global_constants.py  |  83 ++++++--
 .../airflow_breeze/params/common_build_params.py   |   1 -
 .../src/airflow_breeze/params/shell_params.py      |  14 +-
 dev/breeze/src/airflow_breeze/pre_commit_ids.py    |   1 -
 dev/breeze/src/airflow_breeze/utils/coertions.py   |   6 +
 .../src/airflow_breeze/utils/common_options.py     |  36 +++-
 dev/breeze/src/airflow_breeze/utils/confirm.py     |   4 +-
 .../airflow_breeze/utils/docker_command_utils.py   |  85 +++++---
 dev/breeze/src/airflow_breeze/utils/image.py       |  29 +--
 .../src/airflow_breeze/utils/kubernetes_utils.py   |   6 +-
 dev/breeze/src/airflow_breeze/utils/parallel.py    |   8 +-
 dev/breeze/src/airflow_breeze/utils/path_utils.py  |   1 +
 .../airflow_breeze/utils/provider_dependencies.py  |  52 +++++
 dev/breeze/src/airflow_breeze/utils/registry.py    |  57 +++---
 dev/breeze/src/airflow_breeze/utils/run_tests.py   |  12 +-
 dev/breeze/src/airflow_breeze/utils/run_utils.py   |  15 +-
 .../src/airflow_breeze/utils/selective_checks.py   | 132 ++++++++----
 dev/breeze/tests/test_cache.py                     |   2 +-
 dev/breeze/tests/test_docker_command_utils.py      |   8 +-
 dev/breeze/tests/test_exclude_from_matrix.py       |  10 +-
 dev/breeze/tests/test_pr_info.py                   |  10 +-
 dev/breeze/tests/test_provider_dependencies.py     |  47 +++++
 dev/breeze/tests/test_selective_checks.py          | 187 ++++++++++++++---
 dev/provider_packages/prepare_provider_packages.py |   2 +-
 .../installation/supported-versions.rst            |   2 +-
 images/breeze/output-commands-hash.txt             |  71 +++----
 images/breeze/output-commands.svg                  |   6 +-
 images/breeze/output_ci-image_build.svg            |  96 ++++-----
 images/breeze/output_ci-image_verify.svg           |  40 ++--
 images/breeze/output_ci_selective-check.svg        |  44 ++--
 images/breeze/output_down.svg                      | 115 +++++++++++
 images/breeze/output_k8s_configure-cluster.svg     |   6 +-
 images/breeze/output_k8s_create-cluster.svg        |   6 +-
 images/breeze/output_k8s_delete-cluster.svg        |   4 +-
 images/breeze/output_k8s_deploy-airflow.svg        |   6 +-
 images/breeze/output_k8s_k9s.svg                   |   4 +-
 images/breeze/output_k8s_logs.svg                  |   4 +-
 images/breeze/output_k8s_run-complete-tests.svg    |   6 +-
 images/breeze/output_k8s_shell.svg                 |   4 +-
 images/breeze/output_k8s_status.svg                |   4 +-
 images/breeze/output_k8s_tests.svg                 |   6 +-
 images/breeze/output_k8s_upload-k8s-image.svg      |   6 +-
 images/breeze/output_prod-image_build.svg          | 138 ++++++-------
 images/breeze/output_prod-image_verify.svg         |  42 ++--
 images/breeze/output_release-management.svg        |  22 +-
 ...elease-management_install-provider-packages.svg | 216 +++++++++++++++++++
 ...e-management_prepare-provider-documentation.svg |  42 ++--
 ...release-management_verify-provider-packages.svg |  52 +++--
 .../output_setup_check-all-params-in-groups.svg    |  38 ++--
 .../output_setup_regenerate-command-images.svg     |  20 +-
 images/breeze/output_shell.svg                     |  88 ++++----
 images/breeze/output_start-airflow.svg             |  40 ++--
 images/breeze/output_static-checks.svg             | 144 ++++++++-----
 images/breeze/output_stop.svg                      | 115 -----------
 .../breeze/output_testing_docker-compose-tests.svg |  50 +++--
 images/breeze/output_testing_integration-tests.svg |  68 +++---
 images/breeze/output_testing_tests.svg             | 114 ++++++-----
 scripts/ci/docker-compose/_docker.env              |   5 +-
 scripts/ci/docker-compose/backend-mssql.yml        |   1 -
 scripts/ci/docker-compose/backend-mysql.yml        |   1 -
 scripts/ci/docker-compose/backend-postgres.yml     |   1 -
 scripts/ci/docker-compose/backend-sqlite.yml       |   3 +-
 scripts/ci/docker-compose/base.yml                 |   7 +-
 scripts/ci/docker-compose/devcontainer.env         |   9 +-
 scripts/ci/docker-compose/devcontainer.yml         |   2 +-
 scripts/ci/docker-compose/forward-credentials.yml  |   4 +-
 scripts/ci/docker-compose/integration-celery.yml   |   2 +
 scripts/ci/docker-compose/integration-kafka.yml    |  63 ++++++
 .../ci/docker-compose/kafka/update_run.sh          |  16 +-
 .../ci_start_arm_instance_and_connect_to_docker.sh |   6 +-
 .../pre_commit_check_aiobotocore_optional.py       |  48 +++++
 scripts/ci/pre_commit/pre_commit_insert_extras.py  |   4 +-
 .../ci/pre_commit/pre_commit_local_yml_mounts.py   |   6 +-
 scripts/ci/pre_commit/pre_commit_mypy.py           |  10 +-
 .../ci/pre_commit/pre_commit_supported_versions.py |   2 +-
 .../ci/pre_commit/pre_commit_unittest_testcase.py  |  47 +++++
 scripts/docker/entrypoint_ci.sh                    |  54 ++++-
 scripts/in_container/bin/run_tmux                  |  11 +
 scripts/in_container/check_environment.sh          |   3 +
 scripts/in_container/run_generate_constraints.sh   |  22 +-
 .../in_container/run_provider_yaml_files_check.py  |  41 +++-
 scripts/in_container/verify_providers.py           | 127 +++++++-----
 scripts/tools/initialize_virtualenv.py             |   2 +-
 124 files changed, 2957 insertions(+), 1229 deletions(-)

diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index c47fab2b6f..dfc0e13a3a 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -1,5 +1,5 @@
 # Core
-/airflow/executors/ @kaxil @XD-DENG @ashb @o-nikolas
+/airflow/executors/ @kaxil @XD-DENG @ashb @o-nikolas @pierrejeambrun
 /airflow/jobs/ @kaxil @ashb @XD-DENG
 /airflow/models/ @kaxil @XD-DENG @ashb
 
@@ -25,11 +25,11 @@
 /docs/*.py @kaxil @potiuk
 
 # API
-/airflow/api/ @ephraimbuddy
-/airflow/api_connexion/ @ephraimbuddy
+/airflow/api/ @ephraimbuddy @pierrejeambrun
+/airflow/api_connexion/ @ephraimbuddy @pierrejeambrun
 
 # WWW
-/airflow/www/ @ryanahamilton @ashb @bbovenzi
+/airflow/www/ @ryanahamilton @ashb @bbovenzi @pierrejeambrun
 
 # Security/Permissions
 /airflow/security/permissions.py @jhtimmins
@@ -71,6 +71,7 @@
 /docs/apache-airflow-providers-slack/ @eladkal
 /docs/apache-airflow-providers-cncf-kubernetes @jedcunningham
 /tests/providers/amazon/ @eladkal @o-nikolas
+/tests/system/providers/amazon/ @eladkal @o-nikolas
 /tests/providers/common/sql/ @eladkal
 /tests/providers/slack/ @eladkal
 
@@ -85,7 +86,7 @@ Dockerfile.ci @potiuk @ashb
 
 # Releasing Guides & Project Guidelines
 /dev/README_RELEASE_PROVIDER_PACKAGES.md  @eladkal
-/dev/README_RELEASE_*.md  @kaxil
+/dev/README_RELEASE_*.md  @kaxil @pierrejeambrun
 /dev/README.md  @kaxil
 /dev/PROJECT_GUIDELINES.md  @kaxil
 /dev/PROVIDER_PACKAGE_DETAILS.md  @kaxil
diff --git a/.github/ISSUE_TEMPLATE/airflow_bug_report.yml b/.github/ISSUE_TEMPLATE/airflow_bug_report.yml
index d05fcdf12d..a6852a4c21 100644
--- a/.github/ISSUE_TEMPLATE/airflow_bug_report.yml
+++ b/.github/ISSUE_TEMPLATE/airflow_bug_report.yml
@@ -25,7 +25,7 @@ body:
         the latest release or main to see if the issue is fixed before reporting it.
       multiple: false
       options:
-        - "2.5.3"
+        - "2.6.1"
         - "main (development)"
         - "Other Airflow 2 version (please specify below)"
     validations:
diff --git a/.github/ISSUE_TEMPLATE/airflow_helmchart_bug_report.yml b/.github/ISSUE_TEMPLATE/airflow_helmchart_bug_report.yml
index dbbd562043..34c36d4568 100644
--- a/.github/ISSUE_TEMPLATE/airflow_helmchart_bug_report.yml
+++ b/.github/ISSUE_TEMPLATE/airflow_helmchart_bug_report.yml
@@ -28,7 +28,8 @@ body:
         What Apache Airflow Helm Chart version are you using?
       multiple: false
       options:
-        - "1.8.0 (latest released)"
+        - "1.9.0 (latest released)"
+        - "1.8.0"
         - "1.7.0"
         - "1.6.0"
         - "1.5.0"
diff --git a/.github/ISSUE_TEMPLATE/airflow_providers_bug_report.yml b/.github/ISSUE_TEMPLATE/airflow_providers_bug_report.yml
index 2507feafcb..7e64473678 100644
--- a/.github/ISSUE_TEMPLATE/airflow_providers_bug_report.yml
+++ b/.github/ISSUE_TEMPLATE/airflow_providers_bug_report.yml
@@ -34,6 +34,7 @@ body:
         - apache-hdfs
         - apache-hive
         - apache-impala
+        - apache-kafka
         - apache-kylin
         - apache-livy
         - apache-pig
@@ -66,6 +67,7 @@ body:
         - influxdb
         - jdbc
         - jenkins
+        - apache-kafka
         - microsoft-azure
         - microsoft-mssql
         - microsoft-psrp
@@ -75,6 +77,7 @@ body:
         - neo4j
         - odbc
         - openfaas
+        - openlineage
         - opsgenie
         - oracle
         - pagerduty
diff --git a/.github/actions/breeze/action.yml b/.github/actions/breeze/action.yml
index d926e14641..b5bff5e97d 100644
--- a/.github/actions/breeze/action.yml
+++ b/.github/actions/breeze/action.yml
@@ -28,7 +28,7 @@ runs:
     - name: "Setup python"
       uses: actions/setup-python@v4
       with:
-        python-version: 3.7
+        python-version: 3.8
         cache: 'pip'
         cache-dependency-path: ./dev/breeze/setup*
     - name: Cache breeze
@@ -37,8 +37,8 @@ runs:
         path: ~/.local/pipx
         # README has the latest breeze's hash and python location is used to distinguish between
         # different minor versions of python
-        key: "breeze-${{ env.pythonLocation }}-${{ hashFiles('dev/breeze/README.md') }}"
-        restore-keys: breeze-${{ env.pythonLocation }}
+        key: "breeze-3.7-${{ env.pythonLocation }}-${{ hashFiles('dev/breeze/README.md') }}"
+        restore-keys: breeze-3.7-${{ env.pythonLocation }}
     - name: "Install Breeze"
       shell: bash
       run: ./scripts/ci/install_breeze.sh
diff --git a/.github/actions/build-ci-images/action.yml b/.github/actions/build-ci-images/action.yml
index 4323c05392..841ae2b049 100644
--- a/.github/actions/build-ci-images/action.yml
+++ b/.github/actions/build-ci-images/action.yml
@@ -40,6 +40,14 @@ runs:
         breeze release-management generate-constraints --run-in-parallel
         --airflow-constraints-mode constraints-source-providers
       if: env.UPGRADE_TO_NEWER_DEPENDENCIES != 'false'
+    - name: "Print dependency upgrade summary"
+      shell: bash
+      run: |
+        for PYTHON_VERSION in ${{ env.PYTHON_VERSIONS }}; do
+          echo "Summarizing Python $PYTHON_VERSION"
+          cat "files/constraints-${PYTHON_VERSION}/*.md" >> $GITHUB_STEP_SUMMARY || true
+        done
+      if: env.UPGRADE_TO_NEWER_DEPENDENCIES != 'false'
     - name: Push empty CI image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{ env.IMAGE }}
       if: failure() || cancelled()
       shell: bash
diff --git a/.github/workflows/build-images.yml b/.github/workflows/build-images.yml
index fa8686890d..0ac2bc1224 100644
--- a/.github/workflows/build-images.yml
+++ b/.github/workflows/build-images.yml
@@ -50,11 +50,10 @@ jobs:
   build-info:
     timeout-minutes: 10
     name: "Build Info"
-    runs-on: ${{ github.repository == 'apache/airflow' && 'self-hosted' || 'ubuntu-20.04' }}
+    runs-on: 'ubuntu-22.04'
     env:
       TARGET_BRANCH: ${{ github.event.pull_request.base.ref }}
     outputs:
-      runs-on: ${{ github.repository == 'apache/airflow' && 'self-hosted' || 'ubuntu-20.04' }}
       python-versions: "${{ steps.selective-checks.python-versions }}"
       upgrade-to-newer-dependencies: ${{ steps.selective-checks.outputs.upgrade-to-newer-dependencies }}
       all-python-versions-list-as-string: >-
@@ -66,10 +65,12 @@ jobs:
       cache-directive: ${{ steps.selective-checks.outputs.cache-directive }}
       default-branch: ${{ steps.selective-checks.outputs.default-branch }}
       default-constraints-branch: ${{ steps.selective-checks.outputs.default-constraints-branch }}
+      runs-on: ${{ steps.selective-checks.outputs.runs-on }}
       target-commit-sha: "${{steps.discover-pr-merge-commit.outputs.target-commit-sha ||
           github.event.pull_request.head.sha ||
           github.sha
         }}"
+    if: github.repository == 'apache/airflow'
     steps:
       - name: Discover PR merge commit
         id: discover-pr-merge-commit
@@ -108,7 +109,7 @@ jobs:
       - name: "Setup python"
         uses: actions/setup-python@v4
         with:
-          python-version: 3.7
+          python-version: 3.8
       - name: "Retrieve defaults from branch_defaults.py"
         # We cannot "execute" the branch_defaults.py python code here because that would be
         # a security problem (we cannot run any code that comes from the sources coming from the PR.
@@ -157,6 +158,7 @@ jobs:
 
   build-ci-images:
     permissions:
+      contents: read
       packages: write
     timeout-minutes: 80
     name: >
@@ -165,7 +167,8 @@ jobs:
     needs: [build-info]
     if: |
       needs.build-info.outputs.image-build == 'true' &&
-      github.event.pull_request.head.repo.full_name != 'apache/airflow'
+      github.event.pull_request.head.repo.full_name != 'apache/airflow' &&
+      github.repository == 'apache/airflow'
     env:
       DEFAULT_BRANCH: ${{ needs.build-info.outputs.default-branch }}
       DEFAULT_CONSTRAINTS_BRANCH: ${{ needs.build-info.outputs.default-constraints-branch }}
@@ -192,6 +195,7 @@ jobs:
 
   build-prod-images:
     permissions:
+      contents: read
       packages: write
     timeout-minutes: 80
     name: >
@@ -201,7 +205,8 @@ jobs:
     needs: [build-info, build-ci-images]
     if: |
       needs.build-info.outputs.image-build == 'true' &&
-      github.event.pull_request.head.repo.full_name != 'apache/airflow'
+      github.event.pull_request.head.repo.full_name != 'apache/airflow' &&
+      github.repository == 'apache/airflow'
     env:
       DEFAULT_BRANCH: ${{ needs.build-info.outputs.default-branch }}
       DEFAULT_CONSTRAINTS_BRANCH: ${{ needs.build-info.outputs.default-constraints-branch }}
@@ -237,7 +242,9 @@ jobs:
     if: |
       needs.build-info.outputs.image-build == 'true' &&
       needs.build-info.outputs.upgrade-to-newer-dependencies != 'false' &&
-      github.event.pull_request.head.repo.full_name != 'apache/airflow'
+      github.event.pull_request.head.repo.full_name != 'apache/airflow' &&
+      needs.build-info.outputs.runs-on == 'self-hosted' &&
+      github.repository == 'apache/airflow'
     env:
       DEFAULT_BRANCH: ${{ needs.build-info.outputs.default-branch }}
       DEFAULT_CONSTRAINTS_BRANCH: ${{ needs.build-info.outputs.default-constraints-branch }}
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 084b3e3ed4..5717082070 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -27,7 +27,12 @@ on:  # yamllint disable-line rule:truthy
 permissions:
   # All other permissions are set to none
   contents: read
-  packages: read
+  # Technically read access while waiting for images should be more than enough. However,
+  # there is a bug in GitHub Actions/Packages and in case private repositories are used, you get a permission
+  # denied error when attempting to just pull private image, changing the token permission to write solves the
+  # issue. This is not dangerous, because if it is for "apache/airflow", only maintainers can push ci.yml
+  # changes. If it is for a fork, then the token is read-only anyway.
+  packages: write
 env:
   ANSWER: "yes"
   DB_RESET: "true"
@@ -46,7 +51,6 @@ env:
   USE_SUDO: "true"
   INCLUDE_SUCCESS_OUTPUTS: "true"
   AIRFLOW_ENABLE_AIP_44: "true"
-  AIRFLOW_ENABLE_AIP_52: "true"
 
 concurrency:
   group: ci-${{ github.event.pull_request.number || github.ref }}
@@ -66,69 +70,12 @@ jobs:
     # to find the list of authors and replace them, so any changes to the
     # formatting of the contains(fromJSON()) structure below will need to be
     # reflected in that workflow too.
-    runs-on: >-
-      ${{ (
-        (
-          github.event_name == 'push' ||
-          github.event_name == 'schedule' ||
-          contains(fromJSON('[
-            "BasPH",
-            "Fokko",
-            "KevinYang21",
-            "Taragolis",
-            "XD-DENG",
-            "aijamalnk",
-            "alexvanboxel",
-            "aoen",
-            "artwr",
-            "ashb",
-            "bbovenzi",
-            "bolkedebruin",
-            "criccomini",
-            "dimberman",
-            "dstandish",
-            "eladkal",
-            "ephraimbuddy",
-            "feluelle",
-            "feng-tao",
-            "houqp",
-            "hussein-awala",
-            "jedcunningham",
-            "jgao54",
-            "jghoman",
-            "jhtimmins",
-            "jmcarp",
-            "josh-fell",
-            "kaxil",
-            "leahecole",
-            "malthe",
-            "mik-laj",
-            "milton0825",
-            "mistercrunch",
-            "msumit",
-            "o-nikolas",
-            "pierrejeambrun",
-            "pingzh",
-            "potiuk",
-            "r39132",
-            "ryanahamilton",
-            "ryw",
-            "saguziel",
-            "sekikn",
-            "turbaszek",
-            "uranusjr",
-            "vikramkoka",
-            "xinbinhuang",
-            "yuqian90",
-            "zhongjiajie"
-          ]'), github.event.pull_request.user.login)
-        ) && github.repository == 'apache/airflow'
-      ) && 'self-hosted' || 'ubuntu-20.04' }}
+    runs-on: "ubuntu-22.04"
     env:
       GITHUB_CONTEXT: ${{ toJson(github) }}
     outputs:
       cache-directive: ${{ steps.selective-checks.outputs.cache-directive }}
-      affected-providers-list-as-string: >
+      affected-providers-list-as-string: >-
         ${{ steps.selective-checks.outputs.affected-providers-list-as-string }}
       upgrade-to-newer-dependencies: ${{ steps.selective-checks.outputs.upgrade-to-newer-dependencies }}
       python-versions: ${{ steps.selective-checks.outputs.python-versions }}
@@ -151,6 +98,7 @@ jobs:
       full-tests-needed: ${{ steps.selective-checks.outputs.full-tests-needed }}
       parallel-test-types-list-as-string: >-
         ${{ steps.selective-checks.outputs.parallel-test-types-list-as-string }}
+      mssql-parallelism: ${{ steps.selective-checks.outputs.mssql-parallelism }}
       postgres-exclude: ${{ steps.selective-checks.outputs.postgres-exclude }}
       mysql-exclude: ${{ steps.selective-checks.outputs.mysql-exclude }}
       mssql-exclude: ${{ steps.selective-checks.outputs.mssql-exclude }}
@@ -172,11 +120,11 @@ jobs:
       skip-pre-commits: ${{ steps.selective-checks.outputs.skip-pre-commits }}
       helm-test-packages: ${{ steps.selective-checks.outputs.helm-test-packages }}
       debug-resources: ${{ steps.selective-checks.outputs.debug-resources }}
+      runs-on: ${{ steps.selective-checks.outputs.runs-on }}
       source-head-repo: ${{ steps.source-run-info.outputs.source-head-repo }}
       pull-request-labels: ${{ steps.source-run-info.outputs.pr-labels }}
       in-workflow-build: ${{ steps.source-run-info.outputs.in-workflow-build }}
       build-job-description: ${{ steps.source-run-info.outputs.build-job-description }}
-      runs-on: ${{ steps.source-run-info.outputs.runs-on }}
       canary-run: ${{ steps.source-run-info.outputs.canary-run }}
       run-coverage: ${{ steps.source-run-info.outputs.run-coverage }}
     steps:
@@ -247,8 +195,6 @@ jobs:
   # We only push CI cache as PROD cache usually does not gain as much from fresh cache because
   # it uses prepared airflow and provider packages that invalidate the cache anyway most of the time
   push-early-buildx-cache-to-github-registry:
-    permissions:
-      packages: write
     timeout-minutes: 50
     name: "Push Early Image Cache"
     runs-on: "${{needs.build-info.outputs.runs-on}}"
@@ -345,8 +291,6 @@ jobs:
         if: always()
 
   build-ci-images:
-    permissions:
-      packages: write
     timeout-minutes: 80
     name: >-
       ${{needs.build-info.outputs.build-job-description}} CI images
@@ -357,6 +301,8 @@ jobs:
       DEFAULT_BRANCH: ${{ needs.build-info.outputs.default-branch }}
       DEFAULT_CONSTRAINTS_BRANCH: ${{ needs.build-info.outputs.default-constraints-branch }}
       RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
+      # Force more parallelism for build even on public images
+      PARALLELISM: 6
     steps:
       - name: Cleanup repo
         run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm -rf /workspace/*"
@@ -379,8 +325,6 @@ jobs:
           DEBUG_RESOURCES: ${{needs.build-info.outputs.debug-resources}}
 
   build-prod-images:
-    permissions:
-      packages: write
     timeout-minutes: 80
     name: >
       ${{needs.build-info.outputs.build-job-description}} PROD images
@@ -395,6 +339,8 @@ jobs:
       DOCKER_CACHE: ${{ needs.build-info.outputs.cache-directive }}
       VERSION_SUFFIX_FOR_PYPI: "dev0"
       DEBUG_RESOURCES: ${{needs.build-info.outputs.debug-resources}}
+      # Force more parallelism for build even on public images
+      PARALLELISM: 6
     steps:
       - name: Cleanup repo
         run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm -rf /workspace/*"
@@ -431,7 +377,7 @@ jobs:
           persist-credentials: false
       - uses: actions/setup-python@v4
         with:
-          python-version: "${{needs.build-info.outputs.default-python-version}}"
+          python-version: 3.8
           cache: 'pip'
           cache-dependency-path: ./dev/breeze/setup*
       - run: python -m pip install --editable ./dev/breeze/
@@ -526,7 +472,7 @@ jobs:
   wait-for-ci-images:
     timeout-minutes: 120
     name: "Wait for CI images"
-    runs-on: "${{needs.build-info.outputs.runs-on}}"
+    runs-on: "ubuntu-22.04"
     needs: [build-info, build-ci-images]
     if: needs.build-info.outputs.image-build == 'true'
     env:
@@ -549,13 +495,6 @@ jobs:
         env:
           PYTHON_VERSIONS: ${{ needs.build-info.outputs.python-versions-list-as-string }}
           DEBUG_RESOURCES: ${{needs.build-info.outputs.debug-resources}}
-      - name: "Tests Pytest collection"
-        run: breeze testing tests --run-in-parallel --collect-only
-        if: needs.build-info.outputs.run-tests == 'true'
-        env:
-          PYTHON_MAJOR_MINOR_VERSION: "${{needs.build-info.outputs.default-python-version}}"
-          BACKEND: sqlite
-          PARALLEL_TEST_TYPES: "${{needs.build-info.outputs.parallel-test-types-list-as-string}}"
       - name: "Fix ownership"
         run: breeze ci fix-ownership
         if: always()
@@ -568,6 +507,7 @@ jobs:
     env:
       RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
       PYTHON_MAJOR_MINOR_VERSION: "${{needs.build-info.outputs.default-python-version}}"
+      UPGRADE_TO_NEWER_DEPENDENCIES: "${{ needs.build-info.outputs.upgrade-to-newer-dependencies }}"
     if: needs.build-info.outputs.basic-checks-only == 'false'
     steps:
       - name: Cleanup repo
@@ -587,10 +527,9 @@ jobs:
           # yamllint disable-line rule:line-length
           key: "pre-commit-full-${{steps.breeze.outputs.host-python-version}}-${{ hashFiles('.pre-commit-config.yaml') }}"
           restore-keys: |
-            pre-commit-full-${{steps.breeze.outputs.host-python-version}}
-            pre-commit-full
+            pre-commit-full-${{steps.breeze.outputs.host-python-version}}-
       - name: "Static checks"
-        run: breeze static-checks --all-files --show-diff-on-failure --color always
+        run: breeze static-checks --all-files --show-diff-on-failure --color always --initialize-environment
         env:
           VERBOSE: "false"
           SKIP: ${{ needs.build-info.outputs.skip-pre-commits }}
@@ -638,10 +577,8 @@ jobs:
           restore-keys: "\
             pre-commit-full-${{steps.breeze.outputs.host-python-version}}-\
             ${{ hashFiles('.pre-commit-config.yaml') }}\n
-            pre-commit-basic-${{steps.breeze.outputs.host-python-version}}\n
-            pre-commit-full-${{steps.breeze.outputs.host-python-version}}\n
-            pre-commit-basic-\n
-            pre-commit-full-"
+            pre-commit-basic-${{steps.breeze.outputs.host-python-version}}-\n
+            pre-commit-full-${{steps.breeze.outputs.host-python-version}}-"
       - name: Fetch incoming commit ${{ github.sha }} with its parent
         uses: actions/checkout@v3
         with:
@@ -650,7 +587,7 @@ jobs:
           persist-credentials: false
       - name: "Static checks: basic checks only"
         run: >
-          breeze static-checks --all-files --show-diff-on-failure --color always
+          breeze static-checks --show-diff-on-failure --color always --initialize-environment
           --commit-ref "${{ github.sha }}"
         env:
           VERBOSE: "false"
@@ -662,7 +599,7 @@ jobs:
         if: always()
 
   docs:
-    timeout-minutes: 45
+    timeout-minutes: 90
     name: "Build docs"
     runs-on: "${{needs.build-info.outputs.runs-on}}"
     needs: [build-info, wait-for-ci-images]
@@ -717,8 +654,7 @@ jobs:
     env:
       RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
       PYTHON_MAJOR_MINOR_VERSION: "${{needs.build-info.outputs.default-python-version}}"
-    if: >
-      needs.build-info.outputs.image-build == 'true' && needs.build-info.outputs.default-branch == 'main'
+    if: needs.build-info.outputs.skip-provider-tests != 'true'
     steps:
       - name: Cleanup repo
         run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm -rf /workspace/*"
@@ -767,14 +703,13 @@ jobs:
 
   provider-airflow-compatibility-check:
     timeout-minutes: 80
-    name: "Providers Airflow 2.3 compatibility check"
+    name: "Providers Airflow 2.4 compatibility check"
     runs-on: "${{needs.build-info.outputs.runs-on}}"
     needs: [build-info, wait-for-ci-images]
     env:
       RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
       PYTHON_MAJOR_MINOR_VERSION: "${{needs.build-info.outputs.default-python-version}}"
-    if: >
-      needs.build-info.outputs.image-build == 'true' && needs.build-info.outputs.default-branch == 'main'
+    if: needs.build-info.outputs.skip-provider-tests != 'true'
     steps:
       - name: Cleanup repo
         run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm -rf /workspace/*"
@@ -791,10 +726,10 @@ jobs:
         run: >
           breeze release-management prepare-provider-packages --version-suffix-for-pypi dev0
           --package-format wheel ${{ needs.build-info.outputs.affected-providers-list-as-string }}
-      - name: "Fix incompatible 2.3 provider packages"
+      - name: "Fix incompatible 2.4 provider packages"
         run: |
-          # This step should remove the provider packages that are not compatible with 2.3
-          # or replace them with 2.3 compatible versions. Sometimes we have good reasons to bump
+          # This step should remove the provider packages that are not compatible with 2.4
+          # or replace them with 2.4 compatible versions. Sometimes we have good reasons to bump
           # the min airflow versions for some providers and then we need to add exclusions here.
           #
           # The Removal can be done with:
@@ -815,16 +750,20 @@ jobs:
           providers = json.loads(Path("generated/provider_dependencies.json").read_text())
           provider_keys = ",".join(providers.keys())
           print("AIRFLOW_EXTRAS={}".format(provider_keys))' >> $GITHUB_ENV
-      - name: "Install and verify all provider packages and airflow on Airflow 2.3 files"
+      - name: "Install and verify all provider packages and airflow on Airflow 2.4 files"
         run: >
-          breeze release-management verify-provider-packages --use-airflow-version 2.3.0
-          --use-packages-from-dist --airflow-constraints-reference constraints-2.3.0
+          breeze release-management verify-provider-packages --use-airflow-version 2.4.0
+          --use-packages-from-dist --airflow-constraints-reference constraints-2.4.0
         if: needs.build-info.outputs.affected-providers-list-as-string == ''
-      - name: "Install affected provider packages and airflow on Airflow 2.3 files"
+      - name: "Install affected provider packages and airflow on Airflow 2.4 files"
         run: >
-          breeze release-management install-provider-packages --use-airflow-version 2.3.0
-          --airflow-constraints-reference constraints-2.3.0 --run-in-parallel
-        if: needs.build-info.outputs.affected-providers-list-as-string != ''
+          breeze release-management install-provider-packages --use-airflow-version 2.4.0
+          --airflow-constraints-reference constraints-2.4.0 --run-in-parallel
+        # Make sure to skip the run if the only provider to be installed has been removed
+        # in the previous step
+        if: >
+          needs.build-info.outputs.affected-providers-list-as-string != '' &&
+          needs.build-info.outputs.affected-providers-list-as-string != 'openlineage'
       - name: "Fix ownership"
         run: breeze ci fix-ownership
         if: always()
@@ -838,7 +777,7 @@ jobs:
       RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
       PYTHON_MAJOR_MINOR_VERSION: "${{needs.build-info.outputs.default-python-version}}"
       USE_AIRFLOW_VERSION: "sdist"
-    # if: ${{ steps.source-run-info.outputs.canary-run }} == 'true'
+    if: needs.build-info.outputs.canary-run == 'true'
     steps:
       - name: Cleanup repo
         run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm -rf /workspace/*"
@@ -1064,7 +1003,6 @@ jobs:
       POSTGRES_VERSION: "${{needs.build-info.outputs.default-postgres-version}}"
       BACKEND_VERSION: "${{needs.build-info.outputs.default-postgres-version}}"
       AIRFLOW_ENABLE_AIP_44: "false"
-      AIRFLOW_ENABLE_AIP_52: "false"
       JOB_ID: >
         postgres-in-progress-disabled-${{needs.build-info.outputs.default-python-version}}-
         ${{needs.build-info.outputs.default-postgres-version}}
@@ -1162,7 +1100,14 @@ jobs:
       BACKEND_VERSION: "${{matrix.mssql-version}}"
       JOB_ID: "mssql-${{matrix.mssql-version}}-${{matrix.python-version}}"
       COVERAGE: "${{needs.build-info.outputs.run-coverage}}"
-    if: needs.build-info.outputs.run-tests == 'true' && needs.build-info.outputs.runs-on == 'self-hosted'
+      # The below (and corresponding selective checks code) can be removed once
+      # https://github.com/apache/airflow/issues/31575 is fixed.
+      # This is a temporary workaround for flaky tests that occur in MSSQL tests for public runners
+      PARALLELISM: "${{needs.build-info.outputs.mssql-parallelism}}"
+    if: >
+      needs.build-info.outputs.run-tests == 'true' &&
+      (needs.build-info.outputs.runs-on == 'self-hosted' ||
+      needs.build-info.outputs.full-tests-needed == 'true')
     steps:
       - name: Cleanup repo
         shell: bash
@@ -1262,32 +1207,32 @@ jobs:
       - name: "Integration Tests Postgres: cassandra"
         run: |
           breeze testing integration-tests --integration cassandra
-          breeze stop
+          breeze down
         if: needs.build-info.outputs.runs-on != 'self-hosted'
       - name: "Integration Tests Postgres: mongo"
         run: |
           breeze testing integration-tests --integration mongo
-          breeze stop
+          breeze down
         if: needs.build-info.outputs.runs-on != 'self-hosted'
       - name: "Integration Tests Postgres: pinot"
         run: |
           breeze testing integration-tests --integration pinot
-          breeze stop
+          breeze down
         if: needs.build-info.outputs.runs-on != 'self-hosted'
       - name: "Integration Tests Postgres: celery"
         run: |
           breeze testing integration-tests --integration celery
-          breeze stop
+          breeze down
         if: needs.build-info.outputs.runs-on != 'self-hosted'
       - name: "Integration Tests Postgres: trino, kerberos"
         run: |
           breeze testing integration-tests --integration trino --integration kerberos
-          breeze stop
+          breeze down
         if: needs.build-info.outputs.runs-on != 'self-hosted'
       - name: "Integration Tests Postgres: Kafka"
         run: |
           breeze testing integration-tests --integration kafka
-          breeze stop
+          breeze down
         if: needs.build-info.outputs.runs-on != 'self-hosted'
       - name: "Integration Tests Postgres: all-testable"
         run: breeze testing integration-tests --integration all-testable
@@ -1409,7 +1354,7 @@ jobs:
 
 
   wait-for-prod-images:
-    timeout-minutes: 120
+    timeout-minutes: 80
     name: "Wait for PROD images"
     runs-on: "${{needs.build-info.outputs.runs-on}}"
     needs: [build-info, wait-for-ci-images, build-prod-images]
@@ -1495,6 +1440,7 @@ jobs:
           persist-credentials: false
       - name: "Install Breeze"
         uses: ./.github/actions/breeze
+        id: breeze
       - name: Pull PROD images ${{ env.PYTHON_VERSIONS }}:${{ env.IMAGE_TAG }}
         run: breeze prod-image pull --run-in-parallel --tag-as-latest
         env:
@@ -1504,7 +1450,8 @@ jobs:
         with:
           path: ".build/.k8s-env"
           key: "\
-            k8s-env-${{ hashFiles('scripts/ci/kubernetes/k8s_requirements.txt','setup.cfg',\
+            k8s-env-${{steps.breeze.outputs.host-python-version}}-\
+            ${{ hashFiles('scripts/ci/kubernetes/k8s_requirements.txt','setup.cfg',\
             'setup.py','pyproject.toml','generated/provider_dependencies.json') }}"
       - name: Run complete K8S tests ${{needs.build-info.outputs.kubernetes-combos-list-as-string}}
         run: breeze k8s run-complete-tests --run-in-parallel --upgrade
@@ -1538,6 +1485,7 @@ jobs:
   constraints:
     permissions:
       contents: write
+      packages: write
     timeout-minutes: 80
     name: "Constraints"
     runs-on: "${{needs.build-info.outputs.runs-on}}"
@@ -1611,8 +1559,6 @@ jobs:
   # It rebuilds all images using just-pushed constraints using buildx and pushes them to registry
   # It will automatically check if a new python image was released and will pull the latest one if needed
   push-buildx-cache-to-github-registry:
-    permissions:
-      packages: write
     timeout-minutes: 50
     name: "Push Image Cache"
     runs-on: "${{needs.build-info.outputs.runs-on}}"
@@ -1718,6 +1664,8 @@ jobs:
       DEFAULT_BRANCH: ${{ needs.build-info.outputs.default-branch }}
       DEFAULT_CONSTRAINTS_BRANCH: ${{ needs.build-info.outputs.default-constraints-branch }}
       RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
+      # Force more parallelism for build even on small instances
+      PARALLELISM: 6
     if: >
       needs.build-info.outputs.upgrade-to-newer-dependencies != 'false' &&
       needs.build-info.outputs.in-workflow-build == 'true' &&
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index cec9eaf995..656ab5d7c5 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -33,7 +33,7 @@ concurrency:
 jobs:
   selective-checks:
     name: Selective checks
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
     outputs:
       needs-python-scans: ${{ steps.selective-checks.outputs.needs-python-scans }}
       needs-javascript-scans: ${{ steps.selective-checks.outputs.needs-javascript-scans }}
@@ -54,7 +54,7 @@ jobs:
 
   analyze:
     name: Analyze
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
     needs: [selective-checks]
     strategy:
       fail-fast: false
diff --git a/.github/workflows/recheck-old-bug-report.yml b/.github/workflows/recheck-old-bug-report.yml
index f40997fb73..0d94764433 100644
--- a/.github/workflows/recheck-old-bug-report.yml
+++ b/.github/workflows/recheck-old-bug-report.yml
@@ -26,7 +26,7 @@ permissions:
   issues: write
 jobs:
   recheck-old-bug-report:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
     steps:
       - uses: actions/stale@v7
         with:
diff --git a/.github/workflows/release_dockerhub_image.yml b/.github/workflows/release_dockerhub_image.yml
index fca33a204e..0957089aa8 100644
--- a/.github/workflows/release_dockerhub_image.yml
+++ b/.github/workflows/release_dockerhub_image.yml
@@ -36,7 +36,7 @@ jobs:
   build-info:
     timeout-minutes: 10
     name: "Build Info"
-    runs-on: ${{ github.repository == 'apache/airflow' && 'self-hosted' || 'ubuntu-20.04' }}
+    runs-on: ${{ github.repository == 'apache/airflow' && 'self-hosted' || 'ubuntu-22.04' }}
     outputs:
       pythonVersions: ${{ steps.selective-checks.outputs.python-versions }}
       allPythonVersions: ${{ steps.selective-checks.outputs.all-python-versions }}
@@ -63,16 +63,17 @@ jobs:
   release-images:
     timeout-minutes: 120
     name: "Release images: ${{ github.event.inputs.airflowVersion }}, ${{ matrix.python-version }}"
-    runs-on: ${{ github.repository == 'apache/airflow' && 'self-hosted' || 'ubuntu-20.04' }}
+    runs-on: ${{ github.repository == 'apache/airflow' && 'self-hosted' || 'ubuntu-22.04' }}
     needs: [build-info]
     strategy:
       fail-fast: false
       matrix:
         python-version: ${{ fromJson(needs.build-info.outputs.pythonVersions) }}
     env:
-      RUNS_ON: ${{ github.repository == 'apache/airflow' && 'self-hosted' || 'ubuntu-20.04' }}
+      RUNS_ON: ${{ github.repository == 'apache/airflow' && 'self-hosted' || 'ubuntu-22.04' }}
     if: contains(fromJSON('[
       "ashb",
+      "eladkal",
       "ephraimbuddy",
       "jedcunningham",
       "kaxil",
diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml
index e0d10d8a14..d149792076 100644
--- a/.github/workflows/stale.yml
+++ b/.github/workflows/stale.yml
@@ -27,9 +27,9 @@ permissions:
   issues: write
 jobs:
   stale:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
     steps:
-      - uses: actions/stale@v7
+      - uses: actions/stale@v8
         with:
           stale-pr-message: >
             This pull request has been automatically marked as stale because it has not had
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index fa7a7fd51a..bc203399dc 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -893,13 +893,14 @@ repos:
         pass_filenames: false
         ## ADD MOST PRE-COMMITS ABOVE THAT LINE
         # The below pre-commits are those requiring CI image to be built
-      - id: mypy-dev
-        name: Run mypy for dev
-        language: python
-        entry: ./scripts/ci/pre_commit/pre_commit_mypy.py
-        files: ^dev/.*\.py$
-        require_serial: true
-        additional_dependencies: ['rich>=12.4.4', 'inputimeout', 'pyyaml']
+        # breeze code uses Python 3.8 features, so we need to use Python 3.8
+        #      - id: mypy-dev
+        #        name: Run mypy for dev
+        #        language: python
+        #        entry: ./scripts/ci/pre_commit/pre_commit_mypy.py
+        #        files: ^dev/.*\.py$
+        #        require_serial: true
+        #        additional_dependencies: ['rich>=12.4.4', 'inputimeout', 'pyyaml']
       - id: mypy-core
         name: Run mypy for core
         language: python
diff --git a/BREEZE.rst b/BREEZE.rst
index b999499e20..1c19c53dd7 100644
--- a/BREEZE.rst
+++ b/BREEZE.rst
@@ -220,7 +220,7 @@ them, you may end up with some unused image data.
 
 To clean up the Docker environment:
 
-1. Stop Breeze with ``breeze stop``. (If Breeze is already running)
+1. Stop Breeze with ``breeze down``. (If Breeze is already running)
 
 2. Run the ``breeze cleanup`` command.
 
@@ -245,6 +245,17 @@ Run this command to install Breeze (make sure to use ``-e`` flag):
 
     pipx install -e ./dev/breeze
 
+
+.. note:: Note for Windows users
+
+    The ``./dev/breeze`` in command about is a PATH to sub-folder where breeze source packages are.
+    If you are on Windows, you should use Windows way to point to the ``dev/breeze`` sub-folder
+    of Airflow either as absolute or relative path. For example:
+
+    .. code-block:: bash
+
+        pipx install -e dev\breeze
+
 Once this is complete, you should have ``breeze`` binary on your PATH and available to run by ``breeze``
 command.
 
@@ -278,6 +289,26 @@ where it was installed.
 You can run ``breeze setup version`` command to see where breeze installed from and what are the current sources
 that Breeze works on
 
+.. warning:: Upgrading from earlier Python version
+
+    If you used Breeze with Python 3.7 and when running it, it will complain that it needs Python 3.8. In this
+    case you should force-reinstall Breeze with ``pipx``:
+
+        .. code-block:: bash
+
+            pipx install --force -e ./dev/breeze
+
+    .. note:: Note for Windows users
+
+        The ``./dev/breeze`` in command about is a PATH to sub-folder where breeze source packages are.
+        If you are on Windows, you should use Windows way to point to the ``dev/breeze`` sub-folder
+        of Airflow either as absolute or relative path. For example:
+
+        .. code-block:: bash
+
+            pipx install --force -e dev\breeze
+
+
 Running Breeze for the first time
 ---------------------------------
 
@@ -360,12 +391,12 @@ You can use additional ``breeze`` flags to choose your environment. You can spec
 version to use, and backend (the meta-data database). Thanks to that, with Breeze, you can recreate the same
 environments as we have in matrix builds in the CI.
 
-For example, you can choose to run Python 3.7 tests with MySQL as backend and with mysql version 8
+For example, you can choose to run Python 3.8 tests with MySQL as backend and with mysql version 8
 as follows:
 
 .. code-block:: bash
 
-    breeze --python 3.7 --backend mysql --mysql-version 8
+    breeze --python 3.8 --backend mysql --mysql-version 8
 
 The choices you make are persisted in the ``./.build/`` cache directory so that next time when you use the
 ``breeze`` script, it could use the values that were used previously. This way you do not have to specify
@@ -434,7 +465,16 @@ For example, this following command:
 
 will run mypy check for currently staged files inside ``airflow/`` excluding providers.
 
-You can also pass specific pre-commit flags, such as ``--all-files``:
+Selecting files to run static checks on
+........................................
+
+Pre-commits run by default on staged changes that you have locally changed. It will run it on all the
+files you run ``git add`` on and it will ignore any changes that you have modified but not staged.
+If you want to run it on all your modified files you should add them with ``git add`` command.
+
+With ``--all-files`` you can run static checks on all files in the repository. This is useful when you
+want to be sure they will not fail in CI, or when you just rebased your changes and want to
+re-run latest pre-commits on your changes, but it can take a long time (few minutes) to wait for the result.
 
 .. code-block:: bash
 
@@ -442,15 +482,32 @@ You can also pass specific pre-commit flags, such as ``--all-files``:
 
 The above will run mypy check for all files.
 
-There is a convenience ``--last-commit`` flag that you can use to run static check on last commit only:
+You can limit that by selecting specific files you want to run static checks on. You can do that by
+specifying (can be multiple times) ``--file`` flag.
+
+.. code-block:: bash
+
+     breeze static-checks -t mypy-core --file airflow/utils/code_utils.py --file airflow/utils/timeout.py
+
+The above will run mypy check for those to files (note: autocomplete should work for the file selection).
+
+However, often you do not remember files you modified and you want to run checks for files that belong
+to specific commits you already have in your branch. You can use ``breeze static check`` to run the checks
+only on changed files you have already committed to your branch - either for specific commit, for last
+commit, for all changes in your branch since you branched off from main or for specific range
+of commits you choose.
 
 .. code-block:: bash
 
      breeze static-checks -t mypy-core --last-commit
 
-The above will run mypy check for all files in the last commit.
+The above will run mypy check for all files in the last commit in your branch.
+
+.. code-block:: bash
 
-There is another convenience ``--commit-ref`` flag that you can use to run static check on specific commit:
+     breeze static-checks -t mypy-core --only-my-changes
+
+The above will run mypy check for all commits in your branch which were added since you branched off from main.
 
 .. code-block:: bash
 
@@ -459,12 +516,13 @@ There is another convenience ``--commit-ref`` flag that you can use to run stati
 The above will run mypy check for all files in the 639483d998ecac64d0fef7c5aa4634414065f690 commit.
 Any ``commit-ish`` reference from Git will work here (branch, tag, short/long hash etc.)
 
-If you ever need to get a list of the files that will be checked (for troubleshooting) use these commands:
-
 .. code-block:: bash
 
-     breeze static-checks -t identity --verbose # currently staged files
-     breeze static-checks -t identity --verbose --from-ref $(git merge-base main HEAD) --to-ref HEAD #  branch updates
+     breeze static-checks -t identity --verbose --from-ref HEAD^^^^ --to-ref HEAD
+
+The above will run the check for the last 4 commits in your branch. You can use any ``commit-ish`` references
+in ``--from-ref`` and ``--to-ref`` flags.
+
 
 Those are all available flags of ``static-checks`` command:
 
@@ -478,7 +536,7 @@ Those are all available flags of ``static-checks`` command:
 
     When you run static checks, some of the artifacts (mypy_cache) is stored in docker-compose volume
     so that it can speed up static checks execution significantly. However, sometimes, the cache might
-    get broken, in which case you should run ``breeze stop`` to clean up the cache.
+    get broken, in which case you should run ``breeze down`` to clean up the cache.
 
 
 .. note::
@@ -499,7 +557,7 @@ When you are starting airflow from local sources, www asset compilation is autom
 
 .. code-block:: bash
 
-    breeze --python 3.7 --backend mysql start-airflow
+    breeze --python 3.8 --backend mysql start-airflow
 
 
 You can also use it to start any released version of Airflow from ``PyPI`` with the
@@ -507,7 +565,7 @@ You can also use it to start any released version of Airflow from ``PyPI`` with
 
 .. code-block:: bash
 
-    breeze start-airflow --python 3.7 --backend mysql --use-airflow-version 2.2.5
+    breeze start-airflow --python 3.8 --backend mysql --use-airflow-version 2.2.5
 
 Those are all available flags of ``start-airflow`` command:
 
@@ -663,14 +721,14 @@ You can always stop it via:
 
 .. code-block:: bash
 
-   breeze stop
+   breeze down
 
-Those are all available flags of ``stop`` command:
+Those are all available flags of ``down`` command:
 
-.. image:: ./images/breeze/output_stop.svg
-  :target: https://raw.githubusercontent.com/apache/airflow/main/images/breeze/output_stop.svg
+.. image:: ./images/breeze/output_down.svg
+  :target: https://raw.githubusercontent.com/apache/airflow/main/images/breeze/output_down.svg
   :width: 100%
-  :alt: Breeze stop
+  :alt: Breeze down
 
 Troubleshooting
 ===============
@@ -679,12 +737,20 @@ If you are having problems with the Breeze environment, try the steps below. Aft
 can check whether your problem is fixed.
 
 1. If you are on macOS, check if you have enough disk space for Docker (Breeze will warn you if not).
-2. Stop Breeze with ``breeze stop``.
-3. Delete the ``.build`` directory and run ``breeze ci-image build``.
-4. Clean up Docker images via ``breeze cleanup`` command.
-5. Restart your Docker Engine and try again.
-6. Restart your machine and try again.
-7. Re-install Docker Desktop and try again.
+2. Stop Breeze with ``breeze down``.
+3. Git fetch the origin and git rebase the current branch with main branch.
+4. Delete the ``.build`` directory and run ``breeze ci-image build``.
+5. Clean up Docker images via ``breeze cleanup`` command.
+6. Restart your Docker Engine and try again.
+7. Restart your machine and try again.
+8. Re-install Docker Desktop and try again.
+
+.. note::
+  If the pip is taking a significant amount of time and your internet connection is causing pip to be unable to download the libraries within the default timeout, it is advisable to modify the default timeout as follows and run the breeze again.
+
+  .. code-block::
+
+      export PIP_DEFAULT_TIMEOUT=1000
 
 In case the problems are not solved, you can set the VERBOSE_COMMANDS variable to "true":
 
@@ -715,6 +781,68 @@ describe your problem.
     stated in `This comment <https://github.com/moby/moby/issues/43361#issuecomment-1227617516>`_ and allows to
     run Breeze with no problems.
 
+
+ETIMEOUT Error
+--------------
+
+When running ``breeze start-airflow``, the following output might be observed:
+
+.. code-block:: bash
+
+    Skip fixing ownership of generated files as Host OS is darwin
+
+
+    Waiting for asset compilation to complete in the background.
+
+    Still waiting .....
+    Still waiting .....
+    Still waiting .....
+    Still waiting .....
+    Still waiting .....
+    Still waiting .....
+
+    The asset compilation is taking too long.
+
+    If it does not complete soon, you might want to stop it and remove file lock:
+      * press Ctrl-C
+      * run 'rm /opt/airflow/.build/www/.asset_compile.lock'
+
+    Still waiting .....
+    Still waiting .....
+    Still waiting .....
+    Still waiting .....
+    Still waiting .....
+    Still waiting .....
+    Still waiting .....
+
+    The asset compilation failed. Exiting.
+
+    [INFO] Locking pre-commit directory
+
+    Error 1 returned
+
+This error is actually caused by the following error during the asset compilation which resulted in
+ETIMEOUT when ``npm`` command is trying to install required packages:
+
+.. code-block:: bash
+
+    npm ERR! code ETIMEDOUT
+    npm ERR! syscall connect
+    npm ERR! errno ETIMEDOUT
+    npm ERR! network request to https://registry.npmjs.org/yarn failed, reason: connect ETIMEDOUT 2606:4700::6810:1723:443
+    npm ERR! network This is a problem related to network connectivity.
+    npm ERR! network In most cases you are behind a proxy or have bad network settings.
+    npm ERR! network
+    npm ERR! network If you are behind a proxy, please make sure that the
+    npm ERR! network 'proxy' config is set properly.  See: 'npm help config'
+
+In this situation, notice that the IP address ``2606:4700::6810:1723:443`` is in IPv6 format, which was the
+reason why the connection did not go through the router, as the router did not support IPv6 addresses in its DNS lookup.
+In this case, disabling IPv6 in the host machine and using IPv4 instead resolved the issue.
+
+The similar issue could happen if you are behind an HTTP/HTTPS proxy and your access to required websites are
+blocked by it, or your proxy setting has not been done properly.
+
 Advanced commands
 =================
 
@@ -1332,10 +1460,10 @@ suffix and they need to also be paired with corresponding runtime dependency add
 
 .. code-block:: bash
 
-     breeze prod-image build --python 3.7 --additional-dev-deps "libasound2-dev" \
+     breeze prod-image build --python 3.8 --additional-dev-deps "libasound2-dev" \
         --additional-runtime-apt-deps "libasound2"
 
-Same as above but uses python 3.7.
+Same as above but uses python 3.8.
 
 Building PROD image
 ...................
@@ -1675,7 +1803,7 @@ You can also run the verification with an earlier airflow version to check for c
 
 .. code-block:: bash
 
-    breeze release-management verify-provider-packages --use-airflow-version 2.1.0
+    breeze release-management verify-provider-packages --use-airflow-version 2.4.0
 
 All the command parameters are here:
 
@@ -1684,6 +1812,32 @@ All the command parameters are here:
   :width: 100%
   :alt: Breeze verify-provider-packages
 
+
+Installing provider packages
+............................
+
+In some cases we want to just see if the provider packages generated can be installed with airflow without
+verifying them. This happens automatically on CI for sdist pcackages but you can also run it manually if you
+just prepared provider packages and they are present in ``dist`` folder.
+
+.. code-block:: bash
+
+     breeze release-management install-provider-packages
+
+You can also run the verification with an earlier airflow version to check for compatibility.
+
+.. code-block:: bash
+
+    breeze release-management install-provider-packages --use-airflow-version 2.4.0
+
+All the command parameters are here:
+
+.. image:: ./images/breeze/output_release-management_install-provider-packages.svg
+  :target: https://raw.githubusercontent.com/apache/airflow/main/images/breeze/output_release-management_install-provider-packages.svg
+  :width: 100%
+  :alt: Breeze install-provider-packages
+
+
 Generating Provider Issue
 .........................
 
@@ -1809,16 +1963,16 @@ Database volumes in Breeze
 --------------------------
 
 Breeze keeps data for all it's integration in named docker volumes. Each backend and integration
-keeps data in their own volume. Those volumes are persisted until ``breeze stop`` command.
+keeps data in their own volume. Those volumes are persisted until ``breeze down`` command.
 You can also preserve the volumes by adding flag ``--preserve-volumes`` when you run the command.
 Then, next time when you start Breeze, it will have the data pre-populated.
 
-Those are all available flags of ``stop`` command:
+Those are all available flags of ``down`` command:
 
-.. image:: ./images/breeze/output-stop.svg
-  :target: https://raw.githubusercontent.com/apache/airflow/main/images/breeze/output-stop.svg
+.. image:: ./images/breeze/output-down.svg
+  :target: https://raw.githubusercontent.com/apache/airflow/main/images/breeze/output-down.svg
   :width: 100%
-  :alt: Breeze stop
+  :alt: Breeze down
 
 
 Additional tools
@@ -1866,7 +2020,7 @@ Finally you can specify ``--integration all-testable`` to start all testable int
 ``--integration all`` to enable all integrations.
 
 Once integration is started, it will continue to run until the environment is stopped with
-``breeze stop`` command. or restarted via ``breeze restart`` command
+``breeze down`` command.
 
 Note that running integrations uses significant resources - CPU and memory.
 
diff --git a/Dockerfile b/Dockerfile
index 3089627a39..21bfb4619c 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -44,7 +44,7 @@ ARG AIRFLOW_UID="50000"
 ARG AIRFLOW_USER_HOME_DIR=/home/airflow
 
 # latest released version here
-ARG AIRFLOW_VERSION="2.5.3"
+ARG AIRFLOW_VERSION="2.6.2"
 
 ARG PYTHON_BASE_IMAGE="python:3.7-slim-bullseye"
 
diff --git a/Dockerfile.ci b/Dockerfile.ci
index fe44da8015..0c5cda1395 100644
--- a/Dockerfile.ci
+++ b/Dockerfile.ci
@@ -605,6 +605,7 @@ if [[ ${VERBOSE_COMMANDS:="false"} == "true" ]]; then
     set -x
 fi
 
+
 . "${AIRFLOW_SOURCES:-/opt/airflow}"/scripts/in_container/_in_container_script_init.sh
 
 LD_PRELOAD="/usr/lib/$(uname -m)-linux-gnu/libstdc++.so.6"
@@ -764,29 +765,66 @@ if [[ ${SKIP_ENVIRONMENT_INITIALIZATION=} != "true" ]]; then
             exit 1
         fi
         echo
+        if [[ ${INSTALL_SELECTED_PROVIDERS=} != "" ]]; then
+            IFS=\, read -ra selected_providers <<<"${INSTALL_SELECTED_PROVIDERS}"
+            echo
+            echo "${COLOR_BLUE}Selected providers to install: '${selected_providers[*]}'${COLOR_RESET}"
+            echo
+        else
+            echo
+            echo "${COLOR_BLUE}Installing all found providers${COLOR_RESET}"
+            echo
+            selected_providers=()
+        fi
         installable_files=()
         for file in /dist/*.{whl,tar.gz}
         do
-            if [[ ${USE_AIRFLOW_VERSION} == "wheel" && ${file} == "/dist/apache?airflow-[0-9]"* ]]; then
-                # Skip Apache Airflow package - it's just been installed above with extras
-                echo "Skipping ${file}"
+            if [[ ${file} == "/dist/apache?airflow-[0-9]"* ]]; then
+                # Skip Apache Airflow package - it's just been installed above if
+                # --use-airflow-version was set and should be skipped otherwise
+                echo "${COLOR_BLUE}Skipping airflow core package ${file} from provider installation.${COLOR_RESET}"
                 continue
             fi
             if [[ ${PACKAGE_FORMAT} == "wheel" && ${file} == *".whl" ]]; then
-                echo "Adding ${file} to install"
-                installable_files+=( "${file}" )
+                provider_name=$(echo "${file}" | sed 's/\/dist\/apache_airflow_providers_//' | sed 's/-[0-9].*//' | sed 's/-/./g')
+                if [[ ${INSTALL_SELECTED_PROVIDERS=} != "" ]]; then
+                    # shellcheck disable=SC2076
+                    if [[ " ${selected_providers[*]} " =~ " ${provider_name} " ]]; then
+                        echo "${COLOR_BLUE}Adding ${provider_name} to install via ${file}${COLOR_RESET}"
+                        installable_files+=( "${file}" )
+                    else
+                        echo "${COLOR_BLUE}Skipping ${provider_name} as it is not in the list of '${selected_providers[*]}'${COLOR_RESET}"
+                    fi
+                else
+                    echo "${COLOR_BLUE}Adding ${provider_name} to install via ${file}${COLOR_RESET}"
+                    installable_files+=( "${file}" )
+                fi
             fi
             if [[ ${PACKAGE_FORMAT} == "sdist" && ${file} == *".tar.gz" ]]; then
-                echo "Adding ${file} to install"
-                installable_files+=( "${file}" )
+                provider_name=$(echo "${file}" | sed 's/\/dist\/apache-airflow-providers-//' | sed 's/-[0-9].*//' | sed 's/-/./g')
+                if [[ ${INSTALL_SELECTED_PROVIDERS=} != "" ]]; then
+                    # shellcheck disable=SC2076
+                    if [[ " ${selected_providers[*]} " =~ " ${provider_name} " ]]; then
+                        echo "${COLOR_BLUE}Adding ${provider_name} to install via ${file}${COLOR_RESET}"
+                        installable_files+=( "${file}" )
+                    else
+                        echo "${COLOR_BLUE}Skipping ${provider_name} as it is not in the list of '${selected_providers[*]}'${COLOR_RESET}"
+                    fi
+                else
+                    echo "${COLOR_BLUE}Adding ${provider_name} to install via ${file}${COLOR_RESET}"
+                    installable_files+=( "${file}" )
+                fi
             fi
         done
-        if [[ ${USE_AIRFLOW_VERSION} != "wheel" && ${USE_AIRFLOW_VERSION} != "sdist" && ${USE_AIRFLOW_VERSION} != "none" ]]; then
+        if [[ ${USE_AIRFLOW_VERSION} != "wheel" && ${USE_AIRFLOW_VERSION} != "sdist" && ${USE_AIRFLOW_VERSION} != "none" && ${USE_AIRFLOW_VERSION} != "" ]]; then
             echo
             echo "${COLOR_BLUE}Also adding airflow in specified version ${USE_AIRFLOW_VERSION} to make sure it is not upgraded by >= limits${COLOR_RESET}"
             echo
             installable_files+=( "apache-airflow==${USE_AIRFLOW_VERSION}" )
         fi
+        echo
+        echo "${COLOR_BLUE}Installing: ${installable_files[*]}${COLOR_RESET}"
+        echo
         if (( ${#installable_files[@]} )); then
             pip install --root-user-action ignore "${installable_files[@]}"
         fi
diff --git a/IMAGES.rst b/IMAGES.rst
index d28db99278..3d906758e6 100644
--- a/IMAGES.rst
+++ b/IMAGES.rst
@@ -283,7 +283,7 @@ This is a powerful tool that allows to reproduce CI failures locally, enter the
 faster. It is enough to pass ``--image-tag`` and the registry and Breeze will download and execute
 commands using the same image that was used during the CI tests.
 
-For example this command will run the same Python 3.8 image as was used in build identified with
+For example this command will run the same Python 3. image as was used in build identified with
 9a621eaa394c0a0a336f8e1b31b35eff4e4ee86e commit SHA  with enabled rabbitmq integration.
 
 .. code-block:: bash
diff --git a/README.md b/README.md
index 1b613ef761..994c23eba2 100644
--- a/README.md
+++ b/README.md
@@ -275,7 +275,7 @@ Apache Airflow version life cycle:
 
 | Version   | Current Patch/Minor   | State     | First Release   | Limited Support   | EOL/Terminated   |
 |-----------|-----------------------|-----------|-----------------|-------------------|------------------|
-| 2         | 2.6.2                 | Supported | Dec 17, 2020    | TBD               | TBD              |
+| 2         | 2.6.1                 | Supported | Dec 17, 2020    | TBD               | TBD              |
 | 1.10      | 1.10.15               | EOL       | Aug 27, 2018    | Dec 17, 2020      | June 17, 2021    |
 | 1.9       | 1.9.0                 | EOL       | Jan 03, 2018    | Aug 27, 2018      | Aug 27, 2018     |
 | 1.8       | 1.8.2                 | EOL       | Mar 19, 2017    | Jan 03, 2018      | Jan 03, 2018     |
diff --git a/STATIC_CODE_CHECKS.rst b/STATIC_CODE_CHECKS.rst
index 8541fe5ec1..d7217b71a4 100644
--- a/STATIC_CODE_CHECKS.rst
+++ b/STATIC_CODE_CHECKS.rst
@@ -207,7 +207,7 @@ require Breeze Docker image to be built locally.
 +-----------------------------------------------------------+------------------------------------------------------------------+---------+
 | check-provide-create-sessions-imports                     | Check provide_session and create_session imports                 |         |
 +-----------------------------------------------------------+------------------------------------------------------------------+---------+
-| check-provider-yaml-valid                                 | Validate provider.yaml files                                     | *       |
+| check-provider-yaml-valid                                 | Validate provider.yaml files                                     |         |
 +-----------------------------------------------------------+------------------------------------------------------------------+---------+
 | check-providers-init-file-missing                         | Provider init file is missing                                    |         |
 +-----------------------------------------------------------+------------------------------------------------------------------+---------+
@@ -286,13 +286,11 @@ require Breeze Docker image to be built locally.
 +-----------------------------------------------------------+------------------------------------------------------------------+---------+
 | mixed-line-ending                                         | Detect if mixed line ending is used (\r vs. \r\n)                |         |
 +-----------------------------------------------------------+------------------------------------------------------------------+---------+
-| mypy-core                                                 | Run mypy for core                                                | *       |
+| mypy-core                                                 | Run mypy for core                                                |         |
 +-----------------------------------------------------------+------------------------------------------------------------------+---------+
-| mypy-dev                                                  | Run mypy for dev                                                 | *       |
+| mypy-docs                                                 | Run mypy for /docs/ folder                                       |         |
 +-----------------------------------------------------------+------------------------------------------------------------------+---------+
-| mypy-docs                                                 | Run mypy for /docs/ folder                                       | *       |
-+-----------------------------------------------------------+------------------------------------------------------------------+---------+
-| mypy-providers                                            | Run mypy for providers                                           | *       |
+| mypy-providers                                            | Run mypy for providers                                           |         |
 +-----------------------------------------------------------+------------------------------------------------------------------+---------+
 | pretty-format-json                                        | Format JSON files                                                |         |
 +-----------------------------------------------------------+------------------------------------------------------------------+---------+
@@ -318,7 +316,7 @@ require Breeze Docker image to be built locally.
 +-----------------------------------------------------------+------------------------------------------------------------------+---------+
 | update-common-sql-api-stubs                               | Check and update common.sql API stubs                            |         |
 +-----------------------------------------------------------+------------------------------------------------------------------+---------+
-| update-er-diagram                                         | Update ER diagram                                                | *       |
+| update-er-diagram                                         | Update ER diagram                                                |         |
 +-----------------------------------------------------------+------------------------------------------------------------------+---------+
 | update-extras                                             | Update extras in documentation                                   |         |
 +-----------------------------------------------------------+------------------------------------------------------------------+---------+
@@ -330,7 +328,7 @@ require Breeze Docker image to be built locally.
 +-----------------------------------------------------------+------------------------------------------------------------------+---------+
 | update-local-yml-file                                     | Update mounts in the local yml file                              |         |
 +-----------------------------------------------------------+------------------------------------------------------------------+---------+
-| update-migration-references                               | Update migration ref doc                                         | *       |
+| update-migration-references                               | Update migration ref doc                                         |         |
 +-----------------------------------------------------------+------------------------------------------------------------------+---------+
 | update-providers-dependencies                             | Update cross-dependencies for providers packages                 |         |
 +-----------------------------------------------------------+------------------------------------------------------------------+---------+
diff --git a/dev/breeze/README.md b/dev/breeze/README.md
index ad0f24771d..69bdaf4ced 100644
--- a/dev/breeze/README.md
+++ b/dev/breeze/README.md
@@ -52,6 +52,6 @@ PLEASE DO NOT MODIFY THE HASH BELOW! IT IS AUTOMATICALLY UPDATED BY PRE-COMMIT.
 
 ---------------------------------------------------------------------------------------------------------
 
-Package config hash: f799f7c7b42d8bb6dcee79f989d4af33b96b531bcc5c9a46002e444d8f4c4b316e7ab77f9dfd6a6b396cba8226a3cbfeb450128bd55ffa443d15139a4cc74d22
+Package config hash: 5a58d062de9c220a74215d4beedb98228f93c5b9fc1ef590b3176605ab50197e446e6e38e5e889e1c4e46ba720314c54a0b1efb87964b55f3856bdceaa9852ce
 
 ---------------------------------------------------------------------------------------------------------
diff --git a/dev/breeze/SELECTIVE_CHECKS.md b/dev/breeze/SELECTIVE_CHECKS.md
index a3e64a6977..f2d2ab72b6 100644
--- a/dev/breeze/SELECTIVE_CHECKS.md
+++ b/dev/breeze/SELECTIVE_CHECKS.md
@@ -109,6 +109,11 @@ The logic implements the following rules:
   changed, also providers docs are built because all providers depend on airflow docs. If any of the docs
   build python files changed or when build is "canary" type in main - all docs packages are built.
 
+
+The selective checks will fail in PR if it contains changes to a suspended provider unless you set the
+label `allow suspended provider changes` in the PR. This is to prevent accidental changes to suspended
+providers.
+
 The selective check outputs available are described below. In case of `list-as-string` values,
 empty string means `everything`, where lack of the output means `nothing` and list elements are
 separated by spaces. This is to accommodate for the wau how outputs of this kind can be easily used by
@@ -117,8 +122,8 @@ Github Actions to pass the list of parameters to a command to execute
 | Output                             | Meaning of the output                                                                                   | Example value                                              | List as string |
 |------------------------------------|---------------------------------------------------------------------------------------------------------|------------------------------------------------------------|----------------|
 | affected-providers-list-as-string  | List of providers affected when they are selectively affected.                                          | airbyte http                                               | *              |
-| all-python-versions                | List of all python versions there are available in the form of JSON array                               | ['3.7', '3.8', '3.9', '3.10']                              |                |
-| all-python-versions-list-as-string | List of all python versions there are available in the form of space separated string                   | 3.7 3.8 3.9 3.10                                           | *              |
+| all-python-versions                | List of all python versions there are available in the form of JSON array                               | ['3.8', '3.9', '3.10']                                     |                |
+| all-python-versions-list-as-string | List of all python versions there are available in the form of space separated string                   | 3.8 3.9 3.10                                               | *              |
 | basic-checks-only                  | Whether to run all static checks ("false") or only basic set of static checks ("true")                  | false                                                      |                |
 | cache-directive                    | Which cache should be be used for images ("registry", "local" , "disabled")                             | registry                                                   |                |
 | debug-resources                    | Whether resources usage should be printed during parallel job execution ("true"/ "false")               | false                                                      |                |
@@ -130,14 +135,14 @@ Github Actions to pass the list of parameters to a command to execute
 | default-mssql-version              | Which MsSQL version to use as default                                                                   | 2017-latest                                                |                |
 | default-mysql-version              | Which MySQL version to use as default                                                                   | 5.7                                                        |                |
 | default-postgres-version           | Which Postgres version to use as default                                                                | 10                                                         |                |
-| default-python-version             | Which Python version to use as default                                                                  | 3.7                                                        |                |
+| default-python-version             | Which Python version to use as default                                                                  | 3.8                                                        |                |
 | docs-build                         | Whether to build documentation ("true"/"false")                                                         | true                                                       |                |
 | docs-filter-list-as-string         | What filter to apply to docs building - based on which documentation packages should be built           | --package-filter apache-airflow -package-filter-helm-chart |                |
 | full-tests-needed                  | Whether this build runs complete set of tests or only subset (for faster PR builds)                     | false                                                      |                |
 | helm-version                       | Which Helm version to use for tests                                                                     | v3.9.4                                                     |                |
 | image-build                        | Whether CI image build is needed                                                                        | true                                                       |                |
 | kind-version                       | Which Kind version to use for tests                                                                     | v0.16.0                                                    |                |
-| kubernetes-combos-list-as-string   | All combinations of Python version and Kubernetes version to use for tests as space-separated string    | 3.7-v1.25.2 3.8-v1.26.4                                    | *              |
+| kubernetes-combos-list-as-string   | All combinations of Python version and Kubernetes version to use for tests as space-separated string    | 3.8-v1.25.2 3.9-v1.26.4                                    | *              |
 | kubernetes-versions                | All Kubernetes versions to use for tests as JSON array                                                  | ['v1.25.2']                                                |                |
 | kubernetes-versions-list-as-string | All Kubernetes versions to use for tests as space-separated string                                      | v1.25.2                                                    | *              |
 | mssql-exclude                      | Which versions of MsSQL to exclude for tests as JSON array                                              | []                                                         |                |
@@ -152,8 +157,8 @@ Github Actions to pass the list of parameters to a command to execute
 | parallel-test-types-list-as-string | Which test types should be run for unit tests                                                           | API Always Providers\[amazon\] Providers\[-amazon\]        | *              |
 | postgres-exclude                   | Which versions of Postgres to exclude for tests as JSON array                                           | []                                                         |                |
 | postgres-versions                  | Which versions of Postgres to use for tests as JSON array                                               | ['10']                                                     |                |
-| python-versions                    | Which versions of Python to use for tests as JSON array                                                 | ['3.7']                                                    |                |
-| python-versions-list-as-string     | Which versions of MySQL to use for tests as space-separated string                                      | 3.7                                                        | *              |
+| python-versions                    | Which versions of Python to use for tests as JSON array                                                 | ['3.8']                                                    |                |
+| python-versions-list-as-string     | Which versions of MySQL to use for tests as space-separated string                                      | 3.8                                                        | *              |
 | run-kubernetes-tests               | Whether Kubernetes tests should be run ("true"/"false")                                                 | true                                                       |                |
 | run-tests                          | Whether unit tests should be run ("true"/"false")                                                       | true                                                       |                |
 | run-www-tests                      | Whether WWW tests should be run ("true"/"false")                                                        | true                                                       |                |
diff --git a/dev/breeze/doc/adr/0002-implement-standalone-python-command.md b/dev/breeze/doc/adr/0002-implement-standalone-python-command.md
index 8aab0db417..d0818ad2bb 100644
--- a/dev/breeze/doc/adr/0002-implement-standalone-python-command.md
+++ b/dev/breeze/doc/adr/0002-implement-standalone-python-command.md
@@ -138,9 +138,9 @@ There are a few properties of Breeze/CI scripts that should be maintained though
   run a command and get everything done with the least number of prerequisites
 
 * The prerequisites for Breeze and CI are:
-   * Python 3.7+ (Python 3.7 end of life is Jun 2023)
-   * Docker (TBD which minimum version supported)
-   * Docker Compose (TBD which minimum version supported)
+   * Python 3.8+ (Python 3.8 end of life is October 2024)
+   * Docker (23.0+)
+   * Docker Compose (2.16.0+)
    * No other tools and CLI commands should be needed
    * The python requirements should be automatically installed when missing in a "Breeze" venv and updated
      automatically when needed. The number of Python dependencies needed to run Breeze and CI scripts
diff --git a/dev/breeze/doc/adr/0007-using-database-volumes-for-backends.md b/dev/breeze/doc/adr/0007-using-database-volumes-for-backends.md
index c6cfa34c2b..f35bb949f1 100644
--- a/dev/breeze/doc/adr/0007-using-database-volumes-for-backends.md
+++ b/dev/breeze/doc/adr/0007-using-database-volumes-for-backends.md
@@ -63,7 +63,7 @@ appropriate `--backend` flag is used. This is done in
 `backend-<BACKEND>.yml` docker-compose file.
 
 This volume stays until it is manually deleted or until
-`./breeze stop` command is called. The `./breeze stop` command
+`breeze down` command is called. The `breeze down` command
 stops all the containers and removes all the volumes, in order
 to provide an easy way to start breeze environment from
 scratch.
diff --git a/dev/breeze/setup.cfg b/dev/breeze/setup.cfg
index 4e59505678..c1993ffe8e 100644
--- a/dev/breeze/setup.cfg
+++ b/dev/breeze/setup.cfg
@@ -33,7 +33,6 @@ classifiers =
     Environment :: Console
     Intended Audience :: Developers
     License :: OSI Approved :: Apache Software License
-    Programming Language :: Python :: 3.7
     Programming Language :: Python :: 3.8
     Programming Language :: Python :: 3.9
     Programming Language :: Python :: 3.10
@@ -48,16 +47,14 @@ project_urls =
 [options]
 zip_safe = False
 include_package_data = True
-python_requires = ~=3.7
+python_requires = ~=3.8
 package_dir=
     =src
 packages = find:
 install_requires =
-    cached_property>=1.5.0;python_version<="3.7"
     click
     filelock
     inputimeout
-    importlib-metadata>=4.4; python_version < "3.8"
     jinja2
     packaging
     pendulum
diff --git a/dev/breeze/src/airflow_breeze/commands/ci_commands.py b/dev/breeze/src/airflow_breeze/commands/ci_commands.py
index 02692b3c2b..30f3fd123f 100644
--- a/dev/breeze/src/airflow_breeze/commands/ci_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/ci_commands.py
@@ -42,6 +42,7 @@ from airflow_breeze.utils.click_utils import BreezeGroup
 from airflow_breeze.utils.common_options import (
     option_answer,
     option_dry_run,
+    option_github_repository,
     option_verbose,
 )
 from airflow_breeze.utils.confirm import Answer, user_confirm
@@ -220,6 +221,21 @@ def get_changed_files(commit_ref: str | None) -> tuple[str, ...]:
     envvar="GITHUB_EVENT_NAME",
     show_default=True,
 )
+@option_github_repository
+@click.option(
+    "--github-actor",
+    help="Actor that triggered the event (Github user)",
+    envvar="GITHUB_ACTOR",
+    type=str,
+    default="",
+)
+@click.option(
+    "--github-context",
+    help="Github context (JSON formatted) passed by Github Actions",
+    envvar="GITHUB_CONTEXT",
+    type=str,
+    default="",
+)
 @option_verbose
 @option_dry_run
 def selective_check(
@@ -228,9 +244,13 @@ def selective_check(
     default_branch: str,
     default_constraints_branch: str,
     github_event_name: str,
+    github_repository: str,
+    github_actor: str,
+    github_context: str,
 ):
     from airflow_breeze.utils.selective_checks import SelectiveChecks
 
+    github_context_dict = json.loads(github_context) if github_context else {}
     github_event = GithubEvents(github_event_name)
     if commit_ref is not None:
         changed_files = get_changed_files(commit_ref=commit_ref)
@@ -243,6 +263,9 @@ def selective_check(
         default_constraints_branch=default_constraints_branch,
         pr_labels=tuple(ast.literal_eval(pr_labels)) if pr_labels else (),
         github_event=github_event,
+        github_repository=github_repository,
+        github_actor=github_actor,
+        github_context_dict=github_context_dict,
     )
     print(str(sc), file=sys.stderr)
 
@@ -285,7 +308,7 @@ class WorkflowInfo(NamedTuple):
         return RUNS_ON_SELF_HOSTED_RUNNER
 
     def in_workflow_build(self) -> str:
-        if self.event_name == "push" or self.head_repo == "apache/airflow":
+        if self.event_name == "push" or self.head_repo == self.target_repo:
             return "true"
         return "false"
 
diff --git a/dev/breeze/src/airflow_breeze/commands/ci_commands_config.py b/dev/breeze/src/airflow_breeze/commands/ci_commands_config.py
index 964e33bcb9..a8b50246a3 100644
--- a/dev/breeze/src/airflow_breeze/commands/ci_commands_config.py
+++ b/dev/breeze/src/airflow_breeze/commands/ci_commands_config.py
@@ -44,9 +44,17 @@ CI_PARAMETERS: dict[str, list[dict[str, str | list[str]]]] = {
                 "--pr-labels",
                 "--default-branch",
                 "--default-constraints-branch",
+            ],
+        },
+        {
+            "name": "Github parameters",
+            "options": [
                 "--github-event-name",
+                "--github-repository",
+                "--github-actor",
+                "--github-context",
             ],
-        }
+        },
     ],
     "breeze ci get-workflow-info": [
         {
diff --git a/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py b/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py
index 78c8d7d850..78a7f3f84a 100644
--- a/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py
@@ -49,7 +49,6 @@ from airflow_breeze.utils.common_options import (
     option_force_build,
     option_github_repository,
     option_github_token,
-    option_github_username,
     option_image_name,
     option_image_tag_for_building,
     option_image_tag_for_pulling,
@@ -114,8 +113,6 @@ def check_if_image_building_is_needed(ci_image_params: BuildCiParams, output: Ou
     if not ci_image_params.force_build and not ci_image_params.upgrade_to_newer_dependencies:
         if not should_we_run_the_build(build_ci_params=ci_image_params):
             return False
-    if ci_image_params.prepare_buildx_cache or ci_image_params.push:
-        login_to_github_docker_registry(image_params=ci_image_params, output=output)
     return True
 
 
@@ -155,9 +152,13 @@ def run_build_in_parallel(
     )
 
 
-def start_building(params: BuildCiParams):
+def prepare_for_building_ci_image(params: BuildCiParams):
     check_if_image_building_is_needed(params, output=None)
     make_sure_builder_configured(params=params)
+    login_to_github_docker_registry(
+        github_token=params.github_token,
+        output=None,
+    )
 
 
 @ci_image.command(name="build")
@@ -172,7 +173,6 @@ def start_building(params: BuildCiParams):
 @option_upgrade_on_failure
 @option_platform_multiple
 @option_github_token
-@option_github_username
 @option_docker_cache
 @option_image_tag_for_building
 @option_prepare_buildx_cache
@@ -230,7 +230,7 @@ def build(
             params = BuildCiParams(**parameters_passed)
             params.python = python
             params_list.append(params)
-        start_building(params=params_list[0])
+        prepare_for_building_ci_image(params=params_list[0])
         run_build_in_parallel(
             image_params_list=params_list,
             python_version_list=python_version_list,
@@ -241,7 +241,7 @@ def build(
         )
     else:
         params = BuildCiParams(**parameters_passed)
-        start_building(params=params)
+        prepare_for_building_ci_image(params=params)
         run_build(ci_image_params=params)
 
 
@@ -281,6 +281,10 @@ def pull(
     """Pull and optionally verify CI images - possibly in parallel for all Python versions."""
     perform_environment_checks()
     check_remote_ghcr_io_commands()
+    login_to_github_docker_registry(
+        github_token=github_token,
+        output=None,
+    )
     if run_in_parallel:
         python_version_list = get_python_version_list(python_versions)
         ci_image_params_list = [
@@ -306,7 +310,10 @@ def pull(
         )
     else:
         image_params = BuildCiParams(
-            image_tag=image_tag, python=python, github_repository=github_repository, github_token=github_token
+            image_tag=image_tag,
+            python=python,
+            github_repository=github_repository,
+            github_token=github_token,
         )
         return_code, info = run_pull_image(
             image_params=image_params,
@@ -331,6 +338,7 @@ def pull(
 @option_image_tag_for_verifying
 @option_image_name
 @option_pull
+@option_github_token
 @option_verbose
 @option_dry_run
 @click.argument("extra_pytest_args", nargs=-1, type=click.UNPROCESSED)
@@ -339,13 +347,23 @@ def verify(
     image_name: str,
     image_tag: str | None,
     pull: bool,
+    github_token: str,
     github_repository: str,
     extra_pytest_args: tuple,
 ):
     """Verify CI image."""
     perform_environment_checks()
+    login_to_github_docker_registry(
+        github_token=github_token,
+        output=None,
+    )
     if image_name is None:
-        build_params = BuildCiParams(python=python, image_tag=image_tag, github_repository=github_repository)
+        build_params = BuildCiParams(
+            python=python,
+            image_tag=image_tag,
+            github_repository=github_repository,
+            github_token=github_token,
+        )
         image_name = build_params.airflow_image_name_with_tag
     if pull:
         check_remote_ghcr_io_commands()
diff --git a/dev/breeze/src/airflow_breeze/commands/ci_image_commands_config.py b/dev/breeze/src/airflow_breeze/commands/ci_image_commands_config.py
index 5f1f9b0146..b408bb9f7d 100644
--- a/dev/breeze/src/airflow_breeze/commands/ci_image_commands_config.py
+++ b/dev/breeze/src/airflow_breeze/commands/ci_image_commands_config.py
@@ -36,7 +36,6 @@ CI_IMAGE_TOOLS_PARAMETERS: dict[str, list[dict[str, str | list[str]]]] = {
                 "--tag-as-latest",
                 "--docker-cache",
                 "--force-build",
-                "--github-repository",
             ],
         },
         {
@@ -72,14 +71,19 @@ CI_IMAGE_TOOLS_PARAMETERS: dict[str, list[dict[str, str | list[str]]]] = {
         {
             "name": "Preparing cache and push (for maintainers and CI)",
             "options": [
-                "--github-token",
-                "--github-username",
                 "--platform",
                 "--push",
                 "--empty-image",
                 "--prepare-buildx-cache",
             ],
         },
+        {
+            "name": "Github authentication",
+            "options": [
+                "--github-repository",
+                "--github-token",
+            ],
+        },
     ],
     "breeze ci-image pull": [
         {
@@ -87,11 +91,9 @@ CI_IMAGE_TOOLS_PARAMETERS: dict[str, list[dict[str, str | list[str]]]] = {
             "options": [
                 "--image-tag",
                 "--python",
-                "--github-token",
                 "--verify",
                 "--wait-for-image",
                 "--tag-as-latest",
-                "--github-repository",
             ],
         },
         {
@@ -105,6 +107,13 @@ CI_IMAGE_TOOLS_PARAMETERS: dict[str, list[dict[str, str | list[str]]]] = {
                 "--include-success-outputs",
             ],
         },
+        {
+            "name": "Github authentication",
+            "options": [
+                "--github-repository",
+                "--github-token",
+            ],
+        },
     ],
     "breeze ci-image verify": [
         {
@@ -114,8 +123,14 @@ CI_IMAGE_TOOLS_PARAMETERS: dict[str, list[dict[str, str | list[str]]]] = {
                 "--python",
                 "--image-tag",
                 "--pull",
+            ],
+        },
+        {
+            "name": "Github authentication",
+            "options": [
                 "--github-repository",
+                "--github-token",
             ],
-        }
+        },
     ],
 }
diff --git a/dev/breeze/src/airflow_breeze/commands/developer_commands.py b/dev/breeze/src/airflow_breeze/commands/developer_commands.py
index 47092deb5a..59428b42da 100644
--- a/dev/breeze/src/airflow_breeze/commands/developer_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/developer_commands.py
@@ -39,18 +39,23 @@ from airflow_breeze.params.doc_build_params import DocBuildParams
 from airflow_breeze.params.shell_params import ShellParams
 from airflow_breeze.pre_commit_ids import PRE_COMMIT_LIST
 from airflow_breeze.utils.cache import read_from_cache_file
+from airflow_breeze.utils.coertions import one_or_none_set
 from airflow_breeze.utils.common_options import (
     option_airflow_constraints_reference,
     option_airflow_extras,
     option_answer,
     option_backend,
+    option_celery_broker,
+    option_celery_flower,
     option_db_reset,
     option_dry_run,
+    option_executor,
     option_force_build,
     option_forward_credentials,
     option_github_repository,
     option_image_tag_for_running,
     option_include_mypy_volume,
+    option_install_selected_providers,
     option_installation_package_format,
     option_integration,
     option_load_default_connection,
@@ -123,6 +128,7 @@ class TimerThread(threading.Thread):
 @option_airflow_extras
 @option_airflow_constraints_reference
 @option_use_packages_from_dist
+@option_install_selected_providers
 @option_installation_package_format
 @option_mount_sources
 @option_integration
@@ -145,6 +151,7 @@ def shell(
     forward_credentials: bool,
     mount_sources: str,
     use_packages_from_dist: bool,
+    install_selected_providers: str,
     package_format: str,
     use_airflow_version: str | None,
     airflow_extras: str,
@@ -179,6 +186,7 @@ def shell(
         airflow_extras=airflow_extras,
         airflow_constraints_reference=airflow_constraints_reference,
         use_packages_from_dist=use_packages_from_dist,
+        install_selected_providers=install_selected_providers,
         package_format=package_format,
         force_build=force_build,
         db_reset=db_reset,
@@ -227,6 +235,9 @@ def shell(
 @option_dry_run
 @option_answer
 @click.argument("extra-args", nargs=-1, type=click.UNPROCESSED)
+@option_executor
+@option_celery_broker
+@option_celery_flower
 def start_airflow(
     python: str,
     backend: str,
@@ -251,6 +262,9 @@ def start_airflow(
     platform: str | None,
     extra_args: tuple,
     github_repository: str,
+    executor: str,
+    celery_broker: str,
+    celery_flower: bool,
 ):
     """
     Enter breeze environment and starts all Airflow components in the tmux session.
@@ -287,6 +301,9 @@ def start_airflow(
         image_tag=image_tag,
         platform=platform,
         extra_args=extra_args,
+        executor=executor,
+        celery_broker=celery_broker,
+        celery_flower=celery_flower,
     )
     sys.exit(result.returncode)
 
@@ -394,6 +411,13 @@ def build_docs(
     help="Run checks for all files in last commit. Mutually exclusive with --commit-ref.",
     is_flag=True,
 )
+@click.option(
+    "-m",
+    "--only-my-changes",
+    help="Run checks for commits belonging to my PR only: for all commits between merge base to `main` "
+    "branch and HEAD of your branch.",
+    is_flag=True,
+)
 @click.option(
     "-r",
     "--commit-ref",
@@ -401,6 +425,18 @@ def build_docs(
     "(can be any git commit-ish reference). "
     "Mutually exclusive with --last-commit.",
 )
+@click.option(
+    "--initialize-environment",
+    help="Initialize environment before running checks.",
+    is_flag=True,
+)
+@click.option(
+    "--max-initialization-attempts",
+    help="Maximum number of attempts to initialize environment before giving up.",
+    show_default=True,
+    type=click.IntRange(1, 10),
+    default=3,
+)
 @option_github_repository
 @option_verbose
 @option_dry_run
@@ -409,27 +445,75 @@ def static_checks(
     all_files: bool,
     show_diff_on_failure: bool,
     last_commit: bool,
+    only_my_changes: bool,
     commit_ref: str,
     type_: str,
     file: Iterable[str],
     precommit_args: tuple,
+    initialize_environment: bool,
+    max_initialization_attempts: int,
     github_repository: str,
 ):
     assert_pre_commit_installed()
     perform_environment_checks()
+
+    if initialize_environment:
+        get_console().print("[info]Make sure that pre-commit is installed and environment initialized[/]")
+        get_console().print(
+            f"[info]Trying to install the environments up to {max_initialization_attempts} "
+            f"times in case of flakiness[/]"
+        )
+        i = 0
+        while True:
+            get_console().print(f"[info]Attempt number {i+1} to install pre-commit environments")
+            initialization_result = run_command(
+                [sys.executable, "-m", "pre_commit", "install", "--install-hooks"],
+                check=False,
+                no_output_dump_on_exception=True,
+                text=True,
+            )
+            if initialization_result.returncode == 0:
+                break
+            get_console().print(f"[warning]Attempt number {i+1} failed - retrying[/]")
+            if i == max_initialization_attempts - 1:
+                get_console().print("[error]Could not install pre-commit environments[/]")
+                sys.exit(initialization_result.returncode)
+            i += 1
+
     command_to_execute = [sys.executable, "-m", "pre_commit", "run"]
-    if last_commit and commit_ref:
-        get_console().print("\n[error]You cannot specify both --last-commit and --commit-ref[/]\n")
+    if not one_or_none_set([last_commit, commit_ref, only_my_changes, all_files]):
+        get_console().print(
+            "\n[error]You can only specify "
+            "one of --last-commit, --commit-ref, --only-my-changes, --all-files[/]\n"
+        )
         sys.exit(1)
     if type_:
         command_to_execute.append(type_)
+    if only_my_changes:
+        merge_base = run_command(
+            ["git", "merge-base", "HEAD", "main"], capture_output=True, check=False, text=True
+        ).stdout.strip()
+        if not merge_base:
+            get_console().print(
+                "\n[warning]Could not find merge base between HEAD and main. Running check for all files\n"
+            )
+            all_files = True
+        else:
+            get_console().print(
+                f"\n[info]Running checks for files changed in the current branch: {merge_base}..HEAD\n"
+            )
+            command_to_execute.extend(["--from-ref", merge_base, "--to-ref", "HEAD"])
     if all_files:
         command_to_execute.append("--all-files")
     if show_diff_on_failure:
         command_to_execute.append("--show-diff-on-failure")
     if last_commit:
+        get_console().print(
+            "\n[info]Running checks for last commit in the current branch current branch: HEAD^..HEAD\n"
+        )
         command_to_execute.extend(["--from-ref", "HEAD^", "--to-ref", "HEAD"])
     if commit_ref:
+        get_console().print(f"\n[info]Running checks for selected commit: {commit_ref}\n")
         command_to_execute.extend(["--from-ref", f"{commit_ref}^", "--to-ref", f"{commit_ref}"])
     if get_verbose() or get_dry_run():
         command_to_execute.append("--verbose")
@@ -449,7 +533,21 @@ def static_checks(
     )
     if static_checks_result.returncode != 0:
         if os.environ.get("CI"):
-            get_console().print("[error]There were errors during pre-commit check. They should be fixed[/]")
+            get_console().print("\n[error]This error means that you have to fix the issues listed above:[/]")
+            get_console().print("\n[info]Some of the problems might be fixed automatically via pre-commit[/]")
+            get_console().print(
+                "\n[info]You can run it locally with: `pre-commit run --all-files` "
+                "but it might take quite some time.[/]"
+            )
+            get_console().print(
+                "\n[info]If you use breeze you can also run it faster via: "
+                "`breeze static-checks --only-my-changes` but it might produce slightly "
+                "different results.[/]"
+            )
+            get_console().print(
+                "\n[info]To run `pre-commit` as part of git workflow, use "
+                "`pre-commit install`. This will make pre-commit run as you commit changes[/]\n"
+            )
     sys.exit(static_checks_result.returncode)
 
 
@@ -474,7 +572,7 @@ def compile_www_assets(dev: bool):
     sys.exit(0)
 
 
-@main.command(name="stop", help="Stop running breeze environment.")
+@main.command(name="down", help="Stop running breeze environment.")
 @click.option(
     "-p",
     "--preserve-volumes",
@@ -489,7 +587,7 @@ def compile_www_assets(dev: bool):
 )
 @option_verbose
 @option_dry_run
-def stop(preserve_volumes: bool, cleanup_mypy_cache: bool):
+def down(preserve_volumes: bool, cleanup_mypy_cache: bool):
     perform_environment_checks()
     command_to_execute = [*DOCKER_COMPOSE_COMMAND, "down", "--remove-orphans"]
     if not preserve_volumes:
@@ -550,6 +648,15 @@ def enter_shell(**kwargs) -> RunCommandResult:
         get_console().print(CHEATSHEET, style=CHEATSHEET_STYLE)
     shell_params = ShellParams(**filter_out_none(**kwargs))
     rebuild_or_pull_ci_image_if_needed(command_params=shell_params)
+
+    if shell_params.backend == "sqlite":
+        get_console().print(
+            f"\n[warn]backend: sqlite is not"
+            f" compatible with executor: {shell_params.executor}."
+            f"Changing the executor to SequentialExecutor.\n"
+        )
+        shell_params.executor = "SequentialExecutor"
+
     if shell_params.include_mypy_volume:
         create_mypy_volume_if_needed()
     shell_params.print_badge_info()
diff --git a/dev/breeze/src/airflow_breeze/commands/developer_commands_config.py b/dev/breeze/src/airflow_breeze/commands/developer_commands_config.py
index 191eccd139..5216e76061 100644
--- a/dev/breeze/src/airflow_breeze/commands/developer_commands_config.py
+++ b/dev/breeze/src/airflow_breeze/commands/developer_commands_config.py
@@ -22,7 +22,7 @@ DEVELOPER_COMMANDS: dict[str, str | list[str]] = {
         "start-airflow",
         "static-checks",
         "build-docs",
-        "stop",
+        "down",
         "shell",
         "exec",
         "compile-www-assets",
@@ -65,6 +65,7 @@ DEVELOPER_PARAMETERS: dict[str, list[dict[str, str | list[str]]]] = {
         {
             "name": "Advanced flag for running",
             "options": [
+                "--install-selected-providers",
                 "--use-airflow-version",
                 "--airflow-constraints-reference",
                 "--platform",
@@ -123,15 +124,18 @@ DEVELOPER_PARAMETERS: dict[str, list[dict[str, str | list[str]]]] = {
                 "--force-build",
                 "--image-tag",
                 "--mount-sources",
+                "--executor",
+                "--celery-broker",
+                "--celery-flower",
             ],
         },
     ],
     "breeze exec": [
         {"name": "Drops in the interactive shell of active airflow container"},
     ],
-    "breeze stop": [
+    "breeze down": [
         {
-            "name": "Stop flags",
+            "name": "Down flags",
             "options": [
                 "--preserve-volumes",
                 "--cleanup-mypy-cache",
@@ -157,12 +161,20 @@ DEVELOPER_PARAMETERS: dict[str, list[dict[str, str | list[str]]]] = {
             "name": "Pre-commit flags",
             "options": [
                 "--type",
+                "--show-diff-on-failure",
+                "--initialize-environment",
+                "--max-initialization-attempts",
+                "--github-repository",
+            ],
+        },
+        {
+            "name": "Selecting files to run the checks on",
+            "options": [
                 "--file",
                 "--all-files",
-                "--show-diff-on-failure",
-                "--last-commit",
                 "--commit-ref",
-                "--github-repository",
+                "--last-commit",
+                "--only-my-changes",
             ],
         },
     ],
diff --git a/dev/breeze/src/airflow_breeze/commands/kubernetes_commands.py b/dev/breeze/src/airflow_breeze/commands/kubernetes_commands.py
index d96cb3e20d..fae38c0a53 100644
--- a/dev/breeze/src/airflow_breeze/commands/kubernetes_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/kubernetes_commands.py
@@ -186,8 +186,8 @@ option_upgrade = click.option(
 option_parallelism_cluster = click.option(
     "--parallelism",
     help="Maximum number of processes to use while running the operation in parallel for cluster operations.",
-    type=click.IntRange(1, max(1, mp.cpu_count() // 4) if not generating_command_images() else 4),
-    default=max(1, mp.cpu_count() // 4) if not generating_command_images() else 2,
+    type=click.IntRange(1, max(1, (mp.cpu_count() + 1) // 3) if not generating_command_images() else 4),
+    default=max(1, (mp.cpu_count() + 1) // 3) if not generating_command_images() else 2,
     envvar="PARALLELISM",
     show_default=True,
 )
@@ -949,7 +949,8 @@ def _deploy_helm_chart(
     extra_options: tuple[str, ...] | None = None,
 ) -> RunCommandResult:
     cluster_name = get_kubectl_cluster_name(python=python, kubernetes_version=kubernetes_version)
-    get_console(output=output).print(f"[info]Deploying {cluster_name} with airflow Helm Chart.")
+    action = "Deploying" if not upgrade else "Upgrading"
+    get_console(output=output).print(f"[info]{action} {cluster_name} with airflow Helm Chart.")
     with tempfile.TemporaryDirectory(prefix="chart_") as tmp_dir:
         tmp_chart_path = Path(tmp_dir).resolve() / "chart"
         shutil.copytree(CHART_PATH, os.fspath(tmp_chart_path), ignore_dangling_symlinks=True)
diff --git a/dev/breeze/src/airflow_breeze/commands/main_command.py b/dev/breeze/src/airflow_breeze/commands/main_command.py
index 7acbd31ee4..f4e4185b9c 100644
--- a/dev/breeze/src/airflow_breeze/commands/main_command.py
+++ b/dev/breeze/src/airflow_breeze/commands/main_command.py
@@ -61,9 +61,13 @@ def print_deprecated(deprecated_command: str, command_to_use: str):
 
 class MainGroupWithAliases(BreezeGroup):
     def get_command(self, ctx: Context, cmd_name: str):
-        # Aliases for important commands moved to sub-commands
+        # Aliases for important commands moved to sub-commands or deprecated commands
         from airflow_breeze.commands.setup_commands import setup
 
+        if cmd_name == "stop":
+            print_deprecated("stop", "down")
+            cmd_name = "down"
+
         rv = click.Group.get_command(self, ctx, cmd_name)
         if rv is not None:
             return rv
diff --git a/dev/breeze/src/airflow_breeze/commands/minor_release_command.py b/dev/breeze/src/airflow_breeze/commands/minor_release_command.py
index 76ff59c34c..3df2936257 100644
--- a/dev/breeze/src/airflow_breeze/commands/minor_release_command.py
+++ b/dev/breeze/src/airflow_breeze/commands/minor_release_command.py
@@ -173,7 +173,7 @@ def create_minor_version_branch(version_branch):
     create_branch(version_branch)
     # Build ci image
     if confirm_action("Build latest breeze image?"):
-        run_command(["breeze", "ci-image", "build", "--python", "3.7"], dry_run_override=DRY_RUN, check=True)
+        run_command(["breeze", "ci-image", "build", "--python", "3.8"], dry_run_override=DRY_RUN, check=True)
     # Update default branches
     update_default_branch(version_branch)
     # Commit changes
diff --git a/dev/breeze/src/airflow_breeze/commands/production_image_commands.py b/dev/breeze/src/airflow_breeze/commands/production_image_commands.py
index ba644702c0..cb2d3d419b 100644
--- a/dev/breeze/src/airflow_breeze/commands/production_image_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/production_image_commands.py
@@ -49,7 +49,6 @@ from airflow_breeze.utils.common_options import (
     option_empty_image,
     option_github_repository,
     option_github_token,
-    option_github_username,
     option_image_name,
     option_image_tag_for_building,
     option_image_tag_for_pulling,
@@ -132,16 +131,15 @@ def run_build_in_parallel(
     )
 
 
-def start_building(prod_image_params: BuildProdParams):
+def prepare_for_building_prod_image(prod_image_params: BuildProdParams):
     make_sure_builder_configured(params=prod_image_params)
     if prod_image_params.cleanup_context:
         clean_docker_context_files()
     check_docker_context_files(prod_image_params.install_packages_from_context)
-    if prod_image_params.prepare_buildx_cache or prod_image_params.push:
-        login_to_github_docker_registry(
-            image_params=prod_image_params,
-            output=None,
-        )
+    login_to_github_docker_registry(
+        github_token=prod_image_params.github_token,
+        output=None,
+    )
 
 
 @click.group(
@@ -163,7 +161,6 @@ def prod_image():
 @option_upgrade_on_failure
 @option_platform_multiple
 @option_github_token
-@option_github_username
 @option_docker_cache
 @option_image_tag_for_building
 @option_prepare_buildx_cache
@@ -259,7 +256,7 @@ def build(
             params = BuildProdParams(**parameters_passed)
             params.python = python
             params_list.append(params)
-        start_building(prod_image_params=params_list[0])
+        prepare_for_building_prod_image(prod_image_params=params_list[0])
         run_build_in_parallel(
             image_params_list=params_list,
             python_version_list=python_version_list,
@@ -270,7 +267,7 @@ def build(
         )
     else:
         params = BuildProdParams(**parameters_passed)
-        start_building(prod_image_params=params)
+        prepare_for_building_prod_image(prod_image_params=params)
         run_build(prod_image_params=params)
 
 
@@ -310,6 +307,10 @@ def pull_prod_image(
     """Pull and optionally verify Production images - possibly in parallel for all Python versions."""
     perform_environment_checks()
     check_remote_ghcr_io_commands()
+    login_to_github_docker_registry(
+        github_token=github_token,
+        output=None,
+    )
     if run_in_parallel:
         python_version_list = get_python_version_list(python_versions)
         prod_image_params_list = [
@@ -342,7 +343,7 @@ def pull_prod_image(
             output=None,
             wait_for_image=wait_for_image,
             tag_as_latest=tag_as_latest,
-            poll_time=10.0,
+            poll_time_seconds=10.0,
         )
         if return_code != 0:
             get_console().print(f"[error]There was an error when pulling PROD image: {info}[/]")
@@ -366,6 +367,7 @@ def pull_prod_image(
     is_flag=True,
 )
 @option_github_repository
+@option_github_token
 @option_verbose
 @option_dry_run
 @click.argument("extra_pytest_args", nargs=-1, type=click.UNPROCESSED)
@@ -376,13 +378,21 @@ def verify(
     image_tag: str | None,
     pull: bool,
     slim_image: bool,
+    github_token: str,
     extra_pytest_args: tuple,
 ):
     """Verify Production image."""
     perform_environment_checks()
+    login_to_github_docker_registry(
+        github_token=github_token,
+        output=None,
+    )
     if image_name is None:
         build_params = BuildProdParams(
-            python=python, image_tag=image_tag, github_repository=github_repository
+            python=python,
+            image_tag=image_tag,
+            github_repository=github_repository,
+            github_token=github_token,
         )
         image_name = build_params.airflow_image_name_with_tag
     if pull:
diff --git a/dev/breeze/src/airflow_breeze/commands/production_image_commands_config.py b/dev/breeze/src/airflow_breeze/commands/production_image_commands_config.py
index 27b7142659..42c58c6e84 100644
--- a/dev/breeze/src/airflow_breeze/commands/production_image_commands_config.py
+++ b/dev/breeze/src/airflow_breeze/commands/production_image_commands_config.py
@@ -36,7 +36,6 @@ PRODUCTION_IMAGE_TOOLS_PARAMETERS: dict[str, list[dict[str, str | list[str]]]] =
                 "--image-tag",
                 "--tag-as-latest",
                 "--docker-cache",
-                "--github-repository",
             ],
         },
         {
@@ -91,14 +90,19 @@ PRODUCTION_IMAGE_TOOLS_PARAMETERS: dict[str, list[dict[str, str | list[str]]]] =
         {
             "name": "Preparing cache and push (for maintainers and CI)",
             "options": [
-                "--github-token",
-                "--github-username",
                 "--platform",
                 "--push",
                 "--empty-image",
                 "--prepare-buildx-cache",
             ],
         },
+        {
+            "name": "Github authentication",
+            "options": [
+                "--github-repository",
+                "--github-token",
+            ],
+        },
     ],
     "breeze prod-image pull": [
         {
@@ -106,11 +110,9 @@ PRODUCTION_IMAGE_TOOLS_PARAMETERS: dict[str, list[dict[str, str | list[str]]]] =
             "options": [
                 "--image-tag",
                 "--python",
-                "--github-token",
                 "--verify",
                 "--wait-for-image",
                 "--tag-as-latest",
-                "--github-repository",
             ],
         },
         {
@@ -124,6 +126,13 @@ PRODUCTION_IMAGE_TOOLS_PARAMETERS: dict[str, list[dict[str, str | list[str]]]] =
                 "--include-success-outputs",
             ],
         },
+        {
+            "name": "Github authentication",
+            "options": [
+                "--github-repository",
+                "--github-token",
+            ],
+        },
     ],
     "breeze prod-image verify": [
         {
@@ -134,8 +143,14 @@ PRODUCTION_IMAGE_TOOLS_PARAMETERS: dict[str, list[dict[str, str | list[str]]]] =
                 "--slim-image",
                 "--image-tag",
                 "--pull",
+            ],
+        },
+        {
+            "name": "Github authentication",
+            "options": [
                 "--github-repository",
+                "--github-token",
             ],
-        }
+        },
     ],
 }
diff --git a/dev/breeze/src/airflow_breeze/commands/release_candidate_command.py b/dev/breeze/src/airflow_breeze/commands/release_candidate_command.py
index c05b067eef..5c954583d5 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_candidate_command.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_candidate_command.py
@@ -164,9 +164,11 @@ def push_artifacts_to_asf_repo(version, repo_root):
             check=True,
         )
         console_print("Files pushed to svn")
-        # Remove old releases
-        remove_old_releases(version, repo_root)
-        os.chdir(repo_root)
+
+
+def delete_asf_repo(repo_root):
+    os.chdir(repo_root)
+    if confirm_action("Do you want to remove the cloned asf repo?"):
         run_command(["rm", "-rf", "asf-dist"], dry_run_override=DRY_RUN, check=True)
 
 
@@ -269,7 +271,7 @@ def remove_old_releases(version, repo_root):
     if not confirm_action("Do you want to look for old RCs to remove?"):
         return
 
-    os.chdir("asf-dist/dev/airflow")
+    os.chdir(f"{repo_root}/asf-dist/dev/airflow")
 
     old_releases = []
     for entry in os.scandir():
@@ -345,7 +347,7 @@ def publish_release_candidate(version, previous_version, github_token):
     git_clean()
     # Build the latest image
     if confirm_action("Build latest breeze image?"):
-        run_command(["breeze", "ci-image", "build", "--python", "3.7"], dry_run_override=DRY_RUN, check=True)
+        run_command(["breeze", "ci-image", "build", "--python", "3.8"], dry_run_override=DRY_RUN, check=True)
     # Create the tarball
     tarball_release(version, version_without_rc)
     # Create the artifacts
@@ -363,6 +365,13 @@ def publish_release_candidate(version, previous_version, github_token):
     move_artifacts_to_svn(version, airflow_repo_root)
     # Push the artifacts to the asf repo
     push_artifacts_to_asf_repo(version, airflow_repo_root)
+
+    # Remove old releases
+    remove_old_releases(version, airflow_repo_root)
+
+    # Delete asf-dist directory
+    delete_asf_repo(airflow_repo_root)
+
     # Prepare the pypi packages
     prepare_pypi_packages(version, version_suffix, airflow_repo_root)
     # Push the packages to test pypi
diff --git a/dev/breeze/src/airflow_breeze/commands/release_command.py b/dev/breeze/src/airflow_breeze/commands/release_command.py
index 3ae21abb9e..3143d2bebb 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_command.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_command.py
@@ -151,7 +151,7 @@ def retag_constraints(release_candidate, version):
             dry_run_override=DRY_RUN,
             check=True,
         )
-    if confirm_action("Push latest constraints tag to GitHub?"):
+    if confirm_action(f"Push contraints-{version} tag to GitHub?"):
         run_command(
             ["git", "push", "origin", "tag", f"constraints-{version}"], dry_run_override=DRY_RUN, check=True
         )
@@ -264,6 +264,10 @@ def airflow_release(release_candidate, previous_release):
     # Commit the release to svn
     commit_release(version, release_candidate, svn_release_version_dir)
 
+    confirm_action(
+        "Verify that the artifacts appear in https://dist.apache.org/repos/dist/release/airflow/", abort=True
+    )
+
     # Remove old release
     if os.path.exists(svn_release_version_dir):
         os.chdir("..")
diff --git a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
index 46ec131831..c9bf21589e 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
@@ -16,7 +16,6 @@
 # under the License.
 from __future__ import annotations
 
-import json
 import os
 import re
 import shlex
@@ -26,8 +25,8 @@ import time
 from copy import deepcopy
 from datetime import datetime
 from pathlib import Path
-from re import match
-from typing import IO, NamedTuple
+from re import Pattern, match
+from typing import IO, Generator, NamedTuple
 
 import click
 from rich.progress import Progress
@@ -59,6 +58,8 @@ from airflow_breeze.utils.common_options import (
     option_dry_run,
     option_github_repository,
     option_image_tag_for_running,
+    option_include_success_outputs,
+    option_install_selected_providers,
     option_installation_package_format,
     option_package_format,
     option_parallelism,
@@ -66,6 +67,7 @@ from airflow_breeze.utils.common_options import (
     option_python_versions,
     option_run_in_parallel,
     option_skip_cleanup,
+    option_skip_constraints,
     option_use_airflow_version,
     option_use_packages_from_dist,
     option_verbose,
@@ -86,7 +88,8 @@ from airflow_breeze.utils.parallel import (
     check_async_run_results,
     run_with_pool,
 )
-from airflow_breeze.utils.path_utils import AIRFLOW_SOURCES_ROOT, cleanup_python_generated_files
+from airflow_breeze.utils.path_utils import AIRFLOW_SOURCES_ROOT, DIST_DIR, cleanup_python_generated_files
+from airflow_breeze.utils.provider_dependencies import DEPENDENCIES, get_related_providers
 from airflow_breeze.utils.python_versions import get_python_version_list
 from airflow_breeze.utils.run_utils import (
     RunCommandResult,
@@ -217,8 +220,14 @@ def prepare_airflow_packages(
     "--base-branch",
     type=str,
     default="main",
+    help="Base branch to use as diff for documentation generation (used for releasing from old branch)",
 )
 @option_github_repository
+@click.option(
+    "--only-min-version-update",
+    is_flag=True,
+    help="Only update minimum version in __init__.py files and regenerate corresponding documentation",
+)
 @option_verbose
 @option_dry_run
 @option_answer
@@ -227,6 +236,7 @@ def prepare_provider_documentation(
     base_branch: str,
     debug: bool,
     packages: list[str],
+    only_min_version_update: bool,
 ):
     perform_environment_checks()
     check_remote_ghcr_io_commands()
@@ -236,6 +246,7 @@ def prepare_provider_documentation(
         github_repository=github_repository,
         python=DEFAULT_PYTHON_MAJOR_MINOR_VERSION,
         base_branch=base_branch,
+        only_min_version_update=only_min_version_update,
         skip_environment_initialization=True,
     )
     rebuild_or_pull_ci_image_if_needed(command_params=shell_params)
@@ -474,6 +485,198 @@ def generate_constraints(
             sys.exit(return_code)
 
 
+SDIST_FILENAME_PREFIX = "apache-airflow-providers-"
+WHEEL_FILENAME_PREFIX = "apache_airflow_providers-"
+
+SDIST_FILENAME_PATTERN = re.compile(rf"{SDIST_FILENAME_PREFIX}(.*)-[0-9].*\.tar\.gz")
+WHEEL_FILENAME_PATTERN = re.compile(rf"{WHEEL_FILENAME_PREFIX}(.*)-[0-9].*\.whl")
+
+
+def _get_all_providers_in_dist(
+    filename_prefix: str, filename_pattern: Pattern[str]
+) -> Generator[str, None, None]:
+    for file in DIST_DIR.glob(f"{filename_prefix}*.tar.gz"):
+        matched = filename_pattern.match(file.name)
+        if not matched:
+            raise Exception(f"Cannot parse provider package name from {file.name}")
+        provider_package_id = matched.group(1).replace("-", ".")
+        yield provider_package_id
+
+
+def get_all_providers_in_dist(package_format: str, install_selected_providers: str) -> list[str]:
+    """
+    Returns all providers in dist, optionally filtered by install_selected_providers.
+
+    :param package_format: package format to look for
+    :param install_selected_providers: list of providers to filter by
+    """
+    if package_format == "sdist":
+        all_found_providers = list(
+            _get_all_providers_in_dist(
+                filename_prefix=SDIST_FILENAME_PREFIX, filename_pattern=SDIST_FILENAME_PATTERN
+            )
+        )
+    elif package_format == "wheel":
+        all_found_providers = list(
+            _get_all_providers_in_dist(
+                filename_prefix=WHEEL_FILENAME_PREFIX, filename_pattern=WHEEL_FILENAME_PATTERN
+            )
+        )
+    else:
+        raise Exception(f"Unknown package format {package_format}")
+    if install_selected_providers:
+        filter_list = install_selected_providers.split(",")
+        return [provider for provider in all_found_providers if provider in filter_list]
+    return all_found_providers
+
+
+def _run_command_for_providers(
+    shell_params: ShellParams,
+    cmd_to_run: list[str],
+    list_of_providers: list[str],
+    output: Output | None,
+) -> tuple[int, str]:
+    shell_params.install_selected_providers = " ".join(list_of_providers)
+    result_command = run_docker_command_with_debug(
+        params=shell_params,
+        command=cmd_to_run,
+        debug=False,
+        output=output,
+    )
+    return result_command.returncode, f"{list_of_providers}"
+
+
+SDIST_INSTALL_PROGRESS_REGEXP = r"Processing .*|Requirement already satisfied:.*|  Created wheel.*"
+
+
+@release_management.command(
+    name="install-provider-packages",
+    help="Installs provider packages that can be found in dist.",
+)
+@option_use_airflow_version
+@option_airflow_extras
+@option_airflow_constraints_reference
+@option_skip_constraints
+@option_install_selected_providers
+@option_installation_package_format
+@option_debug_release_management
+@option_github_repository
+@option_verbose
+@option_dry_run
+@option_run_in_parallel
+@option_skip_cleanup
+@option_parallelism
+@option_debug_resources
+@option_include_success_outputs
+def install_provider_packages(
+    use_airflow_version: str | None,
+    airflow_constraints_reference: str,
+    skip_constraints: bool,
+    install_selected_providers: str,
+    airflow_extras: str,
+    debug: bool,
+    package_format: str,
+    github_repository: str,
+    run_in_parallel: bool,
+    skip_cleanup: bool,
+    parallelism: int,
+    debug_resources: bool,
+    include_success_outputs: bool,
+):
+    perform_environment_checks()
+    cleanup_python_generated_files()
+    shell_params = ShellParams(
+        mount_sources=MOUNT_SELECTED,
+        github_repository=github_repository,
+        python=DEFAULT_PYTHON_MAJOR_MINOR_VERSION,
+        use_airflow_version=use_airflow_version,
+        airflow_extras=airflow_extras,
+        airflow_constraints_reference=airflow_constraints_reference,
+        install_selected_providers=install_selected_providers,
+        use_packages_from_dist=True,
+        skip_constraints=skip_constraints,
+        package_format=package_format,
+    )
+    rebuild_or_pull_ci_image_if_needed(command_params=shell_params)
+    # We just want to install the providers by entrypoint, we do not need to run any command in the container
+    cmd_to_run = [
+        "-c",
+        "exit 0",
+    ]
+    if run_in_parallel:
+        list_of_all_providers = get_all_providers_in_dist(
+            package_format=package_format, install_selected_providers=install_selected_providers
+        )
+        get_console().print(
+            f"[info]Splitting {len(list_of_all_providers)} providers into max {parallelism} chunks"
+        )
+        provider_chunks = [sorted(list_of_all_providers[i::parallelism]) for i in range(parallelism)]
+        # filter out empty ones
+        provider_chunks = [chunk for chunk in provider_chunks if chunk]
+        if not provider_chunks:
+            get_console().print("[info]No providers to install")
+            return
+        total_num_providers = 0
+        for index, chunk in enumerate(provider_chunks):
+            get_console().print(f"Chunk {index}: {chunk} ({len(chunk)} providers)")
+            total_num_providers += len(chunk)
+        # For every chunk make sure that all direct dependencies are installed as well
+        # because there might be new version of the downstream dependency that is not
+        # yet released in PyPI, so we need to make sure it is installed from dist
+        for chunk in provider_chunks:
+            for provider in chunk.copy():
+                downstream_dependencies = get_related_providers(
+                    provider, upstream_dependencies=False, downstream_dependencies=True
+                )
+                for dependency in downstream_dependencies:
+                    if dependency not in chunk:
+                        chunk.append(dependency)
+        if len(list_of_all_providers) != total_num_providers:
+            raise Exception(
+                f"Total providers {total_num_providers} is different "
+                f"than {len(list_of_all_providers)} (just to be sure"
+                f" no rounding errors crippled in)"
+            )
+        parallelism = min(parallelism, len(provider_chunks))
+        with ci_group(f"Installing providers in {parallelism} chunks"):
+            all_params = [f"Chunk {n}" for n in range(parallelism)]
+            with run_with_pool(
+                parallelism=parallelism,
+                all_params=all_params,
+                debug_resources=debug_resources,
+                progress_matcher=GenericRegexpProgressMatcher(
+                    regexp=SDIST_INSTALL_PROGRESS_REGEXP, lines_to_search=10
+                ),
+            ) as (pool, outputs):
+                results = [
+                    pool.apply_async(
+                        _run_command_for_providers,
+                        kwds={
+                            "shell_params": shell_params,
+                            "cmd_to_run": cmd_to_run,
+                            "list_of_providers": list_of_providers,
+                            "output": outputs[index],
+                        },
+                    )
+                    for index, list_of_providers in enumerate(provider_chunks)
+                ]
+        check_async_run_results(
+            results=results,
+            success="All packages installed successfully",
+            outputs=outputs,
+            include_success_outputs=include_success_outputs,
+            skip_cleanup=skip_cleanup,
+        )
+    else:
+        result_command = run_docker_command_with_debug(
+            params=shell_params,
+            command=cmd_to_run,
+            debug=debug,
+            output_outside_the_group=True,
+        )
+        sys.exit(result_command.returncode)
+
+
 @release_management.command(
     name="verify-provider-packages",
     help="Verifies if all provider code is following expectations for providers.",
@@ -481,12 +684,8 @@ def generate_constraints(
 @option_use_airflow_version
 @option_airflow_extras
 @option_airflow_constraints_reference
-@click.option(
-    "--skip-constraints",
-    is_flag=True,
-    help="Do not use constraints when installing providers.",
-    envvar="SKIP_CONSTRAINTS",
-)
+@option_skip_constraints
+@option_install_selected_providers
 @option_use_packages_from_dist
 @option_installation_package_format
 @option_debug_release_management
@@ -497,12 +696,16 @@ def verify_provider_packages(
     use_airflow_version: str | None,
     airflow_constraints_reference: str,
     skip_constraints: bool,
+    install_selected_providers: str,
     airflow_extras: str,
     use_packages_from_dist: bool,
     debug: bool,
     package_format: str,
     github_repository: str,
 ):
+    if install_selected_providers and not use_packages_from_dist:
+        get_console().print("Forcing use_packages_from_dist as installing selected_providers is set")
+        use_packages_from_dist = True
     perform_environment_checks()
     cleanup_python_generated_files()
     shell_params = ShellParams(
@@ -810,11 +1013,8 @@ def generate_issue_content_providers(
         version: str
         pr_list: list[PullRequest.PullRequest | Issue.Issue]
 
-    provider_dependencies: dict[str, dict[str, list[str]]] = json.loads(
-        (AIRFLOW_SOURCES_ROOT / "generated" / "provider_dependencies.json").read_text()
-    )
     if not packages:
-        packages = list(provider_dependencies.keys())
+        packages = list(DEPENDENCIES.keys())
     with ci_group("Generates GitHub issue content with people who can test it"):
         if excluded_pr_list:
             excluded_prs = [int(pr) for pr in excluded_pr_list.split(",")]
diff --git a/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py b/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py
index 511604f400..a5076365e9 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py
@@ -45,6 +45,7 @@ RELEASE_MANAGEMENT_PARAMETERS: dict[str, list[dict[str, str | list[str]]]] = {
             "name": "Provider verification flags",
             "options": [
                 "--use-airflow-version",
+                "--install-selected-providers",
                 "--airflow-constraints-reference",
                 "--airflow-extras",
                 "--use-packages-from-dist",
@@ -53,7 +54,32 @@ RELEASE_MANAGEMENT_PARAMETERS: dict[str, list[dict[str, str | list[str]]]] = {
                 "--debug",
                 "--github-repository",
             ],
-        }
+        },
+    ],
+    "breeze release-management install-provider-packages": [
+        {
+            "name": "Provider installation flags",
+            "options": [
+                "--use-airflow-version",
+                "--install-selected-providers",
+                "--airflow-constraints-reference",
+                "--airflow-extras",
+                "--package-format",
+                "--skip-constraints",
+                "--debug",
+                "--github-repository",
+            ],
+        },
+        {
+            "name": "Parallel running",
+            "options": [
+                "--run-in-parallel",
+                "--parallelism",
+                "--skip-cleanup",
+                "--include-success-outputs",
+                "--debug-resources",
+            ],
+        },
     ],
     "breeze release-management prepare-provider-packages": [
         {
@@ -74,6 +100,7 @@ RELEASE_MANAGEMENT_PARAMETERS: dict[str, list[dict[str, str | list[str]]]] = {
                 "--debug",
                 "--github-repository",
                 "--base-branch",
+                "--only-min-version-update",
             ],
         }
     ],
diff --git a/dev/breeze/src/airflow_breeze/commands/testing_commands.py b/dev/breeze/src/airflow_breeze/commands/testing_commands.py
index 5107f345a0..6dd0bd3cf2 100644
--- a/dev/breeze/src/airflow_breeze/commands/testing_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/testing_commands.py
@@ -90,6 +90,20 @@ def group_for_testing():
 @option_python
 @option_image_tag_for_running
 @option_image_name
+@click.option(
+    "--skip-docker-compose-deletion",
+    help="Skip deletion of docker-compose instance after the test",
+    envvar="SKIP_DOCKER_COMPOSE_DELETION",
+    is_flag=True,
+)
+@click.option(
+    "--wait-for-containers-timeout",
+    help="Timeout in seconds to wait for all containers to start",
+    envvar="WAIT_FOR_CONTAINERS_TIMEOUT",
+    show_default=True,
+    type=IntRange(0, 600),
+    default=300,
+)
 @option_github_repository
 @option_verbose
 @option_dry_run
@@ -98,10 +112,13 @@ def docker_compose_tests(
     python: str,
     image_name: str,
     image_tag: str | None,
+    skip_docker_compose_deletion: bool,
+    wait_for_containers_timeout: int,
     github_repository: str,
     extra_pytest_args: tuple,
 ):
     """Run docker-compose tests."""
+    perform_environment_checks()
     if image_name is None:
         build_params = BuildProdParams(
             python=python, image_tag=image_tag, github_repository=github_repository
@@ -111,6 +128,8 @@ def docker_compose_tests(
     return_code, info = run_docker_compose_tests(
         image_name=image_name,
         extra_pytest_args=extra_pytest_args,
+        skip_docker_compose_deletion=skip_docker_compose_deletion,
+        wait_for_containers_timeout=wait_for_containers_timeout,
     )
     sys.exit(return_code)
 
@@ -126,6 +145,7 @@ def _run_test(
     output: Output | None,
     test_timeout: int,
     output_outside_the_group: bool = False,
+    skip_docker_compose_down: bool = False,
 ) -> tuple[int, str]:
     env_variables = get_env_variables_for_docker_commands(exec_shell_params)
     env_variables["RUN_TESTS"] = "true"
@@ -190,22 +210,23 @@ def _run_test(
                 with open(dump_path, "w") as outfile:
                     run_command(["docker", "logs", container_id], check=False, stdout=outfile)
     finally:
-        run_command(
-            [
-                *DOCKER_COMPOSE_COMMAND,
-                "--project-name",
-                f"airflow-test-{project_name}",
-                "rm",
-                "--stop",
-                "--force",
-                "-v",
-            ],
-            env=env_variables,
-            output=output,
-            check=False,
-            verbose_override=False,
-        )
-        remove_docker_networks(networks=[f"airflow-test-{project_name}_default"])
+        if not skip_docker_compose_down:
+            run_command(
+                [
+                    *DOCKER_COMPOSE_COMMAND,
+                    "--project-name",
+                    f"airflow-test-{project_name}",
+                    "rm",
+                    "--stop",
+                    "--force",
+                    "-v",
+                ],
+                env=env_variables,
+                output=output,
+                check=False,
+                verbose_override=False,
+            )
+            remove_docker_networks(networks=[f"airflow-test-{project_name}_default"])
     return result.returncode, f"Test: {exec_shell_params.test_type}"
 
 
@@ -219,6 +240,7 @@ def _run_tests_in_pool(
     include_success_outputs: bool,
     debug_resources: bool,
     skip_cleanup: bool,
+    skip_docker_compose_down: bool,
 ):
     escaped_tests = [test.replace("[", "\\[") for test in tests_to_run]
     with ci_group(f"Testing {' '.join(escaped_tests)}"):
@@ -242,6 +264,7 @@ def _run_tests_in_pool(
                         "db_reset": db_reset,
                         "output": outputs[index],
                         "test_timeout": test_timeout,
+                        "skip_docker_compose_down": skip_docker_compose_down,
                     },
                 )
                 for index, test_type in enumerate(tests_to_run)
@@ -268,6 +291,7 @@ def run_tests_in_parallel(
     debug_resources: bool,
     parallelism: int,
     skip_cleanup: bool,
+    skio_docker_compose_down: bool,
 ) -> None:
     _run_tests_in_pool(
         tests_to_run=parallel_test_types_list,
@@ -279,6 +303,7 @@ def run_tests_in_parallel(
         include_success_outputs=include_success_outputs,
         debug_resources=debug_resources,
         skip_cleanup=skip_cleanup,
+        skip_docker_compose_down=skio_docker_compose_down,
     )
 
 
@@ -344,8 +369,15 @@ def run_tests_in_parallel(
     is_flag=True,
     envvar="REMOVE_ARM_PACKAGES",
 )
+@click.option(
+    "--skip-docker-compose-down",
+    help="Skips running docker-compose down after tests",
+    is_flag=True,
+    envvar="SKIP_DOCKER_COMPOSE_DOWN",
+)
 @option_verbose
 @option_dry_run
+@option_github_repository
 @click.argument("extra_pytest_args", nargs=-1, type=click.UNPROCESSED)
 def command_for_tests(
     python: str,
@@ -369,6 +401,8 @@ def command_for_tests(
     upgrade_boto: bool,
     collect_only: bool,
     remove_arm_packages: bool,
+    github_repository: str,
+    skip_docker_compose_down: bool,
 ):
     docker_filesystem = get_filesystem_type("/var/lib/docker")
     get_console().print(f"Docker filesystem: {docker_filesystem}")
@@ -386,6 +420,7 @@ def command_for_tests(
         upgrade_boto=upgrade_boto,
         collect_only=collect_only,
         remove_arm_packages=remove_arm_packages,
+        github_repository=github_repository,
     )
     rebuild_or_pull_ci_image_if_needed(command_params=exec_shell_params)
     cleanup_python_generated_files()
@@ -402,6 +437,7 @@ def command_for_tests(
             parallelism=parallelism,
             skip_cleanup=skip_cleanup,
             debug_resources=debug_resources,
+            skio_docker_compose_down=skip_docker_compose_down,
         )
     else:
         returncode, _ = _run_test(
@@ -410,6 +446,7 @@ def command_for_tests(
             db_reset=db_reset,
             output=None,
             test_timeout=test_timeout,
+            skip_docker_compose_down=skip_docker_compose_down,
         )
         sys.exit(returncode)
 
@@ -430,6 +467,7 @@ def command_for_tests(
 @option_image_tag_for_running
 @option_mount_sources
 @option_integration
+@option_github_repository
 @click.option(
     "--test-timeout",
     help="Test timeout. Set the pytest setup, execution and teardown timeouts to this value",
@@ -454,6 +492,7 @@ def integration_tests(
     mysql_version: str,
     mssql_version: str,
     integration: tuple,
+    github_repository: str,
     test_timeout: int,
     skip_provider_tests: bool,
     db_reset: bool,
@@ -475,6 +514,7 @@ def integration_tests(
         forward_ports=False,
         test_type="Integration",
         skip_provider_tests=skip_provider_tests,
+        github_repository=github_repository,
     )
     cleanup_python_generated_files()
     perform_environment_checks()
diff --git a/dev/breeze/src/airflow_breeze/commands/testing_commands_config.py b/dev/breeze/src/airflow_breeze/commands/testing_commands_config.py
index 793175e5f2..14aef46f6d 100644
--- a/dev/breeze/src/airflow_breeze/commands/testing_commands_config.py
+++ b/dev/breeze/src/airflow_breeze/commands/testing_commands_config.py
@@ -35,6 +35,7 @@ TESTING_PARAMETERS: dict[str, list[dict[str, str | list[str]]]] = {
                 "--mysql-version",
                 "--mssql-version",
                 "--integration",
+                "--github-repository",
             ],
         },
         {
@@ -55,6 +56,7 @@ TESTING_PARAMETERS: dict[str, list[dict[str, str | list[str]]]] = {
                 "--mount-sources",
                 "--upgrade-boto",
                 "--remove-arm-packages",
+                "--skip-docker-compose-down",
             ],
         },
     ],
@@ -70,6 +72,7 @@ TESTING_PARAMETERS: dict[str, list[dict[str, str | list[str]]]] = {
                 "--postgres-version",
                 "--mysql-version",
                 "--mssql-version",
+                "--github-repository",
             ],
         },
         {
@@ -99,6 +102,8 @@ TESTING_PARAMETERS: dict[str, list[dict[str, str | list[str]]]] = {
                 "--image-name",
                 "--image-tag",
                 "--python",
+                "--skip-docker-compose-deletion",
+                "--wait-for-containers-timeout",
                 "--github-repository",
             ],
         }
diff --git a/dev/breeze/src/airflow_breeze/global_constants.py b/dev/breeze/src/airflow_breeze/global_constants.py
index 1f462f5ee8..6ec3add5ba 100644
--- a/dev/breeze/src/airflow_breeze/global_constants.py
+++ b/dev/breeze/src/airflow_breeze/global_constants.py
@@ -26,10 +26,11 @@ from functools import lru_cache
 from pathlib import Path
 
 from airflow_breeze.utils.host_info_utils import Architecture
-from airflow_breeze.utils.path_utils import AIRFLOW_SOURCES_ROOT
+from airflow_breeze.utils.path_utils import AIRFLOW_SOURCES_ROOT, DEPENDENCIES_JSON_FILE_PATH
 
-RUNS_ON_PUBLIC_RUNNER = "ubuntu-20.04"
+RUNS_ON_PUBLIC_RUNNER = "ubuntu-22.04"
 RUNS_ON_SELF_HOSTED_RUNNER = "self-hosted"
+SELF_HOSTED_RUNNERS_CPU_COUNT = 8
 
 ANSWER = ""
 
@@ -42,14 +43,7 @@ ALLOWED_ARCHITECTURES = [Architecture.X86_64, Architecture.ARM]
 ALLOWED_BACKENDS = ["sqlite", "mysql", "postgres", "mssql"]
 ALLOWED_PROD_BACKENDS = ["mysql", "postgres", "mssql"]
 DEFAULT_BACKEND = ALLOWED_BACKENDS[0]
-TESTABLE_INTEGRATIONS = [
-    "cassandra",
-    "celery",
-    "kerberos",
-    "mongo",
-    "pinot",
-    "trino",
-]
+TESTABLE_INTEGRATIONS = ["cassandra", "celery", "kerberos", "mongo", "pinot", "trino", "kafka"]
 OTHER_INTEGRATIONS = ["statsd"]
 ALL_INTEGRATIONS = sorted(
     [
@@ -72,12 +66,17 @@ AUTOCOMPLETE_INTEGRATIONS = sorted(
 #   - https://endoflife.date/amazon-eks
 #   - https://endoflife.date/azure-kubernetes-service
 #   - https://endoflife.date/google-kubernetes-engine
-ALLOWED_KUBERNETES_VERSIONS = ["v1.23.13", "v1.24.7", "v1.25.3", "v1.26.0"]
+ALLOWED_KUBERNETES_VERSIONS = ["v1.23.17", "v1.24.13", "v1.25.9", "v1.26.4", "v1.27.1"]
 ALLOWED_EXECUTORS = ["KubernetesExecutor", "CeleryExecutor", "LocalExecutor", "CeleryKubernetesExecutor"]
+START_AIRFLOW_ALLOWED_EXECUTORS = ["CeleryExecutor", "LocalExecutor"]
+START_AIRFLOW_DEFAULT_ALLOWED_EXECUTORS = START_AIRFLOW_ALLOWED_EXECUTORS[1]
 ALLOWED_KIND_OPERATIONS = ["start", "stop", "restart", "status", "deploy", "test", "shell", "k9s"]
 ALLOWED_CONSTRAINTS_MODES_CI = ["constraints-source-providers", "constraints", "constraints-no-providers"]
 ALLOWED_CONSTRAINTS_MODES_PROD = ["constraints", "constraints-no-providers", "constraints-source-providers"]
 
+ALLOWED_CELERY_BROKERS = ["rabbitmq", "redis"]
+DEFAULT_CELERY_BROKER = ALLOWED_CELERY_BROKERS[1]
+
 MOUNT_SELECTED = "selected"
 MOUNT_ALL = "all"
 MOUNT_SKIP = "skip"
@@ -141,11 +140,9 @@ SINGLE_PLATFORMS = ["linux/amd64", "linux/arm64"]
 ALLOWED_PLATFORMS = [*SINGLE_PLATFORMS, MULTI_PLATFORM]
 ALLOWED_USE_AIRFLOW_VERSIONS = ["none", "wheel", "sdist"]
 
-PROVIDER_PACKAGE_JSON_FILE = AIRFLOW_SOURCES_ROOT / "generated" / "provider_dependencies.json"
-
 
 def get_available_documentation_packages(short_version=False) -> list[str]:
-    provider_names: list[str] = list(json.loads(PROVIDER_PACKAGE_JSON_FILE.read_text()).keys())
+    provider_names: list[str] = list(json.loads(DEPENDENCIES_JSON_FILE_PATH.read_text()).keys())
     doc_provider_names = [provider_name.replace(".", "-") for provider_name in provider_names]
     available_packages = [f"apache-airflow-providers-{doc_provider}" for doc_provider in doc_provider_names]
     available_packages.extend(["apache-airflow", "docker-stack", "helm-chart"])
@@ -179,7 +176,7 @@ MSSQL_HOST_PORT = "21433"
 FLOWER_HOST_PORT = "25555"
 REDIS_HOST_PORT = "26379"
 
-SQLITE_URL = "sqlite:////root/airflow/airflow.db"
+SQLITE_URL = "sqlite:////root/airflow/sqlite/airflow.db"
 PYTHONDONTWRITEBYTECODE = True
 
 PRODUCTION_IMAGE = False
@@ -202,7 +199,59 @@ INIT_SCRIPT_FILE = ""
 BREEZE_INIT_COMMAND = ""
 DRY_RUN_DOCKER = False
 INSTALL_AIRFLOW_VERSION = ""
-SQLITE_URL = "sqlite:////root/airflow/airflow.db"
+
+
+COMMITTERS = [
+    "BasPH",
+    "Fokko",
+    "KevinYang21",
+    "Taragolis",
+    "XD-DENG",
+    "aijamalnk",
+    "alexvanboxel",
+    "aoen",
+    "artwr",
+    "ashb",
+    "bbovenzi",
+    "bolkedebruin",
+    "criccomini",
+    "dimberman",
+    "dstandish",
+    "eladkal",
+    "ephraimbuddy",
+    "feluelle",
+    "feng-tao",
+    "houqp",
+    "hussein-awala",
+    "jedcunningham",
+    "jgao54",
+    "jghoman",
+    "jhtimmins",
+    "jmcarp",
+    "josh-fell",
+    "kaxil",
+    "leahecole",
+    "malthe",
+    "mik-laj",
+    "milton0825",
+    "mistercrunch",
+    "msumit",
+    "o-nikolas",
+    "pierrejeambrun",
+    "pingzh",
+    "potiuk",
+    "r39132",
+    "ryanahamilton",
+    "ryw",
+    "saguziel",
+    "sekikn",
+    "turbaszek",
+    "uranusjr",
+    "vikramkoka",
+    "xinbinhuang",
+    "yuqian90",
+    "zhongjiajie",
+]
 
 
 def get_airflow_version():
@@ -256,7 +305,7 @@ CURRENT_EXECUTORS = ["KubernetesExecutor"]
 DEFAULT_KUBERNETES_VERSION = CURRENT_KUBERNETES_VERSIONS[0]
 DEFAULT_EXECUTOR = CURRENT_EXECUTORS[0]
 
-KIND_VERSION = "v0.17.0"
+KIND_VERSION = "v0.19.0"
 HELM_VERSION = "v3.9.4"
 
 # Initialize image build variables - Have to check if this has to go to ci dataclass
diff --git a/dev/breeze/src/airflow_breeze/params/common_build_params.py b/dev/breeze/src/airflow_breeze/params/common_build_params.py
index 220ef183f3..a3fd817337 100644
--- a/dev/breeze/src/airflow_breeze/params/common_build_params.py
+++ b/dev/breeze/src/airflow_breeze/params/common_build_params.py
@@ -54,7 +54,6 @@ class CommonBuildParams:
     github_actions: str = os.environ.get("GITHUB_ACTIONS", "false")
     github_repository: str = APACHE_AIRFLOW_GITHUB_REPOSITORY
     github_token: str = os.environ.get("GITHUB_TOKEN", "")
-    github_username: str = ""
     image_tag: str | None = None
     install_providers_from_sources: bool = False
     platform: str = DOCKER_DEFAULT_PLATFORM
diff --git a/dev/breeze/src/airflow_breeze/params/shell_params.py b/dev/breeze/src/airflow_breeze/params/shell_params.py
index ff941b4493..cb666752bf 100644
--- a/dev/breeze/src/airflow_breeze/params/shell_params.py
+++ b/dev/breeze/src/airflow_breeze/params/shell_params.py
@@ -32,11 +32,13 @@ from airflow_breeze.global_constants import (
     ALLOWED_POSTGRES_VERSIONS,
     ALLOWED_PYTHON_MAJOR_MINOR_VERSIONS,
     APACHE_AIRFLOW_GITHUB_REPOSITORY,
+    DEFAULT_CELERY_BROKER,
     DOCKER_DEFAULT_PLATFORM,
     MOUNT_ALL,
     MOUNT_REMOVE,
     MOUNT_SELECTED,
     MOUNT_SKIP,
+    START_AIRFLOW_DEFAULT_ALLOWED_EXECUTORS,
     TESTABLE_INTEGRATIONS,
     get_airflow_version,
 )
@@ -92,6 +94,7 @@ class ShellParams:
     include_mypy_volume: bool = False
     install_airflow_version: str = ""
     install_providers_from_sources: bool = True
+    install_selected_providers: str | None = None
     integration: tuple[str, ...] = ()
     issue_id: str = ""
     load_default_connections: bool = False
@@ -107,15 +110,19 @@ class ShellParams:
     remove_arm_packages: bool = False
     skip_environment_initialization: bool = False
     skip_constraints: bool = False
+    skip_provider_tests: bool = False
     start_airflow: str = "false"
     test_type: str | None = None
-    skip_provider_tests: bool = False
     use_airflow_version: str | None = None
     use_packages_from_dist: bool = False
     version_suffix_for_pypi: str = ""
     dry_run: bool = False
     verbose: bool = False
     upgrade_boto: bool = False
+    executor: str = START_AIRFLOW_DEFAULT_ALLOWED_EXECUTORS
+    celery_broker: str = DEFAULT_CELERY_BROKER
+    celery_flower: bool = False
+    only_min_version_update: bool = False
 
     def clone_with_test(self, test_type: str) -> ShellParams:
         new_params = deepcopy(self)
@@ -180,7 +187,7 @@ class ShellParams:
 
     @property
     def sqlite_url(self) -> str:
-        sqlite_url = "sqlite:////root/airflow/airflow.db"
+        sqlite_url = "sqlite:////root/airflow/sqlite/airflow.db"
         return sqlite_url
 
     def print_badge_info(self):
@@ -212,6 +219,9 @@ class ShellParams:
                 backend_files.extend(self.get_backend_compose_files(backend))
             add_mssql_compose_file(compose_file_list)
 
+        if self.executor == "CeleryExecutor":
+            compose_file_list.append(DOCKER_COMPOSE_DIR / "integration-celery.yml")
+
         compose_file_list.append(DOCKER_COMPOSE_DIR / "base.yml")
         compose_file_list.extend(backend_files)
         compose_file_list.append(DOCKER_COMPOSE_DIR / "files.yml")
diff --git a/dev/breeze/src/airflow_breeze/pre_commit_ids.py b/dev/breeze/src/airflow_breeze/pre_commit_ids.py
index 236525e314..4acbd15f29 100644
--- a/dev/breeze/src/airflow_breeze/pre_commit_ids.py
+++ b/dev/breeze/src/airflow_breeze/pre_commit_ids.py
@@ -90,7 +90,6 @@ PRE_COMMIT_LIST = [
     "lint-openapi",
     "mixed-line-ending",
     "mypy-core",
-    "mypy-dev",
     "mypy-docs",
     "mypy-providers",
     "pretty-format-json",
diff --git a/dev/breeze/src/airflow_breeze/utils/coertions.py b/dev/breeze/src/airflow_breeze/utils/coertions.py
index 015c363faf..0f80dd57e3 100644
--- a/dev/breeze/src/airflow_breeze/utils/coertions.py
+++ b/dev/breeze/src/airflow_breeze/utils/coertions.py
@@ -17,6 +17,8 @@
 
 from __future__ import annotations
 
+from typing import Iterable
+
 
 def coerce_bool_value(value: str | bool) -> bool:
     if isinstance(value, bool):
@@ -25,3 +27,7 @@ def coerce_bool_value(value: str | bool) -> bool:
         return False
     else:
         return value[0].lower() in ["t", "y"]  # handle all kinds of truth-y/yes-y/false-y/non-sy strings
+
+
+def one_or_none_set(iterable: Iterable[bool]) -> bool:
+    return len([i for i in iterable if i]) in (0, 1)
diff --git a/dev/breeze/src/airflow_breeze/utils/common_options.py b/dev/breeze/src/airflow_breeze/utils/common_options.py
index a08081f8f2..97f73e90f3 100644
--- a/dev/breeze/src/airflow_breeze/utils/common_options.py
+++ b/dev/breeze/src/airflow_breeze/utils/common_options.py
@@ -24,6 +24,7 @@ from airflow_breeze.branch_defaults import DEFAULT_AIRFLOW_CONSTRAINTS_BRANCH
 from airflow_breeze.global_constants import (
     ALLOWED_BACKENDS,
     ALLOWED_BUILD_CACHE,
+    ALLOWED_CELERY_BROKERS,
     ALLOWED_CONSTRAINTS_MODES_CI,
     ALLOWED_CONSTRAINTS_MODES_PROD,
     ALLOWED_INSTALLATION_PACKAGE_FORMATS,
@@ -37,7 +38,10 @@ from airflow_breeze.global_constants import (
     ALLOWED_USE_AIRFLOW_VERSIONS,
     APACHE_AIRFLOW_GITHUB_REPOSITORY,
     AUTOCOMPLETE_INTEGRATIONS,
+    DEFAULT_CELERY_BROKER,
     SINGLE_PLATFORMS,
+    START_AIRFLOW_ALLOWED_EXECUTORS,
+    START_AIRFLOW_DEFAULT_ALLOWED_EXECUTORS,
     get_available_documentation_packages,
 )
 from airflow_breeze.utils.custom_param_types import (
@@ -213,11 +217,6 @@ option_github_token = click.option(
     help="The token used to authenticate to GitHub.",
     envvar="GITHUB_TOKEN",
 )
-option_github_username = click.option(
-    "--github-username",
-    help="The user name used to authenticate to GitHub.",
-    envvar="GITHUB_USERNAME",
-)
 option_image_tag_for_pulling = click.option(
     "-t",
     "--image-tag",
@@ -535,3 +534,30 @@ option_debug_resources = click.option(
     help="Whether to show resource information while running in parallel.",
     envvar="DEBUG_RESOURCES",
 )
+option_executor = click.option(
+    "--executor",
+    type=click.Choice(START_AIRFLOW_ALLOWED_EXECUTORS, case_sensitive=False),
+    help="Specify the executor to use with airflow.",
+    default=START_AIRFLOW_DEFAULT_ALLOWED_EXECUTORS,
+    show_default=True,
+)
+option_celery_broker = click.option(
+    "--celery-broker",
+    type=click.Choice(ALLOWED_CELERY_BROKERS, case_sensitive=False),
+    help="Specify the celery message broker",
+    default=DEFAULT_CELERY_BROKER,
+    show_default=True,
+)
+option_celery_flower = click.option("--celery-flower", help="Start celery flower", is_flag=True)
+option_install_selected_providers = click.option(
+    "--install-selected-providers",
+    help="Comma-separated list of providers selected to be installed (implies --use-packages-from-dist).",
+    envvar="INSTALL_SELECTED_PROVIDERS",
+    default="",
+)
+option_skip_constraints = click.option(
+    "--skip-constraints",
+    is_flag=True,
+    help="Do not use constraints when installing providers.",
+    envvar="SKIP_CONSTRAINTS",
+)
diff --git a/dev/breeze/src/airflow_breeze/utils/confirm.py b/dev/breeze/src/airflow_breeze/utils/confirm.py
index 0b64697c19..225a04bce2 100644
--- a/dev/breeze/src/airflow_breeze/utils/confirm.py
+++ b/dev/breeze/src/airflow_breeze/utils/confirm.py
@@ -37,14 +37,12 @@ def user_confirm(
     default_answer: Answer | None = Answer.NO,
     quit_allowed: bool = True,
 ) -> Answer:
-    """
-    Ask the user for confirmation.
+    """Ask the user for confirmation.
 
     :param message: message to display to the user (should end with the question mark)
     :param timeout: time given user to answer
     :param default_answer: default value returned on timeout. If no default - is set, the timeout is ignored.
     :param quit_allowed: whether quit answer is allowed
-    :return:
     """
     from inputimeout import TimeoutOccurred, inputimeout
 
diff --git a/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py b/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
index 88d8d59c83..f2edef9357 100644
--- a/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
+++ b/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
@@ -41,6 +41,7 @@ except ImportError:
 
 from airflow_breeze.branch_defaults import AIRFLOW_BRANCH
 from airflow_breeze.global_constants import (
+    ALLOWED_CELERY_BROKERS,
     ALLOWED_PACKAGE_FORMATS,
     APACHE_AIRFLOW_GITHUB_REPOSITORY,
     FLOWER_HOST_PORT,
@@ -262,11 +263,11 @@ Please upgrade to at least {MIN_DOCKER_VERSION}[/]
 
 
 def check_remote_ghcr_io_commands():
-    """
-    Checks if you have permissions to pull an empty image from ghcr.io. Unfortunately, GitHub packages
-    treat expired login as "no-access" even on public repos. We need to detect that situation and suggest
-    user to log-out.
-    :return:
+    """Checks if you have permissions to pull an empty image from ghcr.io.
+
+    Unfortunately, GitHub packages treat expired login as "no-access" even on
+    public repos. We need to detect that situation and suggest user to log-out
+    or if they are in CI environment to re-push their PR/close or reopen the PR.
     """
     response = run_command(
         ["docker", "pull", "ghcr.io/apache/airflow-hello-world"],
@@ -281,27 +282,39 @@ def check_remote_ghcr_io_commands():
                 "[error]\nYou seem to be offline. This command requires access to network.[/]\n"
             )
             sys.exit(2)
-        get_console().print(
-            "[error]\nYou seem to have expired permissions on ghcr.io.[/]\n"
-            "[warning]Please logout. Run this command:[/]\n\n"
-            "   docker logout ghcr.io\n\n"
-        )
-        sys.exit(1)
+        if os.environ.get("CI"):
+            get_console().print(
+                "\n[error]We are extremely sorry but you've hit the rare case that the "
+                "credentials you got from GitHub Actions to run are expired, and we cannot do much.[/]"
+                "\n¯\\_(ツ)_/¯\n\n"
+                "[warning]You have the following options now:\n\n"
+                "  * Close and reopen the Pull Request of yours\n"
+                "  * Rebase or amend your commit and push your branch again\n"
+                "  * Ask in the PR to re-run the failed job\n\n"
+            )
+            sys.exit(1)
+        else:
+            get_console().print(
+                "[error]\nYou seem to have expired permissions on ghcr.io.[/]\n"
+                "[warning]Please logout. Run this command:[/]\n\n"
+                "   docker logout ghcr.io\n\n"
+            )
+            sys.exit(1)
 
 
-DOCKER_COMPOSE_COMMAND = ["docker-compose"]
+DOCKER_COMPOSE_COMMAND = ["docker", "compose"]
 
 
 def check_docker_compose_version():
-    """
-    Checks if the docker compose version is as expected, including some specific modifications done by
-    some vendors such as Microsoft. They might have modified version of docker-compose/docker in their
-    cloud. In case docker compose version is wrong we continue but print warning for the user.
-
+    """Checks if the docker compose version is as expected.
 
+    This includes specific modifications done by some vendors such as Microsoft.
+    They might have modified version of docker-compose/docker in their cloud. In
+    the case the docker compose version is wrong, we continue but print a
+    warning for the user.
     """
     version_pattern = re.compile(r"(\d+)\.(\d+)\.(\d+)")
-    docker_compose_version_command = ["docker-compose", "--version"]
+    docker_compose_version_command = ["docker", "compose", "version"]
     try:
         docker_compose_version_result = run_command(
             docker_compose_version_command,
@@ -310,8 +323,8 @@ def check_docker_compose_version():
             text=True,
             dry_run_override=False,
         )
-    except FileNotFoundError:
-        docker_compose_version_command = ["docker", "compose", "version"]
+    except Exception:
+        docker_compose_version_command = ["docker-compose", "--version"]
         docker_compose_version_result = run_command(
             docker_compose_version_command,
             no_output_dump_on_exception=True,
@@ -320,7 +333,7 @@ def check_docker_compose_version():
             dry_run_override=False,
         )
         DOCKER_COMPOSE_COMMAND.clear()
-        DOCKER_COMPOSE_COMMAND.extend(["docker", "compose"])
+        DOCKER_COMPOSE_COMMAND.append("docker-compose")
     if docker_compose_version_result.returncode == 0:
         docker_compose_version = docker_compose_version_result.stdout
         version_extracted = version_pattern.search(docker_compose_version)
@@ -351,10 +364,7 @@ Make sure docker-compose you install is first on the PATH variable of yours.
 
 
 def check_docker_context():
-    """
-    Checks whether Docker is using the expected context
-
-    """
+    """Checks whether Docker is using the expected context."""
     expected_docker_context = "default"
     response = run_command(
         ["docker", "info", "--format", "{{json .ClientInfo.Context}}"],
@@ -564,12 +574,11 @@ def make_sure_builder_configured(params: CommonBuildParams):
 
 
 def set_value_to_default_if_not_set(env: dict[str, str], name: str, default: str):
-    """
-    Set value of name parameter to default (indexed by name) if not set.
+    """Set value of name parameter to default (indexed by name) if not set.
+
     :param env: dictionary where to set the parameter
     :param name: name of parameter
     :param default: default value
-    :return:
     """
     if env.get(name) is None:
         env[name] = os.environ.get(name, default)
@@ -586,7 +595,6 @@ def update_expected_environment_variables(env: dict[str, str]) -> None:
     set_value_to_default_if_not_set(env, "AIRFLOW_CONSTRAINTS_REFERENCE", "constraints-source-providers")
     set_value_to_default_if_not_set(env, "AIRFLOW_EXTRAS", "")
     set_value_to_default_if_not_set(env, "AIRFLOW_ENABLE_AIP_44", "true")
-    set_value_to_default_if_not_set(env, "AIRFLOW_ENABLE_AIP_52", "true")
     set_value_to_default_if_not_set(env, "ANSWER", answer if answer is not None else "")
     set_value_to_default_if_not_set(env, "BASE_BRANCH", "main")
     set_value_to_default_if_not_set(env, "BREEZE", "true")
@@ -603,6 +611,7 @@ def update_expected_environment_variables(env: dict[str, str]) -> None:
     set_value_to_default_if_not_set(env, "DEFAULT_BRANCH", AIRFLOW_BRANCH)
     set_value_to_default_if_not_set(env, "ENABLED_SYSTEMS", "")
     set_value_to_default_if_not_set(env, "ENABLE_TEST_COVERAGE", "false")
+    set_value_to_default_if_not_set(env, "HELM_TEST_PACKAGE", "")
     set_value_to_default_if_not_set(env, "HOST_GROUP_ID", get_host_group_id())
     set_value_to_default_if_not_set(env, "HOST_OS", get_host_os())
     set_value_to_default_if_not_set(env, "HOST_USER_ID", get_host_user_id())
@@ -611,6 +620,7 @@ def update_expected_environment_variables(env: dict[str, str]) -> None:
     set_value_to_default_if_not_set(env, "INSTALL_PROVIDERS_FROM_SOURCES", "true")
     set_value_to_default_if_not_set(env, "LOAD_DEFAULT_CONNECTIONS", "false")
     set_value_to_default_if_not_set(env, "LOAD_EXAMPLES", "false")
+    set_value_to_default_if_not_set(env, "ONLY_MIN_VERSION_UPDATE", "false")
     set_value_to_default_if_not_set(env, "PACKAGE_FORMAT", ALLOWED_PACKAGE_FORMATS[0])
     set_value_to_default_if_not_set(env, "PYTHONDONTWRITEBYTECODE", "true")
     set_value_to_default_if_not_set(env, "REMOVE_ARM_PACKAGES", "false")
@@ -641,6 +651,7 @@ DERIVE_ENV_VARIABLES_FROM_ATTRIBUTES = {
     "AIRFLOW_PROD_IMAGE": "airflow_image_name",
     "AIRFLOW_SOURCES": "airflow_sources",
     "AIRFLOW_VERSION": "airflow_version",
+    "AIRFLOW__CORE__EXECUTOR": "executor",
     "BACKEND": "backend",
     "BASE_BRANCH": "base_branch",
     "COMPOSE_FILE": "compose_file",
@@ -650,6 +661,7 @@ DERIVE_ENV_VARIABLES_FROM_ATTRIBUTES = {
     "GITHUB_ACTIONS": "github_actions",
     "INSTALL_AIRFLOW_VERSION": "install_airflow_version",
     "INSTALL_PROVIDERS_FROM_SOURCES": "install_providers_from_sources",
+    "INSTALL_SELECTED_PROVIDERS": "install_selected_providers",
     "ISSUE_ID": "issue_id",
     "LOAD_DEFAULT_CONNECTIONS": "load_default_connections",
     "LOAD_EXAMPLES": "load_example_dags",
@@ -657,6 +669,7 @@ DERIVE_ENV_VARIABLES_FROM_ATTRIBUTES = {
     "MSSQL_VERSION": "mssql_version",
     "MYSQL_VERSION": "mysql_version",
     "NUM_RUNS": "num_runs",
+    "ONLY_MIN_VERSION_UPDATE": "only_min_version_update",
     "PACKAGE_FORMAT": "package_format",
     "POSTGRES_VERSION": "postgres_version",
     "PYTHON_MAJOR_MINOR_VERSION": "python",
@@ -669,6 +682,7 @@ DERIVE_ENV_VARIABLES_FROM_ATTRIBUTES = {
     "USE_AIRFLOW_VERSION": "use_airflow_version",
     "USE_PACKAGES_FROM_DIST": "use_packages_from_dist",
     "VERSION_SUFFIX_FOR_PYPI": "version_suffix_for_pypi",
+    "CELERY_FLOWER": "celery_flower",
 }
 
 DOCKER_VARIABLE_CONSTANTS = {
@@ -679,6 +693,7 @@ DOCKER_VARIABLE_CONSTANTS = {
     "REDIS_HOST_PORT": REDIS_HOST_PORT,
     "SSH_PORT": SSH_PORT,
     "WEBSERVER_HOST_PORT": WEBSERVER_HOST_PORT,
+    "CELERY_BROKER_URLS": "amqp://guest:guest@rabbitmq:5672,redis://redis:6379/0",
 }
 
 
@@ -706,10 +721,22 @@ def get_env_variables_for_docker_commands(params: ShellParams | BuildCiParams) -
         constant_param_value = DOCKER_VARIABLE_CONSTANTS[variable]
         if not env_variables.get(variable):
             env_variables[variable] = str(constant_param_value)
+    prepare_broker_url(params, env_variables)
     update_expected_environment_variables(env_variables)
     return env_variables
 
 
+def prepare_broker_url(params, env_variables):
+    """Prepare broker url for celery executor"""
+    urls = env_variables["CELERY_BROKER_URLS"].split(",")
+    url_map = {
+        ALLOWED_CELERY_BROKERS[0]: urls[0],
+        ALLOWED_CELERY_BROKERS[1]: urls[1],
+    }
+    if getattr(params, "celery_broker", None) and params.celery_broker in params.celery_broker in url_map:
+        env_variables["AIRFLOW__CELERY__BROKER_URL"] = url_map[params.celery_broker]
+
+
 def perform_environment_checks():
     check_docker_is_running()
     check_docker_version()
diff --git a/dev/breeze/src/airflow_breeze/utils/image.py b/dev/breeze/src/airflow_breeze/utils/image.py
index 4b07fc78b9..d008e08c7f 100644
--- a/dev/breeze/src/airflow_breeze/utils/image.py
+++ b/dev/breeze/src/airflow_breeze/utils/image.py
@@ -38,7 +38,6 @@ from airflow_breeze.utils.parallel import (
     check_async_run_results,
     run_with_pool,
 )
-from airflow_breeze.utils.registry import login_to_github_docker_registry
 from airflow_breeze.utils.run_tests import verify_an_image
 from airflow_breeze.utils.run_utils import RunCommandResult, run_command
 from airflow_breeze.utils.shared_options import get_dry_run, get_verbose
@@ -77,7 +76,7 @@ def run_pull_in_parallel(
                     "image_params": image_param,
                     "wait_for_image": wait_for_image,
                     "tag_as_latest": tag_as_latest,
-                    "poll_time": 10.0,
+                    "poll_time_seconds": 10.0,
                     "output": outputs[index],
                 }
                 if verify:
@@ -102,7 +101,8 @@ def run_pull_image(
     wait_for_image: bool,
     tag_as_latest: bool,
     output: Output | None,
-    poll_time: float = 10.0,
+    poll_time_seconds: float = 10.0,
+    max_time_minutes: float = 70,
 ) -> tuple[int, str]:
     """
     Pull image specified.
@@ -112,20 +112,18 @@ def run_pull_image(
     :param output: output to write to
     :param wait_for_image: whether we should wait for the image to be available
     :param tag_as_latest: tag the image as latest
-    :param poll_time: what's the polling time between checks if images are there (default 10 s)
+    :param poll_time_seconds: what's the polling time between checks if images are there (default 10 s)
+    :param max_time_minutes: what's the maximum time to wait for the image to be pulled (default 70 minutes)
     :return: Tuple of return code and description of the image pulled
     """
     get_console(output=output).print(
         f"\n[info]Pulling {image_params.image_type} image of airflow python version: "
         f"{image_params.python} image: {image_params.airflow_image_name_with_tag} "
-        f"with wait for image: {wait_for_image}[/]\n"
+        f"with wait for image: {wait_for_image} and max time to poll {max_time_minutes} minutes[/]\n"
     )
     current_loop = 1
+    start_time = time.time()
     while True:
-        login_to_github_docker_registry(
-            image_params=image_params,
-            output=output,
-        )
         command_to_run = ["docker", "pull", image_params.airflow_image_name_with_tag]
         command_result = run_command(command_to_run, check=False, output=output)
         if command_result.returncode == 0:
@@ -162,8 +160,15 @@ def run_pull_image(
                 get_console(output=output).print(
                     f"\n[info]Waiting: #{current_loop} {image_params.airflow_image_name_with_tag}.[/]\n"
                 )
-            time.sleep(poll_time)
+            time.sleep(poll_time_seconds)
             current_loop += 1
+            current_time = time.time()
+            if (current_time - start_time) / 60 > max_time_minutes:
+                get_console(output=output).print(
+                    f"\n[error]The image {image_params.airflow_image_name_with_tag} "
+                    f"did not appear in {max_time_minutes} minutes. Failing.[/]\n"
+                )
+                return 1, f"Image Python {image_params.python}"
             continue
         else:
             get_console(output=output).print(
@@ -209,7 +214,7 @@ def run_pull_and_verify_image(
     image_params: CommonBuildParams,
     wait_for_image: bool,
     tag_as_latest: bool,
-    poll_time: float,
+    poll_time_seconds: float,
     extra_pytest_args: tuple,
     output: Output | None,
 ) -> tuple[int, str]:
@@ -218,7 +223,7 @@ def run_pull_and_verify_image(
         wait_for_image=wait_for_image,
         tag_as_latest=tag_as_latest,
         output=output,
-        poll_time=poll_time,
+        poll_time_seconds=poll_time_seconds,
     )
     if return_code != 0:
         get_console(output=output).print(
diff --git a/dev/breeze/src/airflow_breeze/utils/kubernetes_utils.py b/dev/breeze/src/airflow_breeze/utils/kubernetes_utils.py
index 2b84090008..65458e6208 100644
--- a/dev/breeze/src/airflow_breeze/utils/kubernetes_utils.py
+++ b/dev/breeze/src/airflow_breeze/utils/kubernetes_utils.py
@@ -170,11 +170,7 @@ def _download_tool_if_needed(
     get_console().print(f"[info]Downloading from:[/] {url}")
     if get_dry_run():
         return
-    try:
-        # we can add missing_ok when we drop Python 3.7
-        path.unlink()
-    except OSError:
-        pass
+    path.unlink(missing_ok=True)
     path.parent.mkdir(parents=True, exist_ok=True)
     num_tries = 4
     if not uncompress_file:
diff --git a/dev/breeze/src/airflow_breeze/utils/parallel.py b/dev/breeze/src/airflow_breeze/utils/parallel.py
index f4772c86b1..790c11e72b 100644
--- a/dev/breeze/src/airflow_breeze/utils/parallel.py
+++ b/dev/breeze/src/airflow_breeze/utils/parallel.py
@@ -341,7 +341,7 @@ def print_async_summary(completed_list: list[ApplyResult]) -> None:
     get_console().print()
     for result in completed_list:
         return_code, info = result.get()
-        info = info.replace("[", "\[")
+        info = info.replace("[", "\\[")
         if return_code != 0:
             get_console().print(f"[error]NOK[/] for {info}: Return code: {return_code}.")
         else:
@@ -366,7 +366,7 @@ def check_async_run_results(
     success: str,
     outputs: list[Output],
     include_success_outputs: bool,
-    poll_time: float = 0.2,
+    poll_time_seconds: float = 0.2,
     skip_cleanup: bool = False,
     summarize_on_ci: SummarizeAfter = SummarizeAfter.NO_SUMMARY,
     summary_start_regexp: str | None = None,
@@ -377,7 +377,7 @@ def check_async_run_results(
     :param outputs: outputs where results are written to
     :param success: Success string printed when everything is OK
     :param include_success_outputs: include outputs of successful parallel runs
-    :param poll_time: what's the poll time between checks
+    :param poll_time_seconds: what's the poll time between checks
     :param skip_cleanup: whether to skip cleanup of temporary files.
     :param summarize_on_ci: determines when to summarize the parallel jobs  when they are completed in CI,
         outside the folded CI output
@@ -399,7 +399,7 @@ def check_async_run_results(
                 f"({int(100*completed_number/total_number_of_results)}%).[/]\n"
             )
             print_async_summary(completed_list)
-        time.sleep(poll_time)
+        time.sleep(poll_time_seconds)
         completed_list = get_completed_result_list(results)
     completed_number = len(completed_list)
     get_console().print(
diff --git a/dev/breeze/src/airflow_breeze/utils/path_utils.py b/dev/breeze/src/airflow_breeze/utils/path_utils.py
index 1146c1ecc2..1e8747cbbb 100644
--- a/dev/breeze/src/airflow_breeze/utils/path_utils.py
+++ b/dev/breeze/src/airflow_breeze/utils/path_utils.py
@@ -266,6 +266,7 @@ TESTS_PROVIDERS_ROOT = AIRFLOW_SOURCES_ROOT / "tests" / "providers"
 SYSTEM_TESTS_PROVIDERS_ROOT = AIRFLOW_SOURCES_ROOT / "tests" / "system" / "providers"
 AIRFLOW_PROVIDERS_ROOT = AIRFLOW_SOURCES_ROOT / "airflow" / "providers"
 BUILD_CACHE_DIR = AIRFLOW_SOURCES_ROOT / ".build"
+DEPENDENCIES_JSON_FILE_PATH = AIRFLOW_SOURCES_ROOT / "generated" / "provider_dependencies.json"
 WWW_CACHE_DIR = BUILD_CACHE_DIR / "www"
 WWW_ASSET_COMPILE_LOCK = WWW_CACHE_DIR / ".asset_compile.lock"
 WWW_ASSET_OUT_FILE = WWW_CACHE_DIR / "asset_compile.out"
diff --git a/dev/breeze/src/airflow_breeze/utils/provider_dependencies.py b/dev/breeze/src/airflow_breeze/utils/provider_dependencies.py
new file mode 100644
index 0000000000..76f0d933ca
--- /dev/null
+++ b/dev/breeze/src/airflow_breeze/utils/provider_dependencies.py
@@ -0,0 +1,52 @@
+# 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.
+
+from __future__ import annotations
+
+import json
+
+from airflow_breeze.utils.path_utils import DEPENDENCIES_JSON_FILE_PATH
+
+DEPENDENCIES = json.loads(DEPENDENCIES_JSON_FILE_PATH.read_text())
+
+
+def get_related_providers(
+    provider_to_check: str,
+    upstream_dependencies: bool,
+    downstream_dependencies: bool,
+) -> set[str]:
+    """
+    Gets cross dependencies of a provider.
+
+    :param provider_to_check: id of the provider to check
+    :param upstream_dependencies: whether to include providers that depend on it
+    :param downstream_dependencies: whether to include providers it depends on
+    :return: set of dependent provider ids
+    """
+    if not upstream_dependencies and not downstream_dependencies:
+        raise ValueError("At least one of upstream_dependencies or downstream_dependencies must be True")
+    related_providers = set()
+    if upstream_dependencies:
+        # Providers that use this provider
+        for provider, provider_info in DEPENDENCIES.items():
+            if provider_to_check in provider_info["cross-providers-deps"]:
+                related_providers.add(provider)
+    # and providers we use directly
+    if downstream_dependencies:
+        for dep_name in DEPENDENCIES[provider_to_check]["cross-providers-deps"]:
+            related_providers.add(dep_name)
+    return related_providers
diff --git a/dev/breeze/src/airflow_breeze/utils/registry.py b/dev/breeze/src/airflow_breeze/utils/registry.py
index 49950cb0fe..94ebd80ff8 100644
--- a/dev/breeze/src/airflow_breeze/utils/registry.py
+++ b/dev/breeze/src/airflow_breeze/utils/registry.py
@@ -18,49 +18,44 @@ from __future__ import annotations
 
 import os
 
-from airflow_breeze.params.common_build_params import CommonBuildParams
 from airflow_breeze.utils.console import Output, get_console
 from airflow_breeze.utils.run_utils import run_command
 
 
-def login_to_github_docker_registry(
-    image_params: CommonBuildParams, output: Output | None
-) -> tuple[int, str]:
+def login_to_github_docker_registry(github_token: str | None, output: Output | None) -> tuple[int, str]:
     """
     In case of CI environment, we need to login to GitHub Registry.
 
-    :param image_params: parameters to use for Building prod image
+    :param github_token: Github token to use
     :param output: Output to redirect to
 
-
+    :return  tuple of error code and message
     """
     if os.environ.get("CI"):
-        if len(image_params.github_token) == 0:
+        if not github_token:
             get_console(output=output).print(
                 "\n[info]Skip logging in to GitHub Registry. No Token available!"
             )
-        elif len(image_params.github_token) > 0:
-            run_command(
-                ["docker", "logout", "ghcr.io"],
-                output=output,
-                text=False,
-                check=False,
-            )
-            command_result = run_command(
-                [
-                    "docker",
-                    "login",
-                    "--username",
-                    image_params.github_username,
-                    "--password-stdin",
-                    "ghcr.io",
-                ],
-                output=output,
-                text=True,
-                input=image_params.github_token,
-                check=False,
-            )
-            return command_result.returncode, "Docker login"
-        else:
-            get_console().print("\n[info]Skip Login to GitHub Container Registry as token is missing")
+            return 0, "Docker login skipped as no token available"
+        run_command(
+            ["docker", "logout", "ghcr.io"],
+            output=output,
+            text=False,
+            check=False,
+        )
+        command_result = run_command(
+            [
+                "docker",
+                "login",
+                "ghcr.io",
+                "--username",
+                "$",
+                "--password-stdin",
+            ],
+            output=output,
+            text=True,
+            input=github_token,
+            check=False,
+        )
+        return command_result.returncode, "Docker login"
     return 0, "Docker login skipped"
diff --git a/dev/breeze/src/airflow_breeze/utils/run_tests.py b/dev/breeze/src/airflow_breeze/utils/run_tests.py
index ac2c160fa5..c431155842 100644
--- a/dev/breeze/src/airflow_breeze/utils/run_tests.py
+++ b/dev/breeze/src/airflow_breeze/utils/run_tests.py
@@ -61,15 +61,23 @@ def verify_an_image(
     return command_result.returncode, f"Testing {image_type} python {image_name}"
 
 
-def run_docker_compose_tests(image_name: str, extra_pytest_args: tuple) -> tuple[int, str]:
+def run_docker_compose_tests(
+    image_name: str,
+    extra_pytest_args: tuple,
+    skip_docker_compose_deletion: bool,
+    wait_for_containers_timeout: int,
+) -> tuple[int, str]:
     command_result = run_command(["docker", "inspect", image_name], check=False, stdout=DEVNULL)
     if command_result.returncode != 0:
         get_console().print(f"[error]Error when inspecting PROD image: {command_result.returncode}[/]")
         return command_result.returncode, f"Testing docker-compose python with {image_name}"
-    pytest_args = ("-n", str(os.cpu_count()), "--color=yes")
+    pytest_args = ("--color=yes",)
     test_path = AIRFLOW_SOURCES_ROOT / "docker_tests" / "test_docker_compose_quick_start.py"
     env = os.environ.copy()
     env["DOCKER_IMAGE"] = image_name
+    if skip_docker_compose_deletion:
+        env["SKIP_DOCKER_COMPOSE_DELETION"] = "true"
+    env["WAIT_FOR_CONTAINERS_TIMEOUT"] = str(wait_for_containers_timeout)
     command_result = run_command(
         [sys.executable, "-m", "pytest", str(test_path), *pytest_args, *extra_pytest_args],
         env=env,
diff --git a/dev/breeze/src/airflow_breeze/utils/run_utils.py b/dev/breeze/src/airflow_breeze/utils/run_utils.py
index 66bc3e1a40..f29ca43006 100644
--- a/dev/breeze/src/airflow_breeze/utils/run_utils.py
+++ b/dev/breeze/src/airflow_breeze/utils/run_utils.py
@@ -17,17 +17,18 @@
 """Useful tools for running commands."""
 from __future__ import annotations
 
+import atexit
 import contextlib
 import os
 import re
 import shlex
+import signal
 import stat
 import subprocess
 import sys
 from distutils.version import StrictVersion
 from functools import lru_cache
 from pathlib import Path
-from threading import Thread
 from typing import Mapping, Union
 
 from rich.markup import escape
@@ -470,7 +471,15 @@ def run_compile_www_assets(
         f"{WWW_ASSET_OUT_DEV_MODE_FILE if dev else WWW_ASSET_OUT_FILE}\n"
     )
     if run_in_background:
-        thread = Thread(daemon=True, target=_run_compile_internally, args=(command_to_execute, dev))
-        thread.start()
+        pid = os.fork()
+        if pid:
+            # Parent process - send signal to process group of the child process
+            atexit.register(os.killpg, pid, signal.SIGTERM)
+        else:
+            # Check if we are not a group leader already (We should not be)
+            if os.getpid() != os.getsid(0):
+                # and create a new process group where we are the leader
+                os.setpgid(0, 0)
+            _run_compile_internally(command_to_execute, dev)
     else:
         return _run_compile_internally(command_to_execute, dev)
diff --git a/dev/breeze/src/airflow_breeze/utils/selective_checks.py b/dev/breeze/src/airflow_breeze/utils/selective_checks.py
index 9a6c1dee44..c34a168d63 100644
--- a/dev/breeze/src/airflow_breeze/utils/selective_checks.py
+++ b/dev/breeze/src/airflow_breeze/utils/selective_checks.py
@@ -20,32 +20,19 @@ import json
 import os
 import sys
 from enum import Enum
-
-from airflow_breeze.utils.exclude_from_matrix import excluded_combos
-from airflow_breeze.utils.github_actions import get_ga_output
-from airflow_breeze.utils.kubernetes_utils import get_kubernetes_python_combos
-from airflow_breeze.utils.path_utils import (
-    AIRFLOW_PROVIDERS_ROOT,
-    AIRFLOW_SOURCES_ROOT,
-    DOCS_DIR,
-    SYSTEM_TESTS_PROVIDERS_ROOT,
-    TESTS_PROVIDERS_ROOT,
-)
-
-if sys.version_info >= (3, 8):
-    from functools import cached_property
-else:
-    # noinspection PyUnresolvedReferences
-    from cached_property import cached_property
-
-from functools import lru_cache
+from functools import cached_property, lru_cache
 from re import match
 from typing import Any, Dict, List, TypeVar
 
-from typing_extensions import Literal
+if sys.version_info >= (3, 9):
+    from typing import Literal
+else:
+    from typing import Literal
 
 from airflow_breeze.global_constants import (
     ALL_PYTHON_MAJOR_MINOR_VERSIONS,
+    APACHE_AIRFLOW_GITHUB_REPOSITORY,
+    COMMITTERS,
     CURRENT_KUBERNETES_VERSIONS,
     CURRENT_MSSQL_VERSIONS,
     CURRENT_MYSQL_VERSIONS,
@@ -58,15 +45,30 @@ from airflow_breeze.global_constants import (
     DEFAULT_PYTHON_MAJOR_MINOR_VERSION,
     HELM_VERSION,
     KIND_VERSION,
+    RUNS_ON_PUBLIC_RUNNER,
+    RUNS_ON_SELF_HOSTED_RUNNER,
+    SELF_HOSTED_RUNNERS_CPU_COUNT,
     GithubEvents,
     SelectiveUnitTestTypes,
     all_helm_test_packages,
     all_selective_test_types,
 )
 from airflow_breeze.utils.console import get_console
+from airflow_breeze.utils.exclude_from_matrix import excluded_combos
+from airflow_breeze.utils.github_actions import get_ga_output
+from airflow_breeze.utils.kubernetes_utils import get_kubernetes_python_combos
+from airflow_breeze.utils.path_utils import (
+    AIRFLOW_PROVIDERS_ROOT,
+    AIRFLOW_SOURCES_ROOT,
+    DOCS_DIR,
+    SYSTEM_TESTS_PROVIDERS_ROOT,
+    TESTS_PROVIDERS_ROOT,
+)
+from airflow_breeze.utils.provider_dependencies import DEPENDENCIES, get_related_providers
 
 FULL_TESTS_NEEDED_LABEL = "full tests needed"
 DEBUG_CI_RESOURCES_LABEL = "debug ci resources"
+USE_PUBLIC_RUNNERS_LABEL = "use public runners"
 
 
 class FileGroupForCi(Enum):
@@ -136,6 +138,7 @@ CI_FILE_GROUP_MATCHES = HashableDict(
         ],
         FileGroupForCi.DOC_FILES: [
             r"^docs",
+            r"^\.github/SECURITY\.rst$",
             r"^airflow/.*\.py$",
             r"^chart",
             r"^providers",
@@ -228,23 +231,11 @@ def find_provider_affected(changed_file: str, include_docs: bool) -> str | None:
     return "Providers"
 
 
-def add_dependent_providers(
-    providers: set[str], provider_to_check: str, dependencies: dict[str, dict[str, list[str]]]
-):
-    for provider, provider_info in dependencies.items():
-        # Providers that use this provider
-        if provider_to_check in provider_info["cross-providers-deps"]:
-            providers.add(provider)
-        # and providers we use directly
-        for dep_name in dependencies[provider_to_check]["cross-providers-deps"]:
-            providers.add(dep_name)
-
-
 def find_all_providers_affected(
-    changed_files: tuple[str, ...], include_docs: bool
+    changed_files: tuple[str, ...], include_docs: bool, fail_if_suspended_providers_affected: bool
 ) -> list[str] | Literal["ALL_PROVIDERS"] | None:
     all_providers: set[str] = set()
-    dependencies = json.loads((AIRFLOW_SOURCES_ROOT / "generated" / "provider_dependencies.json").read_text())
+
     all_providers_affected = False
     suspended_providers: set[str] = set()
     for changed_file in changed_files:
@@ -252,7 +243,7 @@ def find_all_providers_affected(
         if provider == "Providers":
             all_providers_affected = True
         elif provider is not None:
-            if provider not in dependencies:
+            if provider not in DEPENDENCIES:
                 suspended_providers.add(provider)
             else:
                 all_providers.add(provider)
@@ -266,7 +257,7 @@ def find_all_providers_affected(
         # potential escape hatch if someone would like to modify suspended provider,
         # but it can be found at the review time and is anyway harmless as the provider will not be
         # released nor tested nor used in CI anyway.
-        get_console().print("[error]You are modifying suspended providers.\n")
+        get_console().print("[yellow]You are modifying suspended providers.\n")
         get_console().print(
             "[info]Some providers modified by this change have been suspended, "
             "and before attempting such changes you should fix the reason for suspension."
@@ -276,11 +267,21 @@ def find_all_providers_affected(
             "to make changes to the provider."
         )
         get_console().print(f"Suspended providers: {suspended_providers}")
-        sys.exit(1)
+        if fail_if_suspended_providers_affected:
+            get_console().print(
+                "[error]This PR did not have `allow suspended provider changes` label set so it will fail."
+            )
+            sys.exit(1)
+        else:
+            get_console().print(
+                "[info]This PR had `allow suspended provider changes` label set so it will continue"
+            )
     if len(all_providers) == 0:
         return None
     for provider in list(all_providers):
-        add_dependent_providers(all_providers, provider, dependencies)
+        all_providers.update(
+            get_related_providers(provider, upstream_dependencies=True, downstream_dependencies=True)
+        )
     return sorted(all_providers)
 
 
@@ -295,6 +296,9 @@ class SelectiveChecks:
         commit_ref: str | None = None,
         pr_labels: tuple[str, ...] = (),
         github_event: GithubEvents = GithubEvents.PULL_REQUEST,
+        github_repository: str = APACHE_AIRFLOW_GITHUB_REPOSITORY,
+        github_actor: str = "",
+        github_context_dict: dict[str, Any] | None = None,
     ):
         self._files = files
         self._default_branch = default_branch
@@ -302,6 +306,9 @@ class SelectiveChecks:
         self._commit_ref = commit_ref
         self._pr_labels = pr_labels
         self._github_event = github_event
+        self._github_repository = github_repository
+        self._github_actor = github_actor
+        self._github_context_dict = github_context_dict or {}
 
     def __important_attributes(self) -> tuple[Any, ...]:
         return tuple(getattr(self, f) for f in self.__HASHABLE_FIELDS)
@@ -563,6 +570,9 @@ class SelectiveChecks:
         # prepare all providers packages and build all providers documentation
         return "Providers" in self._get_test_types_to_run()
 
+    def _fail_if_suspended_providers_affected(self):
+        return "allow suspended provider changes" not in self._pr_labels
+
     def _get_test_types_to_run(self) -> list[str]:
         candidate_test_types: set[str] = {"Always"}
         matched_files: set[str] = set()
@@ -597,7 +607,9 @@ class SelectiveChecks:
         else:
             if "Providers" in candidate_test_types:
                 affected_providers = find_all_providers_affected(
-                    changed_files=self._files, include_docs=False
+                    changed_files=self._files,
+                    include_docs=False,
+                    fail_if_suspended_providers_affected=self._fail_if_suspended_providers_affected(),
                 )
                 if affected_providers != "ALL_PROVIDERS" and affected_providers is not None:
                     candidate_test_types.remove("Providers")
@@ -613,7 +625,7 @@ class SelectiveChecks:
     @staticmethod
     def _extract_long_provider_tests(current_test_types: set[str]):
         """
-        In case there are Provider tests in the list of test to run (either in the form of
+        In case there are Provider tests in the list of test to run - either in the form of
         Providers or Providers[...] we subtract them from the test type,
         and add them to the list of tests to run individually.
 
@@ -697,7 +709,11 @@ class SelectiveChecks:
             return "--package-filter apache-airflow --package-filter docker-stack"
         if self.full_tests_needed:
             return _ALL_DOCS_LIST
-        providers_affected = find_all_providers_affected(changed_files=self._files, include_docs=True)
+        providers_affected = find_all_providers_affected(
+            changed_files=self._files,
+            include_docs=True,
+            fail_if_suspended_providers_affected=self._fail_if_suspended_providers_affected(),
+        )
         if (
             providers_affected == "ALL_PROVIDERS"
             or "docs/conf.py" in self._files
@@ -746,9 +762,41 @@ class SelectiveChecks:
             return _ALL_PROVIDERS_LIST
         if self._are_all_providers_affected():
             return _ALL_PROVIDERS_LIST
-        affected_providers = find_all_providers_affected(changed_files=self._files, include_docs=True)
+        affected_providers = find_all_providers_affected(
+            changed_files=self._files,
+            include_docs=True,
+            fail_if_suspended_providers_affected=self._fail_if_suspended_providers_affected(),
+        )
         if not affected_providers:
             return None
         if affected_providers == "ALL_PROVIDERS":
             return _ALL_PROVIDERS_LIST
         return " ".join(sorted(affected_providers))
+
+    @cached_property
+    def runs_on(self) -> str:
+        if self._github_repository == APACHE_AIRFLOW_GITHUB_REPOSITORY:
+            if self._github_event in [GithubEvents.SCHEDULE, GithubEvents.PUSH]:
+                return RUNS_ON_SELF_HOSTED_RUNNER
+            actor = self._github_actor
+            if self._github_event in (GithubEvents.PULL_REQUEST, GithubEvents.PULL_REQUEST_TARGET):
+                try:
+                    actor = self._github_context_dict["event"]["pull_request"]["user"]["login"]
+                    get_console().print(
+                        f"[warning]The actor: {actor} retrieved from GITHUB_CONTEXT's"
+                        f" event.pull_request.user.login[/]"
+                    )
+                except Exception as e:
+                    get_console().print(f"[warning]Exception when reading user login: {e}[/]")
+                    get_console().print(
+                        f"[info]Could not find the actor from pull request, "
+                        f"falling back to the actor who triggered the PR: {actor}[/]"
+                    )
+            if actor in COMMITTERS and USE_PUBLIC_RUNNERS_LABEL not in self._pr_labels:
+                return RUNS_ON_SELF_HOSTED_RUNNER
+        return RUNS_ON_PUBLIC_RUNNER
+
+    @cached_property
+    def mssql_parallelism(self) -> int:
+        # Limit parallelism for MSSQL to 1 for public runners due to race conditions generated there
+        return SELF_HOSTED_RUNNERS_CPU_COUNT if self.runs_on == RUNS_ON_SELF_HOSTED_RUNNER else 1
diff --git a/dev/breeze/tests/test_cache.py b/dev/breeze/tests/test_cache.py
index 1db27494ab..47ab8a485f 100644
--- a/dev/breeze/tests/test_cache.py
+++ b/dev/breeze/tests/test_cache.py
@@ -37,7 +37,7 @@ AIRFLOW_SOURCES = Path(__file__).parents[3].resolve()
         ("backend", "mysql", (True, ["sqlite", "mysql", "postgres", "mssql"]), None),
         ("backend", "xxx", (False, ["sqlite", "mysql", "postgres", "mssql"]), None),
         ("python_major_minor_version", "3.8", (True, ["3.7", "3.8", "3.9", "3.10", "3.11"]), None),
-        ("python_major_minor_version", "3.5", (False, ["3.7", "3.8", "3.9", "3.10", "3.11"]), None),
+        ("python_major_minor_version", "3.6", (False, ["3.7", "3.8", "3.9", "3.10", "3.11"]), None),
         ("missing", "value", None, AttributeError),
     ],
 )
diff --git a/dev/breeze/tests/test_docker_command_utils.py b/dev/breeze/tests/test_docker_command_utils.py
index e4bc2e641a..89f522ad0d 100644
--- a/dev/breeze/tests/test_docker_command_utils.py
+++ b/dev/breeze/tests/test_docker_command_utils.py
@@ -127,7 +127,7 @@ def test_check_docker_compose_version_unknown(mock_get_console, mock_run_command
     check_docker_compose_version()
     expected_run_command_calls = [
         call(
-            ["docker-compose", "--version"],
+            ["docker", "compose", "version"],
             no_output_dump_on_exception=True,
             capture_output=True,
             text=True,
@@ -150,7 +150,7 @@ def test_check_docker_compose_version_low(mock_get_console, mock_run_command):
     mock_run_command.return_value.stdout = "1.28.5"
     check_docker_compose_version()
     mock_run_command.assert_called_with(
-        ["docker-compose", "--version"],
+        ["docker", "compose", "version"],
         no_output_dump_on_exception=True,
         capture_output=True,
         text=True,
@@ -179,7 +179,7 @@ def test_check_docker_compose_version_ok(mock_get_console, mock_run_command):
     mock_run_command.return_value.stdout = "1.29.0"
     check_docker_compose_version()
     mock_run_command.assert_called_with(
-        ["docker-compose", "--version"],
+        ["docker", "compose", "version"],
         no_output_dump_on_exception=True,
         capture_output=True,
         text=True,
@@ -197,7 +197,7 @@ def test_check_docker_compose_version_higher(mock_get_console, mock_run_command)
     mock_run_command.return_value.stdout = "1.29.2"
     check_docker_compose_version()
     mock_run_command.assert_called_with(
-        ["docker-compose", "--version"],
+        ["docker", "compose", "version"],
         no_output_dump_on_exception=True,
         capture_output=True,
         text=True,
diff --git a/dev/breeze/tests/test_exclude_from_matrix.py b/dev/breeze/tests/test_exclude_from_matrix.py
index 49bb0e5734..7280e0dd55 100644
--- a/dev/breeze/tests/test_exclude_from_matrix.py
+++ b/dev/breeze/tests/test_exclude_from_matrix.py
@@ -24,13 +24,13 @@ from airflow_breeze.utils.exclude_from_matrix import excluded_combos, representa
 @pytest.mark.parametrize(
     "list_1, list_2, expected_representative_list",
     [
-        (["3.6", "3.7"], ["1", "2"], [("3.6", "1"), ("3.7", "2")]),
-        (["3.6", "3.7"], ["1", "2", "3"], [("3.6", "1"), ("3.7", "2"), ("3.6", "3")]),
-        (["3.6", "3.7"], ["1", "2", "3", "4"], [("3.6", "1"), ("3.7", "2"), ("3.6", "3"), ("3.7", "4")]),
+        (["3.8", "3.9"], ["1", "2"], [("3.8", "1"), ("3.9", "2")]),
+        (["3.8", "3.9"], ["1", "2", "3"], [("3.8", "1"), ("3.9", "2"), ("3.8", "3")]),
+        (["3.8", "3.9"], ["1", "2", "3", "4"], [("3.8", "1"), ("3.9", "2"), ("3.8", "3"), ("3.9", "4")]),
         (
-            ["3.6", "3.7", "3.8"],
+            ["3.8", "3.9", "3.10"],
             ["1", "2", "3", "4"],
-            [("3.6", "1"), ("3.7", "2"), ("3.8", "3"), ("3.6", "4")],
+            [("3.8", "1"), ("3.9", "2"), ("3.10", "3"), ("3.8", "4")],
         ),
     ],
 )
diff --git a/dev/breeze/tests/test_pr_info.py b/dev/breeze/tests/test_pr_info.py
index 23a971da5d..7a8d910fe9 100644
--- a/dev/breeze/tests/test_pr_info.py
+++ b/dev/breeze/tests/test_pr_info.py
@@ -39,7 +39,7 @@ def test_pr_info():
         assert wi.head_repo == "test/airflow"
         assert wi.event_name == "pull_request"
         assert wi.pr_number == 26004
-        assert wi.get_runs_on() == "ubuntu-20.04"
+        assert wi.get_runs_on() == "ubuntu-22.04"
         assert wi.is_canary_run() == "false"
         assert wi.run_coverage() == "false"
 
@@ -53,7 +53,7 @@ def test_push_info():
         assert wi.head_repo == "apache/airflow"
         assert wi.event_name == "push"
         assert wi.pr_number is None
-        assert wi.get_runs_on() == "ubuntu-20.04"
+        assert wi.get_runs_on() == "ubuntu-22.04"
         assert wi.is_canary_run() == "true"
         assert wi.run_coverage() == "true"
 
@@ -67,7 +67,7 @@ def test_schedule():
         assert wi.head_repo == "apache/airflow"
         assert wi.event_name == "schedule"
         assert wi.pr_number is None
-        assert wi.get_runs_on() == "ubuntu-20.04"
+        assert wi.get_runs_on() == "ubuntu-22.04"
         assert wi.is_canary_run() == "false"
         assert wi.run_coverage() == "false"
 
@@ -95,7 +95,7 @@ def test_runs_on_forced_public_runner():
         assert wi.head_repo == "apache/airflow"
         assert wi.event_name == "pull_request"
         assert wi.pr_number == 1234
-        assert wi.get_runs_on() == "ubuntu-20.04"
+        assert wi.get_runs_on() == "ubuntu-22.04"
         assert wi.is_canary_run() == "false"
         assert wi.run_coverage() == "false"
 
@@ -109,7 +109,7 @@ def test_runs_on_simple_pr_other_repo():
         assert wi.head_repo == "test/airflow"
         assert wi.event_name == "pull_request"
         assert wi.pr_number == 1234
-        assert wi.get_runs_on() == "ubuntu-20.04"
+        assert wi.get_runs_on() == "ubuntu-22.04"
         assert wi.is_canary_run() == "false"
         assert wi.run_coverage() == "false"
 
diff --git a/dev/breeze/tests/test_provider_dependencies.py b/dev/breeze/tests/test_provider_dependencies.py
new file mode 100644
index 0000000000..5a1a1b0800
--- /dev/null
+++ b/dev/breeze/tests/test_provider_dependencies.py
@@ -0,0 +1,47 @@
+# 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.
+from __future__ import annotations
+
+import pytest
+
+from airflow_breeze.utils.provider_dependencies import get_related_providers
+
+
+def test_get_downstream_only():
+    related_providers = get_related_providers(
+        "trino", upstream_dependencies=False, downstream_dependencies=True
+    )
+    assert {"google", "common.sql"} == related_providers
+
+
+def test_get_upstream_only():
+    related_providers = get_related_providers(
+        "trino", upstream_dependencies=True, downstream_dependencies=False
+    )
+    assert {"mysql", "google"} == related_providers
+
+
+def test_both():
+    related_providers = get_related_providers(
+        "trino", upstream_dependencies=True, downstream_dependencies=True
+    )
+    assert {"google", "mysql", "common.sql"} == related_providers
+
+
+def test_none():
+    with pytest.raises(ValueError, match=r".*must be.*"):
+        get_related_providers("trino", upstream_dependencies=False, downstream_dependencies=False)
diff --git a/dev/breeze/tests/test_selective_checks.py b/dev/breeze/tests/test_selective_checks.py
index 6597150d5e..2414bbe20a 100644
--- a/dev/breeze/tests/test_selective_checks.py
+++ b/dev/breeze/tests/test_selective_checks.py
@@ -17,10 +17,11 @@
 from __future__ import annotations
 
 import re
+from typing import Any
 
 import pytest
 
-from airflow_breeze.global_constants import GithubEvents
+from airflow_breeze.global_constants import COMMITTERS, GithubEvents
 from airflow_breeze.utils.selective_checks import SelectiveChecks
 
 ANSI_COLORS_MATCHER = re.compile(r"(?:\x1B[@-_]|[\x80-\x9F])[0-?]*[ -/]*[@-~]")
@@ -266,10 +267,10 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str):
                 ("setup.py",),
                 {
                     "affected-providers-list-as-string": ALL_PROVIDERS_AFFECTED,
-                    "all-python-versions": "['3.7', '3.8', '3.9', '3.10']",
-                    "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10",
-                    "python-versions": "['3.7', '3.8', '3.9', '3.10']",
-                    "python-versions-list-as-string": "3.7 3.8 3.9 3.10",
+                    "all-python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']",
+                    "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11",
+                    "python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']",
+                    "python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11",
                     "image-build": "true",
                     "needs-helm-tests": "true",
                     "run-tests": "true",
@@ -289,10 +290,10 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str):
                 ("generated/provider_dependencies.json",),
                 {
                     "affected-providers-list-as-string": ALL_PROVIDERS_AFFECTED,
-                    "all-python-versions": "['3.7', '3.8', '3.9', '3.10']",
-                    "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10",
-                    "python-versions": "['3.7', '3.8', '3.9', '3.10']",
-                    "python-versions-list-as-string": "3.7 3.8 3.9 3.10",
+                    "all-python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']",
+                    "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11",
+                    "python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']",
+                    "python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11",
                     "image-build": "true",
                     "needs-helm-tests": "true",
                     "run-tests": "true",
@@ -397,10 +398,10 @@ def test_expected_output_pull_request_main(
                 "main",
                 {
                     "affected-providers-list-as-string": ALL_PROVIDERS_AFFECTED,
-                    "all-python-versions": "['3.7', '3.8', '3.9', '3.10']",
-                    "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10",
-                    "python-versions": "['3.7', '3.8', '3.9', '3.10']",
-                    "python-versions-list-as-string": "3.7 3.8 3.9 3.10",
+                    "all-python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']",
+                    "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11",
+                    "python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']",
+                    "python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11",
                     "image-build": "true",
                     "run-tests": "true",
                     "docs-build": "true",
@@ -424,10 +425,10 @@ def test_expected_output_pull_request_main(
                 "main",
                 {
                     "affected-providers-list-as-string": ALL_PROVIDERS_AFFECTED,
-                    "all-python-versions": "['3.7', '3.8', '3.9', '3.10']",
-                    "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10",
-                    "python-versions": "['3.7', '3.8', '3.9', '3.10']",
-                    "python-versions-list-as-string": "3.7 3.8 3.9 3.10",
+                    "all-python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']",
+                    "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11",
+                    "python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']",
+                    "python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11",
                     "image-build": "true",
                     "run-tests": "true",
                     "docs-build": "true",
@@ -449,10 +450,10 @@ def test_expected_output_pull_request_main(
                 "main",
                 {
                     "affected-providers-list-as-string": ALL_PROVIDERS_AFFECTED,
-                    "all-python-versions": "['3.7', '3.8', '3.9', '3.10']",
-                    "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10",
-                    "python-versions": "['3.7', '3.8', '3.9', '3.10']",
-                    "python-versions-list-as-string": "3.7 3.8 3.9 3.10",
+                    "all-python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']",
+                    "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11",
+                    "python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']",
+                    "python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11",
                     "image-build": "true",
                     "run-tests": "true",
                     "docs-build": "true",
@@ -474,10 +475,10 @@ def test_expected_output_pull_request_main(
                 "v2-3-stable",
                 {
                     "affected-providers-list-as-string": ALL_PROVIDERS_AFFECTED,
-                    "all-python-versions": "['3.7', '3.8', '3.9', '3.10']",
-                    "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10",
-                    "python-versions": "['3.7', '3.8', '3.9', '3.10']",
-                    "python-versions-list-as-string": "3.7 3.8 3.9 3.10",
+                    "all-python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']",
+                    "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11",
+                    "python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']",
+                    "python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11",
                     "image-build": "true",
                     "run-tests": "true",
                     "docs-build": "true",
@@ -787,8 +788,8 @@ def test_expected_output_pull_request_target(
             "main",
             {
                 "affected-providers-list-as-string": ALL_PROVIDERS_AFFECTED,
-                "all-python-versions": "['3.7', '3.8', '3.9', '3.10']",
-                "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10",
+                "all-python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']",
+                "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11",
                 "image-build": "true",
                 "needs-helm-tests": "true",
                 "run-tests": "true",
@@ -807,8 +808,8 @@ def test_expected_output_pull_request_target(
             "v2-3-stable",
             {
                 "affected-providers-list-as-string": ALL_PROVIDERS_AFFECTED,
-                "all-python-versions": "['3.7', '3.8', '3.9', '3.10']",
-                "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10",
+                "all-python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']",
+                "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11",
                 "image-build": "true",
                 "needs-helm-tests": "false",
                 "run-tests": "true",
@@ -826,8 +827,8 @@ def test_expected_output_pull_request_target(
             "main",
             {
                 "affected-providers-list-as-string": ALL_PROVIDERS_AFFECTED,
-                "all-python-versions": "['3.7', '3.8', '3.9', '3.10']",
-                "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10",
+                "all-python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']",
+                "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11",
                 "image-build": "true",
                 "needs-helm-tests": "true",
                 "run-tests": "true",
@@ -878,8 +879,8 @@ def test_no_commit_provided_trigger_full_build_for_any_event_type(github_event):
     )
     assert_outputs_are_printed(
         {
-            "all-python-versions": "['3.7', '3.8', '3.9', '3.10']",
-            "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10",
+            "all-python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']",
+            "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11",
             "image-build": "true",
             "needs-helm-tests": "true",
             "run-tests": "true",
@@ -1071,3 +1072,123 @@ def test_docs_filter(files: tuple[str, ...], expected_outputs: dict[str, str]):
         default_branch="main",
     )
     assert_outputs_are_printed(expected_outputs, str(stderr))
+
+
+@pytest.mark.parametrize(
+    "github_event, github_actor, github_repository, pr_labels, github_context_dict, runs_on",
+    [
+        pytest.param(GithubEvents.PUSH, "user", "apache/airflow", [], dict(), "self-hosted", id="Push event"),
+        pytest.param(
+            GithubEvents.PUSH,
+            "user",
+            "private/airflow",
+            [],
+            dict(),
+            "ubuntu-22.04",
+            id="Push event for private repo",
+        ),
+        pytest.param(
+            GithubEvents.PULL_REQUEST, "user", "apache/airflow", [], dict(), "ubuntu-22.04", id="Pull request"
+        ),
+        pytest.param(
+            GithubEvents.PULL_REQUEST,
+            "user",
+            "private/airflow",
+            [],
+            dict(),
+            "ubuntu-22.04",
+            id="Pull request private repo",
+        ),
+        pytest.param(
+            GithubEvents.PULL_REQUEST,
+            COMMITTERS[0],
+            "apache/airflow",
+            [],
+            dict(),
+            "self-hosted",
+            id="Pull request committer",
+        ),
+        pytest.param(
+            GithubEvents.PULL_REQUEST,
+            COMMITTERS[0],
+            "apache/airflow",
+            [],
+            dict(event=dict(pull_request=dict(user=dict(login="user")))),
+            "ubuntu-22.04",
+            id="Pull request committer pr non-committer",
+        ),
+        pytest.param(
+            GithubEvents.PULL_REQUEST,
+            COMMITTERS[0],
+            "private/airflow",
+            [],
+            dict(),
+            "ubuntu-22.04",
+            id="Pull request private repo committer",
+        ),
+        pytest.param(
+            GithubEvents.PULL_REQUEST_TARGET,
+            "user",
+            "apache/airflow",
+            [],
+            dict(),
+            "ubuntu-22.04",
+            id="Pull request target",
+        ),
+        pytest.param(
+            GithubEvents.PULL_REQUEST_TARGET,
+            "user",
+            "private/airflow",
+            [],
+            dict(),
+            "ubuntu-22.04",
+            id="Pull request target private repo",
+        ),
+        pytest.param(
+            GithubEvents.PULL_REQUEST_TARGET,
+            COMMITTERS[0],
+            "apache/airflow",
+            [],
+            dict(),
+            "self-hosted",
+            id="Pull request target committer",
+        ),
+        pytest.param(
+            GithubEvents.PULL_REQUEST,
+            COMMITTERS[0],
+            "apache/airflow",
+            [],
+            dict(event=dict(pull_request=dict(user=dict(login="user")))),
+            "ubuntu-22.04",
+            id="Pull request target committer pr non-committer",
+        ),
+        pytest.param(
+            GithubEvents.PULL_REQUEST_TARGET,
+            COMMITTERS[0],
+            "private/airflow",
+            [],
+            dict(),
+            "ubuntu-22.04",
+            id="Pull request targe private repo committer",
+        ),
+    ],
+)
+def test_runs_on(
+    github_event: GithubEvents,
+    github_actor: str,
+    github_repository: str,
+    pr_labels: list[str],
+    github_context_dict: dict[str, Any],
+    runs_on: str,
+):
+    stderr = SelectiveChecks(
+        files=(),
+        commit_ref="",
+        github_repository=github_repository,
+        github_event=github_event,
+        github_actor=github_actor,
+        github_context_dict=github_context_dict,
+        pr_labels=(),
+        default_branch="main",
+    )
+    assert_outputs_are_printed({"runs-on": runs_on}, str(stderr))
diff --git a/dev/provider_packages/prepare_provider_packages.py b/dev/provider_packages/prepare_provider_packages.py
index 2605c600c7..c5962b6d78 100755
--- a/dev/provider_packages/prepare_provider_packages.py
+++ b/dev/provider_packages/prepare_provider_packages.py
@@ -52,7 +52,7 @@ from rich.console import Console
 from rich.syntax import Syntax
 from yaml import safe_load
 
-ALL_PYTHON_VERSIONS = ["3.7", "3.8", "3.9", "3.10", "3.11"]
+ALL_PYTHON_VERSIONS = ["3.7", "3.7", "3.8", "3.9", "3.10", "3.11"]
 
 INITIAL_CHANGELOG_CONTENT = """
 
diff --git a/docs/apache-airflow/installation/supported-versions.rst b/docs/apache-airflow/installation/supported-versions.rst
index dae078832c..00607489a4 100644
--- a/docs/apache-airflow/installation/supported-versions.rst
+++ b/docs/apache-airflow/installation/supported-versions.rst
@@ -29,7 +29,7 @@ Apache Airflow version life cycle:
 =========  =====================  =========  ===============  =================  ================
 Version    Current Patch/Minor    State      First Release    Limited Support    EOL/Terminated
 =========  =====================  =========  ===============  =================  ================
-2          2.6.2                  Supported  Dec 17, 2020     TBD                TBD
+2          2.6.1                  Supported  Dec 17, 2020     TBD                TBD
 1.10       1.10.15                EOL        Aug 27, 2018     Dec 17, 2020       June 17, 2021
 1.9        1.9.0                  EOL        Jan 03, 2018     Aug 27, 2018       Aug 27, 2018
 1.8        1.8.2                  EOL        Mar 19, 2017     Jan 03, 2018       Jan 03, 2018
diff --git a/images/breeze/output-commands-hash.txt b/images/breeze/output-commands-hash.txt
index 7cb4ad1b9b..80b78b02bc 100644
--- a/images/breeze/output-commands-hash.txt
+++ b/images/breeze/output-commands-hash.txt
@@ -1,63 +1,64 @@
 # This file is automatically generated by pre-commit. If you have a conflict with this file
 # Please do not solve it but run `breeze setup regenerate-command-images`.
 # This command should fix the conflict and regenerate help images that you have conflict with.
-main:50bf123133528ceffcb4034e775c6250
+main:5bd7ecf7e8fdd34879f24ad8ac390405
 build-docs:093cf82ab80aee65c6ada9b16ac60612
 ci:fix-ownership:fee2c9ec9ef19686792002ae054fecdd
 ci:free-space:47234aa0a60b0efd84972e6e797379f8
 ci:get-workflow-info:01ee34c33ad62fa5dc33e0ac8773223f
 ci:resource-check:1d4fe47dff9fc64ac1648ec4beb2d85c
-ci:selective-check:3a085894f24cb909812fbc8253a21e13
-ci:e51cbc38a202b92b7dc6288f6344c412
-ci-image:build:220fef974bf8645f75f0620ad4cbe87e
+ci:selective-check:f2f76d192723dfdf6cf0ada6aba05fee
+ci:2f985ab2973ce0bbea558d6fa9111dd1
+ci-image:build:95460ed49160ce33be95106c689b356d
 ci-image:pull:68fb55a81db9fc1615424c9bef438bd7
-ci-image:verify:3c2588eddc2bef7dd14c142a1f56a56f
-ci-image:44323871cfeef8dc1872b04c37bf31c8
+ci-image:verify:58095f040d6a2897e9d87cfdaaf55756
+ci-image:8719671c8f411019bcf1869b56d4692d
 cleanup:231de69d5f47ba29c883164e4575e310
 compile-www-assets:c8a8c4f002f7246d0541897fc7c70313
+down:99efb2055475cd40656d5498aee74ef6
 exec:42bbd3c1659128b0341ae118c3482da2
 k8s:build-k8s-image:7ef9f8d1fa725b7d6dc7daad72d66825
-k8s:configure-cluster:5ecd9b53ebf48079f6eff8f018127d7a
-k8s:create-cluster:cf4676b35b9b15badacd9fbbfdfd7271
-k8s:delete-cluster:b36917065e2ead6ecc900b7a2d444fb1
-k8s:deploy-airflow:607fce31efb3e8f4c4d568298943b482
-k8s:k9s:36ce3eb4fc1a96a6e906a15d50ddab65
-k8s:logs:de52de8caed080f3fc4c1048c151a963
-k8s:run-complete-tests:8467ba2bfa64f8208b2ef1f1bf152f7b
+k8s:configure-cluster:1c64a309a58dea6baf61a5ed223f1ac5
+k8s:create-cluster:49b63399485b06ffe5424c737a1e8ab3
+k8s:delete-cluster:0741154a3988a3c8591ff9af409ddf10
+k8s:deploy-airflow:1e5038d63fe6b77f017fb47ab470a860
+k8s:k9s:e2ffb041b003faabfafe2aff3b48f023
+k8s:logs:89503ad44dc0b480146ca2978719f585
+k8s:run-complete-tests:6adc95e5f48cee11aebeac6bcd3c7e7f
 k8s:setup-env:b0ea72ef1819f831b1f80e8bd4d299ce
-k8s:shell:9677ed7b62a76736666518d5193cded7
-k8s:status:99deec900b7eabc38f8c97fbf999d82a
-k8s:tests:7ba5e47d4162789b0c356cb6f90fe893
-k8s:upload-k8s-image:6a0ff85a688741e7b9986775c24bff8f
-k8s:6bba6f6cbe55c99a267e03f6eabc4719
-prod-image:build:33f3106e4fb9c08a7d6ece0aede95b9b
+k8s:shell:f9f4a460a0b94df5d28c7522a19f76b8
+k8s:status:f4a5a7c657825ce6ab76e7d9152d98f4
+k8s:tests:3ae800a20447049eafdc10db122a10bf
+k8s:upload-k8s-image:aa691f32e5963fe7a0435ef2ca8b59ae
+k8s:aa5348c18c987567bbd7800fc2aff378
+prod-image:build:c1d57f57103efe62b24444abd00f6d57
 prod-image:pull:722a843b29ca251aed1a5e001cf48db2
-prod-image:verify:4edd26d1126761777e934eae2b8d57dd
-prod-image:117f83ec4d607146f4f0325a314240ae
+prod-image:verify:e7af8401f1d1fc90075d8f6e8215a9f4
+prod-image:d5cb477a8ba7fa861301fa24db49d2ae
 release-management:create-minor-branch:6a01066dce15e09fb269a8385626657c
 release-management:generate-constraints:0c8e5c1b57b486724760d4afdfd571f7
 release-management:generate-issue-content-providers:f3c00ba74e3afc054fe29b65156740ac
+release-management:install-provider-packages:b05446600134e8f0eca5cf8c6c1de856
 release-management:prepare-airflow-package:3ac14ea6d2b09614959c0ec4fd564789
-release-management:prepare-provider-documentation:40d540fdfebf6c8ddc4cd151d52b88e6
+release-management:prepare-provider-documentation:ef82f40591e467145085f5c955487ac4
 release-management:prepare-provider-packages:72dd7c3b19f85024bc9a4939cac5d87c
 release-management:release-prod-images:dff5d068a253dcc3ac1e65a6af150e3d
 release-management:start-rc-process:6aafbaceabd7b67b9a1af4c2f59abc4c
 release-management:start-release:acb384d86e02ff5fde1bf971897be17c
-release-management:verify-provider-packages:9d68eec8108af28d9b9b45204e297be3
-release-management:69d5cf242328fac22fd8a2ac6104a955
+release-management:verify-provider-packages:7da96dd515876f4a40fd63486b478d0c
+release-management:2b58afb740a9c7620373cfd71307c9d7
 setup:autocomplete:03343478bf1d0cf9c101d454cdb63b68
-setup:check-all-params-in-groups:99f8ad2d71f6f78ac2a17e4ac7c87a23
+setup:check-all-params-in-groups:1a6a07dcef12a55bf42bcbcef0d86adc
 setup:config:584023d1d225879a5d19e347fe9db1d3
-setup:regenerate-command-images:b3564d29d2a890a479a01006cd4bb654
+setup:regenerate-command-images:873006338375c95a3d683da214366191
 setup:self-upgrade:d02f70c7a230eae3463ceec2056b63fa
 setup:version:123b462a421884dc2320ffc5e54b2478
-setup:fde2b1de7d249cd378ea9e9543cd87af
-shell:9d2baa47f92bd1b45eed680cb1ea9135
-start-airflow:2602bb60f2fad4e7c5231fd838be98cf
-static-checks:543f0c776d0f198e80a0f75058445bb2
-stop:e5aa686b4e53707ced4039d8414d5cd6
-testing:docker-compose-tests:bc57e17e2783a4571ded1c93f27c6315
+setup:df504f6ad27442c86f9afaa8f82c2eef
+shell:29499e4b0d2738c021c33aace919cd2a
+start-airflow:4d6c3075e899da403b4bb7e07e19c2fd
+static-checks:4923b4277d705d876609bc96375c7cc4
+testing:docker-compose-tests:fb26a48e083b0a5c6eae2ebd052eaf72
 testing:helm-tests:936cf28fd84ce4ff5113795fdae9624b
-testing:integration-tests:de637f9302805409184d6eb951d8a5f1
-testing:tests:9c01fb0efb70b1c33bdad669ea0e497c
-testing:de82dcaf2efff07c46b5a8e292cfb7f8
+testing:integration-tests:372b0e421ebcefb1ea7a1008658134c3
+testing:tests:70fb533f0dad743b261e00e9fa23f2d4
+testing:e4935b5b46d641b842f8628bf7dc96e7
diff --git a/images/breeze/output-commands.svg b/images/breeze/output-commands.svg
index d32d063ec3..c664282914 100644
--- a/images/breeze/output-commands.svg
+++ b/images/breeze/output-commands.svg
@@ -204,8 +204,8 @@
 </text><text class="breeze-help-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-help-line-9)">│</text><text class="breeze-help-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-help-line-9)">-</text><text class="breeze-help-r4" x="36.6" y="239.6" textLength="73.2" clip-path="url(#breeze-help-line-9)">-mysql</text><text class="breeze-help-r4" x="109.8" y="239.6" textLength="97.6" clip-path="url(#breeze-help-line-9)">-version</text><text class="breeze-help-r6" x= [...]
 </text><text class="breeze-help-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-help-line-10)">│</text><text class="breeze-help-r4" x="24.4" y="264" textLength="12.2" clip-path="url(#breeze-help-line-10)">-</text><text class="breeze-help-r4" x="36.6" y="264" textLength="73.2" clip-path="url(#breeze-help-line-10)">-mssql</text><text class="breeze-help-r4" x="109.8" y="264" textLength="97.6" clip-path="url(#breeze-help-line-10)">-version</text><text class="breeze-help-r6" x="305 [...]
 </text><text class="breeze-help-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-help-line-11)">│</text><text class="breeze-help-r4" x="24.4" y="288.4" textLength="12.2" clip-path="url(#breeze-help-line-11)">-</text><text class="breeze-help-r4" x="36.6" y="288.4" textLength="146.4" clip-path="url(#breeze-help-line-11)">-integration</text><text class="breeze-help-r2" x="353.8" y="288.4" textLength="1085.8" clip-path="url(#breeze-help-line-11)">Integration(s)&#160;to&#160;enabl [...]
-</text><text class="breeze-help-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-help-line-12)">│</text><text class="breeze-help-r7" x="353.8" y="312.8" textLength="1085.8" clip-path="url(#breeze-help-line-12)">(all&#160;|&#160;all-testable&#160;|&#160;cassandra&#160;|&#160;celery&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;otel&#160;|&#160;pinot&#160;|&#160;statsd&#160;|&#160;&#160;&#160;&#160;</text><text class="breeze-help-r5" x="1451.8" y="312.8" textLength="12.2"  [...]
-</text><text class="breeze-help-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-help-line-13)">│</text><text class="breeze-help-r7" x="353.8" y="337.2" textLength="1085.8" clip-path="url(#breeze-help-line-13)">statsd&#160;|&#160;trino)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="breeze-help-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-help-line-12)">│</text><text class="breeze-help-r7" x="353.8" y="312.8" textLength="1085.8" clip-path="url(#breeze-help-line-12)">(all&#160;|&#160;all-testable&#160;|&#160;cassandra&#160;|&#160;celery&#160;|&#160;kafka&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;otel&#160;|&#160;pinot&#160;|&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-help-r5" x="1451.8" y="312.8" textLength="1 [...]
+</text><text class="breeze-help-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-help-line-13)">│</text><text class="breeze-help-r7" x="353.8" y="337.2" textLength="1085.8" clip-path="url(#breeze-help-line-13)">statsd&#160;|&#160;statsd&#160;|&#160;trino)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
 </text><text class="breeze-help-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-help-line-14)">│</text><text class="breeze-help-r4" x="24.4" y="361.6" textLength="12.2" clip-path="url(#breeze-help-line-14)">-</text><text class="breeze-help-r4" x="36.6" y="361.6" textLength="97.6" clip-path="url(#breeze-help-line-14)">-forward</text><text class="breeze-help-r4" x="134.2" y="361.6" textLength="146.4" clip-path="url(#breeze-help-line-14)">-credentials</text><text class="breeze- [...]
 </text><text class="breeze-help-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-help-line-15)">│</text><text class="breeze-help-r4" x="24.4" y="386" textLength="12.2" clip-path="url(#breeze-help-line-15)">-</text><text class="breeze-help-r4" x="36.6" y="386" textLength="36.6" clip-path="url(#breeze-help-line-15)">-db</text><text class="breeze-help-r4" x="73.2" y="386" textLength="73.2" clip-path="url(#breeze-help-line-15)">-reset</text><text class="breeze-help-r6" x="305" y="3 [...]
 </text><text class="breeze-help-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-help-line-16)">│</text><text class="breeze-help-r4" x="24.4" y="410.4" textLength="12.2" clip-path="url(#breeze-help-line-16)">-</text><text class="breeze-help-r4" x="36.6" y="410.4" textLength="48.8" clip-path="url(#breeze-help-line-16)">-max</text><text class="breeze-help-r4" x="85.4" y="410.4" textLength="61" clip-path="url(#breeze-help-line-16)">-time</text><text class="breeze-help-r2" x="353 [...]
@@ -223,7 +223,7 @@
 </text><text class="breeze-help-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-help-line-28)">│</text><text class="breeze-help-r2" x="268.4" y="703.2" textLength="1171.2" clip-path="url(#breeze-help-line-28)">if&#160;contents&#160;of&#160;www&#160;directory&#160;changed.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
 </text><text class="breeze-help-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-help-line-29)">│</text><text class="breeze-help-r4" x="24.4" y="727.6" textLength="219.6" clip-path="url(#breeze-help-line-29)">static-checks&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-help-r2" x="268.4" y="727.6" textLength="1171.2" clip-path="url(#breeze-help-line-29)">Run&#160;static&#160;checks.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
 </text><text class="breeze-help-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-help-line-30)">│</text><text class="breeze-help-r4" x="24.4" y="752" textLength="219.6" clip-path="url(#breeze-help-line-30)">build-docs&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-help-r2" x="268.4" y="752" textLength="1171.2" clip-path="url(#breeze-help-line-30)">Build&#160;documentation&#160;in&#160;the&#160;container.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="breeze-help-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-help-line-31)">│</text><text class="breeze-help-r4" x="24.4" y="776.4" textLength="219.6" clip-path="url(#breeze-help-line-31)">stop&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-help-r2" x="268.4" y="776.4" textLength="1171.2" clip-path="url(#breeze-help-line-31)">Stop&#160;running&#160;breeze&#160;environment.&#160;&#160;&#160;&#16 [...]
+</text><text class="breeze-help-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-help-line-31)">│</text><text class="breeze-help-r4" x="24.4" y="776.4" textLength="219.6" clip-path="url(#breeze-help-line-31)">down&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-help-r2" x="268.4" y="776.4" textLength="1171.2" clip-path="url(#breeze-help-line-31)">Stop&#160;running&#160;breeze&#160;environment.&#160;&#160;&#160;&#16 [...]
 </text><text class="breeze-help-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-help-line-32)">│</text><text class="breeze-help-r4" x="24.4" y="800.8" textLength="219.6" clip-path="url(#breeze-help-line-32)">shell&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-help-r2" x="268.4" y="800.8" textLength="1171.2" clip-path="url(#breeze-help-line-32)">Enter&#160;breeze&#160;environment.&#160;this&#160;is&#160;the&#160;defaul [...]
 </text><text class="breeze-help-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-help-line-33)">│</text><text class="breeze-help-r4" x="24.4" y="825.2" textLength="219.6" clip-path="url(#breeze-help-line-33)">exec&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-help-r2" x="268.4" y="825.2" textLength="1171.2" clip-path="url(#breeze-help-line-33)">Joins&#160;the&#160;interactive&#160;shell&#160;of&#160;running&#160; [...]
 </text><text class="breeze-help-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-help-line-34)">│</text><text class="breeze-help-r4" x="24.4" y="849.6" textLength="219.6" clip-path="url(#breeze-help-line-34)">compile-www-assets</text><text class="breeze-help-r2" x="268.4" y="849.6" textLength="1171.2" clip-path="url(#breeze-help-line-34)">Compiles&#160;www&#160;assets.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
diff --git a/images/breeze/output_ci-image_build.svg b/images/breeze/output_ci-image_build.svg
index 05742c9820..0c973e34cd 100644
--- a/images/breeze/output_ci-image_build.svg
+++ b/images/breeze/output_ci-image_build.svg
@@ -291,54 +291,54 @@
 </text><text class="breeze-ci-image-build-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-15)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="386" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-15)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="386" textLength="85.4" clip-path="url(#breeze-ci-image-build-line-15)">-docker</text><text class="breeze-ci-image-build-r4" x="122" y="386" textLength="73.2" clip-path="url(#bre [...]
 </text><text class="breeze-ci-image-build-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-16)">│</text><text class="breeze-ci-image-build-r5" x="475.8" y="410.4" textLength="549" clip-path="url(#breeze-ci-image-build-line-16)">[default:&#160;registry]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-ci-image-build-r5" x="145 [...]
 </text><text class="breeze-ci-image-build-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-17)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="434.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-17)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="434.8" textLength="73.2" clip-path="url(#breeze-ci-image-build-line-17)">-force</text><text class="breeze-ci-image-build-r4" x="109.8" y="434.8" textLength="73.2" clip-path= [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-18)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="459.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-18)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="459.2" textLength="85.4" clip-path="url(#breeze-ci-image-build-line-18)">-github</text><text class="breeze-ci-image-build-r4" x="122" y="459.2" textLength="134.2" clip-path= [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-19)">│</text><text class="breeze-ci-image-build-r5" x="475.8" y="483.6" textLength="585.6" clip-path="url(#breeze-ci-image-build-line-19)">[default:&#160;apache/airflow]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-ci-image-build-r5" x="1451.8" y="48 [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="508" textLength="1464" clip-path="url(#breeze-ci-image-build-line-20)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-ci-image-build-r2" x="1464" y="508" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-20)">
-</text><text class="breeze-ci-image-build-r5" x="0" y="532.4" textLength="24.4" clip-path="url(#breeze-ci-image-build-line-21)">╭─</text><text class="breeze-ci-image-build-r5" x="24.4" y="532.4" textLength="353.8" clip-path="url(#breeze-ci-image-build-line-21)">&#160;Building&#160;images&#160;in&#160;parallel&#160;</text><text class="breeze-ci-image-build-r5" x="378.2" y="532.4" textLength="1061.4" clip-path="url(#breeze-ci-image-build-line-21)">────────────────────────────────────────── [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-22)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="556.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-22)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="556.8" textLength="48.8" clip-path="url(#breeze-ci-image-build-line-22)">-run</text><text class="breeze-ci-image-build-r4" x="85.4" y="556.8" textLength="146.4" clip-path="u [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-23)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="581.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-23)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="581.2" textLength="146.4" clip-path="url(#breeze-ci-image-build-line-23)">-parallelism</text><text class="breeze-ci-image-build-r2" x="378.2" y="581.2" textLength="915" clip [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-24)">│</text><text class="breeze-ci-image-build-r7" x="378.2" y="605.6" textLength="915" clip-path="url(#breeze-ci-image-build-line-24)">(INTEGER&#160;RANGE)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-25)">│</text><text class="breeze-ci-image-build-r5" x="378.2" y="630" textLength="915" clip-path="url(#breeze-ci-image-build-line-25)">[default:&#160;4;&#160;1&lt;=x&lt;=8]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-26)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="654.4" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-26)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="654.4" textLength="85.4" clip-path="url(#breeze-ci-image-build-line-26)">-python</text><text class="breeze-ci-image-build-r4" x="122" y="654.4" textLength="109.8" clip-path= [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-27)">│</text><text class="breeze-ci-image-build-r5" x="378.2" y="678.8" textLength="951.6" clip-path="url(#breeze-ci-image-build-line-27)">[default:&#160;3.7&#160;3.8&#160;3.9&#160;3.10&#160;3.11]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-28)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="703.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-28)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="703.2" textLength="61" clip-path="url(#breeze-ci-image-build-line-28)">-skip</text><text class="breeze-ci-image-build-r4" x="97.6" y="703.2" textLength="97.6" clip-path="url [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-29)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="727.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-29)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="727.6" textLength="73.2" clip-path="url(#breeze-ci-image-build-line-29)">-debug</text><text class="breeze-ci-image-build-r4" x="109.8" y="727.6" textLength="122" clip-path=" [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-30)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="752" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-30)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="752" textLength="97.6" clip-path="url(#breeze-ci-image-build-line-30)">-include</text><text class="breeze-ci-image-build-r4" x="134.2" y="752" textLength="195.2" clip-path="url( [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="776.4" textLength="1464" clip-path="url(#breeze-ci-image-build-line-31)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-ci-image-build-r2" x="1464" y="776.4" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-31)">
-</text><text class="breeze-ci-image-build-r5" x="0" y="800.8" textLength="24.4" clip-path="url(#breeze-ci-image-build-line-32)">╭─</text><text class="breeze-ci-image-build-r5" x="24.4" y="800.8" textLength="439.2" clip-path="url(#breeze-ci-image-build-line-32)">&#160;Advanced&#160;options&#160;(for&#160;power&#160;users)&#160;</text><text class="breeze-ci-image-build-r5" x="463.6" y="800.8" textLength="976" clip-path="url(#breeze-ci-image-build-line-32)">───────────────────────────────── [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-33)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="825.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-33)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="825.2" textLength="97.6" clip-path="url(#breeze-ci-image-build-line-33)">-builder</text><text class="breeze-ci-image-build-r2" x="463.6" y="825.2" textLength="756.4" clip-pa [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-34)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="849.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-34)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="849.6" textLength="97.6" clip-path="url(#breeze-ci-image-build-line-34)">-install</text><text class="breeze-ci-image-build-r4" x="134.2" y="849.6" textLength="280.6" clip-pa [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-35)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="874" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-35)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="874" textLength="97.6" clip-path="url(#breeze-ci-image-build-line-35)">-airflow</text><text class="breeze-ci-image-build-r4" x="134.2" y="874" textLength="256.2" clip-path="url( [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-36)">│</text><text class="breeze-ci-image-build-r2" x="463.6" y="898.4" textLength="366" clip-path="url(#breeze-ci-image-build-line-36)">file.&#160;It&#160;could&#160;be&#160;full&#160;remote&#160;</text><text class="breeze-ci-image-build-r4" x="829.6" y="898.4" textLength="36.6" clip-path="url(#breeze-ci-image-build-line-36)">URL</text><text class="breeze-ci-image-b [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-37)">│</text><text class="breeze-ci-image-build-r2" x="463.6" y="922.8" textLength="976" clip-path="url(#breeze-ci-image-build-line-37)">`docker-context-files`&#160;(in&#160;this&#160;case&#160;it&#160;has&#160;to&#160;start&#160;with&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-38)">│</text><text class="breeze-ci-image-build-r2" x="463.6" y="947.2" textLength="976" clip-path="url(#breeze-ci-image-build-line-38)">/opt/airflow/docker-context-files).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-39)">│</text><text class="breeze-ci-image-build-r7" x="463.6" y="971.6" textLength="976" clip-path="url(#breeze-ci-image-build-line-39)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="996" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-40)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="996" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-40)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="996" textLength="97.6" clip-path="url(#breeze-ci-image-build-line-40)">-airflow</text><text class="breeze-ci-image-build-r4" x="134.2" y="996" textLength="207.4" clip-path="url( [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="1020.4" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-41)">│</text><text class="breeze-ci-image-build-r7" x="463.6" y="1020.4" textLength="866.2" clip-path="url(#breeze-ci-image-build-line-41)">(constraints-source-providers&#160;|&#160;constraints&#160;|&#160;constraints-no-providers)</text><text class="breeze-ci-image-build-r5" x="1451.8" y="1020.4" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-41)">│</ [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="1044.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-42)">│</text><text class="breeze-ci-image-build-r5" x="463.6" y="1044.8" textLength="866.2" clip-path="url(#breeze-ci-image-build-line-42)">[default:&#160;constraints-source-providers]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="1069.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-43)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-43)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="1069.2" textLength="97.6" clip-path="url(#breeze-ci-image-build-line-43)">-airflow</text><text class="breeze-ci-image-build-r4" x="134.2" y="1069.2" textLength="268.4" cli [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="1093.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-44)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-44)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="1093.6" textLength="85.4" clip-path="url(#breeze-ci-image-build-line-44)">-python</text><text class="breeze-ci-image-build-r4" x="122" y="1093.6" textLength="73.2" clip-pa [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="1118" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-45)">│</text><text class="breeze-ci-image-build-r2" x="463.6" y="1118" textLength="280.6" clip-path="url(#breeze-ci-image-build-line-45)">something&#160;like:&#160;python:</text><text class="breeze-ci-image-build-r4" x="744.2" y="1118" textLength="85.4" clip-path="url(#breeze-ci-image-build-line-45)">VERSION</text><text class="breeze-ci-image-build-r2" x="829.6" y="11 [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="1142.4" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-46)">│</text><text class="breeze-ci-image-build-r7" x="463.6" y="1142.4" textLength="976" clip-path="url(#breeze-ci-image-build-line-46)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="1166.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-47)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-47)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="1166.8" textLength="134.2" clip-path="url(#breeze-ci-image-build-line-47)">-additional</text><text class="breeze-ci-image-build-r4" x="170.8" y="1166.8" textLength="146.4" [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="1191.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-48)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-48)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="1191.2" textLength="134.2" clip-path="url(#breeze-ci-image-build-line-48)">-additional</text><text class="breeze-ci-image-build-r4" x="170.8" y="1191.2" textLength="85.4"  [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="1215.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-49)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="1215.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-49)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="1215.6" textLength="134.2" clip-path="url(#breeze-ci-image-build-line-49)">-additional</text><text class="breeze-ci-image-build-r4" x="170.8" y="1215.6" textLength="219.6" [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="1240" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-50)">│</text><text class="breeze-ci-image-build-r2" x="463.6" y="1240" textLength="976" clip-path="url(#breeze-ci-image-build-line-50)">itself).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="1264.4" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-51)">│</text><text class="breeze-ci-image-build-r7" x="463.6" y="1264.4" textLength="976" clip-path="url(#breeze-ci-image-build-line-51)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="1288.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-52)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-52)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="1288.8" textLength="134.2" clip-path="url(#breeze-ci-image-build-line-52)">-additional</text><text class="breeze-ci-image-build-r4" x="170.8" y="1288.8" textLength="158.6" [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="1313.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-53)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="1313.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-53)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="1313.2" textLength="134.2" clip-path="url(#breeze-ci-image-build-line-53)">-additional</text><text class="breeze-ci-image-build-r4" x="170.8" y="1313.2" textLength="146.4" [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="1337.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-54)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="1337.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-54)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="1337.6" textLength="134.2" clip-path="url(#breeze-ci-image-build-line-54)">-additional</text><text class="breeze-ci-image-build-r4" x="170.8" y="1337.6" textLength="195.2" [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="1362" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-55)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="1362" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-55)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="1362" textLength="48.8" clip-path="url(#breeze-ci-image-build-line-55)">-dev</text><text class="breeze-ci-image-build-r4" x="85.4" y="1362" textLength="109.8" clip-path="url(# [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="1386.4" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-56)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="1386.4" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-56)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="1386.4" textLength="48.8" clip-path="url(#breeze-ci-image-build-line-56)">-dev</text><text class="breeze-ci-image-build-r4" x="85.4" y="1386.4" textLength="146.4" clip-pat [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="1410.8" textLength="1464" clip-path="url(#breeze-ci-image-build-line-57)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-ci-image-build-r2" x="1464" y="1410.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-57)">
-</text><text class="breeze-ci-image-build-r5" x="0" y="1435.2" textLength="24.4" clip-path="url(#breeze-ci-image-build-line-58)">╭─</text><text class="breeze-ci-image-build-r5" x="24.4" y="1435.2" textLength="622.2" clip-path="url(#breeze-ci-image-build-line-58)">&#160;Preparing&#160;cache&#160;and&#160;push&#160;(for&#160;maintainers&#160;and&#160;CI)&#160;</text><text class="breeze-ci-image-build-r5" x="646.6" y="1435.2" textLength="793" clip-path="url(#breeze-ci-image-build-line-58)"> [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="1459.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-59)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="1459.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-59)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="1459.6" textLength="85.4" clip-path="url(#breeze-ci-image-build-line-59)">-github</text><text class="breeze-ci-image-build-r4" x="122" y="1459.6" textLength="73.2" clip-pa [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="1484" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-60)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="1484" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-60)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="1484" textLength="85.4" clip-path="url(#breeze-ci-image-build-line-60)">-github</text><text class="breeze-ci-image-build-r4" x="122" y="1484" textLength="109.8" clip-path="url [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="1508.4" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-61)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="1508.4" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-61)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="1508.4" textLength="109.8" clip-path="url(#breeze-ci-image-build-line-61)">-platform</text><text class="breeze-ci-image-build-r2" x="341.6" y="1508.4" textLength="329.4" c [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="1532.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-62)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="1532.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-62)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="1532.8" textLength="61" clip-path="url(#breeze-ci-image-build-line-62)">-push</text><text class="breeze-ci-image-build-r2" x="341.6" y="1532.8" textLength="353.8" clip-pat [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="1557.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-63)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="1557.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-63)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="1557.2" textLength="73.2" clip-path="url(#breeze-ci-image-build-line-63)">-empty</text><text class="breeze-ci-image-build-r4" x="109.8" y="1557.2" textLength="73.2" clip-p [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="1581.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-64)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="1581.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-64)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="1581.6" textLength="97.6" clip-path="url(#breeze-ci-image-build-line-64)">-prepare</text><text class="breeze-ci-image-build-r4" x="134.2" y="1581.6" textLength="158.6" cli [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="1606" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-65)">│</text><text class="breeze-ci-image-build-r2" x="341.6" y="1606" textLength="1098" clip-path="url(#breeze-ci-image-build-line-65)">image).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="459.2" textLength="1464" clip-path="url(#breeze-ci-image-build-line-18)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-ci-image-build-r2" x="1464" y="459.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-18)">
+</text><text class="breeze-ci-image-build-r5" x="0" y="483.6" textLength="24.4" clip-path="url(#breeze-ci-image-build-line-19)">╭─</text><text class="breeze-ci-image-build-r5" x="24.4" y="483.6" textLength="353.8" clip-path="url(#breeze-ci-image-build-line-19)">&#160;Building&#160;images&#160;in&#160;parallel&#160;</text><text class="breeze-ci-image-build-r5" x="378.2" y="483.6" textLength="1061.4" clip-path="url(#breeze-ci-image-build-line-19)">────────────────────────────────────────── [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-20)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="508" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-20)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="508" textLength="48.8" clip-path="url(#breeze-ci-image-build-line-20)">-run</text><text class="breeze-ci-image-build-r4" x="85.4" y="508" textLength="146.4" clip-path="url(#bree [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-21)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="532.4" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-21)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="532.4" textLength="146.4" clip-path="url(#breeze-ci-image-build-line-21)">-parallelism</text><text class="breeze-ci-image-build-r2" x="378.2" y="532.4" textLength="915" clip [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-22)">│</text><text class="breeze-ci-image-build-r7" x="378.2" y="556.8" textLength="915" clip-path="url(#breeze-ci-image-build-line-22)">(INTEGER&#160;RANGE)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-23)">│</text><text class="breeze-ci-image-build-r5" x="378.2" y="581.2" textLength="915" clip-path="url(#breeze-ci-image-build-line-23)">[default:&#160;4;&#160;1&lt;=x&lt;=8]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-24)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="605.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-24)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="605.6" textLength="85.4" clip-path="url(#breeze-ci-image-build-line-24)">-python</text><text class="breeze-ci-image-build-r4" x="122" y="605.6" textLength="109.8" clip-path= [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-25)">│</text><text class="breeze-ci-image-build-r5" x="378.2" y="630" textLength="951.6" clip-path="url(#breeze-ci-image-build-line-25)">[default:&#160;3.7&#160;3.8&#160;3.9&#160;3.10&#160;3.11]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-26)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="654.4" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-26)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="654.4" textLength="61" clip-path="url(#breeze-ci-image-build-line-26)">-skip</text><text class="breeze-ci-image-build-r4" x="97.6" y="654.4" textLength="97.6" clip-path="url [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-27)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="678.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-27)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="678.8" textLength="73.2" clip-path="url(#breeze-ci-image-build-line-27)">-debug</text><text class="breeze-ci-image-build-r4" x="109.8" y="678.8" textLength="122" clip-path=" [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-28)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="703.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-28)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="703.2" textLength="97.6" clip-path="url(#breeze-ci-image-build-line-28)">-include</text><text class="breeze-ci-image-build-r4" x="134.2" y="703.2" textLength="195.2" clip-pa [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="727.6" textLength="1464" clip-path="url(#breeze-ci-image-build-line-29)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-ci-image-build-r2" x="1464" y="727.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-29)">
+</text><text class="breeze-ci-image-build-r5" x="0" y="752" textLength="24.4" clip-path="url(#breeze-ci-image-build-line-30)">╭─</text><text class="breeze-ci-image-build-r5" x="24.4" y="752" textLength="439.2" clip-path="url(#breeze-ci-image-build-line-30)">&#160;Advanced&#160;options&#160;(for&#160;power&#160;users)&#160;</text><text class="breeze-ci-image-build-r5" x="463.6" y="752" textLength="976" clip-path="url(#breeze-ci-image-build-line-30)">─────────────────────────────────────── [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-31)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="776.4" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-31)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="776.4" textLength="97.6" clip-path="url(#breeze-ci-image-build-line-31)">-builder</text><text class="breeze-ci-image-build-r2" x="463.6" y="776.4" textLength="756.4" clip-pa [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-32)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="800.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-32)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="800.8" textLength="97.6" clip-path="url(#breeze-ci-image-build-line-32)">-install</text><text class="breeze-ci-image-build-r4" x="134.2" y="800.8" textLength="280.6" clip-pa [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-33)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="825.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-33)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="825.2" textLength="97.6" clip-path="url(#breeze-ci-image-build-line-33)">-airflow</text><text class="breeze-ci-image-build-r4" x="134.2" y="825.2" textLength="256.2" clip-pa [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-34)">│</text><text class="breeze-ci-image-build-r2" x="463.6" y="849.6" textLength="366" clip-path="url(#breeze-ci-image-build-line-34)">file.&#160;It&#160;could&#160;be&#160;full&#160;remote&#160;</text><text class="breeze-ci-image-build-r4" x="829.6" y="849.6" textLength="36.6" clip-path="url(#breeze-ci-image-build-line-34)">URL</text><text class="breeze-ci-image-b [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-35)">│</text><text class="breeze-ci-image-build-r2" x="463.6" y="874" textLength="976" clip-path="url(#breeze-ci-image-build-line-35)">`docker-context-files`&#160;(in&#160;this&#160;case&#160;it&#160;has&#160;to&#160;start&#160;with&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;< [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-36)">│</text><text class="breeze-ci-image-build-r2" x="463.6" y="898.4" textLength="976" clip-path="url(#breeze-ci-image-build-line-36)">/opt/airflow/docker-context-files).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-37)">│</text><text class="breeze-ci-image-build-r7" x="463.6" y="922.8" textLength="976" clip-path="url(#breeze-ci-image-build-line-37)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-38)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="947.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-38)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="947.2" textLength="97.6" clip-path="url(#breeze-ci-image-build-line-38)">-airflow</text><text class="breeze-ci-image-build-r4" x="134.2" y="947.2" textLength="207.4" clip-pa [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-39)">│</text><text class="breeze-ci-image-build-r7" x="463.6" y="971.6" textLength="866.2" clip-path="url(#breeze-ci-image-build-line-39)">(constraints-source-providers&#160;|&#160;constraints&#160;|&#160;constraints-no-providers)</text><text class="breeze-ci-image-build-r5" x="1451.8" y="971.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-39)">│</tex [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="996" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-40)">│</text><text class="breeze-ci-image-build-r5" x="463.6" y="996" textLength="866.2" clip-path="url(#breeze-ci-image-build-line-40)">[default:&#160;constraints-source-providers]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="1020.4" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-41)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-41)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="1020.4" textLength="97.6" clip-path="url(#breeze-ci-image-build-line-41)">-airflow</text><text class="breeze-ci-image-build-r4" x="134.2" y="1020.4" textLength="268.4" cli [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="1044.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-42)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-42)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="1044.8" textLength="85.4" clip-path="url(#breeze-ci-image-build-line-42)">-python</text><text class="breeze-ci-image-build-r4" x="122" y="1044.8" textLength="73.2" clip-pa [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="1069.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-43)">│</text><text class="breeze-ci-image-build-r2" x="463.6" y="1069.2" textLength="280.6" clip-path="url(#breeze-ci-image-build-line-43)">something&#160;like:&#160;python:</text><text class="breeze-ci-image-build-r4" x="744.2" y="1069.2" textLength="85.4" clip-path="url(#breeze-ci-image-build-line-43)">VERSION</text><text class="breeze-ci-image-build-r2" x="829.6" [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="1093.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-44)">│</text><text class="breeze-ci-image-build-r7" x="463.6" y="1093.6" textLength="976" clip-path="url(#breeze-ci-image-build-line-44)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="1118" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-45)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="1118" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-45)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="1118" textLength="134.2" clip-path="url(#breeze-ci-image-build-line-45)">-additional</text><text class="breeze-ci-image-build-r4" x="170.8" y="1118" textLength="146.4" clip-pa [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="1142.4" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-46)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-46)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="1142.4" textLength="134.2" clip-path="url(#breeze-ci-image-build-line-46)">-additional</text><text class="breeze-ci-image-build-r4" x="170.8" y="1142.4" textLength="85.4"  [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="1166.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-47)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-47)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="1166.8" textLength="134.2" clip-path="url(#breeze-ci-image-build-line-47)">-additional</text><text class="breeze-ci-image-build-r4" x="170.8" y="1166.8" textLength="219.6" [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="1191.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-48)">│</text><text class="breeze-ci-image-build-r2" x="463.6" y="1191.2" textLength="976" clip-path="url(#breeze-ci-image-build-line-48)">itself).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="1215.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-49)">│</text><text class="breeze-ci-image-build-r7" x="463.6" y="1215.6" textLength="976" clip-path="url(#breeze-ci-image-build-line-49)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="1240" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-50)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="1240" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-50)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="1240" textLength="134.2" clip-path="url(#breeze-ci-image-build-line-50)">-additional</text><text class="breeze-ci-image-build-r4" x="170.8" y="1240" textLength="158.6" clip-pa [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="1264.4" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-51)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="1264.4" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-51)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="1264.4" textLength="134.2" clip-path="url(#breeze-ci-image-build-line-51)">-additional</text><text class="breeze-ci-image-build-r4" x="170.8" y="1264.4" textLength="146.4" [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="1288.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-52)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-52)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="1288.8" textLength="134.2" clip-path="url(#breeze-ci-image-build-line-52)">-additional</text><text class="breeze-ci-image-build-r4" x="170.8" y="1288.8" textLength="195.2" [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="1313.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-53)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="1313.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-53)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="1313.2" textLength="48.8" clip-path="url(#breeze-ci-image-build-line-53)">-dev</text><text class="breeze-ci-image-build-r4" x="85.4" y="1313.2" textLength="109.8" clip-pat [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="1337.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-54)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="1337.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-54)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="1337.6" textLength="48.8" clip-path="url(#breeze-ci-image-build-line-54)">-dev</text><text class="breeze-ci-image-build-r4" x="85.4" y="1337.6" textLength="146.4" clip-pat [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="1362" textLength="1464" clip-path="url(#breeze-ci-image-build-line-55)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-ci-image-build-r2" x="1464" y="1362" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-55)">
+</text><text class="breeze-ci-image-build-r5" x="0" y="1386.4" textLength="24.4" clip-path="url(#breeze-ci-image-build-line-56)">╭─</text><text class="breeze-ci-image-build-r5" x="24.4" y="1386.4" textLength="622.2" clip-path="url(#breeze-ci-image-build-line-56)">&#160;Preparing&#160;cache&#160;and&#160;push&#160;(for&#160;maintainers&#160;and&#160;CI)&#160;</text><text class="breeze-ci-image-build-r5" x="646.6" y="1386.4" textLength="793" clip-path="url(#breeze-ci-image-build-line-56)"> [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="1410.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-57)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="1410.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-57)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="1410.8" textLength="109.8" clip-path="url(#breeze-ci-image-build-line-57)">-platform</text><text class="breeze-ci-image-build-r2" x="341.6" y="1410.8" textLength="329.4" c [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="1435.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-58)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="1435.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-58)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="1435.2" textLength="61" clip-path="url(#breeze-ci-image-build-line-58)">-push</text><text class="breeze-ci-image-build-r2" x="341.6" y="1435.2" textLength="353.8" clip-pat [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="1459.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-59)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="1459.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-59)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="1459.6" textLength="73.2" clip-path="url(#breeze-ci-image-build-line-59)">-empty</text><text class="breeze-ci-image-build-r4" x="109.8" y="1459.6" textLength="73.2" clip-p [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="1484" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-60)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="1484" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-60)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="1484" textLength="97.6" clip-path="url(#breeze-ci-image-build-line-60)">-prepare</text><text class="breeze-ci-image-build-r4" x="134.2" y="1484" textLength="158.6" clip-path=" [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="1508.4" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-61)">│</text><text class="breeze-ci-image-build-r2" x="341.6" y="1508.4" textLength="1098" clip-path="url(#breeze-ci-image-build-line-61)">image).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="1532.8" textLength="1464" clip-path="url(#breeze-ci-image-build-line-62)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-ci-image-build-r2" x="1464" y="1532.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-62)">
+</text><text class="breeze-ci-image-build-r5" x="0" y="1557.2" textLength="24.4" clip-path="url(#breeze-ci-image-build-line-63)">╭─</text><text class="breeze-ci-image-build-r5" x="24.4" y="1557.2" textLength="280.6" clip-path="url(#breeze-ci-image-build-line-63)">&#160;Github&#160;authentication&#160;</text><text class="breeze-ci-image-build-r5" x="305" y="1557.2" textLength="1134.6" clip-path="url(#breeze-ci-image-build-line-63)">───────────────────────────────────────────────────────── [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="1581.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-64)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="1581.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-64)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="1581.6" textLength="85.4" clip-path="url(#breeze-ci-image-build-line-64)">-github</text><text class="breeze-ci-image-build-r4" x="122" y="1581.6" textLength="134.2" clip-p [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="1606" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-65)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="1606" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-65)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="1606" textLength="85.4" clip-path="url(#breeze-ci-image-build-line-65)">-github</text><text class="breeze-ci-image-build-r4" x="122" y="1606" textLength="73.2" clip-path="url( [...]
 </text><text class="breeze-ci-image-build-r5" x="0" y="1630.4" textLength="1464" clip-path="url(#breeze-ci-image-build-line-66)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-ci-image-build-r2" x="1464" y="1630.4" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-66)">
 </text><text class="breeze-ci-image-build-r5" x="0" y="1654.8" textLength="24.4" clip-path="url(#breeze-ci-image-build-line-67)">╭─</text><text class="breeze-ci-image-build-r5" x="24.4" y="1654.8" textLength="195.2" clip-path="url(#breeze-ci-image-build-line-67)">&#160;Common&#160;options&#160;</text><text class="breeze-ci-image-build-r5" x="219.6" y="1654.8" textLength="1220" clip-path="url(#breeze-ci-image-build-line-67)">──────────────────────────────────────────────────────────────── [...]
 </text><text class="breeze-ci-image-build-r5" x="0" y="1679.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-68)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="1679.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-68)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="1679.2" textLength="97.6" clip-path="url(#breeze-ci-image-build-line-68)">-verbose</text><text class="breeze-ci-image-build-r6" x="158.6" y="1679.2" textLength="24.4" clip [...]
diff --git a/images/breeze/output_ci-image_verify.svg b/images/breeze/output_ci-image_verify.svg
index d32439aa4d..39a96b2337 100644
--- a/images/breeze/output_ci-image_verify.svg
+++ b/images/breeze/output_ci-image_verify.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 513.5999999999999" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 562.4" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -43,7 +43,7 @@
 
     <defs>
     <clipPath id="breeze-ci-image-verify-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="462.59999999999997" />
+      <rect x="0" y="0" width="1463.0" height="511.4" />
     </clipPath>
     <clipPath id="breeze-ci-image-verify-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -99,9 +99,15 @@
 <clipPath id="breeze-ci-image-verify-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="breeze-ci-image-verify-line-18">
+    <rect x="0" y="440.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-ci-image-verify-line-19">
+    <rect x="0" y="465.1" width="1464" height="24.65"/>
+            </clipPath>
     </defs>
 
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="511.6" rx="8"/><text class="breeze-ci-image-verify-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;ci-image&#160;verify</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="560.4" rx="8"/><text class="breeze-ci-image-verify-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;ci-image&#160;verify</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -117,19 +123,21 @@
 </text><text class="breeze-ci-image-verify-r2" x="12.2" y="93.2" textLength="85.4" clip-path="url(#breeze-ci-image-verify-line-3)">Verify&#160;</text><text class="breeze-ci-image-verify-r4" x="97.6" y="93.2" textLength="24.4" clip-path="url(#breeze-ci-image-verify-line-3)">CI</text><text class="breeze-ci-image-verify-r2" x="122" y="93.2" textLength="85.4" clip-path="url(#breeze-ci-image-verify-line-3)">&#160;image.</text><text class="breeze-ci-image-verify-r2" x="1464" y="93.2" textLengt [...]
 </text><text class="breeze-ci-image-verify-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-4)">
 </text><text class="breeze-ci-image-verify-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-ci-image-verify-line-5)">╭─</text><text class="breeze-ci-image-verify-r5" x="24.4" y="142" textLength="244" clip-path="url(#breeze-ci-image-verify-line-5)">&#160;Verify&#160;image&#160;flags&#160;</text><text class="breeze-ci-image-verify-r5" x="268.4" y="142" textLength="1171.2" clip-path="url(#breeze-ci-image-verify-line-5)">───────────────────────────────────────────────────────────── [...]
-</text><text class="breeze-ci-image-verify-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-6)">│</text><text class="breeze-ci-image-verify-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-6)">-</text><text class="breeze-ci-image-verify-r4" x="36.6" y="166.4" textLength="73.2" clip-path="url(#breeze-ci-image-verify-line-6)">-image</text><text class="breeze-ci-image-verify-r4" x="109.8" y="166.4" textLength="61" clip-pat [...]
-</text><text class="breeze-ci-image-verify-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-7)">│</text><text class="breeze-ci-image-verify-r4" x="24.4" y="190.8" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-7)">-</text><text class="breeze-ci-image-verify-r4" x="36.6" y="190.8" textLength="85.4" clip-path="url(#breeze-ci-image-verify-line-7)">-python</text><text class="breeze-ci-image-verify-r6" x="280.6" y="190.8" textLength="24.4" clip- [...]
-</text><text class="breeze-ci-image-verify-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-8)">│</text><text class="breeze-ci-image-verify-r7" x="329.4" y="215.2" textLength="732" clip-path="url(#breeze-ci-image-verify-line-8)">(&gt;3.7&lt;&#160;|&#160;3.8&#160;|&#160;3.9&#160;|&#160;3.10&#160;|&#160;3.11)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="breeze-ci-image-verify-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-9)">│</text><text class="breeze-ci-image-verify-r5" x="329.4" y="239.6" textLength="732" clip-path="url(#breeze-ci-image-verify-line-9)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="breeze-ci-image-verify-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-10)">│</text><text class="breeze-ci-image-verify-r4" x="24.4" y="264" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-10)">-</text><text class="breeze-ci-image-verify-r4" x="36.6" y="264" textLength="73.2" clip-path="url(#breeze-ci-image-verify-line-10)">-image</text><text class="breeze-ci-image-verify-r4" x="109.8" y="264" textLength="48.8" clip-path=" [...]
-</text><text class="breeze-ci-image-verify-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-11)">│</text><text class="breeze-ci-image-verify-r4" x="24.4" y="288.4" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-11)">-</text><text class="breeze-ci-image-verify-r4" x="36.6" y="288.4" textLength="61" clip-path="url(#breeze-ci-image-verify-line-11)">-pull</text><text class="breeze-ci-image-verify-r2" x="329.4" y="288.4" textLength="646.6" clip- [...]
-</text><text class="breeze-ci-image-verify-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-12)">│</text><text class="breeze-ci-image-verify-r4" x="24.4" y="312.8" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-12)">-</text><text class="breeze-ci-image-verify-r4" x="36.6" y="312.8" textLength="85.4" clip-path="url(#breeze-ci-image-verify-line-12)">-github</text><text class="breeze-ci-image-verify-r4" x="122" y="312.8" textLength="134.2" cli [...]
-</text><text class="breeze-ci-image-verify-r5" x="0" y="337.2" textLength="1464" clip-path="url(#breeze-ci-image-verify-line-13)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-ci-image-verify-r2" x="1464" y="337.2" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-13)">
-</text><text class="breeze-ci-image-verify-r5" x="0" y="361.6" textLength="24.4" clip-path="url(#breeze-ci-image-verify-line-14)">╭─</text><text class="breeze-ci-image-verify-r5" x="24.4" y="361.6" textLength="195.2" clip-path="url(#breeze-ci-image-verify-line-14)">&#160;Common&#160;options&#160;</text><text class="breeze-ci-image-verify-r5" x="219.6" y="361.6" textLength="1220" clip-path="url(#breeze-ci-image-verify-line-14)">───────────────────────────────────────────────────────────── [...]
-</text><text class="breeze-ci-image-verify-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-15)">│</text><text class="breeze-ci-image-verify-r4" x="24.4" y="386" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-15)">-</text><text class="breeze-ci-image-verify-r4" x="36.6" y="386" textLength="97.6" clip-path="url(#breeze-ci-image-verify-line-15)">-verbose</text><text class="breeze-ci-image-verify-r6" x="158.6" y="386" textLength="24.4" clip-path [...]
-</text><text class="breeze-ci-image-verify-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-16)">│</text><text class="breeze-ci-image-verify-r4" x="24.4" y="410.4" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-16)">-</text><text class="breeze-ci-image-verify-r4" x="36.6" y="410.4" textLength="48.8" clip-path="url(#breeze-ci-image-verify-line-16)">-dry</text><text class="breeze-ci-image-verify-r4" x="85.4" y="410.4" textLength="48.8" clip-p [...]
-</text><text class="breeze-ci-image-verify-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-17)">│</text><text class="breeze-ci-image-verify-r4" x="24.4" y="434.8" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-17)">-</text><text class="breeze-ci-image-verify-r4" x="36.6" y="434.8" textLength="61" clip-path="url(#breeze-ci-image-verify-line-17)">-help</text><text class="breeze-ci-image-verify-r6" x="158.6" y="434.8" textLength="24.4" clip-p [...]
-</text><text class="breeze-ci-image-verify-r5" x="0" y="459.2" textLength="1464" clip-path="url(#breeze-ci-image-verify-line-18)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-ci-image-verify-r2" x="1464" y="459.2" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-18)">
+</text><text class="breeze-ci-image-verify-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-6)">│</text><text class="breeze-ci-image-verify-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-6)">-</text><text class="breeze-ci-image-verify-r4" x="36.6" y="166.4" textLength="73.2" clip-path="url(#breeze-ci-image-verify-line-6)">-image</text><text class="breeze-ci-image-verify-r4" x="109.8" y="166.4" textLength="61" clip-pat [...]
+</text><text class="breeze-ci-image-verify-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-7)">│</text><text class="breeze-ci-image-verify-r4" x="24.4" y="190.8" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-7)">-</text><text class="breeze-ci-image-verify-r4" x="36.6" y="190.8" textLength="85.4" clip-path="url(#breeze-ci-image-verify-line-7)">-python</text><text class="breeze-ci-image-verify-r6" x="195.2" y="190.8" textLength="24.4" clip- [...]
+</text><text class="breeze-ci-image-verify-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-8)">│</text><text class="breeze-ci-image-verify-r5" x="244" y="215.2" textLength="732" clip-path="url(#breeze-ci-image-verify-line-8)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
+</text><text class="breeze-ci-image-verify-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-9)">│</text><text class="breeze-ci-image-verify-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-9)">-</text><text class="breeze-ci-image-verify-r4" x="36.6" y="239.6" textLength="73.2" clip-path="url(#breeze-ci-image-verify-line-9)">-image</text><text class="breeze-ci-image-verify-r4" x="109.8" y="239.6" textLength="48.8" clip-p [...]
+</text><text class="breeze-ci-image-verify-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-10)">│</text><text class="breeze-ci-image-verify-r4" x="24.4" y="264" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-10)">-</text><text class="breeze-ci-image-verify-r4" x="36.6" y="264" textLength="61" clip-path="url(#breeze-ci-image-verify-line-10)">-pull</text><text class="breeze-ci-image-verify-r2" x="244" y="264" textLength="646.6" clip-path="url( [...]
+</text><text class="breeze-ci-image-verify-r5" x="0" y="288.4" textLength="1464" clip-path="url(#breeze-ci-image-verify-line-11)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-ci-image-verify-r2" x="1464" y="288.4" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-11)">
+</text><text class="breeze-ci-image-verify-r5" x="0" y="312.8" textLength="24.4" clip-path="url(#breeze-ci-image-verify-line-12)">╭─</text><text class="breeze-ci-image-verify-r5" x="24.4" y="312.8" textLength="280.6" clip-path="url(#breeze-ci-image-verify-line-12)">&#160;Github&#160;authentication&#160;</text><text class="breeze-ci-image-verify-r5" x="305" y="312.8" textLength="1134.6" clip-path="url(#breeze-ci-image-verify-line-12)">────────────────────────────────────────────────────── [...]
+</text><text class="breeze-ci-image-verify-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-13)">│</text><text class="breeze-ci-image-verify-r4" x="24.4" y="337.2" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-13)">-</text><text class="breeze-ci-image-verify-r4" x="36.6" y="337.2" textLength="85.4" clip-path="url(#breeze-ci-image-verify-line-13)">-github</text><text class="breeze-ci-image-verify-r4" x="122" y="337.2" textLength="134.2" cli [...]
+</text><text class="breeze-ci-image-verify-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-14)">│</text><text class="breeze-ci-image-verify-r4" x="24.4" y="361.6" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-14)">-</text><text class="breeze-ci-image-verify-r4" x="36.6" y="361.6" textLength="85.4" clip-path="url(#breeze-ci-image-verify-line-14)">-github</text><text class="breeze-ci-image-verify-r4" x="122" y="361.6" textLength="73.2" clip [...]
+</text><text class="breeze-ci-image-verify-r5" x="0" y="386" textLength="1464" clip-path="url(#breeze-ci-image-verify-line-15)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-ci-image-verify-r2" x="1464" y="386" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-15)">
+</text><text class="breeze-ci-image-verify-r5" x="0" y="410.4" textLength="24.4" clip-path="url(#breeze-ci-image-verify-line-16)">╭─</text><text class="breeze-ci-image-verify-r5" x="24.4" y="410.4" textLength="195.2" clip-path="url(#breeze-ci-image-verify-line-16)">&#160;Common&#160;options&#160;</text><text class="breeze-ci-image-verify-r5" x="219.6" y="410.4" textLength="1220" clip-path="url(#breeze-ci-image-verify-line-16)">───────────────────────────────────────────────────────────── [...]
+</text><text class="breeze-ci-image-verify-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-17)">│</text><text class="breeze-ci-image-verify-r4" x="24.4" y="434.8" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-17)">-</text><text class="breeze-ci-image-verify-r4" x="36.6" y="434.8" textLength="97.6" clip-path="url(#breeze-ci-image-verify-line-17)">-verbose</text><text class="breeze-ci-image-verify-r6" x="158.6" y="434.8" textLength="24.4" c [...]
+</text><text class="breeze-ci-image-verify-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-18)">│</text><text class="breeze-ci-image-verify-r4" x="24.4" y="459.2" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-18)">-</text><text class="breeze-ci-image-verify-r4" x="36.6" y="459.2" textLength="48.8" clip-path="url(#breeze-ci-image-verify-line-18)">-dry</text><text class="breeze-ci-image-verify-r4" x="85.4" y="459.2" textLength="48.8" clip-p [...]
+</text><text class="breeze-ci-image-verify-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-19)">│</text><text class="breeze-ci-image-verify-r4" x="24.4" y="483.6" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-19)">-</text><text class="breeze-ci-image-verify-r4" x="36.6" y="483.6" textLength="61" clip-path="url(#breeze-ci-image-verify-line-19)">-help</text><text class="breeze-ci-image-verify-r6" x="158.6" y="483.6" textLength="24.4" clip-p [...]
+</text><text class="breeze-ci-image-verify-r5" x="0" y="508" textLength="1464" clip-path="url(#breeze-ci-image-verify-line-20)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-ci-image-verify-r2" x="1464" y="508" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-20)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output_ci_selective-check.svg b/images/breeze/output_ci_selective-check.svg
index 0d1250f1e2..80986aebb4 100644
--- a/images/breeze/output_ci_selective-check.svg
+++ b/images/breeze/output_ci_selective-check.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 562.4" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 684.4" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -43,7 +43,7 @@
 
     <defs>
     <clipPath id="breeze-ci-selective-check-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="511.4" />
+      <rect x="0" y="0" width="1463.0" height="633.4" />
     </clipPath>
     <clipPath id="breeze-ci-selective-check-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -105,9 +105,24 @@
 <clipPath id="breeze-ci-selective-check-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="breeze-ci-selective-check-line-20">
+    <rect x="0" y="489.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-ci-selective-check-line-21">
+    <rect x="0" y="513.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-ci-selective-check-line-22">
+    <rect x="0" y="538.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-ci-selective-check-line-23">
+    <rect x="0" y="562.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-ci-selective-check-line-24">
+    <rect x="0" y="587.1" width="1464" height="24.65"/>
+            </clipPath>
     </defs>
 
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="560.4" rx="8"/><text class="breeze-ci-selective-check-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;ci&#160;selective-check</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="682.4" rx="8"/><text class="breeze-ci-selective-check-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;ci&#160;selective-check</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -128,16 +143,21 @@
 </text><text class="breeze-ci-selective-check-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-8)">│</text><text class="breeze-ci-selective-check-r4" x="24.4" y="215.2" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-8)">-</text><text class="breeze-ci-selective-check-r4" x="36.6" y="215.2" textLength="97.6" clip-path="url(#breeze-ci-selective-check-line-8)">-default</text><text class="breeze-ci-selective-check-r4" x="134.2" y="215.2" t [...]
 </text><text class="breeze-ci-selective-check-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-9)">│</text><text class="breeze-ci-selective-check-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-9)">-</text><text class="breeze-ci-selective-check-r4" x="36.6" y="239.6" textLength="97.6" clip-path="url(#breeze-ci-selective-check-line-9)">-default</text><text class="breeze-ci-selective-check-r4" x="134.2" y="239.6" t [...]
 </text><text class="breeze-ci-selective-check-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-10)">│</text><text class="breeze-ci-selective-check-r5" x="414.8" y="264" textLength="646.6" clip-path="url(#breeze-ci-selective-check-line-10)">[default:&#160;constraints-main]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-ci- [...]
-</text><text class="breeze-ci-selective-check-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-11)">│</text><text class="breeze-ci-selective-check-r4" x="24.4" y="288.4" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-11)">-</text><text class="breeze-ci-selective-check-r4" x="36.6" y="288.4" textLength="85.4" clip-path="url(#breeze-ci-selective-check-line-11)">-github</text><text class="breeze-ci-selective-check-r4" x="122" y="288.4" t [...]
-</text><text class="breeze-ci-selective-check-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-12)">│</text><text class="breeze-ci-selective-check-r6" x="414.8" y="312.8" textLength="1024.8" clip-path="url(#breeze-ci-selective-check-line-12)">(pull_request&#160;|&#160;pull_request_review&#160;|&#160;pull_request_target&#160;|&#160;pull_request_workflow&#160;|&#160;</text><text class="breeze-ci-selective-check-r5" x="1451.8" y="312.8" textLength="12.2"  [...]
-</text><text class="breeze-ci-selective-check-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-13)">│</text><text class="breeze-ci-selective-check-r6" x="414.8" y="337.2" textLength="1024.8" clip-path="url(#breeze-ci-selective-check-line-13)">push&#160;|&#160;schedule&#160;|&#160;workflow_dispatch&#160;|&#160;workflow_run)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="breeze-ci-selective-check-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-14)">│</text><text class="breeze-ci-selective-check-r5" x="414.8" y="361.6" textLength="1024.8" clip-path="url(#breeze-ci-selective-check-line-14)">[default:&#160;pull_request]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="breeze-ci-selective-check-r5" x="0" y="386" textLength="1464" clip-path="url(#breeze-ci-selective-check-line-15)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-ci-selective-check-r2" x="1464" y="386" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-15)">
-</text><text class="breeze-ci-selective-check-r5" x="0" y="410.4" textLength="24.4" clip-path="url(#breeze-ci-selective-check-line-16)">╭─</text><text class="breeze-ci-selective-check-r5" x="24.4" y="410.4" textLength="195.2" clip-path="url(#breeze-ci-selective-check-line-16)">&#160;Common&#160;options&#160;</text><text class="breeze-ci-selective-check-r5" x="219.6" y="410.4" textLength="1220" clip-path="url(#breeze-ci-selective-check-line-16)">─────────────────────────────────────────── [...]
-</text><text class="breeze-ci-selective-check-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-17)">│</text><text class="breeze-ci-selective-check-r4" x="24.4" y="434.8" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-17)">-</text><text class="breeze-ci-selective-check-r4" x="36.6" y="434.8" textLength="97.6" clip-path="url(#breeze-ci-selective-check-line-17)">-verbose</text><text class="breeze-ci-selective-check-r7" x="158.6" y="434.8 [...]
-</text><text class="breeze-ci-selective-check-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-18)">│</text><text class="breeze-ci-selective-check-r4" x="24.4" y="459.2" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-18)">-</text><text class="breeze-ci-selective-check-r4" x="36.6" y="459.2" textLength="48.8" clip-path="url(#breeze-ci-selective-check-line-18)">-dry</text><text class="breeze-ci-selective-check-r4" x="85.4" y="459.2" tex [...]
-</text><text class="breeze-ci-selective-check-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-19)">│</text><text class="breeze-ci-selective-check-r4" x="24.4" y="483.6" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-19)">-</text><text class="breeze-ci-selective-check-r4" x="36.6" y="483.6" textLength="61" clip-path="url(#breeze-ci-selective-check-line-19)">-help</text><text class="breeze-ci-selective-check-r7" x="158.6" y="483.6" tex [...]
+</text><text class="breeze-ci-selective-check-r5" x="0" y="288.4" textLength="1464" clip-path="url(#breeze-ci-selective-check-line-11)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-ci-selective-check-r2" x="1464" y="288.4" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-11)">
+</text><text class="breeze-ci-selective-check-r5" x="0" y="312.8" textLength="24.4" clip-path="url(#breeze-ci-selective-check-line-12)">╭─</text><text class="breeze-ci-selective-check-r5" x="24.4" y="312.8" textLength="231.8" clip-path="url(#breeze-ci-selective-check-line-12)">&#160;Github&#160;parameters&#160;</text><text class="breeze-ci-selective-check-r5" x="256.2" y="312.8" textLength="1183.4" clip-path="url(#breeze-ci-selective-check-line-12)">────────────────────────────────────── [...]
+</text><text class="breeze-ci-selective-check-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-13)">│</text><text class="breeze-ci-selective-check-r4" x="24.4" y="337.2" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-13)">-</text><text class="breeze-ci-selective-check-r4" x="36.6" y="337.2" textLength="85.4" clip-path="url(#breeze-ci-selective-check-line-13)">-github</text><text class="breeze-ci-selective-check-r4" x="122" y="337.2" t [...]
+</text><text class="breeze-ci-selective-check-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-14)">│</text><text class="breeze-ci-selective-check-r6" x="329.4" y="361.6" textLength="1110.2" clip-path="url(#breeze-ci-selective-check-line-14)">(pull_request&#160;|&#160;pull_request_review&#160;|&#160;pull_request_target&#160;|&#160;pull_request_workflow&#160;|&#160;push&#160;|&#160;</text><text class="breeze-ci-selective-check-r5" x="1451.8" y="361.6" t [...]
+</text><text class="breeze-ci-selective-check-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-15)">│</text><text class="breeze-ci-selective-check-r6" x="329.4" y="386" textLength="1110.2" clip-path="url(#breeze-ci-selective-check-line-15)">schedule&#160;|&#160;workflow_dispatch&#160;|&#160;workflow_run)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
+</text><text class="breeze-ci-selective-check-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-16)">│</text><text class="breeze-ci-selective-check-r5" x="329.4" y="410.4" textLength="1110.2" clip-path="url(#breeze-ci-selective-check-line-16)">[default:&#160;pull_request]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="breeze-ci-selective-check-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-17)">│</text><text class="breeze-ci-selective-check-r4" x="24.4" y="434.8" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-17)">-</text><text class="breeze-ci-selective-check-r4" x="36.6" y="434.8" textLength="85.4" clip-path="url(#breeze-ci-selective-check-line-17)">-github</text><text class="breeze-ci-selective-check-r4" x="122" y="434.8" t [...]
+</text><text class="breeze-ci-selective-check-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-18)">│</text><text class="breeze-ci-selective-check-r4" x="24.4" y="459.2" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-18)">-</text><text class="breeze-ci-selective-check-r4" x="36.6" y="459.2" textLength="85.4" clip-path="url(#breeze-ci-selective-check-line-18)">-github</text><text class="breeze-ci-selective-check-r4" x="122" y="459.2" t [...]
+</text><text class="breeze-ci-selective-check-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-19)">│</text><text class="breeze-ci-selective-check-r4" x="24.4" y="483.6" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-19)">-</text><text class="breeze-ci-selective-check-r4" x="36.6" y="483.6" textLength="85.4" clip-path="url(#breeze-ci-selective-check-line-19)">-github</text><text class="breeze-ci-selective-check-r4" x="122" y="483.6" t [...]
 </text><text class="breeze-ci-selective-check-r5" x="0" y="508" textLength="1464" clip-path="url(#breeze-ci-selective-check-line-20)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-ci-selective-check-r2" x="1464" y="508" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-20)">
+</text><text class="breeze-ci-selective-check-r5" x="0" y="532.4" textLength="24.4" clip-path="url(#breeze-ci-selective-check-line-21)">╭─</text><text class="breeze-ci-selective-check-r5" x="24.4" y="532.4" textLength="195.2" clip-path="url(#breeze-ci-selective-check-line-21)">&#160;Common&#160;options&#160;</text><text class="breeze-ci-selective-check-r5" x="219.6" y="532.4" textLength="1220" clip-path="url(#breeze-ci-selective-check-line-21)">─────────────────────────────────────────── [...]
+</text><text class="breeze-ci-selective-check-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-22)">│</text><text class="breeze-ci-selective-check-r4" x="24.4" y="556.8" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-22)">-</text><text class="breeze-ci-selective-check-r4" x="36.6" y="556.8" textLength="97.6" clip-path="url(#breeze-ci-selective-check-line-22)">-verbose</text><text class="breeze-ci-selective-check-r7" x="158.6" y="556.8 [...]
+</text><text class="breeze-ci-selective-check-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-23)">│</text><text class="breeze-ci-selective-check-r4" x="24.4" y="581.2" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-23)">-</text><text class="breeze-ci-selective-check-r4" x="36.6" y="581.2" textLength="48.8" clip-path="url(#breeze-ci-selective-check-line-23)">-dry</text><text class="breeze-ci-selective-check-r4" x="85.4" y="581.2" tex [...]
+</text><text class="breeze-ci-selective-check-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-24)">│</text><text class="breeze-ci-selective-check-r4" x="24.4" y="605.6" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-24)">-</text><text class="breeze-ci-selective-check-r4" x="36.6" y="605.6" textLength="61" clip-path="url(#breeze-ci-selective-check-line-24)">-help</text><text class="breeze-ci-selective-check-r7" x="158.6" y="605.6" tex [...]
+</text><text class="breeze-ci-selective-check-r5" x="0" y="630" textLength="1464" clip-path="url(#breeze-ci-selective-check-line-25)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-ci-selective-check-r2" x="1464" y="630" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-25)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output_down.svg b/images/breeze/output_down.svg
new file mode 100644
index 0000000000..7011475a45
--- /dev/null
+++ b/images/breeze/output_down.svg
@@ -0,0 +1,115 @@
+<svg class="rich-terminal" viewBox="0 0 1482 391.59999999999997" xmlns="http://www.w3.org/2000/svg">
+    <!-- Generated with Rich https://www.textualize.io -->
+    <style>
+
+    @font-face {
+        font-family: "Fira Code";
+        src: local("FiraCode-Regular"),
+                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
+                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
+        font-style: normal;
+        font-weight: 400;
+    }
+    @font-face {
+        font-family: "Fira Code";
+        src: local("FiraCode-Bold"),
+                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
+                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
+        font-style: bold;
+        font-weight: 700;
+    }
+
+    .breeze-down-matrix {
+        font-family: Fira Code, monospace;
+        font-size: 20px;
+        line-height: 24.4px;
+        font-variant-east-asian: full-width;
+    }
+
+    .breeze-down-title {
+        font-size: 18px;
+        font-weight: bold;
+        font-family: arial;
+    }
+
+    .breeze-down-r1 { fill: #c5c8c6;font-weight: bold }
+.breeze-down-r2 { fill: #c5c8c6 }
+.breeze-down-r3 { fill: #d0b344;font-weight: bold }
+.breeze-down-r4 { fill: #68a0b3;font-weight: bold }
+.breeze-down-r5 { fill: #868887 }
+.breeze-down-r6 { fill: #98a84b;font-weight: bold }
+    </style>
+
+    <defs>
+    <clipPath id="breeze-down-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="340.59999999999997" />
+    </clipPath>
+    <clipPath id="breeze-down-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-down-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-down-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-down-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-down-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-down-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-down-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-down-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-down-line-8">
+    <rect x="0" y="196.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-down-line-9">
+    <rect x="0" y="221.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-down-line-10">
+    <rect x="0" y="245.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-down-line-11">
+    <rect x="0" y="269.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-down-line-12">
+    <rect x="0" y="294.3" width="1464" height="24.65"/>
+            </clipPath>
+    </defs>
+
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="389.6" rx="8"/><text class="breeze-down-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;down</text>
+            <g transform="translate(26,22)">
+            <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
+            <circle cx="22" cy="0" r="7" fill="#febc2e"/>
+            <circle cx="44" cy="0" r="7" fill="#28c840"/>
+            </g>
+        
+    <g transform="translate(9, 41)" clip-path="url(#breeze-down-clip-terminal)">
+    
+    <g class="breeze-down-matrix">
+    <text class="breeze-down-r2" x="1464" y="20" textLength="12.2" clip-path="url(#breeze-down-line-0)">
+</text><text class="breeze-down-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#breeze-down-line-1)">Usage:&#160;</text><text class="breeze-down-r1" x="97.6" y="44.4" textLength="158.6" clip-path="url(#breeze-down-line-1)">breeze&#160;down&#160;[</text><text class="breeze-down-r4" x="256.2" y="44.4" textLength="85.4" clip-path="url(#breeze-down-line-1)">OPTIONS</text><text class="breeze-down-r1" x="341.6" y="44.4" textLength="12.2" clip-path="url(#breeze-down-line-1)">]</text><te [...]
+</text><text class="breeze-down-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#breeze-down-line-2)">
+</text><text class="breeze-down-r2" x="12.2" y="93.2" textLength="390.4" clip-path="url(#breeze-down-line-3)">Stop&#160;running&#160;breeze&#160;environment.</text><text class="breeze-down-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#breeze-down-line-3)">
+</text><text class="breeze-down-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-down-line-4)">
+</text><text class="breeze-down-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-down-line-5)">╭─</text><text class="breeze-down-r5" x="24.4" y="142" textLength="146.4" clip-path="url(#breeze-down-line-5)">&#160;Down&#160;flags&#160;</text><text class="breeze-down-r5" x="170.8" y="142" textLength="1268.8" clip-path="url(#breeze-down-line-5)">────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="breeze-down-r5 [...]
+</text><text class="breeze-down-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-down-line-6)">│</text><text class="breeze-down-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-down-line-6)">-</text><text class="breeze-down-r4" x="36.6" y="166.4" textLength="109.8" clip-path="url(#breeze-down-line-6)">-preserve</text><text class="breeze-down-r4" x="146.4" y="166.4" textLength="97.6" clip-path="url(#breeze-down-line-6)">-volumes</text><text class="breeze-down-r6 [...]
+</text><text class="breeze-down-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-down-line-7)">│</text><text class="breeze-down-r4" x="24.4" y="190.8" textLength="12.2" clip-path="url(#breeze-down-line-7)">-</text><text class="breeze-down-r4" x="36.6" y="190.8" textLength="97.6" clip-path="url(#breeze-down-line-7)">-cleanup</text><text class="breeze-down-r4" x="134.2" y="190.8" textLength="134.2" clip-path="url(#breeze-down-line-7)">-mypy-cache</text><text class="breeze-down- [...]
+</text><text class="breeze-down-r5" x="0" y="215.2" textLength="1464" clip-path="url(#breeze-down-line-8)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-down-r2" x="1464" y="215.2" textLength="12.2" clip-path="url(#breeze-down-line-8)">
+</text><text class="breeze-down-r5" x="0" y="239.6" textLength="24.4" clip-path="url(#breeze-down-line-9)">╭─</text><text class="breeze-down-r5" x="24.4" y="239.6" textLength="195.2" clip-path="url(#breeze-down-line-9)">&#160;Common&#160;options&#160;</text><text class="breeze-down-r5" x="219.6" y="239.6" textLength="1220" clip-path="url(#breeze-down-line-9)">────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="breeze-dow [...]
+</text><text class="breeze-down-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-down-line-10)">│</text><text class="breeze-down-r4" x="24.4" y="264" textLength="12.2" clip-path="url(#breeze-down-line-10)">-</text><text class="breeze-down-r4" x="36.6" y="264" textLength="97.6" clip-path="url(#breeze-down-line-10)">-verbose</text><text class="breeze-down-r6" x="158.6" y="264" textLength="24.4" clip-path="url(#breeze-down-line-10)">-v</text><text class="breeze-down-r2" x="207.4"  [...]
+</text><text class="breeze-down-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-down-line-11)">│</text><text class="breeze-down-r4" x="24.4" y="288.4" textLength="12.2" clip-path="url(#breeze-down-line-11)">-</text><text class="breeze-down-r4" x="36.6" y="288.4" textLength="48.8" clip-path="url(#breeze-down-line-11)">-dry</text><text class="breeze-down-r4" x="85.4" y="288.4" textLength="48.8" clip-path="url(#breeze-down-line-11)">-run</text><text class="breeze-down-r6" x="15 [...]
+</text><text class="breeze-down-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-down-line-12)">│</text><text class="breeze-down-r4" x="24.4" y="312.8" textLength="12.2" clip-path="url(#breeze-down-line-12)">-</text><text class="breeze-down-r4" x="36.6" y="312.8" textLength="61" clip-path="url(#breeze-down-line-12)">-help</text><text class="breeze-down-r6" x="158.6" y="312.8" textLength="24.4" clip-path="url(#breeze-down-line-12)">-h</text><text class="breeze-down-r2" x="207. [...]
+</text><text class="breeze-down-r5" x="0" y="337.2" textLength="1464" clip-path="url(#breeze-down-line-13)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-down-r2" x="1464" y="337.2" textLength="12.2" clip-path="url(#breeze-down-line-13)">
+</text>
+    </g>
+    </g>
+</svg>
diff --git a/images/breeze/output_k8s_configure-cluster.svg b/images/breeze/output_k8s_configure-cluster.svg
index 3827986805..d160645d2b 100644
--- a/images/breeze/output_k8s_configure-cluster.svg
+++ b/images/breeze/output_k8s_configure-cluster.svg
@@ -164,8 +164,8 @@
 </text><text class="breeze-k8s-configure-cluster-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-8)">│</text><text class="breeze-k8s-configure-cluster-r7" x="341.6" y="215.2" textLength="732" clip-path="url(#breeze-k8s-configure-cluster-line-8)">(&gt;3.7&lt;&#160;|&#160;3.8&#160;|&#160;3.9&#160;|&#160;3.10&#160;|&#160;3.11)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
 </text><text class="breeze-k8s-configure-cluster-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-9)">│</text><text class="breeze-k8s-configure-cluster-r5" x="341.6" y="239.6" textLength="732" clip-path="url(#breeze-k8s-configure-cluster-line-9)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
 </text><text class="breeze-k8s-configure-cluster-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-10)">│</text><text class="breeze-k8s-configure-cluster-r4" x="24.4" y="264" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-10)">-</text><text class="breeze-k8s-configure-cluster-r4" x="36.6" y="264" textLength="134.2" clip-path="url(#breeze-k8s-configure-cluster-line-10)">-kubernetes</text><text class="breeze-k8s-configure-cluster-r4" [...]
-</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-11)">│</text><text class="breeze-k8s-configure-cluster-r7" x="341.6" y="288.4" textLength="658.8" clip-path="url(#breeze-k8s-configure-cluster-line-11)">(&gt;v1.23.13&lt;&#160;|&#160;v1.24.7&#160;|&#160;v1.25.3&#160;|&#160;v1.26.0)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-k8s-configure-cluster-r5" [...]
-</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-12)">│</text><text class="breeze-k8s-configure-cluster-r5" x="341.6" y="312.8" textLength="658.8" clip-path="url(#breeze-k8s-configure-cluster-line-12)">[default:&#160;v1.23.13]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-11)">│</text><text class="breeze-k8s-configure-cluster-r7" x="341.6" y="288.4" textLength="658.8" clip-path="url(#breeze-k8s-configure-cluster-line-11)">(&gt;v1.23.17&lt;&#160;|&#160;v1.24.13&#160;|&#160;v1.25.9&#160;|&#160;v1.26.4&#160;|&#160;v1.27.1)&#160;</text><text class="breeze-k8s-configure-cluster-r5" x="1451.8" y="288.4" textLength="12.2" clip- [...]
+</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-12)">│</text><text class="breeze-k8s-configure-cluster-r5" x="341.6" y="312.8" textLength="658.8" clip-path="url(#breeze-k8s-configure-cluster-line-12)">[default:&#160;v1.23.17]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
 </text><text class="breeze-k8s-configure-cluster-r5" x="0" y="337.2" textLength="1464" clip-path="url(#breeze-k8s-configure-cluster-line-13)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-configure-cluster-r2" x="1464" y="337.2" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-13)">
 </text><text class="breeze-k8s-configure-cluster-r5" x="0" y="361.6" textLength="24.4" clip-path="url(#breeze-k8s-configure-cluster-line-14)">╭─</text><text class="breeze-k8s-configure-cluster-r5" x="24.4" y="361.6" textLength="219.6" clip-path="url(#breeze-k8s-configure-cluster-line-14)">&#160;Parallel&#160;options&#160;</text><text class="breeze-k8s-configure-cluster-r5" x="244" y="361.6" textLength="1195.6" clip-path="url(#breeze-k8s-configure-cluster-line-14)">─────────────────────── [...]
 </text><text class="breeze-k8s-configure-cluster-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-15)">│</text><text class="breeze-k8s-configure-cluster-r4" x="24.4" y="386" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-15)">-</text><text class="breeze-k8s-configure-cluster-r4" x="36.6" y="386" textLength="48.8" clip-path="url(#breeze-k8s-configure-cluster-line-15)">-run</text><text class="breeze-k8s-configure-cluster-r4" x="85.4 [...]
@@ -176,7 +176,7 @@
 </text><text class="breeze-k8s-configure-cluster-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-20)">│</text><text class="breeze-k8s-configure-cluster-r4" x="24.4" y="508" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-20)">-</text><text class="breeze-k8s-configure-cluster-r4" x="36.6" y="508" textLength="85.4" clip-path="url(#breeze-k8s-configure-cluster-line-20)">-python</text><text class="breeze-k8s-configure-cluster-r4" x="1 [...]
 </text><text class="breeze-k8s-configure-cluster-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-21)">│</text><text class="breeze-k8s-configure-cluster-r5" x="378.2" y="532.4" textLength="951.6" clip-path="url(#breeze-k8s-configure-cluster-line-21)">[default:&#160;3.7&#160;3.8&#160;3.9&#160;3.10&#160;3.11]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
 </text><text class="breeze-k8s-configure-cluster-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-22)">│</text><text class="breeze-k8s-configure-cluster-r4" x="24.4" y="556.8" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-22)">-</text><text class="breeze-k8s-configure-cluster-r4" x="36.6" y="556.8" textLength="134.2" clip-path="url(#breeze-k8s-configure-cluster-line-22)">-kubernetes</text><text class="breeze-k8s-configure-clust [...]
-</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-23)">│</text><text class="breeze-k8s-configure-cluster-r5" x="378.2" y="581.2" textLength="756.4" clip-path="url(#breeze-k8s-configure-cluster-line-23)">[default:&#160;v1.23.13&#160;v1.24.7&#160;v1.25.3&#160;v1.26.0]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breez [...]
+</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-23)">│</text><text class="breeze-k8s-configure-cluster-r5" x="378.2" y="581.2" textLength="756.4" clip-path="url(#breeze-k8s-configure-cluster-line-23)">[default:&#160;v1.23.17&#160;v1.24.13&#160;v1.25.9&#160;v1.26.4&#160;v1.27.1]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-k8s-configure-cluster-r5" x="1451.8" y [...]
 </text><text class="breeze-k8s-configure-cluster-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-24)">│</text><text class="breeze-k8s-configure-cluster-r4" x="24.4" y="605.6" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-24)">-</text><text class="breeze-k8s-configure-cluster-r4" x="36.6" y="605.6" textLength="61" clip-path="url(#breeze-k8s-configure-cluster-line-24)">-skip</text><text class="breeze-k8s-configure-cluster-r4" x= [...]
 </text><text class="breeze-k8s-configure-cluster-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-25)">│</text><text class="breeze-k8s-configure-cluster-r4" x="24.4" y="630" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-25)">-</text><text class="breeze-k8s-configure-cluster-r4" x="36.6" y="630" textLength="73.2" clip-path="url(#breeze-k8s-configure-cluster-line-25)">-debug</text><text class="breeze-k8s-configure-cluster-r4" x="10 [...]
 </text><text class="breeze-k8s-configure-cluster-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-26)">│</text><text class="breeze-k8s-configure-cluster-r4" x="24.4" y="654.4" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-26)">-</text><text class="breeze-k8s-configure-cluster-r4" x="36.6" y="654.4" textLength="97.6" clip-path="url(#breeze-k8s-configure-cluster-line-26)">-include</text><text class="breeze-k8s-configure-cluster-r [...]
diff --git a/images/breeze/output_k8s_create-cluster.svg b/images/breeze/output_k8s_create-cluster.svg
index 4b961e5792..d3f2a117b9 100644
--- a/images/breeze/output_k8s_create-cluster.svg
+++ b/images/breeze/output_k8s_create-cluster.svg
@@ -163,8 +163,8 @@
 </text><text class="breeze-k8s-create-cluster-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-7)">│</text><text class="breeze-k8s-create-cluster-r7" x="390.4" y="190.8" textLength="732" clip-path="url(#breeze-k8s-create-cluster-line-7)">(&gt;3.7&lt;&#160;|&#160;3.8&#160;|&#160;3.9&#160;|&#160;3.10&#160;|&#160;3.11)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
 </text><text class="breeze-k8s-create-cluster-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-8)">│</text><text class="breeze-k8s-create-cluster-r5" x="390.4" y="215.2" textLength="732" clip-path="url(#breeze-k8s-create-cluster-line-8)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
 </text><text class="breeze-k8s-create-cluster-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-9)">│</text><text class="breeze-k8s-create-cluster-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-9)">-</text><text class="breeze-k8s-create-cluster-r4" x="36.6" y="239.6" textLength="134.2" clip-path="url(#breeze-k8s-create-cluster-line-9)">-kubernetes</text><text class="breeze-k8s-create-cluster-r4" x="170.8" y="239. [...]
-</text><text class="breeze-k8s-create-cluster-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-10)">│</text><text class="breeze-k8s-create-cluster-r7" x="390.4" y="264" textLength="658.8" clip-path="url(#breeze-k8s-create-cluster-line-10)">(&gt;v1.23.13&lt;&#160;|&#160;v1.24.7&#160;|&#160;v1.25.3&#160;|&#160;v1.26.0)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-k8s-create-cluster-r5" x="1451.8" y="264" [...]
-</text><text class="breeze-k8s-create-cluster-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-11)">│</text><text class="breeze-k8s-create-cluster-r5" x="390.4" y="288.4" textLength="658.8" clip-path="url(#breeze-k8s-create-cluster-line-11)">[default:&#160;v1.23.13]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="breeze-k8s-create-cluster-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-10)">│</text><text class="breeze-k8s-create-cluster-r7" x="390.4" y="264" textLength="658.8" clip-path="url(#breeze-k8s-create-cluster-line-10)">(&gt;v1.23.17&lt;&#160;|&#160;v1.24.13&#160;|&#160;v1.25.9&#160;|&#160;v1.26.4&#160;|&#160;v1.27.1)&#160;</text><text class="breeze-k8s-create-cluster-r5" x="1451.8" y="264" textLength="12.2" clip-path="url(#breeze-k8s [...]
+</text><text class="breeze-k8s-create-cluster-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-11)">│</text><text class="breeze-k8s-create-cluster-r5" x="390.4" y="288.4" textLength="658.8" clip-path="url(#breeze-k8s-create-cluster-line-11)">[default:&#160;v1.23.17]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
 </text><text class="breeze-k8s-create-cluster-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-12)">│</text><text class="breeze-k8s-create-cluster-r4" x="24.4" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-12)">-</text><text class="breeze-k8s-create-cluster-r4" x="36.6" y="312.8" textLength="73.2" clip-path="url(#breeze-k8s-create-cluster-line-12)">-force</text><text class="breeze-k8s-create-cluster-r4" x="109.8" y="312.8"  [...]
 </text><text class="breeze-k8s-create-cluster-r5" x="0" y="337.2" textLength="1464" clip-path="url(#breeze-k8s-create-cluster-line-13)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-create-cluster-r2" x="1464" y="337.2" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-13)">
 </text><text class="breeze-k8s-create-cluster-r5" x="0" y="361.6" textLength="24.4" clip-path="url(#breeze-k8s-create-cluster-line-14)">╭─</text><text class="breeze-k8s-create-cluster-r5" x="24.4" y="361.6" textLength="219.6" clip-path="url(#breeze-k8s-create-cluster-line-14)">&#160;Parallel&#160;options&#160;</text><text class="breeze-k8s-create-cluster-r5" x="244" y="361.6" textLength="1195.6" clip-path="url(#breeze-k8s-create-cluster-line-14)">───────────────────────────────────────── [...]
@@ -176,7 +176,7 @@
 </text><text class="breeze-k8s-create-cluster-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-20)">│</text><text class="breeze-k8s-create-cluster-r4" x="24.4" y="508" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-20)">-</text><text class="breeze-k8s-create-cluster-r4" x="36.6" y="508" textLength="85.4" clip-path="url(#breeze-k8s-create-cluster-line-20)">-python</text><text class="breeze-k8s-create-cluster-r4" x="122" y="508" textLengt [...]
 </text><text class="breeze-k8s-create-cluster-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-21)">│</text><text class="breeze-k8s-create-cluster-r5" x="378.2" y="532.4" textLength="951.6" clip-path="url(#breeze-k8s-create-cluster-line-21)">[default:&#160;3.7&#160;3.8&#160;3.9&#160;3.10&#160;3.11]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
 </text><text class="breeze-k8s-create-cluster-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-22)">│</text><text class="breeze-k8s-create-cluster-r4" x="24.4" y="556.8" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-22)">-</text><text class="breeze-k8s-create-cluster-r4" x="36.6" y="556.8" textLength="134.2" clip-path="url(#breeze-k8s-create-cluster-line-22)">-kubernetes</text><text class="breeze-k8s-create-cluster-r4" x="170.8" y="5 [...]
-</text><text class="breeze-k8s-create-cluster-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-23)">│</text><text class="breeze-k8s-create-cluster-r5" x="378.2" y="581.2" textLength="756.4" clip-path="url(#breeze-k8s-create-cluster-line-23)">[default:&#160;v1.23.13&#160;v1.24.7&#160;v1.25.3&#160;v1.26.0]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-k8s-create [...]
+</text><text class="breeze-k8s-create-cluster-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-23)">│</text><text class="breeze-k8s-create-cluster-r5" x="378.2" y="581.2" textLength="756.4" clip-path="url(#breeze-k8s-create-cluster-line-23)">[default:&#160;v1.23.17&#160;v1.24.13&#160;v1.25.9&#160;v1.26.4&#160;v1.27.1]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-k8s-create-cluster-r5" x="1451.8" y="581.2" textLe [...]
 </text><text class="breeze-k8s-create-cluster-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-24)">│</text><text class="breeze-k8s-create-cluster-r4" x="24.4" y="605.6" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-24)">-</text><text class="breeze-k8s-create-cluster-r4" x="36.6" y="605.6" textLength="61" clip-path="url(#breeze-k8s-create-cluster-line-24)">-skip</text><text class="breeze-k8s-create-cluster-r4" x="97.6" y="605.6" text [...]
 </text><text class="breeze-k8s-create-cluster-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-25)">│</text><text class="breeze-k8s-create-cluster-r4" x="24.4" y="630" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-25)">-</text><text class="breeze-k8s-create-cluster-r4" x="36.6" y="630" textLength="73.2" clip-path="url(#breeze-k8s-create-cluster-line-25)">-debug</text><text class="breeze-k8s-create-cluster-r4" x="109.8" y="630" textLeng [...]
 </text><text class="breeze-k8s-create-cluster-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-26)">│</text><text class="breeze-k8s-create-cluster-r4" x="24.4" y="654.4" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-26)">-</text><text class="breeze-k8s-create-cluster-r4" x="36.6" y="654.4" textLength="97.6" clip-path="url(#breeze-k8s-create-cluster-line-26)">-include</text><text class="breeze-k8s-create-cluster-r4" x="134.2" y="654.4 [...]
diff --git a/images/breeze/output_k8s_delete-cluster.svg b/images/breeze/output_k8s_delete-cluster.svg
index 074efa9b62..507887c93f 100644
--- a/images/breeze/output_k8s_delete-cluster.svg
+++ b/images/breeze/output_k8s_delete-cluster.svg
@@ -121,8 +121,8 @@
 </text><text class="breeze-k8s-delete-cluster-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-7)">│</text><text class="breeze-k8s-delete-cluster-r7" x="341.6" y="190.8" textLength="732" clip-path="url(#breeze-k8s-delete-cluster-line-7)">(&gt;3.7&lt;&#160;|&#160;3.8&#160;|&#160;3.9&#160;|&#160;3.10&#160;|&#160;3.11)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
 </text><text class="breeze-k8s-delete-cluster-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-8)">│</text><text class="breeze-k8s-delete-cluster-r5" x="341.6" y="215.2" textLength="732" clip-path="url(#breeze-k8s-delete-cluster-line-8)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
 </text><text class="breeze-k8s-delete-cluster-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-9)">│</text><text class="breeze-k8s-delete-cluster-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-9)">-</text><text class="breeze-k8s-delete-cluster-r4" x="36.6" y="239.6" textLength="134.2" clip-path="url(#breeze-k8s-delete-cluster-line-9)">-kubernetes</text><text class="breeze-k8s-delete-cluster-r4" x="170.8" y="239. [...]
-</text><text class="breeze-k8s-delete-cluster-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-10)">│</text><text class="breeze-k8s-delete-cluster-r7" x="341.6" y="264" textLength="658.8" clip-path="url(#breeze-k8s-delete-cluster-line-10)">(&gt;v1.23.13&lt;&#160;|&#160;v1.24.7&#160;|&#160;v1.25.3&#160;|&#160;v1.26.0)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-k8s-delete-cluster-r5" x="1451.8" y="264" [...]
-</text><text class="breeze-k8s-delete-cluster-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-11)">│</text><text class="breeze-k8s-delete-cluster-r5" x="341.6" y="288.4" textLength="658.8" clip-path="url(#breeze-k8s-delete-cluster-line-11)">[default:&#160;v1.23.13]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="breeze-k8s-delete-cluster-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-10)">│</text><text class="breeze-k8s-delete-cluster-r7" x="341.6" y="264" textLength="658.8" clip-path="url(#breeze-k8s-delete-cluster-line-10)">(&gt;v1.23.17&lt;&#160;|&#160;v1.24.13&#160;|&#160;v1.25.9&#160;|&#160;v1.26.4&#160;|&#160;v1.27.1)&#160;</text><text class="breeze-k8s-delete-cluster-r5" x="1451.8" y="264" textLength="12.2" clip-path="url(#breeze-k8s [...]
+</text><text class="breeze-k8s-delete-cluster-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-11)">│</text><text class="breeze-k8s-delete-cluster-r5" x="341.6" y="288.4" textLength="658.8" clip-path="url(#breeze-k8s-delete-cluster-line-11)">[default:&#160;v1.23.17]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
 </text><text class="breeze-k8s-delete-cluster-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-12)">│</text><text class="breeze-k8s-delete-cluster-r4" x="24.4" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-12)">-</text><text class="breeze-k8s-delete-cluster-r4" x="36.6" y="312.8" textLength="48.8" clip-path="url(#breeze-k8s-delete-cluster-line-12)">-all</text><text class="breeze-k8s-delete-cluster-r2" x="341.6" y="312.8" te [...]
 </text><text class="breeze-k8s-delete-cluster-r5" x="0" y="337.2" textLength="1464" clip-path="url(#breeze-k8s-delete-cluster-line-13)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-delete-cluster-r2" x="1464" y="337.2" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-13)">
 </text><text class="breeze-k8s-delete-cluster-r5" x="0" y="361.6" textLength="24.4" clip-path="url(#breeze-k8s-delete-cluster-line-14)">╭─</text><text class="breeze-k8s-delete-cluster-r5" x="24.4" y="361.6" textLength="195.2" clip-path="url(#breeze-k8s-delete-cluster-line-14)">&#160;Common&#160;options&#160;</text><text class="breeze-k8s-delete-cluster-r5" x="219.6" y="361.6" textLength="1220" clip-path="url(#breeze-k8s-delete-cluster-line-14)">─────────────────────────────────────────── [...]
diff --git a/images/breeze/output_k8s_deploy-airflow.svg b/images/breeze/output_k8s_deploy-airflow.svg
index 762cf2b28f..7f89392627 100644
--- a/images/breeze/output_k8s_deploy-airflow.svg
+++ b/images/breeze/output_k8s_deploy-airflow.svg
@@ -175,8 +175,8 @@
 </text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-7)">│</text><text class="breeze-k8s-deploy-airflow-r7" x="366" y="190.8" textLength="732" clip-path="url(#breeze-k8s-deploy-airflow-line-7)">(&gt;3.7&lt;&#160;|&#160;3.8&#160;|&#160;3.9&#160;|&#160;3.10&#160;|&#160;3.11)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
 </text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-8)">│</text><text class="breeze-k8s-deploy-airflow-r5" x="366" y="215.2" textLength="732" clip-path="url(#breeze-k8s-deploy-airflow-line-8)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
 </text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-9)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-9)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="239.6" textLength="134.2" clip-path="url(#breeze-k8s-deploy-airflow-line-9)">-kubernetes</text><text class="breeze-k8s-deploy-airflow-r4" x="170.8" y="239. [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-10)">│</text><text class="breeze-k8s-deploy-airflow-r7" x="366" y="264" textLength="658.8" clip-path="url(#breeze-k8s-deploy-airflow-line-10)">(&gt;v1.23.13&lt;&#160;|&#160;v1.24.7&#160;|&#160;v1.25.3&#160;|&#160;v1.26.0)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-k8s-deploy-airflow-r5" x="1451.8" y="264" t [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-11)">│</text><text class="breeze-k8s-deploy-airflow-r5" x="366" y="288.4" textLength="658.8" clip-path="url(#breeze-k8s-deploy-airflow-line-11)">[default:&#160;v1.23.13]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-10)">│</text><text class="breeze-k8s-deploy-airflow-r7" x="366" y="264" textLength="658.8" clip-path="url(#breeze-k8s-deploy-airflow-line-10)">(&gt;v1.23.17&lt;&#160;|&#160;v1.24.13&#160;|&#160;v1.25.9&#160;|&#160;v1.26.4&#160;|&#160;v1.27.1)&#160;</text><text class="breeze-k8s-deploy-airflow-r5" x="1451.8" y="264" textLength="12.2" clip-path="url(#breeze-k8s-d [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-11)">│</text><text class="breeze-k8s-deploy-airflow-r5" x="366" y="288.4" textLength="658.8" clip-path="url(#breeze-k8s-deploy-airflow-line-11)">[default:&#160;v1.23.17]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
 </text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-12)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-12)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="312.8" textLength="109.8" clip-path="url(#breeze-k8s-deploy-airflow-line-12)">-executor</text><text class="breeze-k8s-deploy-airflow-r2" x="366" y="312.8 [...]
 </text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-13)">│</text><text class="breeze-k8s-deploy-airflow-r7" x="366" y="337.2" textLength="1000.4" clip-path="url(#breeze-k8s-deploy-airflow-line-13)">(&gt;KubernetesExecutor&lt;&#160;|&#160;CeleryExecutor&#160;|&#160;LocalExecutor&#160;|&#160;CeleryKubernetesExecutor)</text><text class="breeze-k8s-deploy-airflow-r5" x="1451.8" y="337.2" textLength="12.2" clip-pat [...]
 </text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-14)">│</text><text class="breeze-k8s-deploy-airflow-r5" x="366" y="361.6" textLength="1000.4" clip-path="url(#breeze-k8s-deploy-airflow-line-14)">[default:&#160;KubernetesExecutor]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
@@ -192,7 +192,7 @@
 </text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-24)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="605.6" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-24)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="605.6" textLength="85.4" clip-path="url(#breeze-k8s-deploy-airflow-line-24)">-python</text><text class="breeze-k8s-deploy-airflow-r4" x="122" y="605.6" t [...]
 </text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-25)">│</text><text class="breeze-k8s-deploy-airflow-r5" x="378.2" y="630" textLength="951.6" clip-path="url(#breeze-k8s-deploy-airflow-line-25)">[default:&#160;3.7&#160;3.8&#160;3.9&#160;3.10&#160;3.11]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
 </text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-26)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="654.4" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-26)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="654.4" textLength="134.2" clip-path="url(#breeze-k8s-deploy-airflow-line-26)">-kubernetes</text><text class="breeze-k8s-deploy-airflow-r4" x="170.8" y="6 [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-27)">│</text><text class="breeze-k8s-deploy-airflow-r5" x="378.2" y="678.8" textLength="756.4" clip-path="url(#breeze-k8s-deploy-airflow-line-27)">[default:&#160;v1.23.13&#160;v1.24.7&#160;v1.25.3&#160;v1.26.0]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-k8s-deploy [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-27)">│</text><text class="breeze-k8s-deploy-airflow-r5" x="378.2" y="678.8" textLength="756.4" clip-path="url(#breeze-k8s-deploy-airflow-line-27)">[default:&#160;v1.23.17&#160;v1.24.13&#160;v1.25.9&#160;v1.26.4&#160;v1.27.1]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-k8s-deploy-airflow-r5" x="1451.8" y="678.8" textLe [...]
 </text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-28)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="703.2" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-28)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="703.2" textLength="61" clip-path="url(#breeze-k8s-deploy-airflow-line-28)">-skip</text><text class="breeze-k8s-deploy-airflow-r4" x="97.6" y="703.2" text [...]
 </text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-29)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="727.6" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-29)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="727.6" textLength="73.2" clip-path="url(#breeze-k8s-deploy-airflow-line-29)">-debug</text><text class="breeze-k8s-deploy-airflow-r4" x="109.8" y="727.6"  [...]
 </text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-30)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="752" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-30)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="752" textLength="97.6" clip-path="url(#breeze-k8s-deploy-airflow-line-30)">-include</text><text class="breeze-k8s-deploy-airflow-r4" x="134.2" y="752" textLe [...]
diff --git a/images/breeze/output_k8s_k9s.svg b/images/breeze/output_k8s_k9s.svg
index af1598c40a..397ab4ec31 100644
--- a/images/breeze/output_k8s_k9s.svg
+++ b/images/breeze/output_k8s_k9s.svg
@@ -118,8 +118,8 @@
 </text><text class="breeze-k8s-k9s-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-7)">│</text><text class="breeze-k8s-k9s-r7" x="341.6" y="190.8" textLength="732" clip-path="url(#breeze-k8s-k9s-line-7)">(&gt;3.7&lt;&#160;|&#160;3.8&#160;|&#160;3.9&#160;|&#160;3.10&#160;|&#160;3.11)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="b [...]
 </text><text class="breeze-k8s-k9s-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-8)">│</text><text class="breeze-k8s-k9s-r5" x="341.6" y="215.2" textLength="732" clip-path="url(#breeze-k8s-k9s-line-8)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
 </text><text class="breeze-k8s-k9s-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-9)">│</text><text class="breeze-k8s-k9s-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-9)">-</text><text class="breeze-k8s-k9s-r4" x="36.6" y="239.6" textLength="134.2" clip-path="url(#breeze-k8s-k9s-line-9)">-kubernetes</text><text class="breeze-k8s-k9s-r4" x="170.8" y="239.6" textLength="97.6" clip-path="url(#breeze-k8s-k9s-line-9)">-version</text>< [...]
-</text><text class="breeze-k8s-k9s-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-10)">│</text><text class="breeze-k8s-k9s-r7" x="341.6" y="264" textLength="658.8" clip-path="url(#breeze-k8s-k9s-line-10)">(&gt;v1.23.13&lt;&#160;|&#160;v1.24.7&#160;|&#160;v1.25.3&#160;|&#160;v1.26.0)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-k8s-k9s-r5" x="1451.8" y="264" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line- [...]
-</text><text class="breeze-k8s-k9s-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-11)">│</text><text class="breeze-k8s-k9s-r5" x="341.6" y="288.4" textLength="658.8" clip-path="url(#breeze-k8s-k9s-line-11)">[default:&#160;v1.23.13]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="bree [...]
+</text><text class="breeze-k8s-k9s-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-10)">│</text><text class="breeze-k8s-k9s-r7" x="341.6" y="264" textLength="658.8" clip-path="url(#breeze-k8s-k9s-line-10)">(&gt;v1.23.17&lt;&#160;|&#160;v1.24.13&#160;|&#160;v1.25.9&#160;|&#160;v1.26.4&#160;|&#160;v1.27.1)&#160;</text><text class="breeze-k8s-k9s-r5" x="1451.8" y="264" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-10)">│</text><text class="breeze-k8s-k9s-r2"  [...]
+</text><text class="breeze-k8s-k9s-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-11)">│</text><text class="breeze-k8s-k9s-r5" x="341.6" y="288.4" textLength="658.8" clip-path="url(#breeze-k8s-k9s-line-11)">[default:&#160;v1.23.17]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="bree [...]
 </text><text class="breeze-k8s-k9s-r5" x="0" y="312.8" textLength="1464" clip-path="url(#breeze-k8s-k9s-line-12)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-k9s-r2" x="1464" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-12)">
 </text><text class="breeze-k8s-k9s-r5" x="0" y="337.2" textLength="24.4" clip-path="url(#breeze-k8s-k9s-line-13)">╭─</text><text class="breeze-k8s-k9s-r5" x="24.4" y="337.2" textLength="195.2" clip-path="url(#breeze-k8s-k9s-line-13)">&#160;Common&#160;options&#160;</text><text class="breeze-k8s-k9s-r5" x="219.6" y="337.2" textLength="1220" clip-path="url(#breeze-k8s-k9s-line-13)">────────────────────────────────────────────────────────────────────────────────────────────────────</text><t [...]
 </text><text class="breeze-k8s-k9s-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-14)">│</text><text class="breeze-k8s-k9s-r4" x="24.4" y="361.6" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-14)">-</text><text class="breeze-k8s-k9s-r4" x="36.6" y="361.6" textLength="97.6" clip-path="url(#breeze-k8s-k9s-line-14)">-verbose</text><text class="breeze-k8s-k9s-r6" x="158.6" y="361.6" textLength="24.4" clip-path="url(#breeze-k8s-k9s-line-14)">-v</text><text c [...]
diff --git a/images/breeze/output_k8s_logs.svg b/images/breeze/output_k8s_logs.svg
index 026aec8338..0d928d73b8 100644
--- a/images/breeze/output_k8s_logs.svg
+++ b/images/breeze/output_k8s_logs.svg
@@ -121,8 +121,8 @@
 </text><text class="breeze-k8s-logs-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-7)">│</text><text class="breeze-k8s-logs-r7" x="341.6" y="190.8" textLength="732" clip-path="url(#breeze-k8s-logs-line-7)">(&gt;3.7&lt;&#160;|&#160;3.8&#160;|&#160;3.9&#160;|&#160;3.10&#160;|&#160;3.11)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text clas [...]
 </text><text class="breeze-k8s-logs-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-8)">│</text><text class="breeze-k8s-logs-r5" x="341.6" y="215.2" textLength="732" clip-path="url(#breeze-k8s-logs-line-8)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
 </text><text class="breeze-k8s-logs-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-9)">│</text><text class="breeze-k8s-logs-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-9)">-</text><text class="breeze-k8s-logs-r4" x="36.6" y="239.6" textLength="134.2" clip-path="url(#breeze-k8s-logs-line-9)">-kubernetes</text><text class="breeze-k8s-logs-r4" x="170.8" y="239.6" textLength="97.6" clip-path="url(#breeze-k8s-logs-line-9)">-version [...]
-</text><text class="breeze-k8s-logs-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-10)">│</text><text class="breeze-k8s-logs-r7" x="341.6" y="264" textLength="658.8" clip-path="url(#breeze-k8s-logs-line-10)">(&gt;v1.23.13&lt;&#160;|&#160;v1.24.7&#160;|&#160;v1.25.3&#160;|&#160;v1.26.0)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-k8s-logs-r5" x="1451.8" y="264" textLength="12.2" clip-path="url(#breeze-k8s-logs [...]
-</text><text class="breeze-k8s-logs-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-11)">│</text><text class="breeze-k8s-logs-r5" x="341.6" y="288.4" textLength="658.8" clip-path="url(#breeze-k8s-logs-line-11)">[default:&#160;v1.23.13]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class=" [...]
+</text><text class="breeze-k8s-logs-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-10)">│</text><text class="breeze-k8s-logs-r7" x="341.6" y="264" textLength="658.8" clip-path="url(#breeze-k8s-logs-line-10)">(&gt;v1.23.17&lt;&#160;|&#160;v1.24.13&#160;|&#160;v1.25.9&#160;|&#160;v1.26.4&#160;|&#160;v1.27.1)&#160;</text><text class="breeze-k8s-logs-r5" x="1451.8" y="264" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-10)">│</text><text class="breeze-k8s-lo [...]
+</text><text class="breeze-k8s-logs-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-11)">│</text><text class="breeze-k8s-logs-r5" x="341.6" y="288.4" textLength="658.8" clip-path="url(#breeze-k8s-logs-line-11)">[default:&#160;v1.23.17]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class=" [...]
 </text><text class="breeze-k8s-logs-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-12)">│</text><text class="breeze-k8s-logs-r4" x="24.4" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-12)">-</text><text class="breeze-k8s-logs-r4" x="36.6" y="312.8" textLength="48.8" clip-path="url(#breeze-k8s-logs-line-12)">-all</text><text class="breeze-k8s-logs-r2" x="341.6" y="312.8" textLength="390.4" clip-path="url(#breeze-k8s-logs-line-12)">Apply&#160; [...]
 </text><text class="breeze-k8s-logs-r5" x="0" y="337.2" textLength="1464" clip-path="url(#breeze-k8s-logs-line-13)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-logs-r2" x="1464" y="337.2" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-13)">
 </text><text class="breeze-k8s-logs-r5" x="0" y="361.6" textLength="24.4" clip-path="url(#breeze-k8s-logs-line-14)">╭─</text><text class="breeze-k8s-logs-r5" x="24.4" y="361.6" textLength="195.2" clip-path="url(#breeze-k8s-logs-line-14)">&#160;Common&#160;options&#160;</text><text class="breeze-k8s-logs-r5" x="219.6" y="361.6" textLength="1220" clip-path="url(#breeze-k8s-logs-line-14)">────────────────────────────────────────────────────────────────────────────────────────────────────</t [...]
diff --git a/images/breeze/output_k8s_run-complete-tests.svg b/images/breeze/output_k8s_run-complete-tests.svg
index 4f288ab22a..85c3828abc 100644
--- a/images/breeze/output_k8s_run-complete-tests.svg
+++ b/images/breeze/output_k8s_run-complete-tests.svg
@@ -220,8 +220,8 @@
 </text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-19)">│</text><text class="breeze-k8s-run-complete-tests-r6" x="341.6" y="483.6" textLength="732" clip-path="url(#breeze-k8s-run-complete-tests-line-19)">(&gt;3.7&lt;&#160;|&#160;3.8&#160;|&#160;3.9&#160;|&#160;3.10&#160;|&#160;3.11)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
 </text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-20)">│</text><text class="breeze-k8s-run-complete-tests-r5" x="341.6" y="508" textLength="732" clip-path="url(#breeze-k8s-run-complete-tests-line-20)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
 </text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-21)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="532.4" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-21)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="532.4" textLength="134.2" clip-path="url(#breeze-k8s-run-complete-tests-line-21)">-kubernetes</text><text class="breeze-k8s-run-compl [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-22)">│</text><text class="breeze-k8s-run-complete-tests-r6" x="341.6" y="556.8" textLength="658.8" clip-path="url(#breeze-k8s-run-complete-tests-line-22)">(&gt;v1.23.13&lt;&#160;|&#160;v1.24.7&#160;|&#160;v1.25.3&#160;|&#160;v1.26.0)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-k8s-run-complete-test [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-23)">│</text><text class="breeze-k8s-run-complete-tests-r5" x="341.6" y="581.2" textLength="658.8" clip-path="url(#breeze-k8s-run-complete-tests-line-23)">[default:&#160;v1.23.13]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-22)">│</text><text class="breeze-k8s-run-complete-tests-r6" x="341.6" y="556.8" textLength="658.8" clip-path="url(#breeze-k8s-run-complete-tests-line-22)">(&gt;v1.23.17&lt;&#160;|&#160;v1.24.13&#160;|&#160;v1.25.9&#160;|&#160;v1.26.4&#160;|&#160;v1.27.1)&#160;</text><text class="breeze-k8s-run-complete-tests-r5" x="1451.8" y="556.8" textLength="12.2"  [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-23)">│</text><text class="breeze-k8s-run-complete-tests-r5" x="341.6" y="581.2" textLength="658.8" clip-path="url(#breeze-k8s-run-complete-tests-line-23)">[default:&#160;v1.23.17]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
 </text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-24)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="605.6" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-24)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="605.6" textLength="109.8" clip-path="url(#breeze-k8s-run-complete-tests-line-24)">-executor</text><text class="breeze-k8s-run-complet [...]
 </text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-25)">│</text><text class="breeze-k8s-run-complete-tests-r6" x="341.6" y="630" textLength="1000.4" clip-path="url(#breeze-k8s-run-complete-tests-line-25)">(&gt;KubernetesExecutor&lt;&#160;|&#160;CeleryExecutor&#160;|&#160;LocalExecutor&#160;|&#160;CeleryKubernetesExecutor)</text><text class="breeze-k8s-run-complete-tests-r5" x="1451.8" y="630" textLength [...]
 </text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-26)">│</text><text class="breeze-k8s-run-complete-tests-r5" x="341.6" y="654.4" textLength="1000.4" clip-path="url(#breeze-k8s-run-complete-tests-line-26)">[default:&#160;KubernetesExecutor]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
@@ -236,7 +236,7 @@
 </text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-35)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="874" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-35)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="874" textLength="85.4" clip-path="url(#breeze-k8s-run-complete-tests-line-35)">-python</text><text class="breeze-k8s-run-complete-tests-r [...]
 </text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-36)">│</text><text class="breeze-k8s-run-complete-tests-r5" x="378.2" y="898.4" textLength="951.6" clip-path="url(#breeze-k8s-run-complete-tests-line-36)">[default:&#160;3.7&#160;3.8&#160;3.9&#160;3.10&#160;3.11]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
 </text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-37)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="922.8" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-37)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="922.8" textLength="134.2" clip-path="url(#breeze-k8s-run-complete-tests-line-37)">-kubernetes</text><text class="breeze-k8s-run-compl [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-38)">│</text><text class="breeze-k8s-run-complete-tests-r5" x="378.2" y="947.2" textLength="756.4" clip-path="url(#breeze-k8s-run-complete-tests-line-38)">[default:&#160;v1.23.13&#160;v1.24.7&#160;v1.25.3&#160;v1.26.0]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="b [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-38)">│</text><text class="breeze-k8s-run-complete-tests-r5" x="378.2" y="947.2" textLength="756.4" clip-path="url(#breeze-k8s-run-complete-tests-line-38)">[default:&#160;v1.23.17&#160;v1.24.13&#160;v1.25.9&#160;v1.26.4&#160;v1.27.1]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-k8s-run-complete-tests-r5" x="1451 [...]
 </text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-39)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="971.6" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-39)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="971.6" textLength="61" clip-path="url(#breeze-k8s-run-complete-tests-line-39)">-skip</text><text class="breeze-k8s-run-complete-tests [...]
 </text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="996" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-40)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="996" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-40)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="996" textLength="73.2" clip-path="url(#breeze-k8s-run-complete-tests-line-40)">-debug</text><text class="breeze-k8s-run-complete-tests-r4 [...]
 </text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="1020.4" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-41)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-41)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="1020.4" textLength="97.6" clip-path="url(#breeze-k8s-run-complete-tests-line-41)">-include</text><text class="breeze-k8s-run-comple [...]
diff --git a/images/breeze/output_k8s_shell.svg b/images/breeze/output_k8s_shell.svg
index 2a418b6f1e..22ca11fb97 100644
--- a/images/breeze/output_k8s_shell.svg
+++ b/images/breeze/output_k8s_shell.svg
@@ -130,8 +130,8 @@
 </text><text class="breeze-k8s-shell-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-7)">│</text><text class="breeze-k8s-shell-r7" x="341.6" y="190.8" textLength="732" clip-path="url(#breeze-k8s-shell-line-7)">(&gt;3.7&lt;&#160;|&#160;3.8&#160;|&#160;3.9&#160;|&#160;3.10&#160;|&#160;3.11)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text  [...]
 </text><text class="breeze-k8s-shell-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-8)">│</text><text class="breeze-k8s-shell-r5" x="341.6" y="215.2" textLength="732" clip-path="url(#breeze-k8s-shell-line-8)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
 </text><text class="breeze-k8s-shell-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-9)">│</text><text class="breeze-k8s-shell-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-9)">-</text><text class="breeze-k8s-shell-r4" x="36.6" y="239.6" textLength="134.2" clip-path="url(#breeze-k8s-shell-line-9)">-kubernetes</text><text class="breeze-k8s-shell-r4" x="170.8" y="239.6" textLength="97.6" clip-path="url(#breeze-k8s-shell-line-9)"> [...]
-</text><text class="breeze-k8s-shell-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-10)">│</text><text class="breeze-k8s-shell-r7" x="341.6" y="264" textLength="658.8" clip-path="url(#breeze-k8s-shell-line-10)">(&gt;v1.23.13&lt;&#160;|&#160;v1.24.7&#160;|&#160;v1.25.3&#160;|&#160;v1.26.0)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-k8s-shell-r5" x="1451.8" y="264" textLength="12.2" clip-path="url(#breeze-k8s [...]
-</text><text class="breeze-k8s-shell-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-11)">│</text><text class="breeze-k8s-shell-r5" x="341.6" y="288.4" textLength="658.8" clip-path="url(#breeze-k8s-shell-line-11)">[default:&#160;v1.23.13]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text cla [...]
+</text><text class="breeze-k8s-shell-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-10)">│</text><text class="breeze-k8s-shell-r7" x="341.6" y="264" textLength="658.8" clip-path="url(#breeze-k8s-shell-line-10)">(&gt;v1.23.17&lt;&#160;|&#160;v1.24.13&#160;|&#160;v1.25.9&#160;|&#160;v1.26.4&#160;|&#160;v1.27.1)&#160;</text><text class="breeze-k8s-shell-r5" x="1451.8" y="264" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-10)">│</text><text class="breeze- [...]
+</text><text class="breeze-k8s-shell-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-11)">│</text><text class="breeze-k8s-shell-r5" x="341.6" y="288.4" textLength="658.8" clip-path="url(#breeze-k8s-shell-line-11)">[default:&#160;v1.23.17]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text cla [...]
 </text><text class="breeze-k8s-shell-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-12)">│</text><text class="breeze-k8s-shell-r4" x="24.4" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-12)">-</text><text class="breeze-k8s-shell-r4" x="36.6" y="312.8" textLength="109.8" clip-path="url(#breeze-k8s-shell-line-12)">-executor</text><text class="breeze-k8s-shell-r2" x="341.6" y="312.8" textLength="1000.4" clip-path="url(#breeze-k8s-shell-line-1 [...]
 </text><text class="breeze-k8s-shell-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-13)">│</text><text class="breeze-k8s-shell-r7" x="341.6" y="337.2" textLength="1000.4" clip-path="url(#breeze-k8s-shell-line-13)">(&gt;KubernetesExecutor&lt;&#160;|&#160;CeleryExecutor&#160;|&#160;LocalExecutor&#160;|&#160;CeleryKubernetesExecutor)</text><text class="breeze-k8s-shell-r5" x="1451.8" y="337.2" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-13)">│</text> [...]
 </text><text class="breeze-k8s-shell-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-14)">│</text><text class="breeze-k8s-shell-r5" x="341.6" y="361.6" textLength="1000.4" clip-path="url(#breeze-k8s-shell-line-14)">[default:&#160;KubernetesExecutor]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
diff --git a/images/breeze/output_k8s_status.svg b/images/breeze/output_k8s_status.svg
index c3e9eee879..e9d5902317 100644
--- a/images/breeze/output_k8s_status.svg
+++ b/images/breeze/output_k8s_status.svg
@@ -124,8 +124,8 @@
 </text><text class="breeze-k8s-status-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-k8s-status-line-7)">│</text><text class="breeze-k8s-status-r7" x="366" y="190.8" textLength="732" clip-path="url(#breeze-k8s-status-line-7)">(&gt;3.7&lt;&#160;|&#160;3.8&#160;|&#160;3.9&#160;|&#160;3.10&#160;|&#160;3.11)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><tex [...]
 </text><text class="breeze-k8s-status-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-status-line-8)">│</text><text class="breeze-k8s-status-r5" x="366" y="215.2" textLength="732" clip-path="url(#breeze-k8s-status-line-8)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
 </text><text class="breeze-k8s-status-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-status-line-9)">│</text><text class="breeze-k8s-status-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-status-line-9)">-</text><text class="breeze-k8s-status-r4" x="36.6" y="239.6" textLength="134.2" clip-path="url(#breeze-k8s-status-line-9)">-kubernetes</text><text class="breeze-k8s-status-r4" x="170.8" y="239.6" textLength="97.6" clip-path="url(#breeze-k8s-status-l [...]
-</text><text class="breeze-k8s-status-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-status-line-10)">│</text><text class="breeze-k8s-status-r7" x="366" y="264" textLength="658.8" clip-path="url(#breeze-k8s-status-line-10)">(&gt;v1.23.13&lt;&#160;|&#160;v1.24.7&#160;|&#160;v1.25.3&#160;|&#160;v1.26.0)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-k8s-status-r5" x="1451.8" y="264" textLength="12.2" clip-path="url(#breeze- [...]
-</text><text class="breeze-k8s-status-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-status-line-11)">│</text><text class="breeze-k8s-status-r5" x="366" y="288.4" textLength="658.8" clip-path="url(#breeze-k8s-status-line-11)">[default:&#160;v1.23.13]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text c [...]
+</text><text class="breeze-k8s-status-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-status-line-10)">│</text><text class="breeze-k8s-status-r7" x="366" y="264" textLength="658.8" clip-path="url(#breeze-k8s-status-line-10)">(&gt;v1.23.17&lt;&#160;|&#160;v1.24.13&#160;|&#160;v1.25.9&#160;|&#160;v1.26.4&#160;|&#160;v1.27.1)&#160;</text><text class="breeze-k8s-status-r5" x="1451.8" y="264" textLength="12.2" clip-path="url(#breeze-k8s-status-line-10)">│</text><text class="bre [...]
+</text><text class="breeze-k8s-status-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-status-line-11)">│</text><text class="breeze-k8s-status-r5" x="366" y="288.4" textLength="658.8" clip-path="url(#breeze-k8s-status-line-11)">[default:&#160;v1.23.17]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text c [...]
 </text><text class="breeze-k8s-status-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-status-line-12)">│</text><text class="breeze-k8s-status-r4" x="24.4" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-status-line-12)">-</text><text class="breeze-k8s-status-r4" x="36.6" y="312.8" textLength="61" clip-path="url(#breeze-k8s-status-line-12)">-wait</text><text class="breeze-k8s-status-r4" x="97.6" y="312.8" textLength="195.2" clip-path="url(#breeze-k8s-status-line-12 [...]
 </text><text class="breeze-k8s-status-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-k8s-status-line-13)">│</text><text class="breeze-k8s-status-r4" x="24.4" y="337.2" textLength="12.2" clip-path="url(#breeze-k8s-status-line-13)">-</text><text class="breeze-k8s-status-r4" x="36.6" y="337.2" textLength="48.8" clip-path="url(#breeze-k8s-status-line-13)">-all</text><text class="breeze-k8s-status-r2" x="366" y="337.2" textLength="390.4" clip-path="url(#breeze-k8s-status-line-13 [...]
 </text><text class="breeze-k8s-status-r5" x="0" y="361.6" textLength="1464" clip-path="url(#breeze-k8s-status-line-14)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-status-r2" x="1464" y="361.6" textLength="12.2" clip-path="url(#breeze-k8s-status-line-14)">
diff --git a/images/breeze/output_k8s_tests.svg b/images/breeze/output_k8s_tests.svg
index 1362b7154c..7c7819c765 100644
--- a/images/breeze/output_k8s_tests.svg
+++ b/images/breeze/output_k8s_tests.svg
@@ -172,8 +172,8 @@
 </text><text class="breeze-k8s-tests-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-7)">│</text><text class="breeze-k8s-tests-r7" x="341.6" y="190.8" textLength="732" clip-path="url(#breeze-k8s-tests-line-7)">(&gt;3.7&lt;&#160;|&#160;3.8&#160;|&#160;3.9&#160;|&#160;3.10&#160;|&#160;3.11)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text  [...]
 </text><text class="breeze-k8s-tests-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-8)">│</text><text class="breeze-k8s-tests-r5" x="341.6" y="215.2" textLength="732" clip-path="url(#breeze-k8s-tests-line-8)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
 </text><text class="breeze-k8s-tests-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-9)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-9)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="239.6" textLength="134.2" clip-path="url(#breeze-k8s-tests-line-9)">-kubernetes</text><text class="breeze-k8s-tests-r4" x="170.8" y="239.6" textLength="97.6" clip-path="url(#breeze-k8s-tests-line-9)"> [...]
-</text><text class="breeze-k8s-tests-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-10)">│</text><text class="breeze-k8s-tests-r7" x="341.6" y="264" textLength="658.8" clip-path="url(#breeze-k8s-tests-line-10)">(&gt;v1.23.13&lt;&#160;|&#160;v1.24.7&#160;|&#160;v1.25.3&#160;|&#160;v1.26.0)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-k8s-tests-r5" x="1451.8" y="264" textLength="12.2" clip-path="url(#breeze-k8s [...]
-</text><text class="breeze-k8s-tests-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-11)">│</text><text class="breeze-k8s-tests-r5" x="341.6" y="288.4" textLength="658.8" clip-path="url(#breeze-k8s-tests-line-11)">[default:&#160;v1.23.13]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text cla [...]
+</text><text class="breeze-k8s-tests-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-10)">│</text><text class="breeze-k8s-tests-r7" x="341.6" y="264" textLength="658.8" clip-path="url(#breeze-k8s-tests-line-10)">(&gt;v1.23.17&lt;&#160;|&#160;v1.24.13&#160;|&#160;v1.25.9&#160;|&#160;v1.26.4&#160;|&#160;v1.27.1)&#160;</text><text class="breeze-k8s-tests-r5" x="1451.8" y="264" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-10)">│</text><text class="breeze- [...]
+</text><text class="breeze-k8s-tests-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-11)">│</text><text class="breeze-k8s-tests-r5" x="341.6" y="288.4" textLength="658.8" clip-path="url(#breeze-k8s-tests-line-11)">[default:&#160;v1.23.17]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text cla [...]
 </text><text class="breeze-k8s-tests-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-12)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-12)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="312.8" textLength="109.8" clip-path="url(#breeze-k8s-tests-line-12)">-executor</text><text class="breeze-k8s-tests-r2" x="341.6" y="312.8" textLength="1000.4" clip-path="url(#breeze-k8s-tests-line-1 [...]
 </text><text class="breeze-k8s-tests-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-13)">│</text><text class="breeze-k8s-tests-r7" x="341.6" y="337.2" textLength="1000.4" clip-path="url(#breeze-k8s-tests-line-13)">(&gt;KubernetesExecutor&lt;&#160;|&#160;CeleryExecutor&#160;|&#160;LocalExecutor&#160;|&#160;CeleryKubernetesExecutor)</text><text class="breeze-k8s-tests-r5" x="1451.8" y="337.2" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-13)">│</text> [...]
 </text><text class="breeze-k8s-tests-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-14)">│</text><text class="breeze-k8s-tests-r5" x="341.6" y="361.6" textLength="1000.4" clip-path="url(#breeze-k8s-tests-line-14)">[default:&#160;KubernetesExecutor]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
@@ -188,7 +188,7 @@
 </text><text class="breeze-k8s-tests-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-23)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="581.2" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-23)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="581.2" textLength="85.4" clip-path="url(#breeze-k8s-tests-line-23)">-python</text><text class="breeze-k8s-tests-r4" x="122" y="581.2" textLength="109.8" clip-path="url(#breeze-k8s-tests-line-23)">-v [...]
 </text><text class="breeze-k8s-tests-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-24)">│</text><text class="breeze-k8s-tests-r5" x="378.2" y="605.6" textLength="951.6" clip-path="url(#breeze-k8s-tests-line-24)">[default:&#160;3.7&#160;3.8&#160;3.9&#160;3.10&#160;3.11]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
 </text><text class="breeze-k8s-tests-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-25)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="630" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-25)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="630" textLength="134.2" clip-path="url(#breeze-k8s-tests-line-25)">-kubernetes</text><text class="breeze-k8s-tests-r4" x="170.8" y="630" textLength="109.8" clip-path="url(#breeze-k8s-tests-line-25)">-ve [...]
-</text><text class="breeze-k8s-tests-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-26)">│</text><text class="breeze-k8s-tests-r5" x="378.2" y="654.4" textLength="756.4" clip-path="url(#breeze-k8s-tests-line-26)">[default:&#160;v1.23.13&#160;v1.24.7&#160;v1.25.3&#160;v1.26.0]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-k8s-tests-r5" x="1451.8" y="654.4" textLength= [...]
+</text><text class="breeze-k8s-tests-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-26)">│</text><text class="breeze-k8s-tests-r5" x="378.2" y="654.4" textLength="756.4" clip-path="url(#breeze-k8s-tests-line-26)">[default:&#160;v1.23.17&#160;v1.24.13&#160;v1.25.9&#160;v1.26.4&#160;v1.27.1]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-k8s-tests-r5" x="1451.8" y="654.4" textLength="12.2" clip-path="url(#breeze-k8s-tests- [...]
 </text><text class="breeze-k8s-tests-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-27)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="678.8" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-27)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="678.8" textLength="61" clip-path="url(#breeze-k8s-tests-line-27)">-skip</text><text class="breeze-k8s-tests-r4" x="97.6" y="678.8" textLength="97.6" clip-path="url(#breeze-k8s-tests-line-27)">-clean [...]
 </text><text class="breeze-k8s-tests-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-28)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="703.2" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-28)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="703.2" textLength="73.2" clip-path="url(#breeze-k8s-tests-line-28)">-debug</text><text class="breeze-k8s-tests-r4" x="109.8" y="703.2" textLength="122" clip-path="url(#breeze-k8s-tests-line-28)">-re [...]
 </text><text class="breeze-k8s-tests-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-29)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="727.6" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-29)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="727.6" textLength="97.6" clip-path="url(#breeze-k8s-tests-line-29)">-include</text><text class="breeze-k8s-tests-r4" x="134.2" y="727.6" textLength="195.2" clip-path="url(#breeze-k8s-tests-line-29)" [...]
diff --git a/images/breeze/output_k8s_upload-k8s-image.svg b/images/breeze/output_k8s_upload-k8s-image.svg
index dba40a27fc..facddd58af 100644
--- a/images/breeze/output_k8s_upload-k8s-image.svg
+++ b/images/breeze/output_k8s_upload-k8s-image.svg
@@ -157,8 +157,8 @@
 </text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-7)">│</text><text class="breeze-k8s-upload-k8s-image-r7" x="341.6" y="190.8" textLength="732" clip-path="url(#breeze-k8s-upload-k8s-image-line-7)">(&gt;3.7&lt;&#160;|&#160;3.8&#160;|&#160;3.9&#160;|&#160;3.10&#160;|&#160;3.11)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
 </text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-8)">│</text><text class="breeze-k8s-upload-k8s-image-r5" x="341.6" y="215.2" textLength="732" clip-path="url(#breeze-k8s-upload-k8s-image-line-8)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
 </text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-9)">│</text><text class="breeze-k8s-upload-k8s-image-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-9)">-</text><text class="breeze-k8s-upload-k8s-image-r4" x="36.6" y="239.6" textLength="134.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-9)">-kubernetes</text><text class="breeze-k8s-upload-k8s-image-r4" x=" [...]
-</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-10)">│</text><text class="breeze-k8s-upload-k8s-image-r7" x="341.6" y="264" textLength="658.8" clip-path="url(#breeze-k8s-upload-k8s-image-line-10)">(&gt;v1.23.13&lt;&#160;|&#160;v1.24.7&#160;|&#160;v1.25.3&#160;|&#160;v1.26.0)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-k8s-upload-k8s-image-r5" x="1451. [...]
-</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-11)">│</text><text class="breeze-k8s-upload-k8s-image-r5" x="341.6" y="288.4" textLength="658.8" clip-path="url(#breeze-k8s-upload-k8s-image-line-11)">[default:&#160;v1.23.13]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
+</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-10)">│</text><text class="breeze-k8s-upload-k8s-image-r7" x="341.6" y="264" textLength="658.8" clip-path="url(#breeze-k8s-upload-k8s-image-line-10)">(&gt;v1.23.17&lt;&#160;|&#160;v1.24.13&#160;|&#160;v1.25.9&#160;|&#160;v1.26.4&#160;|&#160;v1.27.1)&#160;</text><text class="breeze-k8s-upload-k8s-image-r5" x="1451.8" y="264" textLength="12.2" clip-path="url(# [...]
+</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-11)">│</text><text class="breeze-k8s-upload-k8s-image-r5" x="341.6" y="288.4" textLength="658.8" clip-path="url(#breeze-k8s-upload-k8s-image-line-11)">[default:&#160;v1.23.17]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
 </text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="312.8" textLength="1464" clip-path="url(#breeze-k8s-upload-k8s-image-line-12)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-upload-k8s-image-r2" x="1464" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-12)">
 </text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="337.2" textLength="24.4" clip-path="url(#breeze-k8s-upload-k8s-image-line-13)">╭─</text><text class="breeze-k8s-upload-k8s-image-r5" x="24.4" y="337.2" textLength="219.6" clip-path="url(#breeze-k8s-upload-k8s-image-line-13)">&#160;Parallel&#160;options&#160;</text><text class="breeze-k8s-upload-k8s-image-r5" x="244" y="337.2" textLength="1195.6" clip-path="url(#breeze-k8s-upload-k8s-image-line-13)">───────────────────────────── [...]
 </text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-14)">│</text><text class="breeze-k8s-upload-k8s-image-r4" x="24.4" y="361.6" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-14)">-</text><text class="breeze-k8s-upload-k8s-image-r4" x="36.6" y="361.6" textLength="48.8" clip-path="url(#breeze-k8s-upload-k8s-image-line-14)">-run</text><text class="breeze-k8s-upload-k8s-image-r4" x="85.4" [...]
@@ -168,7 +168,7 @@
 </text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-18)">│</text><text class="breeze-k8s-upload-k8s-image-r4" x="24.4" y="459.2" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-18)">-</text><text class="breeze-k8s-upload-k8s-image-r4" x="36.6" y="459.2" textLength="85.4" clip-path="url(#breeze-k8s-upload-k8s-image-line-18)">-python</text><text class="breeze-k8s-upload-k8s-image-r4" x="12 [...]
 </text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-19)">│</text><text class="breeze-k8s-upload-k8s-image-r5" x="378.2" y="483.6" textLength="951.6" clip-path="url(#breeze-k8s-upload-k8s-image-line-19)">[default:&#160;3.7&#160;3.8&#160;3.9&#160;3.10&#160;3.11]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
 </text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-20)">│</text><text class="breeze-k8s-upload-k8s-image-r4" x="24.4" y="508" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-20)">-</text><text class="breeze-k8s-upload-k8s-image-r4" x="36.6" y="508" textLength="134.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-20)">-kubernetes</text><text class="breeze-k8s-upload-k8s-image-r4" x="170 [...]
-</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-21)">│</text><text class="breeze-k8s-upload-k8s-image-r5" x="378.2" y="532.4" textLength="756.4" clip-path="url(#breeze-k8s-upload-k8s-image-line-21)">[default:&#160;v1.23.13&#160;v1.24.7&#160;v1.25.3&#160;v1.26.0]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-k8 [...]
+</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-21)">│</text><text class="breeze-k8s-upload-k8s-image-r5" x="378.2" y="532.4" textLength="756.4" clip-path="url(#breeze-k8s-upload-k8s-image-line-21)">[default:&#160;v1.23.17&#160;v1.24.13&#160;v1.25.9&#160;v1.26.4&#160;v1.27.1]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-k8s-upload-k8s-image-r5" x="1451.8" y="532 [...]
 </text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-22)">│</text><text class="breeze-k8s-upload-k8s-image-r4" x="24.4" y="556.8" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-22)">-</text><text class="breeze-k8s-upload-k8s-image-r4" x="36.6" y="556.8" textLength="61" clip-path="url(#breeze-k8s-upload-k8s-image-line-22)">-skip</text><text class="breeze-k8s-upload-k8s-image-r4" x="97.6"  [...]
 </text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-23)">│</text><text class="breeze-k8s-upload-k8s-image-r4" x="24.4" y="581.2" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-23)">-</text><text class="breeze-k8s-upload-k8s-image-r4" x="36.6" y="581.2" textLength="73.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-23)">-debug</text><text class="breeze-k8s-upload-k8s-image-r4" x="109 [...]
 </text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-24)">│</text><text class="breeze-k8s-upload-k8s-image-r4" x="24.4" y="605.6" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-24)">-</text><text class="breeze-k8s-upload-k8s-image-r4" x="36.6" y="605.6" textLength="97.6" clip-path="url(#breeze-k8s-upload-k8s-image-line-24)">-include</text><text class="breeze-k8s-upload-k8s-image-r4" x="1 [...]
diff --git a/images/breeze/output_prod-image_build.svg b/images/breeze/output_prod-image_build.svg
index 06e2b9fac3..8f21904816 100644
--- a/images/breeze/output_prod-image_build.svg
+++ b/images/breeze/output_prod-image_build.svg
@@ -351,75 +351,75 @@
 </text><text class="breeze-prod-image-build-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-15)">│</text><text class="breeze-prod-image-build-r2" x="475.8" y="386" textLength="414.8" clip-path="url(#breeze-prod-image-build-line-15)">when&#160;you&#160;build&#160;or&#160;pull&#160;image&#160;with&#160;</text><text class="breeze-prod-image-build-r4" x="890.6" y="386" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-15)">-</text><text class="br [...]
 </text><text class="breeze-prod-image-build-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-16)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="410.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-16)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="410.4" textLength="85.4" clip-path="url(#breeze-prod-image-build-line-16)">-docker</text><text class="breeze-prod-image-build-r4" x="122" y="410.4" textLength="73. [...]
 </text><text class="breeze-prod-image-build-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-17)">│</text><text class="breeze-prod-image-build-r5" x="475.8" y="434.8" textLength="549" clip-path="url(#breeze-prod-image-build-line-17)">[default:&#160;registry]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-prod-image-build- [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-18)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="459.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-18)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="459.2" textLength="85.4" clip-path="url(#breeze-prod-image-build-line-18)">-github</text><text class="breeze-prod-image-build-r4" x="122" y="459.2" textLength="134 [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-19)">│</text><text class="breeze-prod-image-build-r5" x="475.8" y="483.6" textLength="585.6" clip-path="url(#breeze-prod-image-build-line-19)">[default:&#160;apache/airflow]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-prod-image-build-r5" x="145 [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="508" textLength="1464" clip-path="url(#breeze-prod-image-build-line-20)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-prod-image-build-r2" x="1464" y="508" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-20)">
-</text><text class="breeze-prod-image-build-r5" x="0" y="532.4" textLength="24.4" clip-path="url(#breeze-prod-image-build-line-21)">╭─</text><text class="breeze-prod-image-build-r5" x="24.4" y="532.4" textLength="353.8" clip-path="url(#breeze-prod-image-build-line-21)">&#160;Building&#160;images&#160;in&#160;parallel&#160;</text><text class="breeze-prod-image-build-r5" x="378.2" y="532.4" textLength="1061.4" clip-path="url(#breeze-prod-image-build-line-21)">────────────────────────────── [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-22)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="556.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-22)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="556.8" textLength="48.8" clip-path="url(#breeze-prod-image-build-line-22)">-run</text><text class="breeze-prod-image-build-r4" x="85.4" y="556.8" textLength="146.4 [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-23)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="581.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-23)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="581.2" textLength="146.4" clip-path="url(#breeze-prod-image-build-line-23)">-parallelism</text><text class="breeze-prod-image-build-r2" x="378.2" y="581.2" textLen [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-24)">│</text><text class="breeze-prod-image-build-r7" x="378.2" y="605.6" textLength="915" clip-path="url(#breeze-prod-image-build-line-24)">(INTEGER&#160;RANGE)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-25)">│</text><text class="breeze-prod-image-build-r5" x="378.2" y="630" textLength="915" clip-path="url(#breeze-prod-image-build-line-25)">[default:&#160;4;&#160;1&lt;=x&lt;=8]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-26)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="654.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-26)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="654.4" textLength="85.4" clip-path="url(#breeze-prod-image-build-line-26)">-python</text><text class="breeze-prod-image-build-r4" x="122" y="654.4" textLength="109 [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-27)">│</text><text class="breeze-prod-image-build-r5" x="378.2" y="678.8" textLength="951.6" clip-path="url(#breeze-prod-image-build-line-27)">[default:&#160;3.7&#160;3.8&#160;3.9&#160;3.10&#160;3.11]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-28)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="703.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-28)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="703.2" textLength="61" clip-path="url(#breeze-prod-image-build-line-28)">-skip</text><text class="breeze-prod-image-build-r4" x="97.6" y="703.2" textLength="97.6"  [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-29)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="727.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-29)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="727.6" textLength="73.2" clip-path="url(#breeze-prod-image-build-line-29)">-debug</text><text class="breeze-prod-image-build-r4" x="109.8" y="727.6" textLength="12 [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-30)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="752" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-30)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="752" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-30)">-include</text><text class="breeze-prod-image-build-r4" x="134.2" y="752" textLength="195.2" c [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="776.4" textLength="1464" clip-path="url(#breeze-prod-image-build-line-31)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-prod-image-build-r2" x="1464" y="776.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-31)">
-</text><text class="breeze-prod-image-build-r5" x="0" y="800.8" textLength="24.4" clip-path="url(#breeze-prod-image-build-line-32)">╭─</text><text class="breeze-prod-image-build-r5" x="24.4" y="800.8" textLength="390.4" clip-path="url(#breeze-prod-image-build-line-32)">&#160;Options&#160;for&#160;customizing&#160;images&#160;</text><text class="breeze-prod-image-build-r5" x="414.8" y="800.8" textLength="1024.8" clip-path="url(#breeze-prod-image-build-line-32)">─────────────────────────── [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-33)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="825.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-33)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="825.2" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-33)">-builder</text><text class="breeze-prod-image-build-r2" x="463.6" y="825.2" textLength=" [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-34)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="849.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-34)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="849.6" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-34)">-install</text><text class="breeze-prod-image-build-r4" x="134.2" y="849.6" textLength=" [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-35)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="874" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-35)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="874" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-35)">-airflow</text><text class="breeze-prod-image-build-r4" x="134.2" y="874" textLength="85.4" cl [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-36)">│</text><text class="breeze-prod-image-build-r7" x="463.6" y="898.4" textLength="976" clip-path="url(#breeze-prod-image-build-line-36)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-37)">│</text><text class="breeze-prod-image-build-r5" x="463.6" y="922.8" textLength="976" clip-path="url(#breeze-prod-image-build-line-37)">[default:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-38)">│</text><text class="breeze-prod-image-build-r5" x="463.6" y="947.2" textLength="976" clip-path="url(#breeze-prod-image-build-line-38)">aiobotocore,amazon,async,celery,cncf.kubernetes,dask,docker,elasticsearch,ftp,g…</text><text class="breeze-prod-image-build-r5" x="1451.8" y="947.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-38)">│</text [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-39)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="971.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-39)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="971.6" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-39)">-airflow</text><text class="breeze-prod-image-build-r4" x="134.2" y="971.6" textLength=" [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="996" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-40)">│</text><text class="breeze-prod-image-build-r2" x="463.6" y="996" textLength="366" clip-path="url(#breeze-prod-image-build-line-40)">file.&#160;It&#160;could&#160;be&#160;full&#160;remote&#160;</text><text class="breeze-prod-image-build-r4" x="829.6" y="996" textLength="36.6" clip-path="url(#breeze-prod-image-build-line-40)">URL</text><text class="breeze-prod [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1020.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-41)">│</text><text class="breeze-prod-image-build-r2" x="463.6" y="1020.4" textLength="976" clip-path="url(#breeze-prod-image-build-line-41)">`docker-context-files`&#160;(in&#160;this&#160;case&#160;it&#160;has&#160;to&#160;start&#160;with&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1044.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-42)">│</text><text class="breeze-prod-image-build-r2" x="463.6" y="1044.8" textLength="976" clip-path="url(#breeze-prod-image-build-line-42)">/opt/airflow/docker-context-files).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1069.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-43)">│</text><text class="breeze-prod-image-build-r7" x="463.6" y="1069.2" textLength="976" clip-path="url(#breeze-prod-image-build-line-43)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1093.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-44)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-44)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1093.6" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-44)">-airflow</text><text class="breeze-prod-image-build-r4" x="134.2" y="1093.6" textLeng [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1118" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-45)">│</text><text class="breeze-prod-image-build-r7" x="463.6" y="1118" textLength="866.2" clip-path="url(#breeze-prod-image-build-line-45)">(constraints&#160;|&#160;constraints-no-providers&#160;|&#160;constraints-source-providers)</text><text class="breeze-prod-image-build-r5" x="1451.8" y="1118" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-45 [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1142.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-46)">│</text><text class="breeze-prod-image-build-r5" x="463.6" y="1142.4" textLength="866.2" clip-path="url(#breeze-prod-image-build-line-46)">[default:&#160;constraints]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1166.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-47)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-47)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1166.8" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-47)">-airflow</text><text class="breeze-prod-image-build-r4" x="134.2" y="1166.8" textLeng [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1191.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-48)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-48)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1191.2" textLength="85.4" clip-path="url(#breeze-prod-image-build-line-48)">-python</text><text class="breeze-prod-image-build-r4" x="122" y="1191.2" textLength= [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1215.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-49)">│</text><text class="breeze-prod-image-build-r2" x="463.6" y="1215.6" textLength="280.6" clip-path="url(#breeze-prod-image-build-line-49)">something&#160;like:&#160;python:</text><text class="breeze-prod-image-build-r4" x="744.2" y="1215.6" textLength="85.4" clip-path="url(#breeze-prod-image-build-line-49)">VERSION</text><text class="breeze-prod-image-build [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1240" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-50)">│</text><text class="breeze-prod-image-build-r7" x="463.6" y="1240" textLength="976" clip-path="url(#breeze-prod-image-build-line-50)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1264.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-51)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1264.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-51)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1264.4" textLength="134.2" clip-path="url(#breeze-prod-image-build-line-51)">-additional</text><text class="breeze-prod-image-build-r4" x="170.8" y="1264.4" text [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1288.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-52)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-52)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1288.8" textLength="134.2" clip-path="url(#breeze-prod-image-build-line-52)">-additional</text><text class="breeze-prod-image-build-r4" x="170.8" y="1288.8" text [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1313.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-53)">│</text><text class="breeze-prod-image-build-r2" x="463.6" y="1313.2" textLength="976" clip-path="url(#breeze-prod-image-build-line-53)">itself).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1337.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-54)">│</text><text class="breeze-prod-image-build-r7" x="463.6" y="1337.6" textLength="976" clip-path="url(#breeze-prod-image-build-line-54)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1362" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-55)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1362" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-55)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1362" textLength="134.2" clip-path="url(#breeze-prod-image-build-line-55)">-additional</text><text class="breeze-prod-image-build-r4" x="170.8" y="1362" textLength=" [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1386.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-56)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1386.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-56)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1386.4" textLength="134.2" clip-path="url(#breeze-prod-image-build-line-56)">-additional</text><text class="breeze-prod-image-build-r4" x="170.8" y="1386.4" text [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1410.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-57)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1410.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-57)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1410.8" textLength="134.2" clip-path="url(#breeze-prod-image-build-line-57)">-additional</text><text class="breeze-prod-image-build-r4" x="170.8" y="1410.8" text [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1435.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-58)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1435.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-58)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1435.2" textLength="134.2" clip-path="url(#breeze-prod-image-build-line-58)">-additional</text><text class="breeze-prod-image-build-r4" x="170.8" y="1435.2" text [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1459.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-59)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1459.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-59)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1459.6" textLength="134.2" clip-path="url(#breeze-prod-image-build-line-59)">-additional</text><text class="breeze-prod-image-build-r4" x="170.8" y="1459.6" text [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1484" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-60)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1484" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-60)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1484" textLength="134.2" clip-path="url(#breeze-prod-image-build-line-60)">-additional</text><text class="breeze-prod-image-build-r4" x="170.8" y="1484" textLength=" [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1508.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-61)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1508.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-61)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1508.4" textLength="134.2" clip-path="url(#breeze-prod-image-build-line-61)">-additional</text><text class="breeze-prod-image-build-r4" x="170.8" y="1508.4" text [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1532.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-62)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1532.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-62)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1532.8" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-62)">-runtime</text><text class="breeze-prod-image-build-r4" x="134.2" y="1532.8" textLeng [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1557.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-63)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1557.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-63)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1557.2" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-63)">-runtime</text><text class="breeze-prod-image-build-r4" x="134.2" y="1557.2" textLeng [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1581.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-64)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1581.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-64)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1581.6" textLength="48.8" clip-path="url(#breeze-prod-image-build-line-64)">-dev</text><text class="breeze-prod-image-build-r4" x="85.4" y="1581.6" textLength="1 [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1606" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-65)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1606" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-65)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1606" textLength="48.8" clip-path="url(#breeze-prod-image-build-line-65)">-dev</text><text class="breeze-prod-image-build-r4" x="85.4" y="1606" textLength="146.4" cl [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1630.4" textLength="1464" clip-path="url(#breeze-prod-image-build-line-66)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-prod-image-build-r2" x="1464" y="1630.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-66)">
-</text><text class="breeze-prod-image-build-r5" x="0" y="1654.8" textLength="24.4" clip-path="url(#breeze-prod-image-build-line-67)">╭─</text><text class="breeze-prod-image-build-r5" x="24.4" y="1654.8" textLength="707.6" clip-path="url(#breeze-prod-image-build-line-67)">&#160;Customization&#160;options&#160;(for&#160;specific&#160;customization&#160;needs)&#160;</text><text class="breeze-prod-image-build-r5" x="732" y="1654.8" textLength="707.6" clip-path="url(#breeze-prod-image-build-l [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1679.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-68)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1679.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-68)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1679.2" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-68)">-install</text><text class="breeze-prod-image-build-r4" x="134.2" y="1679.2" textLeng [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1703.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-69)">│</text><text class="breeze-prod-image-build-r2" x="536.8" y="1703.6" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-69)">Implies&#160;</text><text class="breeze-prod-image-build-r4" x="634.4" y="1703.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-69)">-</text><text class="breeze-prod-image-build-r4" x="646.6" y="1703.6" t [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1728" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-70)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1728" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-70)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1728" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-70)">-cleanup</text><text class="breeze-prod-image-build-r4" x="134.2" y="1728" textLength="97.6 [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1752.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-71)">│</text><text class="breeze-prod-image-build-r2" x="536.8" y="1752.4" textLength="170.8" clip-path="url(#breeze-prod-image-build-line-71)">together&#160;with&#160;</text><text class="breeze-prod-image-build-r4" x="707.6" y="1752.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-71)">-</text><text class="breeze-prod-image-build-r4" x="719.8"  [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1776.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-72)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1776.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-72)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1776.8" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-72)">-disable</text><text class="breeze-prod-image-build-r4" x="134.2" y="1776.8" textLeng [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1801.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-73)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1801.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-73)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1801.2" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-73)">-disable</text><text class="breeze-prod-image-build-r4" x="134.2" y="1801.2" textLeng [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1825.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-74)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1825.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-74)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1825.6" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-74)">-disable</text><text class="breeze-prod-image-build-r4" x="134.2" y="1825.6" textLeng [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1850" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-75)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1850" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-75)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1850" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-75)">-disable</text><text class="breeze-prod-image-build-r4" x="134.2" y="1850" textLength="231. [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1874.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-76)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1874.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-76)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1874.4" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-76)">-install</text><text class="breeze-prod-image-build-r4" x="134.2" y="1874.4" textLeng [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1898.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-77)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1898.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-77)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1898.8" textLength="158.6" clip-path="url(#breeze-prod-image-build-line-77)">-installation</text><text class="breeze-prod-image-build-r4" x="195.2" y="1898.8" te [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1923.2" textLength="1464" clip-path="url(#breeze-prod-image-build-line-78)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-prod-image-build-r2" x="1464" y="1923.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-78)">
-</text><text class="breeze-prod-image-build-r5" x="0" y="1947.6" textLength="24.4" clip-path="url(#breeze-prod-image-build-line-79)">╭─</text><text class="breeze-prod-image-build-r5" x="24.4" y="1947.6" textLength="622.2" clip-path="url(#breeze-prod-image-build-line-79)">&#160;Preparing&#160;cache&#160;and&#160;push&#160;(for&#160;maintainers&#160;and&#160;CI)&#160;</text><text class="breeze-prod-image-build-r5" x="646.6" y="1947.6" textLength="793" clip-path="url(#breeze-prod-image-buil [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1972" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-80)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1972" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-80)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1972" textLength="85.4" clip-path="url(#breeze-prod-image-build-line-80)">-github</text><text class="breeze-prod-image-build-r4" x="122" y="1972" textLength="73.2" c [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1996.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-81)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1996.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-81)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1996.4" textLength="85.4" clip-path="url(#breeze-prod-image-build-line-81)">-github</text><text class="breeze-prod-image-build-r4" x="122" y="1996.4" textLength= [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="2020.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-82)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="2020.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-82)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="2020.8" textLength="109.8" clip-path="url(#breeze-prod-image-build-line-82)">-platform</text><text class="breeze-prod-image-build-r2" x="341.6" y="2020.8" textLe [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="2045.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-83)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="2045.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-83)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="2045.2" textLength="61" clip-path="url(#breeze-prod-image-build-line-83)">-push</text><text class="breeze-prod-image-build-r2" x="341.6" y="2045.2" textLength="3 [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="2069.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-84)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="2069.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-84)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="2069.6" textLength="73.2" clip-path="url(#breeze-prod-image-build-line-84)">-empty</text><text class="breeze-prod-image-build-r4" x="109.8" y="2069.6" textLength [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="2094" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-85)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="2094" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-85)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="2094" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-85)">-prepare</text><text class="breeze-prod-image-build-r4" x="134.2" y="2094" textLength="158. [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="2118.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-86)">│</text><text class="breeze-prod-image-build-r2" x="341.6" y="2118.4" textLength="1098" clip-path="url(#breeze-prod-image-build-line-86)">image).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="459.2" textLength="1464" clip-path="url(#breeze-prod-image-build-line-18)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-prod-image-build-r2" x="1464" y="459.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-18)">
+</text><text class="breeze-prod-image-build-r5" x="0" y="483.6" textLength="24.4" clip-path="url(#breeze-prod-image-build-line-19)">╭─</text><text class="breeze-prod-image-build-r5" x="24.4" y="483.6" textLength="353.8" clip-path="url(#breeze-prod-image-build-line-19)">&#160;Building&#160;images&#160;in&#160;parallel&#160;</text><text class="breeze-prod-image-build-r5" x="378.2" y="483.6" textLength="1061.4" clip-path="url(#breeze-prod-image-build-line-19)">────────────────────────────── [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-20)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="508" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-20)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="508" textLength="48.8" clip-path="url(#breeze-prod-image-build-line-20)">-run</text><text class="breeze-prod-image-build-r4" x="85.4" y="508" textLength="146.4" clip-p [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-21)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="532.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-21)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="532.4" textLength="146.4" clip-path="url(#breeze-prod-image-build-line-21)">-parallelism</text><text class="breeze-prod-image-build-r2" x="378.2" y="532.4" textLen [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-22)">│</text><text class="breeze-prod-image-build-r7" x="378.2" y="556.8" textLength="915" clip-path="url(#breeze-prod-image-build-line-22)">(INTEGER&#160;RANGE)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-23)">│</text><text class="breeze-prod-image-build-r5" x="378.2" y="581.2" textLength="915" clip-path="url(#breeze-prod-image-build-line-23)">[default:&#160;4;&#160;1&lt;=x&lt;=8]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-24)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="605.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-24)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="605.6" textLength="85.4" clip-path="url(#breeze-prod-image-build-line-24)">-python</text><text class="breeze-prod-image-build-r4" x="122" y="605.6" textLength="109 [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-25)">│</text><text class="breeze-prod-image-build-r5" x="378.2" y="630" textLength="951.6" clip-path="url(#breeze-prod-image-build-line-25)">[default:&#160;3.7&#160;3.8&#160;3.9&#160;3.10&#160;3.11]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-26)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="654.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-26)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="654.4" textLength="61" clip-path="url(#breeze-prod-image-build-line-26)">-skip</text><text class="breeze-prod-image-build-r4" x="97.6" y="654.4" textLength="97.6"  [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-27)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="678.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-27)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="678.8" textLength="73.2" clip-path="url(#breeze-prod-image-build-line-27)">-debug</text><text class="breeze-prod-image-build-r4" x="109.8" y="678.8" textLength="12 [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-28)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="703.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-28)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="703.2" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-28)">-include</text><text class="breeze-prod-image-build-r4" x="134.2" y="703.2" textLength=" [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="727.6" textLength="1464" clip-path="url(#breeze-prod-image-build-line-29)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-prod-image-build-r2" x="1464" y="727.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-29)">
+</text><text class="breeze-prod-image-build-r5" x="0" y="752" textLength="24.4" clip-path="url(#breeze-prod-image-build-line-30)">╭─</text><text class="breeze-prod-image-build-r5" x="24.4" y="752" textLength="390.4" clip-path="url(#breeze-prod-image-build-line-30)">&#160;Options&#160;for&#160;customizing&#160;images&#160;</text><text class="breeze-prod-image-build-r5" x="414.8" y="752" textLength="1024.8" clip-path="url(#breeze-prod-image-build-line-30)">───────────────────────────────── [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-31)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="776.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-31)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="776.4" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-31)">-builder</text><text class="breeze-prod-image-build-r2" x="463.6" y="776.4" textLength=" [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-32)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="800.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-32)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="800.8" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-32)">-install</text><text class="breeze-prod-image-build-r4" x="134.2" y="800.8" textLength=" [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-33)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="825.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-33)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="825.2" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-33)">-airflow</text><text class="breeze-prod-image-build-r4" x="134.2" y="825.2" textLength=" [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-34)">│</text><text class="breeze-prod-image-build-r7" x="463.6" y="849.6" textLength="976" clip-path="url(#breeze-prod-image-build-line-34)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-35)">│</text><text class="breeze-prod-image-build-r5" x="463.6" y="874" textLength="976" clip-path="url(#breeze-prod-image-build-line-35)">[default:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-36)">│</text><text class="breeze-prod-image-build-r5" x="463.6" y="898.4" textLength="976" clip-path="url(#breeze-prod-image-build-line-36)">aiobotocore,amazon,async,celery,cncf.kubernetes,dask,docker,elasticsearch,ftp,g…</text><text class="breeze-prod-image-build-r5" x="1451.8" y="898.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-36)">│</text [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-37)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="922.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-37)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="922.8" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-37)">-airflow</text><text class="breeze-prod-image-build-r4" x="134.2" y="922.8" textLength=" [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-38)">│</text><text class="breeze-prod-image-build-r2" x="463.6" y="947.2" textLength="366" clip-path="url(#breeze-prod-image-build-line-38)">file.&#160;It&#160;could&#160;be&#160;full&#160;remote&#160;</text><text class="breeze-prod-image-build-r4" x="829.6" y="947.2" textLength="36.6" clip-path="url(#breeze-prod-image-build-line-38)">URL</text><text class="breez [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-39)">│</text><text class="breeze-prod-image-build-r2" x="463.6" y="971.6" textLength="976" clip-path="url(#breeze-prod-image-build-line-39)">`docker-context-files`&#160;(in&#160;this&#160;case&#160;it&#160;has&#160;to&#160;start&#160;with&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="996" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-40)">│</text><text class="breeze-prod-image-build-r2" x="463.6" y="996" textLength="976" clip-path="url(#breeze-prod-image-build-line-40)">/opt/airflow/docker-context-files).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1020.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-41)">│</text><text class="breeze-prod-image-build-r7" x="463.6" y="1020.4" textLength="976" clip-path="url(#breeze-prod-image-build-line-41)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1044.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-42)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-42)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1044.8" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-42)">-airflow</text><text class="breeze-prod-image-build-r4" x="134.2" y="1044.8" textLeng [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1069.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-43)">│</text><text class="breeze-prod-image-build-r7" x="463.6" y="1069.2" textLength="866.2" clip-path="url(#breeze-prod-image-build-line-43)">(constraints&#160;|&#160;constraints-no-providers&#160;|&#160;constraints-source-providers)</text><text class="breeze-prod-image-build-r5" x="1451.8" y="1069.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-l [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1093.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-44)">│</text><text class="breeze-prod-image-build-r5" x="463.6" y="1093.6" textLength="866.2" clip-path="url(#breeze-prod-image-build-line-44)">[default:&#160;constraints]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1118" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-45)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1118" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-45)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1118" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-45)">-airflow</text><text class="breeze-prod-image-build-r4" x="134.2" y="1118" textLength="268. [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1142.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-46)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-46)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1142.4" textLength="85.4" clip-path="url(#breeze-prod-image-build-line-46)">-python</text><text class="breeze-prod-image-build-r4" x="122" y="1142.4" textLength= [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1166.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-47)">│</text><text class="breeze-prod-image-build-r2" x="463.6" y="1166.8" textLength="280.6" clip-path="url(#breeze-prod-image-build-line-47)">something&#160;like:&#160;python:</text><text class="breeze-prod-image-build-r4" x="744.2" y="1166.8" textLength="85.4" clip-path="url(#breeze-prod-image-build-line-47)">VERSION</text><text class="breeze-prod-image-build [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1191.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-48)">│</text><text class="breeze-prod-image-build-r7" x="463.6" y="1191.2" textLength="976" clip-path="url(#breeze-prod-image-build-line-48)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1215.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-49)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1215.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-49)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1215.6" textLength="134.2" clip-path="url(#breeze-prod-image-build-line-49)">-additional</text><text class="breeze-prod-image-build-r4" x="170.8" y="1215.6" text [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1240" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-50)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1240" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-50)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1240" textLength="134.2" clip-path="url(#breeze-prod-image-build-line-50)">-additional</text><text class="breeze-prod-image-build-r4" x="170.8" y="1240" textLength=" [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1264.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-51)">│</text><text class="breeze-prod-image-build-r2" x="463.6" y="1264.4" textLength="976" clip-path="url(#breeze-prod-image-build-line-51)">itself).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1288.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-52)">│</text><text class="breeze-prod-image-build-r7" x="463.6" y="1288.8" textLength="976" clip-path="url(#breeze-prod-image-build-line-52)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1313.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-53)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1313.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-53)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1313.2" textLength="134.2" clip-path="url(#breeze-prod-image-build-line-53)">-additional</text><text class="breeze-prod-image-build-r4" x="170.8" y="1313.2" text [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1337.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-54)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1337.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-54)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1337.6" textLength="134.2" clip-path="url(#breeze-prod-image-build-line-54)">-additional</text><text class="breeze-prod-image-build-r4" x="170.8" y="1337.6" text [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1362" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-55)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1362" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-55)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1362" textLength="134.2" clip-path="url(#breeze-prod-image-build-line-55)">-additional</text><text class="breeze-prod-image-build-r4" x="170.8" y="1362" textLength=" [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1386.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-56)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1386.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-56)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1386.4" textLength="134.2" clip-path="url(#breeze-prod-image-build-line-56)">-additional</text><text class="breeze-prod-image-build-r4" x="170.8" y="1386.4" text [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1410.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-57)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1410.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-57)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1410.8" textLength="134.2" clip-path="url(#breeze-prod-image-build-line-57)">-additional</text><text class="breeze-prod-image-build-r4" x="170.8" y="1410.8" text [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1435.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-58)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1435.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-58)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1435.2" textLength="134.2" clip-path="url(#breeze-prod-image-build-line-58)">-additional</text><text class="breeze-prod-image-build-r4" x="170.8" y="1435.2" text [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1459.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-59)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1459.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-59)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1459.6" textLength="134.2" clip-path="url(#breeze-prod-image-build-line-59)">-additional</text><text class="breeze-prod-image-build-r4" x="170.8" y="1459.6" text [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1484" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-60)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1484" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-60)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1484" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-60)">-runtime</text><text class="breeze-prod-image-build-r4" x="134.2" y="1484" textLength="109. [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1508.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-61)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1508.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-61)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1508.4" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-61)">-runtime</text><text class="breeze-prod-image-build-r4" x="134.2" y="1508.4" textLeng [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1532.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-62)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1532.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-62)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1532.8" textLength="48.8" clip-path="url(#breeze-prod-image-build-line-62)">-dev</text><text class="breeze-prod-image-build-r4" x="85.4" y="1532.8" textLength="1 [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1557.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-63)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1557.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-63)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1557.2" textLength="48.8" clip-path="url(#breeze-prod-image-build-line-63)">-dev</text><text class="breeze-prod-image-build-r4" x="85.4" y="1557.2" textLength="1 [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1581.6" textLength="1464" clip-path="url(#breeze-prod-image-build-line-64)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-prod-image-build-r2" x="1464" y="1581.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-64)">
+</text><text class="breeze-prod-image-build-r5" x="0" y="1606" textLength="24.4" clip-path="url(#breeze-prod-image-build-line-65)">╭─</text><text class="breeze-prod-image-build-r5" x="24.4" y="1606" textLength="707.6" clip-path="url(#breeze-prod-image-build-line-65)">&#160;Customization&#160;options&#160;(for&#160;specific&#160;customization&#160;needs)&#160;</text><text class="breeze-prod-image-build-r5" x="732" y="1606" textLength="707.6" clip-path="url(#breeze-prod-image-build-line-65 [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1630.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-66)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1630.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-66)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1630.4" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-66)">-install</text><text class="breeze-prod-image-build-r4" x="134.2" y="1630.4" textLeng [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1654.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-67)">│</text><text class="breeze-prod-image-build-r2" x="536.8" y="1654.8" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-67)">Implies&#160;</text><text class="breeze-prod-image-build-r4" x="634.4" y="1654.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-67)">-</text><text class="breeze-prod-image-build-r4" x="646.6" y="1654.8" t [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1679.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-68)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1679.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-68)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1679.2" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-68)">-cleanup</text><text class="breeze-prod-image-build-r4" x="134.2" y="1679.2" textLeng [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1703.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-69)">│</text><text class="breeze-prod-image-build-r2" x="536.8" y="1703.6" textLength="170.8" clip-path="url(#breeze-prod-image-build-line-69)">together&#160;with&#160;</text><text class="breeze-prod-image-build-r4" x="707.6" y="1703.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-69)">-</text><text class="breeze-prod-image-build-r4" x="719.8"  [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1728" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-70)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1728" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-70)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1728" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-70)">-disable</text><text class="breeze-prod-image-build-r4" x="134.2" y="1728" textLength="317. [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1752.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-71)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1752.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-71)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1752.4" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-71)">-disable</text><text class="breeze-prod-image-build-r4" x="134.2" y="1752.4" textLeng [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1776.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-72)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1776.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-72)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1776.8" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-72)">-disable</text><text class="breeze-prod-image-build-r4" x="134.2" y="1776.8" textLeng [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1801.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-73)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1801.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-73)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1801.2" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-73)">-disable</text><text class="breeze-prod-image-build-r4" x="134.2" y="1801.2" textLeng [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1825.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-74)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1825.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-74)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1825.6" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-74)">-install</text><text class="breeze-prod-image-build-r4" x="134.2" y="1825.6" textLeng [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1850" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-75)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1850" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-75)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1850" textLength="158.6" clip-path="url(#breeze-prod-image-build-line-75)">-installation</text><text class="breeze-prod-image-build-r4" x="195.2" y="1850" textLength [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1874.4" textLength="1464" clip-path="url(#breeze-prod-image-build-line-76)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-prod-image-build-r2" x="1464" y="1874.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-76)">
+</text><text class="breeze-prod-image-build-r5" x="0" y="1898.8" textLength="24.4" clip-path="url(#breeze-prod-image-build-line-77)">╭─</text><text class="breeze-prod-image-build-r5" x="24.4" y="1898.8" textLength="622.2" clip-path="url(#breeze-prod-image-build-line-77)">&#160;Preparing&#160;cache&#160;and&#160;push&#160;(for&#160;maintainers&#160;and&#160;CI)&#160;</text><text class="breeze-prod-image-build-r5" x="646.6" y="1898.8" textLength="793" clip-path="url(#breeze-prod-image-buil [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1923.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-78)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1923.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-78)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1923.2" textLength="109.8" clip-path="url(#breeze-prod-image-build-line-78)">-platform</text><text class="breeze-prod-image-build-r2" x="341.6" y="1923.2" textLe [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1947.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-79)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1947.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-79)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1947.6" textLength="61" clip-path="url(#breeze-prod-image-build-line-79)">-push</text><text class="breeze-prod-image-build-r2" x="341.6" y="1947.6" textLength="3 [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1972" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-80)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1972" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-80)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1972" textLength="73.2" clip-path="url(#breeze-prod-image-build-line-80)">-empty</text><text class="breeze-prod-image-build-r4" x="109.8" y="1972" textLength="73.2"  [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1996.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-81)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="1996.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-81)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="1996.4" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-81)">-prepare</text><text class="breeze-prod-image-build-r4" x="134.2" y="1996.4" textLeng [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="2020.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-82)">│</text><text class="breeze-prod-image-build-r2" x="341.6" y="2020.8" textLength="1098" clip-path="url(#breeze-prod-image-build-line-82)">image).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="2045.2" textLength="1464" clip-path="url(#breeze-prod-image-build-line-83)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-prod-image-build-r2" x="1464" y="2045.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-83)">
+</text><text class="breeze-prod-image-build-r5" x="0" y="2069.6" textLength="24.4" clip-path="url(#breeze-prod-image-build-line-84)">╭─</text><text class="breeze-prod-image-build-r5" x="24.4" y="2069.6" textLength="280.6" clip-path="url(#breeze-prod-image-build-line-84)">&#160;Github&#160;authentication&#160;</text><text class="breeze-prod-image-build-r5" x="305" y="2069.6" textLength="1134.6" clip-path="url(#breeze-prod-image-build-line-84)">───────────────────────────────────────────── [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="2094" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-85)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="2094" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-85)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="2094" textLength="85.4" clip-path="url(#breeze-prod-image-build-line-85)">-github</text><text class="breeze-prod-image-build-r4" x="122" y="2094" textLength="134.2"  [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="2118.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-86)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="2118.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-86)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="2118.4" textLength="85.4" clip-path="url(#breeze-prod-image-build-line-86)">-github</text><text class="breeze-prod-image-build-r4" x="122" y="2118.4" textLength= [...]
 </text><text class="breeze-prod-image-build-r5" x="0" y="2142.8" textLength="1464" clip-path="url(#breeze-prod-image-build-line-87)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-prod-image-build-r2" x="1464" y="2142.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-87)">
 </text><text class="breeze-prod-image-build-r5" x="0" y="2167.2" textLength="24.4" clip-path="url(#breeze-prod-image-build-line-88)">╭─</text><text class="breeze-prod-image-build-r5" x="24.4" y="2167.2" textLength="195.2" clip-path="url(#breeze-prod-image-build-line-88)">&#160;Common&#160;options&#160;</text><text class="breeze-prod-image-build-r5" x="219.6" y="2167.2" textLength="1220" clip-path="url(#breeze-prod-image-build-line-88)">──────────────────────────────────────────────────── [...]
 </text><text class="breeze-prod-image-build-r5" x="0" y="2191.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-89)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="2191.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-89)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="2191.6" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-89)">-verbose</text><text class="breeze-prod-image-build-r6" x="158.6" y="2191.6" textLeng [...]
diff --git a/images/breeze/output_prod-image_verify.svg b/images/breeze/output_prod-image_verify.svg
index 6794eaef8a..a2d84dc943 100644
--- a/images/breeze/output_prod-image_verify.svg
+++ b/images/breeze/output_prod-image_verify.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 538.0" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 586.8" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -43,7 +43,7 @@
 
     <defs>
     <clipPath id="breeze-prod-image-verify-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="487.0" />
+      <rect x="0" y="0" width="1463.0" height="535.8" />
     </clipPath>
     <clipPath id="breeze-prod-image-verify-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -102,9 +102,15 @@
 <clipPath id="breeze-prod-image-verify-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="breeze-prod-image-verify-line-19">
+    <rect x="0" y="465.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-prod-image-verify-line-20">
+    <rect x="0" y="489.5" width="1464" height="24.65"/>
+            </clipPath>
     </defs>
 
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="536" rx="8"/><text class="breeze-prod-image-verify-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;prod-image&#160;verify</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="584.8" rx="8"/><text class="breeze-prod-image-verify-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;prod-image&#160;verify</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -120,20 +126,22 @@
 </text><text class="breeze-prod-image-verify-r2" x="12.2" y="93.2" textLength="292.8" clip-path="url(#breeze-prod-image-verify-line-3)">Verify&#160;Production&#160;image.</text><text class="breeze-prod-image-verify-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-3)">
 </text><text class="breeze-prod-image-verify-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-4)">
 </text><text class="breeze-prod-image-verify-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-prod-image-verify-line-5)">╭─</text><text class="breeze-prod-image-verify-r5" x="24.4" y="142" textLength="244" clip-path="url(#breeze-prod-image-verify-line-5)">&#160;Verify&#160;image&#160;flags&#160;</text><text class="breeze-prod-image-verify-r5" x="268.4" y="142" textLength="1171.2" clip-path="url(#breeze-prod-image-verify-line-5)">───────────────────────────────────────────────── [...]
-</text><text class="breeze-prod-image-verify-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-6)">│</text><text class="breeze-prod-image-verify-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-6)">-</text><text class="breeze-prod-image-verify-r4" x="36.6" y="166.4" textLength="73.2" clip-path="url(#breeze-prod-image-verify-line-6)">-image</text><text class="breeze-prod-image-verify-r4" x="109.8" y="166.4" textLength [...]
-</text><text class="breeze-prod-image-verify-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-7)">│</text><text class="breeze-prod-image-verify-r4" x="24.4" y="190.8" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-7)">-</text><text class="breeze-prod-image-verify-r4" x="36.6" y="190.8" textLength="85.4" clip-path="url(#breeze-prod-image-verify-line-7)">-python</text><text class="breeze-prod-image-verify-r6" x="280.6" y="190.8" textLengt [...]
-</text><text class="breeze-prod-image-verify-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-8)">│</text><text class="breeze-prod-image-verify-r7" x="329.4" y="215.2" textLength="732" clip-path="url(#breeze-prod-image-verify-line-8)">(&gt;3.7&lt;&#160;|&#160;3.8&#160;|&#160;3.9&#160;|&#160;3.10&#160;|&#160;3.11)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="breeze-prod-image-verify-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-9)">│</text><text class="breeze-prod-image-verify-r5" x="329.4" y="239.6" textLength="732" clip-path="url(#breeze-prod-image-verify-line-9)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="breeze-prod-image-verify-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-10)">│</text><text class="breeze-prod-image-verify-r4" x="24.4" y="264" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-10)">-</text><text class="breeze-prod-image-verify-r4" x="36.6" y="264" textLength="61" clip-path="url(#breeze-prod-image-verify-line-10)">-slim</text><text class="breeze-prod-image-verify-r4" x="97.6" y="264" textLength="73.2" c [...]
-</text><text class="breeze-prod-image-verify-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-11)">│</text><text class="breeze-prod-image-verify-r4" x="24.4" y="288.4" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-11)">-</text><text class="breeze-prod-image-verify-r4" x="36.6" y="288.4" textLength="73.2" clip-path="url(#breeze-prod-image-verify-line-11)">-image</text><text class="breeze-prod-image-verify-r4" x="109.8" y="288.4" textLen [...]
-</text><text class="breeze-prod-image-verify-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-12)">│</text><text class="breeze-prod-image-verify-r4" x="24.4" y="312.8" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-12)">-</text><text class="breeze-prod-image-verify-r4" x="36.6" y="312.8" textLength="61" clip-path="url(#breeze-prod-image-verify-line-12)">-pull</text><text class="breeze-prod-image-verify-r2" x="329.4" y="312.8" textLength [...]
-</text><text class="breeze-prod-image-verify-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-13)">│</text><text class="breeze-prod-image-verify-r4" x="24.4" y="337.2" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-13)">-</text><text class="breeze-prod-image-verify-r4" x="36.6" y="337.2" textLength="85.4" clip-path="url(#breeze-prod-image-verify-line-13)">-github</text><text class="breeze-prod-image-verify-r4" x="122" y="337.2" textLeng [...]
-</text><text class="breeze-prod-image-verify-r5" x="0" y="361.6" textLength="1464" clip-path="url(#breeze-prod-image-verify-line-14)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-prod-image-verify-r2" x="1464" y="361.6" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-14)">
-</text><text class="breeze-prod-image-verify-r5" x="0" y="386" textLength="24.4" clip-path="url(#breeze-prod-image-verify-line-15)">╭─</text><text class="breeze-prod-image-verify-r5" x="24.4" y="386" textLength="195.2" clip-path="url(#breeze-prod-image-verify-line-15)">&#160;Common&#160;options&#160;</text><text class="breeze-prod-image-verify-r5" x="219.6" y="386" textLength="1220" clip-path="url(#breeze-prod-image-verify-line-15)">─────────────────────────────────────────────────────── [...]
-</text><text class="breeze-prod-image-verify-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-16)">│</text><text class="breeze-prod-image-verify-r4" x="24.4" y="410.4" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-16)">-</text><text class="breeze-prod-image-verify-r4" x="36.6" y="410.4" textLength="97.6" clip-path="url(#breeze-prod-image-verify-line-16)">-verbose</text><text class="breeze-prod-image-verify-r6" x="158.6" y="410.4" textL [...]
-</text><text class="breeze-prod-image-verify-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-17)">│</text><text class="breeze-prod-image-verify-r4" x="24.4" y="434.8" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-17)">-</text><text class="breeze-prod-image-verify-r4" x="36.6" y="434.8" textLength="48.8" clip-path="url(#breeze-prod-image-verify-line-17)">-dry</text><text class="breeze-prod-image-verify-r4" x="85.4" y="434.8" textLength [...]
-</text><text class="breeze-prod-image-verify-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-18)">│</text><text class="breeze-prod-image-verify-r4" x="24.4" y="459.2" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-18)">-</text><text class="breeze-prod-image-verify-r4" x="36.6" y="459.2" textLength="61" clip-path="url(#breeze-prod-image-verify-line-18)">-help</text><text class="breeze-prod-image-verify-r6" x="158.6" y="459.2" textLength [...]
-</text><text class="breeze-prod-image-verify-r5" x="0" y="483.6" textLength="1464" clip-path="url(#breeze-prod-image-verify-line-19)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-prod-image-verify-r2" x="1464" y="483.6" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-19)">
+</text><text class="breeze-prod-image-verify-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-6)">│</text><text class="breeze-prod-image-verify-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-6)">-</text><text class="breeze-prod-image-verify-r4" x="36.6" y="166.4" textLength="73.2" clip-path="url(#breeze-prod-image-verify-line-6)">-image</text><text class="breeze-prod-image-verify-r4" x="109.8" y="166.4" textLength [...]
+</text><text class="breeze-prod-image-verify-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-7)">│</text><text class="breeze-prod-image-verify-r4" x="24.4" y="190.8" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-7)">-</text><text class="breeze-prod-image-verify-r4" x="36.6" y="190.8" textLength="85.4" clip-path="url(#breeze-prod-image-verify-line-7)">-python</text><text class="breeze-prod-image-verify-r6" x="195.2" y="190.8" textLengt [...]
+</text><text class="breeze-prod-image-verify-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-8)">│</text><text class="breeze-prod-image-verify-r5" x="244" y="215.2" textLength="732" clip-path="url(#breeze-prod-image-verify-line-8)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="breeze-prod-image-verify-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-9)">│</text><text class="breeze-prod-image-verify-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-9)">-</text><text class="breeze-prod-image-verify-r4" x="36.6" y="239.6" textLength="61" clip-path="url(#breeze-prod-image-verify-line-9)">-slim</text><text class="breeze-prod-image-verify-r4" x="97.6" y="239.6" textLength="73 [...]
+</text><text class="breeze-prod-image-verify-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-10)">│</text><text class="breeze-prod-image-verify-r4" x="24.4" y="264" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-10)">-</text><text class="breeze-prod-image-verify-r4" x="36.6" y="264" textLength="73.2" clip-path="url(#breeze-prod-image-verify-line-10)">-image</text><text class="breeze-prod-image-verify-r4" x="109.8" y="264" textLength="48. [...]
+</text><text class="breeze-prod-image-verify-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-11)">│</text><text class="breeze-prod-image-verify-r4" x="24.4" y="288.4" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-11)">-</text><text class="breeze-prod-image-verify-r4" x="36.6" y="288.4" textLength="61" clip-path="url(#breeze-prod-image-verify-line-11)">-pull</text><text class="breeze-prod-image-verify-r2" x="244" y="288.4" textLength=" [...]
+</text><text class="breeze-prod-image-verify-r5" x="0" y="312.8" textLength="1464" clip-path="url(#breeze-prod-image-verify-line-12)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-prod-image-verify-r2" x="1464" y="312.8" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-12)">
+</text><text class="breeze-prod-image-verify-r5" x="0" y="337.2" textLength="24.4" clip-path="url(#breeze-prod-image-verify-line-13)">╭─</text><text class="breeze-prod-image-verify-r5" x="24.4" y="337.2" textLength="280.6" clip-path="url(#breeze-prod-image-verify-line-13)">&#160;Github&#160;authentication&#160;</text><text class="breeze-prod-image-verify-r5" x="305" y="337.2" textLength="1134.6" clip-path="url(#breeze-prod-image-verify-line-13)">────────────────────────────────────────── [...]
+</text><text class="breeze-prod-image-verify-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-14)">│</text><text class="breeze-prod-image-verify-r4" x="24.4" y="361.6" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-14)">-</text><text class="breeze-prod-image-verify-r4" x="36.6" y="361.6" textLength="85.4" clip-path="url(#breeze-prod-image-verify-line-14)">-github</text><text class="breeze-prod-image-verify-r4" x="122" y="361.6" textLeng [...]
+</text><text class="breeze-prod-image-verify-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-15)">│</text><text class="breeze-prod-image-verify-r4" x="24.4" y="386" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-15)">-</text><text class="breeze-prod-image-verify-r4" x="36.6" y="386" textLength="85.4" clip-path="url(#breeze-prod-image-verify-line-15)">-github</text><text class="breeze-prod-image-verify-r4" x="122" y="386" textLength="73.2 [...]
+</text><text class="breeze-prod-image-verify-r5" x="0" y="410.4" textLength="1464" clip-path="url(#breeze-prod-image-verify-line-16)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-prod-image-verify-r2" x="1464" y="410.4" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-16)">
+</text><text class="breeze-prod-image-verify-r5" x="0" y="434.8" textLength="24.4" clip-path="url(#breeze-prod-image-verify-line-17)">╭─</text><text class="breeze-prod-image-verify-r5" x="24.4" y="434.8" textLength="195.2" clip-path="url(#breeze-prod-image-verify-line-17)">&#160;Common&#160;options&#160;</text><text class="breeze-prod-image-verify-r5" x="219.6" y="434.8" textLength="1220" clip-path="url(#breeze-prod-image-verify-line-17)">───────────────────────────────────────────────── [...]
+</text><text class="breeze-prod-image-verify-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-18)">│</text><text class="breeze-prod-image-verify-r4" x="24.4" y="459.2" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-18)">-</text><text class="breeze-prod-image-verify-r4" x="36.6" y="459.2" textLength="97.6" clip-path="url(#breeze-prod-image-verify-line-18)">-verbose</text><text class="breeze-prod-image-verify-r6" x="158.6" y="459.2" textL [...]
+</text><text class="breeze-prod-image-verify-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-19)">│</text><text class="breeze-prod-image-verify-r4" x="24.4" y="483.6" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-19)">-</text><text class="breeze-prod-image-verify-r4" x="36.6" y="483.6" textLength="48.8" clip-path="url(#breeze-prod-image-verify-line-19)">-dry</text><text class="breeze-prod-image-verify-r4" x="85.4" y="483.6" textLength [...]
+</text><text class="breeze-prod-image-verify-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-20)">│</text><text class="breeze-prod-image-verify-r4" x="24.4" y="508" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-20)">-</text><text class="breeze-prod-image-verify-r4" x="36.6" y="508" textLength="61" clip-path="url(#breeze-prod-image-verify-line-20)">-help</text><text class="breeze-prod-image-verify-r6" x="158.6" y="508" textLength="24.4"  [...]
+</text><text class="breeze-prod-image-verify-r5" x="0" y="532.4" textLength="1464" clip-path="url(#breeze-prod-image-verify-line-21)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-prod-image-verify-r2" x="1464" y="532.4" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-21)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output_release-management.svg b/images/breeze/output_release-management.svg
index c6d4cabe9e..9ea0d2537c 100644
--- a/images/breeze/output_release-management.svg
+++ b/images/breeze/output_release-management.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 464.79999999999995" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 489.2" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -42,7 +42,7 @@
 
     <defs>
     <clipPath id="breeze-release-management-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="413.79999999999995" />
+      <rect x="0" y="0" width="1463.0" height="438.2" />
     </clipPath>
     <clipPath id="breeze-release-management-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -92,9 +92,12 @@
 <clipPath id="breeze-release-management-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="breeze-release-management-line-16">
+    <rect x="0" y="391.9" width="1464" height="24.65"/>
+            </clipPath>
     </defs>
 
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="462.8" rx="8"/><text class="breeze-release-management-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;release-management</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="487.2" rx="8"/><text class="breeze-release-management-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;release-management</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -115,12 +118,13 @@
 </text><text class="breeze-release-management-r5" x="0" y="215.2" textLength="24.4" clip-path="url(#breeze-release-management-line-8)">╭─</text><text class="breeze-release-management-r5" x="24.4" y="215.2" textLength="122" clip-path="url(#breeze-release-management-line-8)">&#160;Commands&#160;</text><text class="breeze-release-management-r5" x="146.4" y="215.2" textLength="1293.2" clip-path="url(#breeze-release-management-line-8)">───────────────────────────────────────────────────────── [...]
 </text><text class="breeze-release-management-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-release-management-line-9)">│</text><text class="breeze-release-management-r4" x="24.4" y="239.6" textLength="414.8" clip-path="url(#breeze-release-management-line-9)">generate-constraints&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r2" x="463.6" y="239.6" textLength="976" clip-path="url(#breeze-rel [...]
 </text><text class="breeze-release-management-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-release-management-line-10)">│</text><text class="breeze-release-management-r4" x="24.4" y="264" textLength="414.8" clip-path="url(#breeze-release-management-line-10)">generate-issue-content-providers&#160;&#160;</text><text class="breeze-release-management-r2" x="463.6" y="264" textLength="976" clip-path="url(#breeze-release-management-line-10)">Generates&#160;content&#160;for&#160;i [...]
-</text><text class="breeze-release-management-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-release-management-line-11)">│</text><text class="breeze-release-management-r4" x="24.4" y="288.4" textLength="414.8" clip-path="url(#breeze-release-management-line-11)">prepare-airflow-package&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r2" x="463.6" y="288.4" textLength="976" clip-path="url(#breeze-release-manageme [...]
-</text><text class="breeze-release-management-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-line-12)">│</text><text class="breeze-release-management-r4" x="24.4" y="312.8" textLength="414.8" clip-path="url(#breeze-release-management-line-12)">prepare-provider-documentation&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r2" x="463.6" y="312.8" textLength="97.6" clip-path="url(#breeze-release-management-line-12)">Prepare&#160;</text>< [...]
-</text><text class="breeze-release-management-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-release-management-line-13)">│</text><text class="breeze-release-management-r4" x="24.4" y="337.2" textLength="414.8" clip-path="url(#breeze-release-management-line-13)">prepare-provider-packages&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r2" x="463.6" y="337.2" textLength="976" clip-path="url(#breeze-release-management-line-13 [...]
-</text><text class="breeze-release-management-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-release-management-line-14)">│</text><text class="breeze-release-management-r4" x="24.4" y="361.6" textLength="414.8" clip-path="url(#breeze-release-management-line-14)">release-prod-images&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r2" x="463.6" y="361.6" textLength="976" clip-path="url(#bre [...]
-</text><text class="breeze-release-management-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-release-management-line-15)">│</text><text class="breeze-release-management-r4" x="24.4" y="386" textLength="414.8" clip-path="url(#breeze-release-management-line-15)">verify-provider-packages&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r2" x="463.6" y="386" textLength="976" clip-path="url(#breeze-release-management-line-15) [...]
-</text><text class="breeze-release-management-r5" x="0" y="410.4" textLength="1464" clip-path="url(#breeze-release-management-line-16)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-r2" x="1464" y="410.4" textLength="12.2" clip-path="url(#breeze-release-management-line-16)">
+</text><text class="breeze-release-management-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-release-management-line-11)">│</text><text class="breeze-release-management-r4" x="24.4" y="288.4" textLength="414.8" clip-path="url(#breeze-release-management-line-11)">install-provider-packages&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r2" x="463.6" y="288.4" textLength="976" clip-path="url(#breeze-release-management-line-11 [...]
+</text><text class="breeze-release-management-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-line-12)">│</text><text class="breeze-release-management-r4" x="24.4" y="312.8" textLength="414.8" clip-path="url(#breeze-release-management-line-12)">prepare-airflow-package&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r2" x="463.6" y="312.8" textLength="976" clip-path="url(#breeze-release-manageme [...]
+</text><text class="breeze-release-management-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-release-management-line-13)">│</text><text class="breeze-release-management-r4" x="24.4" y="337.2" textLength="414.8" clip-path="url(#breeze-release-management-line-13)">prepare-provider-documentation&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r2" x="463.6" y="337.2" textLength="97.6" clip-path="url(#breeze-release-management-line-13)">Prepare&#160;</text>< [...]
+</text><text class="breeze-release-management-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-release-management-line-14)">│</text><text class="breeze-release-management-r4" x="24.4" y="361.6" textLength="414.8" clip-path="url(#breeze-release-management-line-14)">prepare-provider-packages&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r2" x="463.6" y="361.6" textLength="976" clip-path="url(#breeze-release-management-line-14 [...]
+</text><text class="breeze-release-management-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-release-management-line-15)">│</text><text class="breeze-release-management-r4" x="24.4" y="386" textLength="414.8" clip-path="url(#breeze-release-management-line-15)">release-prod-images&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r2" x="463.6" y="386" textLength="976" clip-path="url(#breeze-re [...]
+</text><text class="breeze-release-management-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-release-management-line-16)">│</text><text class="breeze-release-management-r4" x="24.4" y="410.4" textLength="414.8" clip-path="url(#breeze-release-management-line-16)">verify-provider-packages&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r2" x="463.6" y="410.4" textLength="976" clip-path="url(#breeze-release-management-li [...]
+</text><text class="breeze-release-management-r5" x="0" y="434.8" textLength="1464" clip-path="url(#breeze-release-management-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-r2" x="1464" y="434.8" textLength="12.2" clip-path="url(#breeze-release-management-line-17)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output_release-management_install-provider-packages.svg b/images/breeze/output_release-management_install-provider-packages.svg
new file mode 100644
index 0000000000..46d7b8041d
--- /dev/null
+++ b/images/breeze/output_release-management_install-provider-packages.svg
@@ -0,0 +1,216 @@
+<svg class="rich-terminal" viewBox="0 0 1482 1001.5999999999999" xmlns="http://www.w3.org/2000/svg">
+    <!-- Generated with Rich https://www.textualize.io -->
+    <style>
+
+    @font-face {
+        font-family: "Fira Code";
+        src: local("FiraCode-Regular"),
+                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
+                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
+        font-style: normal;
+        font-weight: 400;
+    }
+    @font-face {
+        font-family: "Fira Code";
+        src: local("FiraCode-Bold"),
+                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
+                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
+        font-style: bold;
+        font-weight: 700;
+    }
+
+    .breeze-release-management-install-provider-packages-matrix {
+        font-family: Fira Code, monospace;
+        font-size: 20px;
+        line-height: 24.4px;
+        font-variant-east-asian: full-width;
+    }
+
+    .breeze-release-management-install-provider-packages-title {
+        font-size: 18px;
+        font-weight: bold;
+        font-family: arial;
+    }
+
+    .breeze-release-management-install-provider-packages-r1 { fill: #c5c8c6;font-weight: bold }
+.breeze-release-management-install-provider-packages-r2 { fill: #c5c8c6 }
+.breeze-release-management-install-provider-packages-r3 { fill: #d0b344;font-weight: bold }
+.breeze-release-management-install-provider-packages-r4 { fill: #68a0b3;font-weight: bold }
+.breeze-release-management-install-provider-packages-r5 { fill: #868887 }
+.breeze-release-management-install-provider-packages-r6 { fill: #8d7b39 }
+.breeze-release-management-install-provider-packages-r7 { fill: #98a84b;font-weight: bold }
+    </style>
+
+    <defs>
+    <clipPath id="breeze-release-management-install-provider-packages-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="950.5999999999999" />
+    </clipPath>
+    <clipPath id="breeze-release-management-install-provider-packages-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-8">
+    <rect x="0" y="196.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-9">
+    <rect x="0" y="221.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-10">
+    <rect x="0" y="245.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-11">
+    <rect x="0" y="269.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-12">
+    <rect x="0" y="294.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-13">
+    <rect x="0" y="318.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-14">
+    <rect x="0" y="343.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-15">
+    <rect x="0" y="367.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-16">
+    <rect x="0" y="391.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-17">
+    <rect x="0" y="416.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-18">
+    <rect x="0" y="440.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-19">
+    <rect x="0" y="465.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-20">
+    <rect x="0" y="489.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-21">
+    <rect x="0" y="513.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-22">
+    <rect x="0" y="538.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-23">
+    <rect x="0" y="562.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-24">
+    <rect x="0" y="587.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-25">
+    <rect x="0" y="611.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-26">
+    <rect x="0" y="635.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-27">
+    <rect x="0" y="660.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-28">
+    <rect x="0" y="684.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-29">
+    <rect x="0" y="709.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-30">
+    <rect x="0" y="733.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-31">
+    <rect x="0" y="757.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-32">
+    <rect x="0" y="782.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-33">
+    <rect x="0" y="806.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-34">
+    <rect x="0" y="831.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-35">
+    <rect x="0" y="855.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-36">
+    <rect x="0" y="879.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-37">
+    <rect x="0" y="904.3" width="1464" height="24.65"/>
+            </clipPath>
+    </defs>
+
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="999.6" rx="8"/><text class="breeze-release-management-install-provider-packages-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;release-management&#160;install-provider-packages</text>
+            <g transform="translate(26,22)">
+            <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
+            <circle cx="22" cy="0" r="7" fill="#febc2e"/>
+            <circle cx="44" cy="0" r="7" fill="#28c840"/>
+            </g>
+        
+    <g transform="translate(9, 41)" clip-path="url(#breeze-release-management-install-provider-packages-clip-terminal)">
+    
+    <g class="breeze-release-management-install-provider-packages-matrix">
+    <text class="breeze-release-management-install-provider-packages-r2" x="1464" y="20" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-0)">
+</text><text class="breeze-release-management-install-provider-packages-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#breeze-release-management-install-provider-packages-line-1)">Usage:&#160;</text><text class="breeze-release-management-install-provider-packages-r1" x="97.6" y="44.4" textLength="646.6" clip-path="url(#breeze-release-management-install-provider-packages-line-1)">breeze&#160;release-management&#160;install-provider-packages&#160;[</text><text class="breeze-releas [...]
+</text><text class="breeze-release-management-install-provider-packages-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-2)">
+</text><text class="breeze-release-management-install-provider-packages-r2" x="12.2" y="93.2" textLength="646.6" clip-path="url(#breeze-release-management-install-provider-packages-line-3)">Installs&#160;provider&#160;packages&#160;that&#160;can&#160;be&#160;found&#160;in&#160;dist.</text><text class="breeze-release-management-install-provider-packages-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-3)">
+</text><text class="breeze-release-management-install-provider-packages-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-4)">
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-release-management-install-provider-packages-line-5)">╭─</text><text class="breeze-release-management-install-provider-packages-r5" x="24.4" y="142" textLength="353.8" clip-path="url(#breeze-release-management-install-provider-packages-line-5)">&#160;Provider&#160;installation&#160;flags&#160;</text><text class="breeze-release-management-install-provider-pack [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-6)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-6)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="166.4" textLength="48.8"  [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-7)">│</text><text class="breeze-release-management-install-provider-packages-r2" x="475.8" y="190.8" textLength="963.8" clip-path="url(#breeze-release-management-install-provider-packages-line-7)">`wheel`,&#160;or&#160;`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#1 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-8)">│</text><text class="breeze-release-management-install-provider-packages-r2" x="475.8" y="215.2" textLength="963.8" clip-path="url(#breeze-release-management-install-provider-packages-line-8)">or&#160;sdist&#160;packages&#160;available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;&# [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-9)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="475.8" y="239.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-9)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="488" y="239.6" textLength="73.2"  [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-10)">│</text><text class="breeze-release-management-install-provider-packages-r6" x="475.8" y="264" textLength="963.8" clip-path="url(#breeze-release-management-install-provider-packages-line-10)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#160;&#160;&#160;&#160;&#160;&#160; [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-11)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="288.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-11)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="288.4" textLength="97.6 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-12)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="475.8" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-12)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="488" y="312.8" textLength="48.8 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-13)">│</text><text class="breeze-release-management-install-provider-packages-r6" x="475.8" y="337.2" textLength="963.8" clip-path="url(#breeze-release-management-install-provider-packages-line-13)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-14)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="361.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-14)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="361.6" textLength="97.6 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-15)">│</text><text class="breeze-release-management-install-provider-packages-r2" x="475.8" y="386" textLength="963.8" clip-path="url(#breeze-release-management-install-provider-packages-line-15)">specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#160;find&#160;newer&#160; [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-16)">│</text><text class="breeze-release-management-install-provider-packages-r6" x="475.8" y="410.4" textLength="963.8" clip-path="url(#breeze-release-management-install-provider-packages-line-16)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-17)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="434.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-17)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="434.8" textLength="97.6 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-18)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="459.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-18)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="459.2" textLength="97.6 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-19)">│</text><text class="breeze-release-management-install-provider-packages-r5" x="475.8" y="483.6" textLength="658.8" clip-path="url(#breeze-release-management-install-provider-packages-line-19)">[default:&#160;wheel]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-20)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="508" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-20)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="508" textLength="61" clip-p [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-21)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="532.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-21)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="532.4" textLength="73.2 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-22)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="556.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-22)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="556.8" textLength="85.4 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-23)">│</text><text class="breeze-release-management-install-provider-packages-r5" x="475.8" y="581.2" textLength="585.6" clip-path="url(#breeze-release-management-install-provider-packages-line-23)">[default:&#160;apache/airflow]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="605.6" textLength="1464" clip-path="url(#breeze-release-management-install-provider-packages-line-24)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-install-provider-packages-r2" x="1464" y="605.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-24)">
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="630" textLength="24.4" clip-path="url(#breeze-release-management-install-provider-packages-line-25)">╭─</text><text class="breeze-release-management-install-provider-packages-r5" x="24.4" y="630" textLength="219.6" clip-path="url(#breeze-release-management-install-provider-packages-line-25)">&#160;Parallel&#160;running&#160;</text><text class="breeze-release-management-install-provider-packages-r5" x="24 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-26)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="654.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-26)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="654.4" textLength="48.8 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-27)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="678.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-27)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="678.8" textLength="146. [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-28)">│</text><text class="breeze-release-management-install-provider-packages-r6" x="378.2" y="703.2" textLength="915" clip-path="url(#breeze-release-management-install-provider-packages-line-28)">(INTEGER&#160;RANGE)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-29)">│</text><text class="breeze-release-management-install-provider-packages-r5" x="378.2" y="727.6" textLength="915" clip-path="url(#breeze-release-management-install-provider-packages-line-29)">[default:&#160;4;&#160;1&lt;=x&lt;=8]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-30)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="752" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-30)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="752" textLength="61" clip-p [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-31)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="776.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-31)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="776.4" textLength="97.6 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-32)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="800.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-32)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="800.8" textLength="73.2 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="825.2" textLength="1464" clip-path="url(#breeze-release-management-install-provider-packages-line-33)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-install-provider-packages-r2" x="1464" y="825.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-33)">
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="849.6" textLength="24.4" clip-path="url(#breeze-release-management-install-provider-packages-line-34)">╭─</text><text class="breeze-release-management-install-provider-packages-r5" x="24.4" y="849.6" textLength="195.2" clip-path="url(#breeze-release-management-install-provider-packages-line-34)">&#160;Common&#160;options&#160;</text><text class="breeze-release-management-install-provider-packages-r5" x=" [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-35)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="874" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-35)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="874" textLength="97.6" clip [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-36)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="898.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-36)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="898.4" textLength="48.8 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-37)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="922.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-37)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="922.8" textLength="61"  [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="947.2" textLength="1464" clip-path="url(#breeze-release-management-install-provider-packages-line-38)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-install-provider-packages-r2" x="1464" y="947.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-38)">
+</text>
+    </g>
+    </g>
+</svg>
diff --git a/images/breeze/output_release-management_prepare-provider-documentation.svg b/images/breeze/output_release-management_prepare-provider-documentation.svg
index 807577a6ef..75b2769e59 100644
--- a/images/breeze/output_release-management_prepare-provider-documentation.svg
+++ b/images/breeze/output_release-management_prepare-provider-documentation.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 855.1999999999999" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 952.8" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -43,7 +43,7 @@
 
     <defs>
     <clipPath id="breeze-release-management-prepare-provider-documentation-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="804.1999999999999" />
+      <rect x="0" y="0" width="1463.0" height="901.8" />
     </clipPath>
     <clipPath id="breeze-release-management-prepare-provider-documentation-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -141,9 +141,21 @@
 <clipPath id="breeze-release-management-prepare-provider-documentation-line-31">
     <rect x="0" y="757.9" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="breeze-release-management-prepare-provider-documentation-line-32">
+    <rect x="0" y="782.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-prepare-provider-documentation-line-33">
+    <rect x="0" y="806.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-prepare-provider-documentation-line-34">
+    <rect x="0" y="831.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-prepare-provider-documentation-line-35">
+    <rect x="0" y="855.5" width="1464" height="24.65"/>
+            </clipPath>
     </defs>
 
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="853.2" rx="8"/><text class="breeze-release-management-prepare-provider-documentation-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;release-management&#160;prepare-provider-documentation</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="950.8" rx="8"/><text class="breeze-release-management-prepare-provider-documentation-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;release-management&#160;prepare-provider-documentation</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -176,16 +188,20 @@
 </text><text class="breeze-release-management-prepare-provider-documentation-r2" x="12.2" y="508" textLength="97.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-20)">Prepare&#160;</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="109.8" y="508" textLength="109.8" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-20)">CHANGELOG</text><text class="breeze-release-management-prepare-provider-documen [...]
 </text><text class="breeze-release-management-prepare-provider-documentation-r2" x="1464" y="532.4" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-21)">
 </text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="556.8" textLength="24.4" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-22)">╭─</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="24.4" y="556.8" textLength="512.4" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-22)">&#160;Provider&#160;documentation&#160;preparation&#160;flags&#160;</text><text class="bre [...]
-</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-23)">│</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="581.2" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-23)">-</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="36.6" y [...]
-</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-24)">│</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="605.6" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-24)">-</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="36.6" y [...]
-</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-25)">│</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="630" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-25)">-</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="36.6" y="63 [...]
-</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="654.4" textLength="1464" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-26)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-prepare-provider-documentation-r2" x="1464" y="654.4" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provid [...]
-</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="678.8" textLength="24.4" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-27)">╭─</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="24.4" y="678.8" textLength="195.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-27)">&#160;Common&#160;options&#160;</text><text class="breeze-release-management-prepare-provi [...]
-</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-28)">│</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="703.2" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-28)">-</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="36.6" y [...]
-</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-29)">│</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="727.6" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-29)">-</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="36.6" y [...]
-</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-30)">│</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="752" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-30)">-</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="36.6" y="75 [...]
-</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-31)">│</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="776.4" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-31)">-</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="36.6" y [...]
-</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="800.8" textLength="1464" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-32)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-prepare-provider-documentation-r2" x="1464" y="800.8" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provid [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-23)">│</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="581.2" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-23)">-</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="36.6" y [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-24)">│</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="605.6" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-24)">-</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="36.6" y [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-25)">│</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="630" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-25)">-</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="36.6" y="63 [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-26)">│</text><text class="breeze-release-management-prepare-provider-documentation-r2" x="402.6" y="654.4" textLength="1037" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-26)">branch)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-27)">│</text><text class="breeze-release-management-prepare-provider-documentation-r7" x="402.6" y="678.8" textLength="1037" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-27)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-28)">│</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="703.2" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-28)">-</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="36.6" y [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-29)">│</text><text class="breeze-release-management-prepare-provider-documentation-r2" x="402.6" y="727.6" textLength="1037" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-29)">documentation&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="752" textLength="1464" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-30)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-prepare-provider-documentation-r2" x="1464" y="752" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-d [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="776.4" textLength="24.4" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-31)">╭─</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="24.4" y="776.4" textLength="195.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-31)">&#160;Common&#160;options&#160;</text><text class="breeze-release-management-prepare-provi [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-32)">│</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="800.8" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-32)">-</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="36.6" y [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-33)">│</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="825.2" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-33)">-</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="36.6" y [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-34)">│</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="849.6" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-34)">-</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="36.6" y [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-35)">│</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="874" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-35)">-</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="36.6" y="87 [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="898.4" textLength="1464" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-36)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-prepare-provider-documentation-r2" x="1464" y="898.4" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provid [...]
 </text>
     </g>
     </g>
diff --git a/images/breeze/output_release-management_verify-provider-packages.svg b/images/breeze/output_release-management_verify-provider-packages.svg
index ec67b084a2..6f3670106d 100644
--- a/images/breeze/output_release-management_verify-provider-packages.svg
+++ b/images/breeze/output_release-management_verify-provider-packages.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 757.5999999999999" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 830.8" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -43,7 +43,7 @@
 
     <defs>
     <clipPath id="breeze-release-management-verify-provider-packages-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="706.5999999999999" />
+      <rect x="0" y="0" width="1463.0" height="779.8" />
     </clipPath>
     <clipPath id="breeze-release-management-verify-provider-packages-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -129,9 +129,18 @@
 <clipPath id="breeze-release-management-verify-provider-packages-line-27">
     <rect x="0" y="660.3" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="breeze-release-management-verify-provider-packages-line-28">
+    <rect x="0" y="684.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-verify-provider-packages-line-29">
+    <rect x="0" y="709.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-verify-provider-packages-line-30">
+    <rect x="0" y="733.5" width="1464" height="24.65"/>
+            </clipPath>
     </defs>
 
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="755.6" rx="8"/><text class="breeze-release-management-verify-provider-packages-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;release-management&#160;verify-provider-packages</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="828.8" rx="8"/><text class="breeze-release-management-verify-provider-packages-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;release-management&#160;verify-provider-packages</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -152,24 +161,27 @@
 </text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-8)">│</text><text class="breeze-release-management-verify-provider-packages-r2" x="475.8" y="215.2" textLength="963.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-8)">or&#160;sdist&#160;packages&#160;available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;&#160; [...]
 </text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-9)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="475.8" y="239.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-9)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="488" y="239.6" textLength="73.2" clip- [...]
 </text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-10)">│</text><text class="breeze-release-management-verify-provider-packages-r6" x="475.8" y="264" textLength="963.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-10)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-11)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="288.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-11)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="288.4" textLength="97.6" cli [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-12)">│</text><text class="breeze-release-management-verify-provider-packages-r2" x="475.8" y="312.8" textLength="963.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-12)">specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#160;find&#160;newer&#160; [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-11)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="288.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-11)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="288.4" textLength="97.6" cli [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-12)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="475.8" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-12)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="488" y="312.8" textLength="48.8" cli [...]
 </text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-13)">│</text><text class="breeze-release-management-verify-provider-packages-r6" x="475.8" y="337.2" textLength="963.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-13)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-14)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="361.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-14)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="361.6" textLength="97.6" cli [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-15)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="386" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-15)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="386" textLength="48.8" clip-path [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-16)">│</text><text class="breeze-release-management-verify-provider-packages-r2" x="475.8" y="410.4" textLength="963.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-16)">folder&#160;when&#160;entering&#160;breeze.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-17)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="434.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-17)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="434.8" textLength="97.6" cli [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-18)">│</text><text class="breeze-release-management-verify-provider-packages-r5" x="475.8" y="459.2" textLength="658.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-18)">[default:&#160;wheel]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-19)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="483.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-19)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="483.6" textLength="61" clip- [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-20)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="508" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-20)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="508" textLength="73.2" clip-path [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-21)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="532.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-21)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="532.4" textLength="85.4" cli [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-22)">│</text><text class="breeze-release-management-verify-provider-packages-r5" x="475.8" y="556.8" textLength="585.6" clip-path="url(#breeze-release-management-verify-provider-packages-line-22)">[default:&#160;apache/airflow]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="581.2" textLength="1464" clip-path="url(#breeze-release-management-verify-provider-packages-line-23)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-verify-provider-packages-r2" x="1464" y="581.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-23)">
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="605.6" textLength="24.4" clip-path="url(#breeze-release-management-verify-provider-packages-line-24)">╭─</text><text class="breeze-release-management-verify-provider-packages-r5" x="24.4" y="605.6" textLength="195.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-24)">&#160;Common&#160;options&#160;</text><text class="breeze-release-management-verify-provider-packages-r5" x="219.6 [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-25)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="630" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-25)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="630" textLength="97.6" clip-path [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-26)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="654.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-26)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="654.4" textLength="48.8" cli [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-27)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="678.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-27)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="678.8" textLength="61" clip- [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="703.2" textLength="1464" clip-path="url(#breeze-release-management-verify-provider-packages-line-28)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-verify-provider-packages-r2" x="1464" y="703.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-28)">
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-14)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="361.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-14)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="361.6" textLength="97.6" cli [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-15)">│</text><text class="breeze-release-management-verify-provider-packages-r2" x="475.8" y="386" textLength="963.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-15)">specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#160;find&#160;newer&#160;depe [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-16)">│</text><text class="breeze-release-management-verify-provider-packages-r6" x="475.8" y="410.4" textLength="963.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-16)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-17)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="434.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-17)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="434.8" textLength="97.6" cli [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-18)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="459.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-18)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="459.2" textLength="48.8" cli [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-19)">│</text><text class="breeze-release-management-verify-provider-packages-r2" x="475.8" y="483.6" textLength="963.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-19)">folder&#160;when&#160;entering&#160;breeze.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-20)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="508" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-20)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="508" textLength="97.6" clip-path [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-21)">│</text><text class="breeze-release-management-verify-provider-packages-r5" x="475.8" y="532.4" textLength="658.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-21)">[default:&#160;wheel]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-22)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="556.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-22)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="556.8" textLength="61" clip- [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-23)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="581.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-23)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="581.2" textLength="73.2" cli [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-24)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="605.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-24)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="605.6" textLength="85.4" cli [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-25)">│</text><text class="breeze-release-management-verify-provider-packages-r5" x="475.8" y="630" textLength="585.6" clip-path="url(#breeze-release-management-verify-provider-packages-line-25)">[default:&#160;apache/airflow]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="654.4" textLength="1464" clip-path="url(#breeze-release-management-verify-provider-packages-line-26)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-verify-provider-packages-r2" x="1464" y="654.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-26)">
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="678.8" textLength="24.4" clip-path="url(#breeze-release-management-verify-provider-packages-line-27)">╭─</text><text class="breeze-release-management-verify-provider-packages-r5" x="24.4" y="678.8" textLength="195.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-27)">&#160;Common&#160;options&#160;</text><text class="breeze-release-management-verify-provider-packages-r5" x="219.6 [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-28)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="703.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-28)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="703.2" textLength="97.6" cli [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-29)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="727.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-29)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="727.6" textLength="48.8" cli [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-30)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="752" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-30)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="752" textLength="61" clip-path=" [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="776.4" textLength="1464" clip-path="url(#breeze-release-management-verify-provider-packages-line-31)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-verify-provider-packages-r2" x="1464" y="776.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-31)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output_setup_check-all-params-in-groups.svg b/images/breeze/output_setup_check-all-params-in-groups.svg
index 073209a6c5..f17b5e10b9 100644
--- a/images/breeze/output_setup_check-all-params-in-groups.svg
+++ b/images/breeze/output_setup_check-all-params-in-groups.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 708.8" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 733.1999999999999" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -43,7 +43,7 @@
 
     <defs>
     <clipPath id="breeze-setup-check-all-params-in-groups-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="657.8" />
+      <rect x="0" y="0" width="1463.0" height="682.1999999999999" />
     </clipPath>
     <clipPath id="breeze-setup-check-all-params-in-groups-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -123,9 +123,12 @@
 <clipPath id="breeze-setup-check-all-params-in-groups-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="breeze-setup-check-all-params-in-groups-line-26">
+    <rect x="0" y="635.9" width="1464" height="24.65"/>
+            </clipPath>
     </defs>
 
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="706.8" rx="8"/><text class="breeze-setup-check-all-params-in-groups-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;setup&#160;check-all-params-in-groups</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="731.2" rx="8"/><text class="breeze-setup-check-all-params-in-groups-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;setup&#160;check-all-params-in-groups</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -144,24 +147,25 @@
 </text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-6)">│</text><text class="breeze-setup-check-all-params-in-groups-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-6)">-</text><text class="breeze-setup-check-all-params-in-groups-r4" x="36.6" y="166.4" textLength="97.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line [...]
 </text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-7)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="190.8" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-7)">(main&#160;|&#160;build-docs&#160;|&#160;ci:fix-ownership&#160;|&#160;ci:free-space&#160;|&#160;ci:get-workflow-info&#160;|&#160;ci:resource-check&#160;|&#160;&# [...]
 </text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-8)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="215.2" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-8)">ci:selective-check&#160;|&#160;ci&#160;|&#160;ci-image:build&#160;|&#160;ci-image:pull&#160;|&#160;ci-image:verify&#160;|&#160;ci-image&#160;|&#160;cleanup&#160; [...]
-</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-9)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="239.6" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-9)">compile-www-assets&#160;|&#160;exec&#160;|&#160;k8s:build-k8s-image&#160;|&#160;k8s:configure-cluster&#160;|&#160;k8s:create-cluster&#160;|&#160;&#160;&#160;&#16 [...]
+</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-9)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="239.6" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-9)">compile-www-assets&#160;|&#160;down&#160;|&#160;exec&#160;|&#160;k8s:build-k8s-image&#160;|&#160;k8s:configure-cluster&#160;|&#160;k8s:create-cluster&#160;|&#160 [...]
 </text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-10)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="264" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-10)">k8s:delete-cluster&#160;|&#160;k8s:deploy-airflow&#160;|&#160;k8s:k9s&#160;|&#160;k8s:logs&#160;|&#160;k8s:run-complete-tests&#160;|&#160;k8s:setup-env&#160;|</tex [...]
 </text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-11)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="288.4" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-11)">k8s:shell&#160;|&#160;k8s:status&#160;|&#160;k8s:tests&#160;|&#160;k8s:upload-k8s-image&#160;|&#160;k8s&#160;|&#160;prod-image:build&#160;|&#160;prod-image:pul [...]
 </text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-12)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="312.8" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-12)">prod-image:verify&#160;|&#160;prod-image&#160;|&#160;release-management:create-minor-branch&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
 </text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-13)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="337.2" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-13)">release-management:generate-constraints&#160;|&#160;release-management:generate-issue-content-providers&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;< [...]
-</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-14)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="361.6" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-14)">release-management:prepare-airflow-package&#160;|&#160;release-management:prepare-provider-documentation&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text [...]
-</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-15)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="386" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-15)">release-management:prepare-provider-packages&#160;|&#160;release-management:release-prod-images&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-16)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="410.4" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-16)">release-management:start-rc-process&#160;|&#160;release-management:start-release&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-17)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="434.8" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-17)">release-management:verify-provider-packages&#160;|&#160;release-management&#160;|&#160;setup:autocomplete&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-18)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="459.2" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-18)">setup:check-all-params-in-groups&#160;|&#160;setup:config&#160;|&#160;setup:regenerate-command-images&#160;|&#160;setup:self-upgrade&#160;</text><text class="b [...]
-</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-19)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="483.6" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-19)">|&#160;setup:version&#160;|&#160;setup&#160;|&#160;shell&#160;|&#160;start-airflow&#160;|&#160;static-checks&#160;|&#160;stop&#160;|&#160;testing:docker-compos [...]
-</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-20)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="508" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-20)">testing:helm-tests&#160;|&#160;testing:integration-tests&#160;|&#160;testing:tests&#160;|&#160;testing)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="532.4" textLength="1464" clip-path="url(#breeze-setup-check-all-params-in-groups-line-21)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-setup-check-all-params-in-groups-r2" x="1464" y="532.4" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-21)">
-</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="556.8" textLength="24.4" clip-path="url(#breeze-setup-check-all-params-in-groups-line-22)">╭─</text><text class="breeze-setup-check-all-params-in-groups-r5" x="24.4" y="556.8" textLength="195.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-22)">&#160;Common&#160;options&#160;</text><text class="breeze-setup-check-all-params-in-groups-r5" x="219.6" y="556.8" textLength="1220" clip-path="url(#breeze-se [...]
-</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-23)">│</text><text class="breeze-setup-check-all-params-in-groups-r4" x="24.4" y="581.2" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-23)">-</text><text class="breeze-setup-check-all-params-in-groups-r4" x="36.6" y="581.2" textLength="97.6" clip-path="url(#breeze-setup-check-all-params-in-groups-li [...]
-</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-24)">│</text><text class="breeze-setup-check-all-params-in-groups-r4" x="24.4" y="605.6" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-24)">-</text><text class="breeze-setup-check-all-params-in-groups-r4" x="36.6" y="605.6" textLength="48.8" clip-path="url(#breeze-setup-check-all-params-in-groups-li [...]
-</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-25)">│</text><text class="breeze-setup-check-all-params-in-groups-r4" x="24.4" y="630" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-25)">-</text><text class="breeze-setup-check-all-params-in-groups-r4" x="36.6" y="630" textLength="61" clip-path="url(#breeze-setup-check-all-params-in-groups-line-25)"> [...]
-</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="654.4" textLength="1464" clip-path="url(#breeze-setup-check-all-params-in-groups-line-26)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-setup-check-all-params-in-groups-r2" x="1464" y="654.4" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-26)">
+</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-14)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="361.6" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-14)">release-management:install-provider-packages&#160;|&#160;release-management:prepare-airflow-package&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-15)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="386" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-15)">release-management:prepare-provider-documentation&#160;|&#160;release-management:prepare-provider-packages&#160;|&#160;&#160;&#160;&#160;&#160;</text><text class=" [...]
+</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-16)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="410.4" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-16)">release-management:release-prod-images&#160;|&#160;release-management:start-rc-process&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
+</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-17)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="434.8" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-17)">release-management:start-release&#160;|&#160;release-management:verify-provider-packages&#160;|&#160;release-management&#160;|&#160;&#160;</text><text class="b [...]
+</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-18)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="459.2" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-18)">setup:autocomplete&#160;|&#160;setup:check-all-params-in-groups&#160;|&#160;setup:config&#160;|&#160;setup:regenerate-command-images&#160;</text><text class="b [...]
+</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-19)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="483.6" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-19)">|&#160;setup:self-upgrade&#160;|&#160;setup:version&#160;|&#160;setup&#160;|&#160;shell&#160;|&#160;start-airflow&#160;|&#160;static-checks&#160;|&#160;&#160;& [...]
+</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-20)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="508" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-20)">testing:docker-compose-tests&#160;|&#160;testing:helm-tests&#160;|&#160;testing:integration-tests&#160;|&#160;testing:tests&#160;|&#160;&#160;&#160;&#160;&#160;&#1 [...]
+</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-21)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="532.4" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-21)">testing)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="556.8" textLength="1464" clip-path="url(#breeze-setup-check-all-params-in-groups-line-22)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-setup-check-all-params-in-groups-r2" x="1464" y="556.8" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-22)">
+</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="581.2" textLength="24.4" clip-path="url(#breeze-setup-check-all-params-in-groups-line-23)">╭─</text><text class="breeze-setup-check-all-params-in-groups-r5" x="24.4" y="581.2" textLength="195.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-23)">&#160;Common&#160;options&#160;</text><text class="breeze-setup-check-all-params-in-groups-r5" x="219.6" y="581.2" textLength="1220" clip-path="url(#breeze-se [...]
+</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-24)">│</text><text class="breeze-setup-check-all-params-in-groups-r4" x="24.4" y="605.6" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-24)">-</text><text class="breeze-setup-check-all-params-in-groups-r4" x="36.6" y="605.6" textLength="97.6" clip-path="url(#breeze-setup-check-all-params-in-groups-li [...]
+</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-25)">│</text><text class="breeze-setup-check-all-params-in-groups-r4" x="24.4" y="630" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-25)">-</text><text class="breeze-setup-check-all-params-in-groups-r4" x="36.6" y="630" textLength="48.8" clip-path="url(#breeze-setup-check-all-params-in-groups-line-25) [...]
+</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-26)">│</text><text class="breeze-setup-check-all-params-in-groups-r4" x="24.4" y="654.4" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-26)">-</text><text class="breeze-setup-check-all-params-in-groups-r4" x="36.6" y="654.4" textLength="61" clip-path="url(#breeze-setup-check-all-params-in-groups-line [...]
+</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="678.8" textLength="1464" clip-path="url(#breeze-setup-check-all-params-in-groups-line-27)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-setup-check-all-params-in-groups-r2" x="1464" y="678.8" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-27)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output_setup_regenerate-command-images.svg b/images/breeze/output_setup_regenerate-command-images.svg
index c5b743662e..d2b809e3b5 100644
--- a/images/breeze/output_setup_regenerate-command-images.svg
+++ b/images/breeze/output_setup_regenerate-command-images.svg
@@ -157,19 +157,19 @@
 </text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-7)">│</text><text class="breeze-setup-regenerate-command-images-r4" x="24.4" y="190.8" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-7)">-</text><text class="breeze-setup-regenerate-command-images-r4" x="36.6" y="190.8" textLength="97.6" clip-path="url(#breeze-setup-regenerate-command-images-line-7)">- [...]
 </text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-8)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="215.2" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-8)">(main&#160;|&#160;build-docs&#160;|&#160;ci:fix-ownership&#160;|&#160;ci:free-space&#160;|&#160;ci:get-workflow-info&#160;|&#160;ci:resource-check&#160;|&#160;&#160; [...]
 </text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-9)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="239.6" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-9)">ci:selective-check&#160;|&#160;ci&#160;|&#160;ci-image:build&#160;|&#160;ci-image:pull&#160;|&#160;ci-image:verify&#160;|&#160;ci-image&#160;|&#160;cleanup&#160;|&#1 [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-10)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="264" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-10)">compile-www-assets&#160;|&#160;exec&#160;|&#160;k8s:build-k8s-image&#160;|&#160;k8s:configure-cluster&#160;|&#160;k8s:create-cluster&#160;|&#160;&#160;&#160;&#160;&#16 [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-11)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="288.4" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-11)">k8s:delete-cluster&#160;|&#160;k8s:deploy-airflow&#160;|&#160;k8s:k9s&#160;|&#160;k8s:logs&#160;|&#160;k8s:run-complete-tests&#160;|&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-10)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="264" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-10)">compile-www-assets&#160;|&#160;down&#160;|&#160;exec&#160;|&#160;k8s:build-k8s-image&#160;|&#160;k8s:configure-cluster&#160;|&#160;k8s:create-cluster&#160;</text><text [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-11)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="288.4" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-11)">|&#160;k8s:delete-cluster&#160;|&#160;k8s:deploy-airflow&#160;|&#160;k8s:k9s&#160;|&#160;k8s:logs&#160;|&#160;k8s:run-complete-tests&#160;|&#160;&#160;&#160;&#160; [...]
 </text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-12)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="312.8" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-12)">k8s:setup-env&#160;|&#160;k8s:shell&#160;|&#160;k8s:status&#160;|&#160;k8s:tests&#160;|&#160;k8s:upload-k8s-image&#160;|&#160;k8s&#160;|&#160;prod-image:build&#160 [...]
 </text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-13)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="337.2" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-13)">prod-image:pull&#160;|&#160;prod-image:verify&#160;|&#160;prod-image&#160;|&#160;release-management:create-minor-branch&#160;|&#160;&#160;&#160;&#160;&#160;&#160;& [...]
 </text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-14)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="361.6" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-14)">release-management:generate-constraints&#160;|&#160;release-management:generate-issue-content-providers&#160;|&#160;&#160;&#160;&#160;&#160;</text><text class="bre [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-15)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="386" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-15)">release-management:prepare-airflow-package&#160;|&#160;release-management:prepare-provider-documentation&#160;|&#160;&#160;&#160;&#160;</text><text class="breeze-setup [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-16)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="410.4" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-16)">release-management:prepare-provider-packages&#160;|&#160;release-management:release-prod-images&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-17)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="434.8" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-17)">release-management:start-rc-process&#160;|&#160;release-management:start-release&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-18)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="459.2" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-18)">release-management:verify-provider-packages&#160;|&#160;release-management&#160;|&#160;setup:autocomplete&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-19)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="483.6" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-19)">setup:check-all-params-in-groups&#160;|&#160;setup:config&#160;|&#160;setup:regenerate-command-images&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-20)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="508" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-20)">setup:self-upgrade&#160;|&#160;setup:version&#160;|&#160;setup&#160;|&#160;shell&#160;|&#160;start-airflow&#160;|&#160;static-checks&#160;|&#160;stop&#160;|&#160;&#160 [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-21)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="532.4" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-21)">testing:docker-compose-tests&#160;|&#160;testing:helm-tests&#160;|&#160;testing:integration-tests&#160;|&#160;testing:tests&#160;|&#160;&#160;&#160;&#160;&#160;</t [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-22)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="556.8" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-22)">testing)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-15)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="386" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-15)">release-management:install-provider-packages&#160;|&#160;release-management:prepare-airflow-package&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text> [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-16)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="410.4" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-16)">release-management:prepare-provider-documentation&#160;|&#160;release-management:prepare-provider-packages&#160;|&#160;&#160;</text><text class="breeze-setup-regen [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-17)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="434.8" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-17)">release-management:release-prod-images&#160;|&#160;release-management:start-rc-process&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-18)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="459.2" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-18)">release-management:start-release&#160;|&#160;release-management:verify-provider-packages&#160;|&#160;release-management&#160;</text><text class="breeze-setup-regen [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-19)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="483.6" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-19)">|&#160;setup:autocomplete&#160;|&#160;setup:check-all-params-in-groups&#160;|&#160;setup:config&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-20)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="508" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-20)">setup:regenerate-command-images&#160;|&#160;setup:self-upgrade&#160;|&#160;setup:version&#160;|&#160;setup&#160;|&#160;shell&#160;|&#160;start-airflow</text><text clas [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-21)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="532.4" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-21)">|&#160;static-checks&#160;|&#160;testing:docker-compose-tests&#160;|&#160;testing:helm-tests&#160;|&#160;testing:integration-tests&#160;|&#160;&#160;&#160;</text>< [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-22)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="556.8" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-22)">testing:tests&#160;|&#160;testing)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
 </text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-23)">│</text><text class="breeze-setup-regenerate-command-images-r4" x="24.4" y="581.2" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-23)">-</text><text class="breeze-setup-regenerate-command-images-r4" x="36.6" y="581.2" textLength="73.2" clip-path="url(#breeze-setup-regenerate-command-images-line-23) [...]
 </text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-24)">│</text><text class="breeze-setup-regenerate-command-images-r2" x="219.6" y="605.6" textLength="170.8" clip-path="url(#breeze-setup-regenerate-command-images-line-24)">together&#160;with&#160;</text><text class="breeze-setup-regenerate-command-images-r4" x="390.4" y="605.6" textLength="12.2" clip-path="url(#breeze-setup-regenera [...]
 </text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="630" textLength="1464" clip-path="url(#breeze-setup-regenerate-command-images-line-25)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-setup-regenerate-command-images-r2" x="1464" y="630" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-25)">
diff --git a/images/breeze/output_shell.svg b/images/breeze/output_shell.svg
index 521c38d8dc..3b2ff92327 100644
--- a/images/breeze/output_shell.svg
+++ b/images/breeze/output_shell.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1367.6" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1440.8" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -43,7 +43,7 @@
 
     <defs>
     <clipPath id="breeze-shell-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="1316.6" />
+      <rect x="0" y="0" width="1463.0" height="1389.8" />
     </clipPath>
     <clipPath id="breeze-shell-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -204,9 +204,18 @@
 <clipPath id="breeze-shell-line-52">
     <rect x="0" y="1270.3" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="breeze-shell-line-53">
+    <rect x="0" y="1294.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-shell-line-54">
+    <rect x="0" y="1319.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-shell-line-55">
+    <rect x="0" y="1343.5" width="1464" height="24.65"/>
+            </clipPath>
     </defs>
 
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1365.6" rx="8"/><text class="breeze-shell-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;shell</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1438.8" rx="8"/><text class="breeze-shell-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;shell</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -230,46 +239,49 @@
 </text><text class="breeze-shell-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-shell-line-11)">│</text><text class="breeze-shell-r4" x="24.4" y="288.4" textLength="12.2" clip-path="url(#breeze-shell-line-11)">-</text><text class="breeze-shell-r4" x="36.6" y="288.4" textLength="73.2" clip-path="url(#breeze-shell-line-11)">-mysql</text><text class="breeze-shell-r4" x="109.8" y="288.4" textLength="97.6" clip-path="url(#breeze-shell-line-11)">-version</text><text class="breeze [...]
 </text><text class="breeze-shell-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-shell-line-12)">│</text><text class="breeze-shell-r4" x="24.4" y="312.8" textLength="12.2" clip-path="url(#breeze-shell-line-12)">-</text><text class="breeze-shell-r4" x="36.6" y="312.8" textLength="73.2" clip-path="url(#breeze-shell-line-12)">-mssql</text><text class="breeze-shell-r4" x="109.8" y="312.8" textLength="97.6" clip-path="url(#breeze-shell-line-12)">-version</text><text class="breeze [...]
 </text><text class="breeze-shell-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-shell-line-13)">│</text><text class="breeze-shell-r4" x="24.4" y="337.2" textLength="12.2" clip-path="url(#breeze-shell-line-13)">-</text><text class="breeze-shell-r4" x="36.6" y="337.2" textLength="146.4" clip-path="url(#breeze-shell-line-13)">-integration</text><text class="breeze-shell-r2" x="353.8" y="337.2" textLength="1085.8" clip-path="url(#breeze-shell-line-13)">Integration(s)&#160;to&#1 [...]
-</text><text class="breeze-shell-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-shell-line-14)">│</text><text class="breeze-shell-r7" x="353.8" y="361.6" textLength="1085.8" clip-path="url(#breeze-shell-line-14)">(all&#160;|&#160;all-testable&#160;|&#160;cassandra&#160;|&#160;celery&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;otel&#160;|&#160;pinot&#160;|&#160;statsd&#160;|&#160;&#160;&#160;&#160;</text><text class="breeze-shell-r5" x="1451.8" y="361.6" textLength="1 [...]
-</text><text class="breeze-shell-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-shell-line-15)">│</text><text class="breeze-shell-r7" x="353.8" y="386" textLength="1085.8" clip-path="url(#breeze-shell-line-15)">statsd&#160;|&#160;trino)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="breeze-shell-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-shell-line-14)">│</text><text class="breeze-shell-r7" x="353.8" y="361.6" textLength="1085.8" clip-path="url(#breeze-shell-line-14)">(all&#160;|&#160;all-testable&#160;|&#160;cassandra&#160;|&#160;celery&#160;|&#160;kafka&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;otel&#160;|&#160;pinot&#160;|&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-shell-r5" x="1451.8" y="361.6" textLeng [...]
+</text><text class="breeze-shell-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-shell-line-15)">│</text><text class="breeze-shell-r7" x="353.8" y="386" textLength="1085.8" clip-path="url(#breeze-shell-line-15)">statsd&#160;|&#160;statsd&#160;|&#160;trino)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
 </text><text class="breeze-shell-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-shell-line-16)">│</text><text class="breeze-shell-r4" x="24.4" y="410.4" textLength="12.2" clip-path="url(#breeze-shell-line-16)">-</text><text class="breeze-shell-r4" x="36.6" y="410.4" textLength="97.6" clip-path="url(#breeze-shell-line-16)">-forward</text><text class="breeze-shell-r4" x="134.2" y="410.4" textLength="146.4" clip-path="url(#breeze-shell-line-16)">-credentials</text><text class= [...]
 </text><text class="breeze-shell-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-shell-line-17)">│</text><text class="breeze-shell-r4" x="24.4" y="434.8" textLength="12.2" clip-path="url(#breeze-shell-line-17)">-</text><text class="breeze-shell-r4" x="36.6" y="434.8" textLength="36.6" clip-path="url(#breeze-shell-line-17)">-db</text><text class="breeze-shell-r4" x="73.2" y="434.8" textLength="73.2" clip-path="url(#breeze-shell-line-17)">-reset</text><text class="breeze-shell [...]
 </text><text class="breeze-shell-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-shell-line-18)">│</text><text class="breeze-shell-r4" x="24.4" y="459.2" textLength="12.2" clip-path="url(#breeze-shell-line-18)">-</text><text class="breeze-shell-r4" x="36.6" y="459.2" textLength="85.4" clip-path="url(#breeze-shell-line-18)">-github</text><text class="breeze-shell-r4" x="122" y="459.2" textLength="134.2" clip-path="url(#breeze-shell-line-18)">-repository</text><text class="bre [...]
 </text><text class="breeze-shell-r5" x="0" y="483.6" textLength="1464" clip-path="url(#breeze-shell-line-19)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-shell-r2" x="1464" y="483.6" textLength="12.2" clip-path="url(#breeze-shell-line-19)">
 </text><text class="breeze-shell-r5" x="0" y="508" textLength="24.4" clip-path="url(#breeze-shell-line-20)">╭─</text><text class="breeze-shell-r5" x="24.4" y="508" textLength="329.4" clip-path="url(#breeze-shell-line-20)">&#160;Advanced&#160;flag&#160;for&#160;running&#160;</text><text class="breeze-shell-r5" x="353.8" y="508" textLength="1085.8" clip-path="url(#breeze-shell-line-20)">─────────────────────────────────────────────────────────────────────────────────────────</text><text cl [...]
-</text><text class="breeze-shell-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-shell-line-21)">│</text><text class="breeze-shell-r4" x="24.4" y="532.4" textLength="12.2" clip-path="url(#breeze-shell-line-21)">-</text><text class="breeze-shell-r4" x="36.6" y="532.4" textLength="48.8" clip-path="url(#breeze-shell-line-21)">-use</text><text class="breeze-shell-r4" x="85.4" y="532.4" textLength="195.2" clip-path="url(#breeze-shell-line-21)">-airflow-version</text><text class=" [...]
-</text><text class="breeze-shell-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-shell-line-22)">│</text><text class="breeze-shell-r2" x="475.8" y="556.8" textLength="963.8" clip-path="url(#breeze-shell-line-22)">`wheel`,&#160;or&#160;`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;wheel&#160;packages</text><text class="breeze-shell-r5" x="1451.8" y="556.8" textLength="12.2" clip-path="url(#breeze-shell-line-22)">│</text><text cla [...]
-</text><text class="breeze-shell-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-shell-line-23)">│</text><text class="breeze-shell-r2" x="475.8" y="581.2" textLength="963.8" clip-path="url(#breeze-shell-line-23)">or&#160;sdist&#160;packages&#160;available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-shell-r5" x="1451.8" y="581.2" textLength="12 [...]
-</text><text class="breeze-shell-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-shell-line-24)">│</text><text class="breeze-shell-r4" x="475.8" y="605.6" textLength="12.2" clip-path="url(#breeze-shell-line-24)">-</text><text class="breeze-shell-r4" x="488" y="605.6" textLength="73.2" clip-path="url(#breeze-shell-line-24)">-mount</text><text class="breeze-shell-r4" x="561.2" y="605.6" textLength="97.6" clip-path="url(#breeze-shell-line-24)">-sources</text><text class="breeze [...]
-</text><text class="breeze-shell-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-shell-line-25)">│</text><text class="breeze-shell-r7" x="475.8" y="630" textLength="963.8" clip-path="url(#breeze-shell-line-25)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="breeze-shell-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-shell-line-26)">│</text><text class="breeze-shell-r4" x="24.4" y="654.4" textLength="12.2" clip-path="url(#breeze-shell-line-26)">-</text><text class="breeze-shell-r4" x="36.6" y="654.4" textLength="97.6" clip-path="url(#breeze-shell-line-26)">-airflow</text><text class="breeze-shell-r4" x="134.2" y="654.4" textLength="268.4" clip-path="url(#breeze-shell-line-26)">-constraints-reference</text><t [...]
-</text><text class="breeze-shell-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-shell-line-27)">│</text><text class="breeze-shell-r2" x="475.8" y="678.8" textLength="963.8" clip-path="url(#breeze-shell-line-27)">specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#160;find&#160;newer&#160;dependencies&#160;&#160;&#160;</text><text class="breeze-shell-r5" x="1451.8" y="678.8" textLength="12.2" clip-path="url(#breeze-shell-line-27)">│</text [...]
-</text><text class="breeze-shell-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-shell-line-28)">│</text><text class="breeze-shell-r7" x="475.8" y="703.2" textLength="963.8" clip-path="url(#breeze-shell-line-28)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
-</text><text class="breeze-shell-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-shell-line-29)">│</text><text class="breeze-shell-r4" x="24.4" y="727.6" textLength="12.2" clip-path="url(#breeze-shell-line-29)">-</text><text class="breeze-shell-r4" x="36.6" y="727.6" textLength="109.8" clip-path="url(#breeze-shell-line-29)">-platform</text><text class="breeze-shell-r2" x="475.8" y="727.6" textLength="329.4" clip-path="url(#breeze-shell-line-29)">Platform&#160;for&#160;Airflo [...]
-</text><text class="breeze-shell-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-shell-line-30)">│</text><text class="breeze-shell-r4" x="24.4" y="752" textLength="12.2" clip-path="url(#breeze-shell-line-30)">-</text><text class="breeze-shell-r4" x="36.6" y="752" textLength="97.6" clip-path="url(#breeze-shell-line-30)">-airflow</text><text class="breeze-shell-r4" x="134.2" y="752" textLength="85.4" clip-path="url(#breeze-shell-line-30)">-extras</text><text class="breeze-shell- [...]
-</text><text class="breeze-shell-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-shell-line-31)">│</text><text class="breeze-shell-r4" x="24.4" y="776.4" textLength="12.2" clip-path="url(#breeze-shell-line-31)">-</text><text class="breeze-shell-r4" x="36.6" y="776.4" textLength="48.8" clip-path="url(#breeze-shell-line-31)">-use</text><text class="breeze-shell-r4" x="85.4" y="776.4" textLength="231.8" clip-path="url(#breeze-shell-line-31)">-packages-from-dist</text><text clas [...]
-</text><text class="breeze-shell-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-shell-line-32)">│</text><text class="breeze-shell-r2" x="475.8" y="800.8" textLength="963.8" clip-path="url(#breeze-shell-line-32)">folder&#160;when&#160;entering&#160;breeze.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="breeze-shell-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-shell-line-33)">│</text><text class="breeze-shell-r4" x="24.4" y="825.2" textLength="12.2" clip-path="url(#breeze-shell-line-33)">-</text><text class="breeze-shell-r4" x="36.6" y="825.2" textLength="97.6" clip-path="url(#breeze-shell-line-33)">-package</text><text class="breeze-shell-r4" x="134.2" y="825.2" textLength="85.4" clip-path="url(#breeze-shell-line-33)">-format</text><text class="breez [...]
-</text><text class="breeze-shell-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-shell-line-34)">│</text><text class="breeze-shell-r5" x="475.8" y="849.6" textLength="658.8" clip-path="url(#breeze-shell-line-34)">[default:&#160;wheel]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text clas [...]
-</text><text class="breeze-shell-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-shell-line-35)">│</text><text class="breeze-shell-r4" x="24.4" y="874" textLength="12.2" clip-path="url(#breeze-shell-line-35)">-</text><text class="breeze-shell-r4" x="36.6" y="874" textLength="73.2" clip-path="url(#breeze-shell-line-35)">-force</text><text class="breeze-shell-r4" x="109.8" y="874" textLength="73.2" clip-path="url(#breeze-shell-line-35)">-build</text><text class="breeze-shell-r2" [...]
-</text><text class="breeze-shell-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-shell-line-36)">│</text><text class="breeze-shell-r4" x="24.4" y="898.4" textLength="12.2" clip-path="url(#breeze-shell-line-36)">-</text><text class="breeze-shell-r4" x="36.6" y="898.4" textLength="73.2" clip-path="url(#breeze-shell-line-36)">-image</text><text class="breeze-shell-r4" x="109.8" y="898.4" textLength="48.8" clip-path="url(#breeze-shell-line-36)">-tag</text><text class="breeze-she [...]
-</text><text class="breeze-shell-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-shell-line-37)">│</text><text class="breeze-shell-r7" x="475.8" y="922.8" textLength="963.8" clip-path="url(#breeze-shell-line-37)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
-</text><text class="breeze-shell-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-shell-line-38)">│</text><text class="breeze-shell-r5" x="475.8" y="947.2" textLength="963.8" clip-path="url(#breeze-shell-line-38)">[default:&#160;latest]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</text><text class="breeze-shell-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-shell-line-39)">│</text><text class="breeze-shell-r4" x="24.4" y="971.6" textLength="12.2" clip-path="url(#breeze-shell-line-39)">-</text><text class="breeze-shell-r4" x="36.6" y="971.6" textLength="73.2" clip-path="url(#breeze-shell-line-39)">-mount</text><text class="breeze-shell-r4" x="109.8" y="971.6" textLength="97.6" clip-path="url(#breeze-shell-line-39)">-sources</text><text class="breeze [...]
-</text><text class="breeze-shell-r5" x="0" y="996" textLength="12.2" clip-path="url(#breeze-shell-line-40)">│</text><text class="breeze-shell-r2" x="475.8" y="996" textLength="963.8" clip-path="url(#breeze-shell-line-40)">(default&#160;=&#160;selected).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="breeze-shell-r5" x="0" y="1020.4" textLength="12.2" clip-path="url(#breeze-shell-line-41)">│</text><text class="breeze-shell-r7" x="475.8" y="1020.4" textLength="963.8" clip-path="url(#breeze-shell-line-41)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</text><text class="breeze-shell-r5" x="0" y="1044.8" textLength="12.2" clip-path="url(#breeze-shell-line-42)">│</text><text class="breeze-shell-r5" x="475.8" y="1044.8" textLength="963.8" clip-path="url(#breeze-shell-line-42)">[default:&#160;selected]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="breeze-shell-r5" x="0" y="1069.2" textLength="12.2" clip-path="url(#breeze-shell-line-43)">│</text><text class="breeze-shell-r4" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#breeze-shell-line-43)">-</text><text class="breeze-shell-r4" x="36.6" y="1069.2" textLength="97.6" clip-path="url(#breeze-shell-line-43)">-include</text><text class="breeze-shell-r4" x="134.2" y="1069.2" textLength="146.4" clip-path="url(#breeze-shell-line-43)">-mypy-volume</text><text cl [...]
-</text><text class="breeze-shell-r5" x="0" y="1093.6" textLength="12.2" clip-path="url(#breeze-shell-line-44)">│</text><text class="breeze-shell-r4" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#breeze-shell-line-44)">-</text><text class="breeze-shell-r4" x="36.6" y="1093.6" textLength="48.8" clip-path="url(#breeze-shell-line-44)">-max</text><text class="breeze-shell-r4" x="85.4" y="1093.6" textLength="61" clip-path="url(#breeze-shell-line-44)">-time</text><text class="breeze-she [...]
-</text><text class="breeze-shell-r5" x="0" y="1118" textLength="12.2" clip-path="url(#breeze-shell-line-45)">│</text><text class="breeze-shell-r2" x="475.8" y="1118" textLength="963.8" clip-path="url(#breeze-shell-line-45)">will&#160;fail.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="breeze-shell-r5" x="0" y="1142.4" textLength="12.2" clip-path="url(#breeze-shell-line-46)">│</text><text class="breeze-shell-r7" x="475.8" y="1142.4" textLength="963.8" clip-path="url(#breeze-shell-line-46)">(INTEGER&#160;RANGE)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</text><text class="breeze-shell-r5" x="0" y="1166.8" textLength="1464" clip-path="url(#breeze-shell-line-47)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-shell-r2" x="1464" y="1166.8" textLength="12.2" clip-path="url(#breeze-shell-line-47)">
-</text><text class="breeze-shell-r5" x="0" y="1191.2" textLength="24.4" clip-path="url(#breeze-shell-line-48)">╭─</text><text class="breeze-shell-r5" x="24.4" y="1191.2" textLength="195.2" clip-path="url(#breeze-shell-line-48)">&#160;Common&#160;options&#160;</text><text class="breeze-shell-r5" x="219.6" y="1191.2" textLength="1220" clip-path="url(#breeze-shell-line-48)">────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class [...]
-</text><text class="breeze-shell-r5" x="0" y="1215.6" textLength="12.2" clip-path="url(#breeze-shell-line-49)">│</text><text class="breeze-shell-r4" x="24.4" y="1215.6" textLength="12.2" clip-path="url(#breeze-shell-line-49)">-</text><text class="breeze-shell-r4" x="36.6" y="1215.6" textLength="97.6" clip-path="url(#breeze-shell-line-49)">-verbose</text><text class="breeze-shell-r6" x="158.6" y="1215.6" textLength="24.4" clip-path="url(#breeze-shell-line-49)">-v</text><text class="breeze [...]
-</text><text class="breeze-shell-r5" x="0" y="1240" textLength="12.2" clip-path="url(#breeze-shell-line-50)">│</text><text class="breeze-shell-r4" x="24.4" y="1240" textLength="12.2" clip-path="url(#breeze-shell-line-50)">-</text><text class="breeze-shell-r4" x="36.6" y="1240" textLength="48.8" clip-path="url(#breeze-shell-line-50)">-dry</text><text class="breeze-shell-r4" x="85.4" y="1240" textLength="48.8" clip-path="url(#breeze-shell-line-50)">-run</text><text class="breeze-shell-r6"  [...]
-</text><text class="breeze-shell-r5" x="0" y="1264.4" textLength="12.2" clip-path="url(#breeze-shell-line-51)">│</text><text class="breeze-shell-r4" x="24.4" y="1264.4" textLength="12.2" clip-path="url(#breeze-shell-line-51)">-</text><text class="breeze-shell-r4" x="36.6" y="1264.4" textLength="85.4" clip-path="url(#breeze-shell-line-51)">-answer</text><text class="breeze-shell-r6" x="158.6" y="1264.4" textLength="24.4" clip-path="url(#breeze-shell-line-51)">-a</text><text class="breeze- [...]
-</text><text class="breeze-shell-r5" x="0" y="1288.8" textLength="12.2" clip-path="url(#breeze-shell-line-52)">│</text><text class="breeze-shell-r4" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#breeze-shell-line-52)">-</text><text class="breeze-shell-r4" x="36.6" y="1288.8" textLength="61" clip-path="url(#breeze-shell-line-52)">-help</text><text class="breeze-shell-r6" x="158.6" y="1288.8" textLength="24.4" clip-path="url(#breeze-shell-line-52)">-h</text><text class="breeze-shel [...]
-</text><text class="breeze-shell-r5" x="0" y="1313.2" textLength="1464" clip-path="url(#breeze-shell-line-53)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-shell-r2" x="1464" y="1313.2" textLength="12.2" clip-path="url(#breeze-shell-line-53)">
+</text><text class="breeze-shell-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-shell-line-21)">│</text><text class="breeze-shell-r4" x="24.4" y="532.4" textLength="12.2" clip-path="url(#breeze-shell-line-21)">-</text><text class="breeze-shell-r4" x="36.6" y="532.4" textLength="97.6" clip-path="url(#breeze-shell-line-21)">-install</text><text class="breeze-shell-r4" x="134.2" y="532.4" textLength="231.8" clip-path="url(#breeze-shell-line-21)">-selected-providers</text><text [...]
+</text><text class="breeze-shell-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-shell-line-22)">│</text><text class="breeze-shell-r4" x="475.8" y="556.8" textLength="12.2" clip-path="url(#breeze-shell-line-22)">-</text><text class="breeze-shell-r4" x="488" y="556.8" textLength="48.8" clip-path="url(#breeze-shell-line-22)">-use</text><text class="breeze-shell-r4" x="536.8" y="556.8" textLength="231.8" clip-path="url(#breeze-shell-line-22)">-packages-from-dist</text><text cla [...]
+</text><text class="breeze-shell-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-shell-line-23)">│</text><text class="breeze-shell-r7" x="475.8" y="581.2" textLength="963.8" clip-path="url(#breeze-shell-line-23)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
+</text><text class="breeze-shell-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-shell-line-24)">│</text><text class="breeze-shell-r4" x="24.4" y="605.6" textLength="12.2" clip-path="url(#breeze-shell-line-24)">-</text><text class="breeze-shell-r4" x="36.6" y="605.6" textLength="48.8" clip-path="url(#breeze-shell-line-24)">-use</text><text class="breeze-shell-r4" x="85.4" y="605.6" textLength="195.2" clip-path="url(#breeze-shell-line-24)">-airflow-version</text><text class=" [...]
+</text><text class="breeze-shell-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-shell-line-25)">│</text><text class="breeze-shell-r2" x="475.8" y="630" textLength="963.8" clip-path="url(#breeze-shell-line-25)">`wheel`,&#160;or&#160;`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;wheel&#160;packages</text><text class="breeze-shell-r5" x="1451.8" y="630" textLength="12.2" clip-path="url(#breeze-shell-line-25)">│</text><text class="br [...]
+</text><text class="breeze-shell-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-shell-line-26)">│</text><text class="breeze-shell-r2" x="475.8" y="654.4" textLength="963.8" clip-path="url(#breeze-shell-line-26)">or&#160;sdist&#160;packages&#160;available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-shell-r5" x="1451.8" y="654.4" textLength="12 [...]
+</text><text class="breeze-shell-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-shell-line-27)">│</text><text class="breeze-shell-r4" x="475.8" y="678.8" textLength="12.2" clip-path="url(#breeze-shell-line-27)">-</text><text class="breeze-shell-r4" x="488" y="678.8" textLength="73.2" clip-path="url(#breeze-shell-line-27)">-mount</text><text class="breeze-shell-r4" x="561.2" y="678.8" textLength="97.6" clip-path="url(#breeze-shell-line-27)">-sources</text><text class="breeze [...]
+</text><text class="breeze-shell-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-shell-line-28)">│</text><text class="breeze-shell-r7" x="475.8" y="703.2" textLength="963.8" clip-path="url(#breeze-shell-line-28)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
+</text><text class="breeze-shell-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-shell-line-29)">│</text><text class="breeze-shell-r4" x="24.4" y="727.6" textLength="12.2" clip-path="url(#breeze-shell-line-29)">-</text><text class="breeze-shell-r4" x="36.6" y="727.6" textLength="97.6" clip-path="url(#breeze-shell-line-29)">-airflow</text><text class="breeze-shell-r4" x="134.2" y="727.6" textLength="268.4" clip-path="url(#breeze-shell-line-29)">-constraints-reference</text><t [...]
+</text><text class="breeze-shell-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-shell-line-30)">│</text><text class="breeze-shell-r2" x="475.8" y="752" textLength="963.8" clip-path="url(#breeze-shell-line-30)">specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#160;find&#160;newer&#160;dependencies&#160;&#160;&#160;</text><text class="breeze-shell-r5" x="1451.8" y="752" textLength="12.2" clip-path="url(#breeze-shell-line-30)">│</text><text [...]
+</text><text class="breeze-shell-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-shell-line-31)">│</text><text class="breeze-shell-r7" x="475.8" y="776.4" textLength="963.8" clip-path="url(#breeze-shell-line-31)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
+</text><text class="breeze-shell-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-shell-line-32)">│</text><text class="breeze-shell-r4" x="24.4" y="800.8" textLength="12.2" clip-path="url(#breeze-shell-line-32)">-</text><text class="breeze-shell-r4" x="36.6" y="800.8" textLength="109.8" clip-path="url(#breeze-shell-line-32)">-platform</text><text class="breeze-shell-r2" x="475.8" y="800.8" textLength="329.4" clip-path="url(#breeze-shell-line-32)">Platform&#160;for&#160;Airflo [...]
+</text><text class="breeze-shell-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-shell-line-33)">│</text><text class="breeze-shell-r4" x="24.4" y="825.2" textLength="12.2" clip-path="url(#breeze-shell-line-33)">-</text><text class="breeze-shell-r4" x="36.6" y="825.2" textLength="97.6" clip-path="url(#breeze-shell-line-33)">-airflow</text><text class="breeze-shell-r4" x="134.2" y="825.2" textLength="85.4" clip-path="url(#breeze-shell-line-33)">-extras</text><text class="breez [...]
+</text><text class="breeze-shell-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-shell-line-34)">│</text><text class="breeze-shell-r4" x="24.4" y="849.6" textLength="12.2" clip-path="url(#breeze-shell-line-34)">-</text><text class="breeze-shell-r4" x="36.6" y="849.6" textLength="48.8" clip-path="url(#breeze-shell-line-34)">-use</text><text class="breeze-shell-r4" x="85.4" y="849.6" textLength="231.8" clip-path="url(#breeze-shell-line-34)">-packages-from-dist</text><text clas [...]
+</text><text class="breeze-shell-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-shell-line-35)">│</text><text class="breeze-shell-r2" x="475.8" y="874" textLength="963.8" clip-path="url(#breeze-shell-line-35)">folder&#160;when&#160;entering&#160;breeze.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="breeze-shell-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-shell-line-36)">│</text><text class="breeze-shell-r4" x="24.4" y="898.4" textLength="12.2" clip-path="url(#breeze-shell-line-36)">-</text><text class="breeze-shell-r4" x="36.6" y="898.4" textLength="97.6" clip-path="url(#breeze-shell-line-36)">-package</text><text class="breeze-shell-r4" x="134.2" y="898.4" textLength="85.4" clip-path="url(#breeze-shell-line-36)">-format</text><text class="breez [...]
+</text><text class="breeze-shell-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-shell-line-37)">│</text><text class="breeze-shell-r5" x="475.8" y="922.8" textLength="658.8" clip-path="url(#breeze-shell-line-37)">[default:&#160;wheel]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text clas [...]
+</text><text class="breeze-shell-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-shell-line-38)">│</text><text class="breeze-shell-r4" x="24.4" y="947.2" textLength="12.2" clip-path="url(#breeze-shell-line-38)">-</text><text class="breeze-shell-r4" x="36.6" y="947.2" textLength="73.2" clip-path="url(#breeze-shell-line-38)">-force</text><text class="breeze-shell-r4" x="109.8" y="947.2" textLength="73.2" clip-path="url(#breeze-shell-line-38)">-build</text><text class="breeze-s [...]
+</text><text class="breeze-shell-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-shell-line-39)">│</text><text class="breeze-shell-r4" x="24.4" y="971.6" textLength="12.2" clip-path="url(#breeze-shell-line-39)">-</text><text class="breeze-shell-r4" x="36.6" y="971.6" textLength="73.2" clip-path="url(#breeze-shell-line-39)">-image</text><text class="breeze-shell-r4" x="109.8" y="971.6" textLength="48.8" clip-path="url(#breeze-shell-line-39)">-tag</text><text class="breeze-she [...]
+</text><text class="breeze-shell-r5" x="0" y="996" textLength="12.2" clip-path="url(#breeze-shell-line-40)">│</text><text class="breeze-shell-r7" x="475.8" y="996" textLength="963.8" clip-path="url(#breeze-shell-line-40)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
+</text><text class="breeze-shell-r5" x="0" y="1020.4" textLength="12.2" clip-path="url(#breeze-shell-line-41)">│</text><text class="breeze-shell-r5" x="475.8" y="1020.4" textLength="963.8" clip-path="url(#breeze-shell-line-41)">[default:&#160;latest]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
+</text><text class="breeze-shell-r5" x="0" y="1044.8" textLength="12.2" clip-path="url(#breeze-shell-line-42)">│</text><text class="breeze-shell-r4" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#breeze-shell-line-42)">-</text><text class="breeze-shell-r4" x="36.6" y="1044.8" textLength="73.2" clip-path="url(#breeze-shell-line-42)">-mount</text><text class="breeze-shell-r4" x="109.8" y="1044.8" textLength="97.6" clip-path="url(#breeze-shell-line-42)">-sources</text><text class="br [...]
+</text><text class="breeze-shell-r5" x="0" y="1069.2" textLength="12.2" clip-path="url(#breeze-shell-line-43)">│</text><text class="breeze-shell-r2" x="475.8" y="1069.2" textLength="963.8" clip-path="url(#breeze-shell-line-43)">(default&#160;=&#160;selected).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="breeze-shell-r5" x="0" y="1093.6" textLength="12.2" clip-path="url(#breeze-shell-line-44)">│</text><text class="breeze-shell-r7" x="475.8" y="1093.6" textLength="963.8" clip-path="url(#breeze-shell-line-44)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="breeze-shell-r5" x="0" y="1118" textLength="12.2" clip-path="url(#breeze-shell-line-45)">│</text><text class="breeze-shell-r5" x="475.8" y="1118" textLength="963.8" clip-path="url(#breeze-shell-line-45)">[default:&#160;selected]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="breeze-shell-r5" x="0" y="1142.4" textLength="12.2" clip-path="url(#breeze-shell-line-46)">│</text><text class="breeze-shell-r4" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#breeze-shell-line-46)">-</text><text class="breeze-shell-r4" x="36.6" y="1142.4" textLength="97.6" clip-path="url(#breeze-shell-line-46)">-include</text><text class="breeze-shell-r4" x="134.2" y="1142.4" textLength="146.4" clip-path="url(#breeze-shell-line-46)">-mypy-volume</text><text cl [...]
+</text><text class="breeze-shell-r5" x="0" y="1166.8" textLength="12.2" clip-path="url(#breeze-shell-line-47)">│</text><text class="breeze-shell-r4" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#breeze-shell-line-47)">-</text><text class="breeze-shell-r4" x="36.6" y="1166.8" textLength="48.8" clip-path="url(#breeze-shell-line-47)">-max</text><text class="breeze-shell-r4" x="85.4" y="1166.8" textLength="61" clip-path="url(#breeze-shell-line-47)">-time</text><text class="breeze-she [...]
+</text><text class="breeze-shell-r5" x="0" y="1191.2" textLength="12.2" clip-path="url(#breeze-shell-line-48)">│</text><text class="breeze-shell-r2" x="475.8" y="1191.2" textLength="963.8" clip-path="url(#breeze-shell-line-48)">will&#160;fail.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
+</text><text class="breeze-shell-r5" x="0" y="1215.6" textLength="12.2" clip-path="url(#breeze-shell-line-49)">│</text><text class="breeze-shell-r7" x="475.8" y="1215.6" textLength="963.8" clip-path="url(#breeze-shell-line-49)">(INTEGER&#160;RANGE)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="breeze-shell-r5" x="0" y="1240" textLength="1464" clip-path="url(#breeze-shell-line-50)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-shell-r2" x="1464" y="1240" textLength="12.2" clip-path="url(#breeze-shell-line-50)">
+</text><text class="breeze-shell-r5" x="0" y="1264.4" textLength="24.4" clip-path="url(#breeze-shell-line-51)">╭─</text><text class="breeze-shell-r5" x="24.4" y="1264.4" textLength="195.2" clip-path="url(#breeze-shell-line-51)">&#160;Common&#160;options&#160;</text><text class="breeze-shell-r5" x="219.6" y="1264.4" textLength="1220" clip-path="url(#breeze-shell-line-51)">────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class [...]
+</text><text class="breeze-shell-r5" x="0" y="1288.8" textLength="12.2" clip-path="url(#breeze-shell-line-52)">│</text><text class="breeze-shell-r4" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#breeze-shell-line-52)">-</text><text class="breeze-shell-r4" x="36.6" y="1288.8" textLength="97.6" clip-path="url(#breeze-shell-line-52)">-verbose</text><text class="breeze-shell-r6" x="158.6" y="1288.8" textLength="24.4" clip-path="url(#breeze-shell-line-52)">-v</text><text class="breeze [...]
+</text><text class="breeze-shell-r5" x="0" y="1313.2" textLength="12.2" clip-path="url(#breeze-shell-line-53)">│</text><text class="breeze-shell-r4" x="24.4" y="1313.2" textLength="12.2" clip-path="url(#breeze-shell-line-53)">-</text><text class="breeze-shell-r4" x="36.6" y="1313.2" textLength="48.8" clip-path="url(#breeze-shell-line-53)">-dry</text><text class="breeze-shell-r4" x="85.4" y="1313.2" textLength="48.8" clip-path="url(#breeze-shell-line-53)">-run</text><text class="breeze-sh [...]
+</text><text class="breeze-shell-r5" x="0" y="1337.6" textLength="12.2" clip-path="url(#breeze-shell-line-54)">│</text><text class="breeze-shell-r4" x="24.4" y="1337.6" textLength="12.2" clip-path="url(#breeze-shell-line-54)">-</text><text class="breeze-shell-r4" x="36.6" y="1337.6" textLength="85.4" clip-path="url(#breeze-shell-line-54)">-answer</text><text class="breeze-shell-r6" x="158.6" y="1337.6" textLength="24.4" clip-path="url(#breeze-shell-line-54)">-a</text><text class="breeze- [...]
+</text><text class="breeze-shell-r5" x="0" y="1362" textLength="12.2" clip-path="url(#breeze-shell-line-55)">│</text><text class="breeze-shell-r4" x="24.4" y="1362" textLength="12.2" clip-path="url(#breeze-shell-line-55)">-</text><text class="breeze-shell-r4" x="36.6" y="1362" textLength="61" clip-path="url(#breeze-shell-line-55)">-help</text><text class="breeze-shell-r6" x="158.6" y="1362" textLength="24.4" clip-path="url(#breeze-shell-line-55)">-h</text><text class="breeze-shell-r2" x= [...]
+</text><text class="breeze-shell-r5" x="0" y="1386.4" textLength="1464" clip-path="url(#breeze-shell-line-56)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-shell-r2" x="1464" y="1386.4" textLength="12.2" clip-path="url(#breeze-shell-line-56)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output_start-airflow.svg b/images/breeze/output_start-airflow.svg
index 4b7a4b8cb1..c255c6e984 100644
--- a/images/breeze/output_start-airflow.svg
+++ b/images/breeze/output_start-airflow.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1489.6" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1587.1999999999998" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -43,7 +43,7 @@
 
     <defs>
     <clipPath id="breeze-start-airflow-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="1438.6" />
+      <rect x="0" y="0" width="1463.0" height="1536.1999999999998" />
     </clipPath>
     <clipPath id="breeze-start-airflow-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -219,9 +219,21 @@
 <clipPath id="breeze-start-airflow-line-57">
     <rect x="0" y="1392.3" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="breeze-start-airflow-line-58">
+    <rect x="0" y="1416.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-start-airflow-line-59">
+    <rect x="0" y="1441.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-start-airflow-line-60">
+    <rect x="0" y="1465.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-start-airflow-line-61">
+    <rect x="0" y="1489.9" width="1464" height="24.65"/>
+            </clipPath>
     </defs>
 
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1487.6" rx="8"/><text class="breeze-start-airflow-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;start-airflow</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1585.2" rx="8"/><text class="breeze-start-airflow-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;start-airflow</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -249,8 +261,8 @@
 </text><text class="breeze-start-airflow-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-start-airflow-line-15)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="386" textLength="12.2" clip-path="url(#breeze-start-airflow-line-15)">-</text><text class="breeze-start-airflow-r4" x="36.6" y="386" textLength="73.2" clip-path="url(#breeze-start-airflow-line-15)">-mysql</text><text class="breeze-start-airflow-r4" x="109.8" y="386" textLength="97.6" clip-path="url(#breeze-st [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-16)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="410.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-16)">-</text><text class="breeze-start-airflow-r4" x="36.6" y="410.4" textLength="73.2" clip-path="url(#breeze-start-airflow-line-16)">-mssql</text><text class="breeze-start-airflow-r4" x="109.8" y="410.4" textLength="97.6" clip-path="url(#b [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-start-airflow-line-17)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="434.8" textLength="12.2" clip-path="url(#breeze-start-airflow-line-17)">-</text><text class="breeze-start-airflow-r4" x="36.6" y="434.8" textLength="146.4" clip-path="url(#breeze-start-airflow-line-17)">-integration</text><text class="breeze-start-airflow-r2" x="414.8" y="434.8" textLength="1024.8" clip-pat [...]
-</text><text class="breeze-start-airflow-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-start-airflow-line-18)">│</text><text class="breeze-start-airflow-r7" x="414.8" y="459.2" textLength="1024.8" clip-path="url(#breeze-start-airflow-line-18)">(all&#160;|&#160;all-testable&#160;|&#160;cassandra&#160;|&#160;celery&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;otel&#160;|&#160;pinot&#160;|&#160;statsd&#160;</text><text class="breeze-start-airflow-r5" x="1451.8" y="459.2 [...]
-</text><text class="breeze-start-airflow-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-19)">│</text><text class="breeze-start-airflow-r7" x="414.8" y="483.6" textLength="1024.8" clip-path="url(#breeze-start-airflow-line-19)">|&#160;statsd&#160;|&#160;trino)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
+</text><text class="breeze-start-airflow-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-start-airflow-line-18)">│</text><text class="breeze-start-airflow-r7" x="414.8" y="459.2" textLength="1024.8" clip-path="url(#breeze-start-airflow-line-18)">(all&#160;|&#160;all-testable&#160;|&#160;cassandra&#160;|&#160;celery&#160;|&#160;kafka&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;otel&#160;|&#160;pinot&#160;|</text><text class="breeze-start-airflow-r5" x="1451.8" y="459.2 [...]
+</text><text class="breeze-start-airflow-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-19)">│</text><text class="breeze-start-airflow-r7" x="414.8" y="483.6" textLength="1024.8" clip-path="url(#breeze-start-airflow-line-19)">statsd&#160;|&#160;statsd&#160;|&#160;trino)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-start-airflow-line-20)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="508" textLength="12.2" clip-path="url(#breeze-start-airflow-line-20)">-</text><text class="breeze-start-airflow-r4" x="36.6" y="508" textLength="97.6" clip-path="url(#breeze-start-airflow-line-20)">-forward</text><text class="breeze-start-airflow-r4" x="134.2" y="508" textLength="146.4" clip-path="url(#breeze [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-21)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="532.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-21)">-</text><text class="breeze-start-airflow-r4" x="36.6" y="532.4" textLength="36.6" clip-path="url(#breeze-start-airflow-line-21)">-db</text><text class="breeze-start-airflow-r4" x="73.2" y="532.4" textLength="73.2" clip-path="url(#breez [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-start-airflow-line-22)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="556.8" textLength="12.2" clip-path="url(#breeze-start-airflow-line-22)">-</text><text class="breeze-start-airflow-r4" x="36.6" y="556.8" textLength="85.4" clip-path="url(#breeze-start-airflow-line-22)">-github</text><text class="breeze-start-airflow-r4" x="122" y="556.8" textLength="134.2" clip-path="url(#b [...]
@@ -283,13 +295,17 @@
 </text><text class="breeze-start-airflow-r5" x="0" y="1215.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-49)">│</text><text class="breeze-start-airflow-r2" x="475.8" y="1215.6" textLength="963.8" clip-path="url(#breeze-start-airflow-line-49)">(default&#160;=&#160;selected).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="1240" textLength="12.2" clip-path="url(#breeze-start-airflow-line-50)">│</text><text class="breeze-start-airflow-r7" x="475.8" y="1240" textLength="963.8" clip-path="url(#breeze-start-airflow-line-50)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="1264.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-51)">│</text><text class="breeze-start-airflow-r5" x="475.8" y="1264.4" textLength="963.8" clip-path="url(#breeze-start-airflow-line-51)">[default:&#160;selected]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</text><text class="breeze-start-airflow-r5" x="0" y="1288.8" textLength="1464" clip-path="url(#breeze-start-airflow-line-52)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-start-airflow-r2" x="1464" y="1288.8" textLength="12.2" clip-path="url(#breeze-start-airflow-line-52)">
-</text><text class="breeze-start-airflow-r5" x="0" y="1313.2" textLength="24.4" clip-path="url(#breeze-start-airflow-line-53)">╭─</text><text class="breeze-start-airflow-r5" x="24.4" y="1313.2" textLength="195.2" clip-path="url(#breeze-start-airflow-line-53)">&#160;Common&#160;options&#160;</text><text class="breeze-start-airflow-r5" x="219.6" y="1313.2" textLength="1220" clip-path="url(#breeze-start-airflow-line-53)">────────────────────────────────────────────────────────────────────── [...]
-</text><text class="breeze-start-airflow-r5" x="0" y="1337.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-54)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="1337.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-54)">-</text><text class="breeze-start-airflow-r4" x="36.6" y="1337.6" textLength="97.6" clip-path="url(#breeze-start-airflow-line-54)">-verbose</text><text class="breeze-start-airflow-r6" x="158.6" y="1337.6" textLength="24.4" clip-path=" [...]
-</text><text class="breeze-start-airflow-r5" x="0" y="1362" textLength="12.2" clip-path="url(#breeze-start-airflow-line-55)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="1362" textLength="12.2" clip-path="url(#breeze-start-airflow-line-55)">-</text><text class="breeze-start-airflow-r4" x="36.6" y="1362" textLength="48.8" clip-path="url(#breeze-start-airflow-line-55)">-dry</text><text class="breeze-start-airflow-r4" x="85.4" y="1362" textLength="48.8" clip-path="url(#breeze-s [...]
-</text><text class="breeze-start-airflow-r5" x="0" y="1386.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-56)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="1386.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-56)">-</text><text class="breeze-start-airflow-r4" x="36.6" y="1386.4" textLength="85.4" clip-path="url(#breeze-start-airflow-line-56)">-answer</text><text class="breeze-start-airflow-r6" x="158.6" y="1386.4" textLength="24.4" clip-path="u [...]
-</text><text class="breeze-start-airflow-r5" x="0" y="1410.8" textLength="12.2" clip-path="url(#breeze-start-airflow-line-57)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="1410.8" textLength="12.2" clip-path="url(#breeze-start-airflow-line-57)">-</text><text class="breeze-start-airflow-r4" x="36.6" y="1410.8" textLength="61" clip-path="url(#breeze-start-airflow-line-57)">-help</text><text class="breeze-start-airflow-r6" x="158.6" y="1410.8" textLength="24.4" clip-path="url(# [...]
-</text><text class="breeze-start-airflow-r5" x="0" y="1435.2" textLength="1464" clip-path="url(#breeze-start-airflow-line-58)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-start-airflow-r2" x="1464" y="1435.2" textLength="12.2" clip-path="url(#breeze-start-airflow-line-58)">
+</text><text class="breeze-start-airflow-r5" x="0" y="1288.8" textLength="12.2" clip-path="url(#breeze-start-airflow-line-52)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#breeze-start-airflow-line-52)">-</text><text class="breeze-start-airflow-r4" x="36.6" y="1288.8" textLength="109.8" clip-path="url(#breeze-start-airflow-line-52)">-executor</text><text class="breeze-start-airflow-r2" x="475.8" y="1288.8" textLength="500.2" clip-pat [...]
+</text><text class="breeze-start-airflow-r5" x="0" y="1313.2" textLength="12.2" clip-path="url(#breeze-start-airflow-line-53)">│</text><text class="breeze-start-airflow-r5" x="475.8" y="1313.2" textLength="500.2" clip-path="url(#breeze-start-airflow-line-53)">[default:&#160;LocalExecutor]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-start-airflow-r5" x="1451.8" y="1313.2" textLength="12.2" clip-path="url(# [...]
+</text><text class="breeze-start-airflow-r5" x="0" y="1337.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-54)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="1337.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-54)">-</text><text class="breeze-start-airflow-r4" x="36.6" y="1337.6" textLength="85.4" clip-path="url(#breeze-start-airflow-line-54)">-celery</text><text class="breeze-start-airflow-r4" x="122" y="1337.6" textLength="85.4" clip-path="url [...]
+</text><text class="breeze-start-airflow-r5" x="0" y="1362" textLength="12.2" clip-path="url(#breeze-start-airflow-line-55)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="1362" textLength="12.2" clip-path="url(#breeze-start-airflow-line-55)">-</text><text class="breeze-start-airflow-r4" x="36.6" y="1362" textLength="85.4" clip-path="url(#breeze-start-airflow-line-55)">-celery</text><text class="breeze-start-airflow-r4" x="122" y="1362" textLength="85.4" clip-path="url(#breeze [...]
+</text><text class="breeze-start-airflow-r5" x="0" y="1386.4" textLength="1464" clip-path="url(#breeze-start-airflow-line-56)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-start-airflow-r2" x="1464" y="1386.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-56)">
+</text><text class="breeze-start-airflow-r5" x="0" y="1410.8" textLength="24.4" clip-path="url(#breeze-start-airflow-line-57)">╭─</text><text class="breeze-start-airflow-r5" x="24.4" y="1410.8" textLength="195.2" clip-path="url(#breeze-start-airflow-line-57)">&#160;Common&#160;options&#160;</text><text class="breeze-start-airflow-r5" x="219.6" y="1410.8" textLength="1220" clip-path="url(#breeze-start-airflow-line-57)">────────────────────────────────────────────────────────────────────── [...]
+</text><text class="breeze-start-airflow-r5" x="0" y="1435.2" textLength="12.2" clip-path="url(#breeze-start-airflow-line-58)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="1435.2" textLength="12.2" clip-path="url(#breeze-start-airflow-line-58)">-</text><text class="breeze-start-airflow-r4" x="36.6" y="1435.2" textLength="97.6" clip-path="url(#breeze-start-airflow-line-58)">-verbose</text><text class="breeze-start-airflow-r6" x="158.6" y="1435.2" textLength="24.4" clip-path=" [...]
+</text><text class="breeze-start-airflow-r5" x="0" y="1459.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-59)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="1459.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-59)">-</text><text class="breeze-start-airflow-r4" x="36.6" y="1459.6" textLength="48.8" clip-path="url(#breeze-start-airflow-line-59)">-dry</text><text class="breeze-start-airflow-r4" x="85.4" y="1459.6" textLength="48.8" clip-path="url(# [...]
+</text><text class="breeze-start-airflow-r5" x="0" y="1484" textLength="12.2" clip-path="url(#breeze-start-airflow-line-60)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="1484" textLength="12.2" clip-path="url(#breeze-start-airflow-line-60)">-</text><text class="breeze-start-airflow-r4" x="36.6" y="1484" textLength="85.4" clip-path="url(#breeze-start-airflow-line-60)">-answer</text><text class="breeze-start-airflow-r6" x="158.6" y="1484" textLength="24.4" clip-path="url(#bree [...]
+</text><text class="breeze-start-airflow-r5" x="0" y="1508.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-61)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="1508.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-61)">-</text><text class="breeze-start-airflow-r4" x="36.6" y="1508.4" textLength="61" clip-path="url(#breeze-start-airflow-line-61)">-help</text><text class="breeze-start-airflow-r6" x="158.6" y="1508.4" textLength="24.4" clip-path="url(# [...]
+</text><text class="breeze-start-airflow-r5" x="0" y="1532.8" textLength="1464" clip-path="url(#breeze-start-airflow-line-62)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-start-airflow-r2" x="1464" y="1532.8" textLength="12.2" clip-path="url(#breeze-start-airflow-line-62)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output_static-checks.svg b/images/breeze/output_static-checks.svg
index 04b6730555..acd25d12da 100644
--- a/images/breeze/output_static-checks.svg
+++ b/images/breeze/output_static-checks.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1416.3999999999999" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1660.3999999999999" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -43,7 +43,7 @@
 
     <defs>
     <clipPath id="breeze-static-checks-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="1365.3999999999999" />
+      <rect x="0" y="0" width="1463.0" height="1609.3999999999999" />
     </clipPath>
     <clipPath id="breeze-static-checks-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -210,9 +210,39 @@
 <clipPath id="breeze-static-checks-line-54">
     <rect x="0" y="1319.1" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="breeze-static-checks-line-55">
+    <rect x="0" y="1343.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-static-checks-line-56">
+    <rect x="0" y="1367.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-static-checks-line-57">
+    <rect x="0" y="1392.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-static-checks-line-58">
+    <rect x="0" y="1416.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-static-checks-line-59">
+    <rect x="0" y="1441.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-static-checks-line-60">
+    <rect x="0" y="1465.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-static-checks-line-61">
+    <rect x="0" y="1489.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-static-checks-line-62">
+    <rect x="0" y="1514.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-static-checks-line-63">
+    <rect x="0" y="1538.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-static-checks-line-64">
+    <rect x="0" y="1563.1" width="1464" height="24.65"/>
+            </clipPath>
     </defs>
 
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1414.4" rx="8"/><text class="breeze-static-checks-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;static-checks</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1658.4" rx="8"/><text class="breeze-static-checks-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;static-checks</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -228,56 +258,66 @@
 </text><text class="breeze-static-checks-r2" x="12.2" y="93.2" textLength="219.6" clip-path="url(#breeze-static-checks-line-3)">Run&#160;static&#160;checks.</text><text class="breeze-static-checks-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#breeze-static-checks-line-3)">
 </text><text class="breeze-static-checks-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-static-checks-line-4)">
 </text><text class="breeze-static-checks-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-static-checks-line-5)">╭─</text><text class="breeze-static-checks-r5" x="24.4" y="142" textLength="219.6" clip-path="url(#breeze-static-checks-line-5)">&#160;Pre-commit&#160;flags&#160;</text><text class="breeze-static-checks-r5" x="244" y="142" textLength="1195.6" clip-path="url(#breeze-static-checks-line-5)">──────────────────────────────────────────────────────────────────────────────── [...]
-</text><text class="breeze-static-checks-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-static-checks-line-6)">│</text><text class="breeze-static-checks-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-static-checks-line-6)">-</text><text class="breeze-static-checks-r4" x="36.6" y="166.4" textLength="61" clip-path="url(#breeze-static-checks-line-6)">-type</text><text class="breeze-static-checks-r6" x="317.2" y="166.4" textLength="24.4" clip-path="url(#breeze- [...]
-</text><text class="breeze-static-checks-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-static-checks-line-7)">│</text><text class="breeze-static-checks-r7" x="366" y="190.8" textLength="1073.6" clip-path="url(#breeze-static-checks-line-7)">(all&#160;|&#160;black&#160;|&#160;blacken-docs&#160;|&#160;check-airflow-config-yaml-consistent&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text c [...]
-</text><text class="breeze-static-checks-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-static-checks-line-8)">│</text><text class="breeze-static-checks-r7" x="366" y="215.2" textLength="1073.6" clip-path="url(#breeze-static-checks-line-8)">check-airflow-provider-compatibility&#160;|&#160;check-apache-license-rat&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class= [...]
-</text><text class="breeze-static-checks-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-static-checks-line-9)">│</text><text class="breeze-static-checks-r7" x="366" y="239.6" textLength="1073.6" clip-path="url(#breeze-static-checks-line-9)">check-base-operator-partial-arguments&#160;|&#160;check-base-operator-usage&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-st [...]
-</text><text class="breeze-static-checks-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-static-checks-line-10)">│</text><text class="breeze-static-checks-r7" x="366" y="264" textLength="1073.6" clip-path="url(#breeze-static-checks-line-10)">check-boring-cyborg-configuration&#160;|&#160;check-breeze-top-dependencies-limited&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-static-checks-r5" x="1451.8" y="264" textLen [...]
-</text><text class="breeze-static-checks-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-static-checks-line-11)">│</text><text class="breeze-static-checks-r7" x="366" y="288.4" textLength="1073.6" clip-path="url(#breeze-static-checks-line-11)">check-builtin-literals&#160;|&#160;check-changelog-has-no-duplicates&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</text><text class="breeze-static-checks-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-static-checks-line-12)">│</text><text class="breeze-static-checks-r7" x="366" y="312.8" textLength="1073.6" clip-path="url(#breeze-static-checks-line-12)">check-core-deprecation-classes&#160;|&#160;check-daysago-import-from-utils&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="br [...]
-</text><text class="breeze-static-checks-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-static-checks-line-13)">│</text><text class="breeze-static-checks-r7" x="366" y="337.2" textLength="1073.6" clip-path="url(#breeze-static-checks-line-13)">check-decorated-operator-implements-custom-name&#160;|&#160;check-docstring-param-types&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-static-checks-r5" x="1451.8" y="337.2" textLength="12.2" cli [...]
-</text><text class="breeze-static-checks-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-static-checks-line-14)">│</text><text class="breeze-static-checks-r7" x="366" y="361.6" textLength="1073.6" clip-path="url(#breeze-static-checks-line-14)">check-example-dags-urls&#160;|&#160;check-executables-have-shebangs&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="breeze-static-checks-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-static-checks-line-15)">│</text><text class="breeze-static-checks-r7" x="366" y="386" textLength="1073.6" clip-path="url(#breeze-static-checks-line-15)">check-extra-packages-references&#160;|&#160;check-extras-order&#160;|&#160;check-for-inclusive-language&#160;|&#160;&#160;&#160;</text><text class="breeze-static-checks-r5" x="1451.8" y="386" textLength="12.2" clip-path="url(#breeze-static [...]
-</text><text class="breeze-static-checks-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-static-checks-line-16)">│</text><text class="breeze-static-checks-r7" x="366" y="410.4" textLength="1073.6" clip-path="url(#breeze-static-checks-line-16)">check-hooks-apply&#160;|&#160;check-incorrect-use-of-LoggingMixin&#160;|&#160;check-init-decorator-arguments</text><text class="breeze-static-checks-r5" x="1451.8" y="410.4" textLength="12.2" clip-path="url(#breeze-static-checks-line-1 [...]
-</text><text class="breeze-static-checks-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-static-checks-line-17)">│</text><text class="breeze-static-checks-r7" x="366" y="434.8" textLength="1073.6" clip-path="url(#breeze-static-checks-line-17)">|&#160;check-lazy-logging&#160;|&#160;check-links-to-example-dags-do-not-use-hardcoded-versions&#160;|&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-static-checks-r5" x="1451.8" y="434.8" textLength="12.2" clip-path="ur [...]
-</text><text class="breeze-static-checks-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-static-checks-line-18)">│</text><text class="breeze-static-checks-r7" x="366" y="459.2" textLength="1073.6" clip-path="url(#breeze-static-checks-line-18)">check-merge-conflict&#160;|&#160;check-newsfragments-are-valid&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</text><text class="breeze-static-checks-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-static-checks-line-19)">│</text><text class="breeze-static-checks-r7" x="366" y="483.6" textLength="1073.6" clip-path="url(#breeze-static-checks-line-19)">check-no-providers-in-core-examples&#160;|&#160;check-no-relative-imports&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text clas [...]
-</text><text class="breeze-static-checks-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-static-checks-line-20)">│</text><text class="breeze-static-checks-r7" x="366" y="508" textLength="1073.6" clip-path="url(#breeze-static-checks-line-20)">check-only-new-session-with-provide-session&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</text><text class="breeze-static-checks-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-static-checks-line-21)">│</text><text class="breeze-static-checks-r7" x="366" y="532.4" textLength="1073.6" clip-path="url(#breeze-static-checks-line-21)">check-persist-credentials-disabled-in-github-workflows&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="breeze-static-checks-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-static-checks-line-22)">│</text><text class="breeze-static-checks-r7" x="366" y="556.8" textLength="1073.6" clip-path="url(#breeze-static-checks-line-22)">check-pre-commit-information-consistent&#160;|&#160;check-provide-create-sessions-imports&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-static-checks-r5" x="1451.8" y="556.8" textLength="12.2" clip-path="ur [...]
-</text><text class="breeze-static-checks-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-static-checks-line-23)">│</text><text class="breeze-static-checks-r7" x="366" y="581.2" textLength="1073.6" clip-path="url(#breeze-static-checks-line-23)">check-provider-yaml-valid&#160;|&#160;check-providers-init-file-missing&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text> [...]
-</text><text class="breeze-static-checks-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-static-checks-line-24)">│</text><text class="breeze-static-checks-r7" x="366" y="605.6" textLength="1073.6" clip-path="url(#breeze-static-checks-line-24)">check-providers-subpackages-init-file-exist&#160;|&#160;check-pydevd-left-in-code&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-static-checks-r5" x="1451.8" y [...]
-</text><text class="breeze-static-checks-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-static-checks-line-25)">│</text><text class="breeze-static-checks-r7" x="366" y="630" textLength="1073.6" clip-path="url(#breeze-static-checks-line-25)">check-revision-heads-map&#160;|&#160;check-safe-filter-usage-in-html&#160;|&#160;check-setup-order&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-static-checks-r5" x="1451.8" y="630" textLength="12.2" clip [...]
-</text><text class="breeze-static-checks-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-static-checks-line-26)">│</text><text class="breeze-static-checks-r7" x="366" y="654.4" textLength="1073.6" clip-path="url(#breeze-static-checks-line-26)">check-start-date-not-used-in-defaults&#160;|&#160;check-system-tests-present&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-stati [...]
-</text><text class="breeze-static-checks-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-static-checks-line-27)">│</text><text class="breeze-static-checks-r7" x="366" y="678.8" textLength="1073.6" clip-path="url(#breeze-static-checks-line-27)">check-system-tests-tocs&#160;|&#160;check-urlparse-usage-in-code&#160;|&#160;check-xml&#160;|&#160;codespell&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-static-checks-r5" x="1451.8" y="678.8" textLe [...]
-</text><text class="breeze-static-checks-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-static-checks-line-28)">│</text><text class="breeze-static-checks-r7" x="366" y="703.2" textLength="1073.6" clip-path="url(#breeze-static-checks-line-28)">compile-www-assets&#160;|&#160;compile-www-assets-dev&#160;|&#160;create-missing-init-py-files-tests&#160;|&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-static-checks-r5" x="1451.8" y="703.2" textLength="12.2" clip-pat [...]
-</text><text class="breeze-static-checks-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-static-checks-line-29)">│</text><text class="breeze-static-checks-r7" x="366" y="727.6" textLength="1073.6" clip-path="url(#breeze-static-checks-line-29)">debug-statements&#160;|&#160;detect-private-key&#160;|&#160;doctoc&#160;|&#160;end-of-file-fixer&#160;|&#160;fix-encoding-pragma</text><text class="breeze-static-checks-r5" x="1451.8" y="727.6" textLength="12.2" clip-path="url(#breeze- [...]
-</text><text class="breeze-static-checks-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-static-checks-line-30)">│</text><text class="breeze-static-checks-r7" x="366" y="752" textLength="1073.6" clip-path="url(#breeze-static-checks-line-30)">|&#160;flynt&#160;|&#160;identity&#160;|&#160;insert-license&#160;|&#160;lint-chart-schema&#160;|&#160;lint-css&#160;|&#160;lint-dockerfile&#160;|&#160;&#160;</text><text class="breeze-static-checks-r5" x="1451.8" y="752" textLength="12.2" [...]
-</text><text class="breeze-static-checks-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-static-checks-line-31)">│</text><text class="breeze-static-checks-r7" x="366" y="776.4" textLength="1073.6" clip-path="url(#breeze-static-checks-line-31)">lint-helm-chart&#160;|&#160;lint-json-schema&#160;|&#160;lint-markdown&#160;|&#160;lint-openapi&#160;|&#160;mixed-line-ending&#160;|&#160;</text><text class="breeze-static-checks-r5" x="1451.8" y="776.4" textLength="12.2" clip-path="ur [...]
-</text><text class="breeze-static-checks-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-static-checks-line-32)">│</text><text class="breeze-static-checks-r7" x="366" y="800.8" textLength="1073.6" clip-path="url(#breeze-static-checks-line-32)">mypy-core&#160;|&#160;mypy-dev&#160;|&#160;mypy-docs&#160;|&#160;mypy-providers&#160;|&#160;pretty-format-json&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="br [...]
-</text><text class="breeze-static-checks-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-static-checks-line-33)">│</text><text class="breeze-static-checks-r7" x="366" y="825.2" textLength="1073.6" clip-path="url(#breeze-static-checks-line-33)">python-no-log-warn&#160;|&#160;replace-bad-characters&#160;|&#160;rst-backticks&#160;|&#160;ruff&#160;|&#160;shellcheck&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-static-checks-r5" x="1451.8" y="825.2" t [...]
-</text><text class="breeze-static-checks-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-static-checks-line-34)">│</text><text class="breeze-static-checks-r7" x="366" y="849.6" textLength="1073.6" clip-path="url(#breeze-static-checks-line-34)">trailing-whitespace&#160;|&#160;ts-compile-format-lint-www&#160;|&#160;update-black-version&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-static-checks-r5" x= [...]
-</text><text class="breeze-static-checks-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-static-checks-line-35)">│</text><text class="breeze-static-checks-r7" x="366" y="874" textLength="1073.6" clip-path="url(#breeze-static-checks-line-35)">update-breeze-cmd-output&#160;|&#160;update-breeze-readme-config-hash&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;< [...]
-</text><text class="breeze-static-checks-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-static-checks-line-36)">│</text><text class="breeze-static-checks-r7" x="366" y="898.4" textLength="1073.6" clip-path="url(#breeze-static-checks-line-36)">update-common-sql-api-stubs&#160;|&#160;update-er-diagram&#160;|&#160;update-extras&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text> [...]
-</text><text class="breeze-static-checks-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-static-checks-line-37)">│</text><text class="breeze-static-checks-r7" x="366" y="922.8" textLength="1073.6" clip-path="url(#breeze-static-checks-line-37)">update-in-the-wild-to-be-sorted&#160;|&#160;update-inlined-dockerfile-scripts&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-static-che [...]
-</text><text class="breeze-static-checks-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-static-checks-line-38)">│</text><text class="breeze-static-checks-r7" x="366" y="947.2" textLength="1073.6" clip-path="url(#breeze-static-checks-line-38)">update-installed-providers-to-be-sorted&#160;|&#160;update-local-yml-file&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text clas [...]
-</text><text class="breeze-static-checks-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-static-checks-line-39)">│</text><text class="breeze-static-checks-r7" x="366" y="971.6" textLength="1073.6" clip-path="url(#breeze-static-checks-line-39)">update-migration-references&#160;|&#160;update-providers-dependencies&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</text><text class="breeze-static-checks-r5" x="0" y="996" textLength="12.2" clip-path="url(#breeze-static-checks-line-40)">│</text><text class="breeze-static-checks-r7" x="366" y="996" textLength="1073.6" clip-path="url(#breeze-static-checks-line-40)">update-spelling-wordlist-to-be-sorted&#160;|&#160;update-supported-versions&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-stat [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1020.4" textLength="12.2" clip-path="url(#breeze-static-checks-line-41)">│</text><text class="breeze-static-checks-r7" x="366" y="1020.4" textLength="1073.6" clip-path="url(#breeze-static-checks-line-41)">update-vendored-in-k8s-json-schema&#160;|&#160;update-version&#160;|&#160;yamllint)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1044.8" textLength="12.2" clip-path="url(#breeze-static-checks-line-42)">│</text><text class="breeze-static-checks-r4" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#breeze-static-checks-line-42)">-</text><text class="breeze-static-checks-r4" x="36.6" y="1044.8" textLength="61" clip-path="url(#breeze-static-checks-line-42)">-file</text><text class="breeze-static-checks-r6" x="317.2" y="1044.8" textLength="24.4" clip-path="url(# [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1069.2" textLength="12.2" clip-path="url(#breeze-static-checks-line-43)">│</text><text class="breeze-static-checks-r4" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#breeze-static-checks-line-43)">-</text><text class="breeze-static-checks-r4" x="36.6" y="1069.2" textLength="48.8" clip-path="url(#breeze-static-checks-line-43)">-all</text><text class="breeze-static-checks-r4" x="85.4" y="1069.2" textLength="73.2" clip-path="url(# [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1093.6" textLength="12.2" clip-path="url(#breeze-static-checks-line-44)">│</text><text class="breeze-static-checks-r4" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#breeze-static-checks-line-44)">-</text><text class="breeze-static-checks-r4" x="36.6" y="1093.6" textLength="61" clip-path="url(#breeze-static-checks-line-44)">-show</text><text class="breeze-static-checks-r4" x="97.6" y="1093.6" textLength="195.2" clip-path="url(# [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1118" textLength="12.2" clip-path="url(#breeze-static-checks-line-45)">│</text><text class="breeze-static-checks-r4" x="24.4" y="1118" textLength="12.2" clip-path="url(#breeze-static-checks-line-45)">-</text><text class="breeze-static-checks-r4" x="36.6" y="1118" textLength="61" clip-path="url(#breeze-static-checks-line-45)">-last</text><text class="breeze-static-checks-r4" x="97.6" y="1118" textLength="85.4" clip-path="url(#breeze-st [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1142.4" textLength="12.2" clip-path="url(#breeze-static-checks-line-46)">│</text><text class="breeze-static-checks-r4" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#breeze-static-checks-line-46)">-</text><text class="breeze-static-checks-r4" x="36.6" y="1142.4" textLength="85.4" clip-path="url(#breeze-static-checks-line-46)">-commit</text><text class="breeze-static-checks-r4" x="122" y="1142.4" textLength="48.8" clip-path="url [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1166.8" textLength="12.2" clip-path="url(#breeze-static-checks-line-47)">│</text><text class="breeze-static-checks-r2" x="366" y="1166.8" textLength="292.8" clip-path="url(#breeze-static-checks-line-47)">Mutually&#160;exclusive&#160;with&#160;</text><text class="breeze-static-checks-r4" x="658.8" y="1166.8" textLength="12.2" clip-path="url(#breeze-static-checks-line-47)">-</text><text class="breeze-static-checks-r4" x="671" y="1166.8" [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1191.2" textLength="12.2" clip-path="url(#breeze-static-checks-line-48)">│</text><text class="breeze-static-checks-r7" x="366" y="1191.2" textLength="1073.6" clip-path="url(#breeze-static-checks-line-48)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1215.6" textLength="12.2" clip-path="url(#breeze-static-checks-line-49)">│</text><text class="breeze-static-checks-r4" x="24.4" y="1215.6" textLength="12.2" clip-path="url(#breeze-static-checks-line-49)">-</text><text class="breeze-static-checks-r4" x="36.6" y="1215.6" textLength="85.4" clip-path="url(#breeze-static-checks-line-49)">-github</text><text class="breeze-static-checks-r4" x="122" y="1215.6" textLength="134.2" clip-path="ur [...]
+</text><text class="breeze-static-checks-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-static-checks-line-6)">│</text><text class="breeze-static-checks-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-static-checks-line-6)">-</text><text class="breeze-static-checks-r4" x="36.6" y="166.4" textLength="61" clip-path="url(#breeze-static-checks-line-6)">-type</text><text class="breeze-static-checks-r6" x="402.6" y="166.4" textLength="24.4" clip-path="url(#breeze- [...]
+</text><text class="breeze-static-checks-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-static-checks-line-7)">│</text><text class="breeze-static-checks-r7" x="451.4" y="190.8" textLength="988.2" clip-path="url(#breeze-static-checks-line-7)">(all&#160;|&#160;black&#160;|&#160;blacken-docs&#160;|&#160;check-airflow-config-yaml-consistent&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-static-checks-r5" x="1451.8" [...]
+</text><text class="breeze-static-checks-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-static-checks-line-8)">│</text><text class="breeze-static-checks-r7" x="451.4" y="215.2" textLength="988.2" clip-path="url(#breeze-static-checks-line-8)">check-airflow-provider-compatibility&#160;|&#160;check-apache-license-rat&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-static-checks-r5" x="1451.8" y="2 [...]
+</text><text class="breeze-static-checks-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-static-checks-line-9)">│</text><text class="breeze-static-checks-r7" x="451.4" y="239.6" textLength="988.2" clip-path="url(#breeze-static-checks-line-9)">check-base-operator-partial-arguments&#160;|&#160;check-base-operator-usage&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-static-checks-r5" x="1451.8" y="239.6" text [...]
+</text><text class="breeze-static-checks-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-static-checks-line-10)">│</text><text class="breeze-static-checks-r7" x="451.4" y="264" textLength="988.2" clip-path="url(#breeze-static-checks-line-10)">check-boring-cyborg-configuration&#160;|&#160;check-breeze-top-dependencies-limited&#160;|&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-static-checks-r5" x="1451.8" y="264" textLength="12.2" clip-path="url(#breeze-static- [...]
+</text><text class="breeze-static-checks-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-static-checks-line-11)">│</text><text class="breeze-static-checks-r7" x="451.4" y="288.4" textLength="988.2" clip-path="url(#breeze-static-checks-line-11)">check-builtin-literals&#160;|&#160;check-changelog-has-no-duplicates&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-static [...]
+</text><text class="breeze-static-checks-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-static-checks-line-12)">│</text><text class="breeze-static-checks-r7" x="451.4" y="312.8" textLength="988.2" clip-path="url(#breeze-static-checks-line-12)">check-core-deprecation-classes&#160;|&#160;check-daysago-import-from-utils&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-static-checks-r5" x="1451.8" y="312. [...]
+</text><text class="breeze-static-checks-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-static-checks-line-13)">│</text><text class="breeze-static-checks-r7" x="451.4" y="337.2" textLength="988.2" clip-path="url(#breeze-static-checks-line-13)">check-decorated-operator-implements-custom-name&#160;|&#160;check-docstring-param-types&#160;|&#160;&#160;</text><text class="breeze-static-checks-r5" x="1451.8" y="337.2" textLength="12.2" clip-path="url(#breeze-static-checks-line-13 [...]
+</text><text class="breeze-static-checks-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-static-checks-line-14)">│</text><text class="breeze-static-checks-r7" x="451.4" y="361.6" textLength="988.2" clip-path="url(#breeze-static-checks-line-14)">check-example-dags-urls&#160;|&#160;check-executables-have-shebangs&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-s [...]
+</text><text class="breeze-static-checks-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-static-checks-line-15)">│</text><text class="breeze-static-checks-r7" x="451.4" y="386" textLength="988.2" clip-path="url(#breeze-static-checks-line-15)">check-extra-packages-references&#160;|&#160;check-extras-order&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text> [...]
+</text><text class="breeze-static-checks-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-static-checks-line-16)">│</text><text class="breeze-static-checks-r7" x="451.4" y="410.4" textLength="988.2" clip-path="url(#breeze-static-checks-line-16)">check-for-inclusive-language&#160;|&#160;check-hooks-apply&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="breeze-static-checks-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-static-checks-line-17)">│</text><text class="breeze-static-checks-r7" x="451.4" y="434.8" textLength="988.2" clip-path="url(#breeze-static-checks-line-17)">check-incorrect-use-of-LoggingMixin&#160;|&#160;check-init-decorator-arguments&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-static-checks-r5" x="1451.8" y="434.8" textLength="12.2" [...]
+</text><text class="breeze-static-checks-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-static-checks-line-18)">│</text><text class="breeze-static-checks-r7" x="451.4" y="459.2" textLength="988.2" clip-path="url(#breeze-static-checks-line-18)">check-lazy-logging&#160;|&#160;check-links-to-example-dags-do-not-use-hardcoded-versions&#160;|&#160;</text><text class="breeze-static-checks-r5" x="1451.8" y="459.2" textLength="12.2" clip-path="url(#breeze-static-checks-line-18)">│< [...]
+</text><text class="breeze-static-checks-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-static-checks-line-19)">│</text><text class="breeze-static-checks-r7" x="451.4" y="483.6" textLength="988.2" clip-path="url(#breeze-static-checks-line-19)">check-merge-conflict&#160;|&#160;check-newsfragments-are-valid&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</t [...]
+</text><text class="breeze-static-checks-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-static-checks-line-20)">│</text><text class="breeze-static-checks-r7" x="451.4" y="508" textLength="988.2" clip-path="url(#breeze-static-checks-line-20)">check-no-providers-in-core-examples&#160;|&#160;check-no-relative-imports&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-static-checks-r5" x="1451.8" y="508 [...]
+</text><text class="breeze-static-checks-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-static-checks-line-21)">│</text><text class="breeze-static-checks-r7" x="451.4" y="532.4" textLength="988.2" clip-path="url(#breeze-static-checks-line-21)">check-only-new-session-with-provide-session&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="breeze-static-checks-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-static-checks-line-22)">│</text><text class="breeze-static-checks-r7" x="451.4" y="556.8" textLength="988.2" clip-path="url(#breeze-static-checks-line-22)">check-persist-credentials-disabled-in-github-workflows&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="bre [...]
+</text><text class="breeze-static-checks-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-static-checks-line-23)">│</text><text class="breeze-static-checks-r7" x="451.4" y="581.2" textLength="988.2" clip-path="url(#breeze-static-checks-line-23)">check-pre-commit-information-consistent&#160;|&#160;check-provide-create-sessions-imports&#160;|</text><text class="breeze-static-checks-r5" x="1451.8" y="581.2" textLength="12.2" clip-path="url(#breeze-static-checks-line-23)">│</text [...]
+</text><text class="breeze-static-checks-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-static-checks-line-24)">│</text><text class="breeze-static-checks-r7" x="451.4" y="605.6" textLength="988.2" clip-path="url(#breeze-static-checks-line-24)">check-provider-yaml-valid&#160;|&#160;check-providers-init-file-missing&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-static-checks-r5" x=" [...]
+</text><text class="breeze-static-checks-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-static-checks-line-25)">│</text><text class="breeze-static-checks-r7" x="451.4" y="630" textLength="988.2" clip-path="url(#breeze-static-checks-line-25)">check-providers-subpackages-init-file-exist&#160;|&#160;check-pydevd-left-in-code&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-static-checks-r5" x="1451.8" y="630" textLength="12.2" clip-path="url(#bree [...]
+</text><text class="breeze-static-checks-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-static-checks-line-26)">│</text><text class="breeze-static-checks-r7" x="451.4" y="654.4" textLength="988.2" clip-path="url(#breeze-static-checks-line-26)">check-revision-heads-map&#160;|&#160;check-safe-filter-usage-in-html&#160;|&#160;check-setup-order&#160;|&#160;</text><text class="breeze-static-checks-r5" x="1451.8" y="654.4" textLength="12.2" clip-path="url(#breeze-static-checks-li [...]
+</text><text class="breeze-static-checks-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-static-checks-line-27)">│</text><text class="breeze-static-checks-r7" x="451.4" y="678.8" textLength="988.2" clip-path="url(#breeze-static-checks-line-27)">check-start-date-not-used-in-defaults&#160;|&#160;check-system-tests-present&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-static-checks-r5" x="1451.8" y="678.8" textLen [...]
+</text><text class="breeze-static-checks-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-static-checks-line-28)">│</text><text class="breeze-static-checks-r7" x="451.4" y="703.2" textLength="988.2" clip-path="url(#breeze-static-checks-line-28)">check-system-tests-tocs&#160;|&#160;check-urlparse-usage-in-code&#160;|&#160;check-xml&#160;|&#160;codespell&#160;|&#160;</text><text class="breeze-static-checks-r5" x="1451.8" y="703.2" textLength="12.2" clip-path="url(#breeze-static [...]
+</text><text class="breeze-static-checks-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-static-checks-line-29)">│</text><text class="breeze-static-checks-r7" x="451.4" y="727.6" textLength="988.2" clip-path="url(#breeze-static-checks-line-29)">compile-www-assets&#160;|&#160;compile-www-assets-dev&#160;|&#160;create-missing-init-py-files-tests&#160;</text><text class="breeze-static-checks-r5" x="1451.8" y="727.6" textLength="12.2" clip-path="url(#breeze-static-checks-line-29 [...]
+</text><text class="breeze-static-checks-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-static-checks-line-30)">│</text><text class="breeze-static-checks-r7" x="451.4" y="752" textLength="988.2" clip-path="url(#breeze-static-checks-line-30)">|&#160;debug-statements&#160;|&#160;detect-private-key&#160;|&#160;doctoc&#160;|&#160;end-of-file-fixer&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-static-checks-r5" x="1451.8" y="752 [...]
+</text><text class="breeze-static-checks-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-static-checks-line-31)">│</text><text class="breeze-static-checks-r7" x="451.4" y="776.4" textLength="988.2" clip-path="url(#breeze-static-checks-line-31)">fix-encoding-pragma&#160;|&#160;flynt&#160;|&#160;identity&#160;|&#160;insert-license&#160;|&#160;lint-chart-schema&#160;|&#160;&#160;&#160;&#160;</text><text class="breeze-static-checks-r5" x="1451.8" y="776.4" textLength="12.2" clip [...]
+</text><text class="breeze-static-checks-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-static-checks-line-32)">│</text><text class="breeze-static-checks-r7" x="451.4" y="800.8" textLength="988.2" clip-path="url(#breeze-static-checks-line-32)">lint-css&#160;|&#160;lint-dockerfile&#160;|&#160;lint-helm-chart&#160;|&#160;lint-json-schema&#160;|&#160;lint-markdown&#160;|</text><text class="breeze-static-checks-r5" x="1451.8" y="800.8" textLength="12.2" clip-path="url(#breeze-s [...]
+</text><text class="breeze-static-checks-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-static-checks-line-33)">│</text><text class="breeze-static-checks-r7" x="451.4" y="825.2" textLength="988.2" clip-path="url(#breeze-static-checks-line-33)">lint-openapi&#160;|&#160;mixed-line-ending&#160;|&#160;mypy-core&#160;|&#160;mypy-docs&#160;|&#160;mypy-providers&#160;|&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-static-checks-r5" x="1451.8" y="825.2" textLength=" [...]
+</text><text class="breeze-static-checks-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-static-checks-line-34)">│</text><text class="breeze-static-checks-r7" x="451.4" y="849.6" textLength="988.2" clip-path="url(#breeze-static-checks-line-34)">pretty-format-json&#160;|&#160;python-no-log-warn&#160;|&#160;replace-bad-characters&#160;|&#160;rst-backticks&#160;</text><text class="breeze-static-checks-r5" x="1451.8" y="849.6" textLength="12.2" clip-path="url(#breeze-static-chec [...]
+</text><text class="breeze-static-checks-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-static-checks-line-35)">│</text><text class="breeze-static-checks-r7" x="451.4" y="874" textLength="988.2" clip-path="url(#breeze-static-checks-line-35)">|&#160;ruff&#160;|&#160;shellcheck&#160;|&#160;trailing-whitespace&#160;|&#160;ts-compile-format-lint-www&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-static-checks-r5" x="1451.8" y="874" textLeng [...]
+</text><text class="breeze-static-checks-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-static-checks-line-36)">│</text><text class="breeze-static-checks-r7" x="451.4" y="898.4" textLength="988.2" clip-path="url(#breeze-static-checks-line-36)">update-black-version&#160;|&#160;update-breeze-cmd-output&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
+</text><text class="breeze-static-checks-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-static-checks-line-37)">│</text><text class="breeze-static-checks-r7" x="451.4" y="922.8" textLength="988.2" clip-path="url(#breeze-static-checks-line-37)">update-breeze-readme-config-hash&#160;|&#160;update-common-sql-api-stubs&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-static-checks-r5" x="1451. [...]
+</text><text class="breeze-static-checks-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-static-checks-line-38)">│</text><text class="breeze-static-checks-r7" x="451.4" y="947.2" textLength="988.2" clip-path="url(#breeze-static-checks-line-38)">update-er-diagram&#160;|&#160;update-extras&#160;|&#160;update-in-the-wild-to-be-sorted&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-static-checks-r5" x="1451.8" y="947.2" te [...]
+</text><text class="breeze-static-checks-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-static-checks-line-39)">│</text><text class="breeze-static-checks-r7" x="451.4" y="971.6" textLength="988.2" clip-path="url(#breeze-static-checks-line-39)">update-inlined-dockerfile-scripts&#160;|&#160;update-installed-providers-to-be-sorted&#160;|&#160;&#160;&#160;&#160;</text><text class="breeze-static-checks-r5" x="1451.8" y="971.6" textLength="12.2" clip-path="url(#breeze-static-chec [...]
+</text><text class="breeze-static-checks-r5" x="0" y="996" textLength="12.2" clip-path="url(#breeze-static-checks-line-40)">│</text><text class="breeze-static-checks-r7" x="451.4" y="996" textLength="988.2" clip-path="url(#breeze-static-checks-line-40)">update-local-yml-file&#160;|&#160;update-migration-references&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</ [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1020.4" textLength="12.2" clip-path="url(#breeze-static-checks-line-41)">│</text><text class="breeze-static-checks-r7" x="451.4" y="1020.4" textLength="988.2" clip-path="url(#breeze-static-checks-line-41)">update-providers-dependencies&#160;|&#160;update-spelling-wordlist-to-be-sorted&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-static-checks-r5" x="1451.8" y="1020.4" textLength="12.2" c [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1044.8" textLength="12.2" clip-path="url(#breeze-static-checks-line-42)">│</text><text class="breeze-static-checks-r7" x="451.4" y="1044.8" textLength="988.2" clip-path="url(#breeze-static-checks-line-42)">update-supported-versions&#160;|&#160;update-vendored-in-k8s-json-schema&#160;|&#160;update-version&#160;|</text><text class="breeze-static-checks-r5" x="1451.8" y="1044.8" textLength="12.2" clip-path="url(#breeze-static-checks-line [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1069.2" textLength="12.2" clip-path="url(#breeze-static-checks-line-43)">│</text><text class="breeze-static-checks-r7" x="451.4" y="1069.2" textLength="988.2" clip-path="url(#breeze-static-checks-line-43)">yamllint)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1093.6" textLength="12.2" clip-path="url(#breeze-static-checks-line-44)">│</text><text class="breeze-static-checks-r4" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#breeze-static-checks-line-44)">-</text><text class="breeze-static-checks-r4" x="36.6" y="1093.6" textLength="61" clip-path="url(#breeze-static-checks-line-44)">-show</text><text class="breeze-static-checks-r4" x="97.6" y="1093.6" textLength="195.2" clip-path="url(# [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1118" textLength="12.2" clip-path="url(#breeze-static-checks-line-45)">│</text><text class="breeze-static-checks-r4" x="24.4" y="1118" textLength="12.2" clip-path="url(#breeze-static-checks-line-45)">-</text><text class="breeze-static-checks-r4" x="36.6" y="1118" textLength="134.2" clip-path="url(#breeze-static-checks-line-45)">-initialize</text><text class="breeze-static-checks-r4" x="170.8" y="1118" textLength="146.4" clip-path="url [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1142.4" textLength="12.2" clip-path="url(#breeze-static-checks-line-46)">│</text><text class="breeze-static-checks-r4" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#breeze-static-checks-line-46)">-</text><text class="breeze-static-checks-r4" x="36.6" y="1142.4" textLength="48.8" clip-path="url(#breeze-static-checks-line-46)">-max</text><text class="breeze-static-checks-r4" x="85.4" y="1142.4" textLength="292.8" clip-path="url( [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1166.8" textLength="12.2" clip-path="url(#breeze-static-checks-line-47)">│</text><text class="breeze-static-checks-r7" x="451.4" y="1166.8" textLength="854" clip-path="url(#breeze-static-checks-line-47)">(INTEGER&#160;RANGE)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1191.2" textLength="12.2" clip-path="url(#breeze-static-checks-line-48)">│</text><text class="breeze-static-checks-r5" x="451.4" y="1191.2" textLength="854" clip-path="url(#breeze-static-checks-line-48)">[default:&#160;3;&#160;1&lt;=x&lt;=10]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1215.6" textLength="12.2" clip-path="url(#breeze-static-checks-line-49)">│</text><text class="breeze-static-checks-r4" x="24.4" y="1215.6" textLength="12.2" clip-path="url(#breeze-static-checks-line-49)">-</text><text class="breeze-static-checks-r4" x="36.6" y="1215.6" textLength="85.4" clip-path="url(#breeze-static-checks-line-49)">-github</text><text class="breeze-static-checks-r4" x="122" y="1215.6" textLength="134.2" clip-path="ur [...]
 </text><text class="breeze-static-checks-r5" x="0" y="1240" textLength="1464" clip-path="url(#breeze-static-checks-line-50)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-static-checks-r2" x="1464" y="1240" textLength="12.2" clip-path="url(#breeze-static-checks-line-50)">
-</text><text class="breeze-static-checks-r5" x="0" y="1264.4" textLength="24.4" clip-path="url(#breeze-static-checks-line-51)">╭─</text><text class="breeze-static-checks-r5" x="24.4" y="1264.4" textLength="195.2" clip-path="url(#breeze-static-checks-line-51)">&#160;Common&#160;options&#160;</text><text class="breeze-static-checks-r5" x="219.6" y="1264.4" textLength="1220" clip-path="url(#breeze-static-checks-line-51)">────────────────────────────────────────────────────────────────────── [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1288.8" textLength="12.2" clip-path="url(#breeze-static-checks-line-52)">│</text><text class="breeze-static-checks-r4" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#breeze-static-checks-line-52)">-</text><text class="breeze-static-checks-r4" x="36.6" y="1288.8" textLength="97.6" clip-path="url(#breeze-static-checks-line-52)">-verbose</text><text class="breeze-static-checks-r6" x="158.6" y="1288.8" textLength="24.4" clip-path=" [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1313.2" textLength="12.2" clip-path="url(#breeze-static-checks-line-53)">│</text><text class="breeze-static-checks-r4" x="24.4" y="1313.2" textLength="12.2" clip-path="url(#breeze-static-checks-line-53)">-</text><text class="breeze-static-checks-r4" x="36.6" y="1313.2" textLength="48.8" clip-path="url(#breeze-static-checks-line-53)">-dry</text><text class="breeze-static-checks-r4" x="85.4" y="1313.2" textLength="48.8" clip-path="url(# [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1337.6" textLength="12.2" clip-path="url(#breeze-static-checks-line-54)">│</text><text class="breeze-static-checks-r4" x="24.4" y="1337.6" textLength="12.2" clip-path="url(#breeze-static-checks-line-54)">-</text><text class="breeze-static-checks-r4" x="36.6" y="1337.6" textLength="61" clip-path="url(#breeze-static-checks-line-54)">-help</text><text class="breeze-static-checks-r6" x="158.6" y="1337.6" textLength="24.4" clip-path="url(# [...]
-</text><text class="breeze-static-checks-r5" x="0" y="1362" textLength="1464" clip-path="url(#breeze-static-checks-line-55)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-static-checks-r2" x="1464" y="1362" textLength="12.2" clip-path="url(#breeze-static-checks-line-55)">
+</text><text class="breeze-static-checks-r5" x="0" y="1264.4" textLength="24.4" clip-path="url(#breeze-static-checks-line-51)">╭─</text><text class="breeze-static-checks-r5" x="24.4" y="1264.4" textLength="463.6" clip-path="url(#breeze-static-checks-line-51)">&#160;Selecting&#160;files&#160;to&#160;run&#160;the&#160;checks&#160;on&#160;</text><text class="breeze-static-checks-r5" x="488" y="1264.4" textLength="951.6" clip-path="url(#breeze-static-checks-line-51)">──────────────────────── [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1288.8" textLength="12.2" clip-path="url(#breeze-static-checks-line-52)">│</text><text class="breeze-static-checks-r4" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#breeze-static-checks-line-52)">-</text><text class="breeze-static-checks-r4" x="36.6" y="1288.8" textLength="61" clip-path="url(#breeze-static-checks-line-52)">-file</text><text class="breeze-static-checks-r6" x="256.2" y="1288.8" textLength="24.4" clip-path="url(# [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1313.2" textLength="12.2" clip-path="url(#breeze-static-checks-line-53)">│</text><text class="breeze-static-checks-r4" x="24.4" y="1313.2" textLength="12.2" clip-path="url(#breeze-static-checks-line-53)">-</text><text class="breeze-static-checks-r4" x="36.6" y="1313.2" textLength="48.8" clip-path="url(#breeze-static-checks-line-53)">-all</text><text class="breeze-static-checks-r4" x="85.4" y="1313.2" textLength="73.2" clip-path="url(# [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1337.6" textLength="12.2" clip-path="url(#breeze-static-checks-line-54)">│</text><text class="breeze-static-checks-r4" x="24.4" y="1337.6" textLength="12.2" clip-path="url(#breeze-static-checks-line-54)">-</text><text class="breeze-static-checks-r4" x="36.6" y="1337.6" textLength="85.4" clip-path="url(#breeze-static-checks-line-54)">-commit</text><text class="breeze-static-checks-r4" x="122" y="1337.6" textLength="48.8" clip-path="url [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1362" textLength="12.2" clip-path="url(#breeze-static-checks-line-55)">│</text><text class="breeze-static-checks-r2" x="305" y="1362" textLength="183" clip-path="url(#breeze-static-checks-line-55)">exclusive&#160;with&#160;</text><text class="breeze-static-checks-r4" x="488" y="1362" textLength="12.2" clip-path="url(#breeze-static-checks-line-55)">-</text><text class="breeze-static-checks-r4" x="500.2" y="1362" textLength="61" clip-pa [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1386.4" textLength="12.2" clip-path="url(#breeze-static-checks-line-56)">│</text><text class="breeze-static-checks-r7" x="305" y="1386.4" textLength="1134.6" clip-path="url(#breeze-static-checks-line-56)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1410.8" textLength="12.2" clip-path="url(#breeze-static-checks-line-57)">│</text><text class="breeze-static-checks-r4" x="24.4" y="1410.8" textLength="12.2" clip-path="url(#breeze-static-checks-line-57)">-</text><text class="breeze-static-checks-r4" x="36.6" y="1410.8" textLength="61" clip-path="url(#breeze-static-checks-line-57)">-last</text><text class="breeze-static-checks-r4" x="97.6" y="1410.8" textLength="85.4" clip-path="url(#b [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1435.2" textLength="12.2" clip-path="url(#breeze-static-checks-line-58)">│</text><text class="breeze-static-checks-r4" x="24.4" y="1435.2" textLength="12.2" clip-path="url(#breeze-static-checks-line-58)">-</text><text class="breeze-static-checks-r4" x="36.6" y="1435.2" textLength="61" clip-path="url(#breeze-static-checks-line-58)">-only</text><text class="breeze-static-checks-r4" x="97.6" y="1435.2" textLength="134.2" clip-path="url(# [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1459.6" textLength="12.2" clip-path="url(#breeze-static-checks-line-59)">│</text><text class="breeze-static-checks-r2" x="305" y="1459.6" textLength="134.2" clip-path="url(#breeze-static-checks-line-59)">branch&#160;and&#160;</text><text class="breeze-static-checks-r4" x="439.2" y="1459.6" textLength="48.8" clip-path="url(#breeze-static-checks-line-59)">HEAD</text><text class="breeze-static-checks-r2" x="488" y="1459.6" textLength="95 [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1484" textLength="1464" clip-path="url(#breeze-static-checks-line-60)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-static-checks-r2" x="1464" y="1484" textLength="12.2" clip-path="url(#breeze-static-checks-line-60)">
+</text><text class="breeze-static-checks-r5" x="0" y="1508.4" textLength="24.4" clip-path="url(#breeze-static-checks-line-61)">╭─</text><text class="breeze-static-checks-r5" x="24.4" y="1508.4" textLength="195.2" clip-path="url(#breeze-static-checks-line-61)">&#160;Common&#160;options&#160;</text><text class="breeze-static-checks-r5" x="219.6" y="1508.4" textLength="1220" clip-path="url(#breeze-static-checks-line-61)">────────────────────────────────────────────────────────────────────── [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1532.8" textLength="12.2" clip-path="url(#breeze-static-checks-line-62)">│</text><text class="breeze-static-checks-r4" x="24.4" y="1532.8" textLength="12.2" clip-path="url(#breeze-static-checks-line-62)">-</text><text class="breeze-static-checks-r4" x="36.6" y="1532.8" textLength="97.6" clip-path="url(#breeze-static-checks-line-62)">-verbose</text><text class="breeze-static-checks-r6" x="158.6" y="1532.8" textLength="24.4" clip-path=" [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1557.2" textLength="12.2" clip-path="url(#breeze-static-checks-line-63)">│</text><text class="breeze-static-checks-r4" x="24.4" y="1557.2" textLength="12.2" clip-path="url(#breeze-static-checks-line-63)">-</text><text class="breeze-static-checks-r4" x="36.6" y="1557.2" textLength="48.8" clip-path="url(#breeze-static-checks-line-63)">-dry</text><text class="breeze-static-checks-r4" x="85.4" y="1557.2" textLength="48.8" clip-path="url(# [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1581.6" textLength="12.2" clip-path="url(#breeze-static-checks-line-64)">│</text><text class="breeze-static-checks-r4" x="24.4" y="1581.6" textLength="12.2" clip-path="url(#breeze-static-checks-line-64)">-</text><text class="breeze-static-checks-r4" x="36.6" y="1581.6" textLength="61" clip-path="url(#breeze-static-checks-line-64)">-help</text><text class="breeze-static-checks-r6" x="158.6" y="1581.6" textLength="24.4" clip-path="url(# [...]
+</text><text class="breeze-static-checks-r5" x="0" y="1606" textLength="1464" clip-path="url(#breeze-static-checks-line-65)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-static-checks-r2" x="1464" y="1606" textLength="12.2" clip-path="url(#breeze-static-checks-line-65)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output_stop.svg b/images/breeze/output_stop.svg
deleted file mode 100644
index 3197abd935..0000000000
--- a/images/breeze/output_stop.svg
+++ /dev/null
@@ -1,115 +0,0 @@
-<svg class="rich-terminal" viewBox="0 0 1482 391.59999999999997" xmlns="http://www.w3.org/2000/svg">
-    <!-- Generated with Rich https://www.textualize.io -->
-    <style>
-
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Regular"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
-        font-style: normal;
-        font-weight: 400;
-    }
-    @font-face {
-        font-family: "Fira Code";
-        src: local("FiraCode-Bold"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
-                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
-        font-style: bold;
-        font-weight: 700;
-    }
-
-    .breeze-stop-matrix {
-        font-family: Fira Code, monospace;
-        font-size: 20px;
-        line-height: 24.4px;
-        font-variant-east-asian: full-width;
-    }
-
-    .breeze-stop-title {
-        font-size: 18px;
-        font-weight: bold;
-        font-family: arial;
-    }
-
-    .breeze-stop-r1 { fill: #c5c8c6;font-weight: bold }
-.breeze-stop-r2 { fill: #c5c8c6 }
-.breeze-stop-r3 { fill: #d0b344;font-weight: bold }
-.breeze-stop-r4 { fill: #68a0b3;font-weight: bold }
-.breeze-stop-r5 { fill: #868887 }
-.breeze-stop-r6 { fill: #98a84b;font-weight: bold }
-    </style>
-
-    <defs>
-    <clipPath id="breeze-stop-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="340.59999999999997" />
-    </clipPath>
-    <clipPath id="breeze-stop-line-0">
-    <rect x="0" y="1.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-stop-line-1">
-    <rect x="0" y="25.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-stop-line-2">
-    <rect x="0" y="50.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-stop-line-3">
-    <rect x="0" y="74.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-stop-line-4">
-    <rect x="0" y="99.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-stop-line-5">
-    <rect x="0" y="123.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-stop-line-6">
-    <rect x="0" y="147.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-stop-line-7">
-    <rect x="0" y="172.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-stop-line-8">
-    <rect x="0" y="196.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-stop-line-9">
-    <rect x="0" y="221.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-stop-line-10">
-    <rect x="0" y="245.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-stop-line-11">
-    <rect x="0" y="269.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-stop-line-12">
-    <rect x="0" y="294.3" width="1464" height="24.65"/>
-            </clipPath>
-    </defs>
-
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="389.6" rx="8"/><text class="breeze-stop-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;stop</text>
-            <g transform="translate(26,22)">
-            <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
-            <circle cx="22" cy="0" r="7" fill="#febc2e"/>
-            <circle cx="44" cy="0" r="7" fill="#28c840"/>
-            </g>
-        
-    <g transform="translate(9, 41)" clip-path="url(#breeze-stop-clip-terminal)">
-    
-    <g class="breeze-stop-matrix">
-    <text class="breeze-stop-r2" x="1464" y="20" textLength="12.2" clip-path="url(#breeze-stop-line-0)">
-</text><text class="breeze-stop-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#breeze-stop-line-1)">Usage:&#160;</text><text class="breeze-stop-r1" x="97.6" y="44.4" textLength="158.6" clip-path="url(#breeze-stop-line-1)">breeze&#160;stop&#160;[</text><text class="breeze-stop-r4" x="256.2" y="44.4" textLength="85.4" clip-path="url(#breeze-stop-line-1)">OPTIONS</text><text class="breeze-stop-r1" x="341.6" y="44.4" textLength="12.2" clip-path="url(#breeze-stop-line-1)">]</text><te [...]
-</text><text class="breeze-stop-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#breeze-stop-line-2)">
-</text><text class="breeze-stop-r2" x="12.2" y="93.2" textLength="390.4" clip-path="url(#breeze-stop-line-3)">Stop&#160;running&#160;breeze&#160;environment.</text><text class="breeze-stop-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#breeze-stop-line-3)">
-</text><text class="breeze-stop-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-stop-line-4)">
-</text><text class="breeze-stop-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-stop-line-5)">╭─</text><text class="breeze-stop-r5" x="24.4" y="142" textLength="146.4" clip-path="url(#breeze-stop-line-5)">&#160;Stop&#160;flags&#160;</text><text class="breeze-stop-r5" x="170.8" y="142" textLength="1268.8" clip-path="url(#breeze-stop-line-5)">────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="breeze-stop-r5 [...]
-</text><text class="breeze-stop-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-stop-line-6)">│</text><text class="breeze-stop-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-stop-line-6)">-</text><text class="breeze-stop-r4" x="36.6" y="166.4" textLength="109.8" clip-path="url(#breeze-stop-line-6)">-preserve</text><text class="breeze-stop-r4" x="146.4" y="166.4" textLength="97.6" clip-path="url(#breeze-stop-line-6)">-volumes</text><text class="breeze-stop-r6 [...]
-</text><text class="breeze-stop-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-stop-line-7)">│</text><text class="breeze-stop-r4" x="24.4" y="190.8" textLength="12.2" clip-path="url(#breeze-stop-line-7)">-</text><text class="breeze-stop-r4" x="36.6" y="190.8" textLength="97.6" clip-path="url(#breeze-stop-line-7)">-cleanup</text><text class="breeze-stop-r4" x="134.2" y="190.8" textLength="134.2" clip-path="url(#breeze-stop-line-7)">-mypy-cache</text><text class="breeze-stop- [...]
-</text><text class="breeze-stop-r5" x="0" y="215.2" textLength="1464" clip-path="url(#breeze-stop-line-8)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-stop-r2" x="1464" y="215.2" textLength="12.2" clip-path="url(#breeze-stop-line-8)">
-</text><text class="breeze-stop-r5" x="0" y="239.6" textLength="24.4" clip-path="url(#breeze-stop-line-9)">╭─</text><text class="breeze-stop-r5" x="24.4" y="239.6" textLength="195.2" clip-path="url(#breeze-stop-line-9)">&#160;Common&#160;options&#160;</text><text class="breeze-stop-r5" x="219.6" y="239.6" textLength="1220" clip-path="url(#breeze-stop-line-9)">────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="breeze-sto [...]
-</text><text class="breeze-stop-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-stop-line-10)">│</text><text class="breeze-stop-r4" x="24.4" y="264" textLength="12.2" clip-path="url(#breeze-stop-line-10)">-</text><text class="breeze-stop-r4" x="36.6" y="264" textLength="97.6" clip-path="url(#breeze-stop-line-10)">-verbose</text><text class="breeze-stop-r6" x="158.6" y="264" textLength="24.4" clip-path="url(#breeze-stop-line-10)">-v</text><text class="breeze-stop-r2" x="207.4"  [...]
-</text><text class="breeze-stop-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-stop-line-11)">│</text><text class="breeze-stop-r4" x="24.4" y="288.4" textLength="12.2" clip-path="url(#breeze-stop-line-11)">-</text><text class="breeze-stop-r4" x="36.6" y="288.4" textLength="48.8" clip-path="url(#breeze-stop-line-11)">-dry</text><text class="breeze-stop-r4" x="85.4" y="288.4" textLength="48.8" clip-path="url(#breeze-stop-line-11)">-run</text><text class="breeze-stop-r6" x="15 [...]
-</text><text class="breeze-stop-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-stop-line-12)">│</text><text class="breeze-stop-r4" x="24.4" y="312.8" textLength="12.2" clip-path="url(#breeze-stop-line-12)">-</text><text class="breeze-stop-r4" x="36.6" y="312.8" textLength="61" clip-path="url(#breeze-stop-line-12)">-help</text><text class="breeze-stop-r6" x="158.6" y="312.8" textLength="24.4" clip-path="url(#breeze-stop-line-12)">-h</text><text class="breeze-stop-r2" x="207. [...]
-</text><text class="breeze-stop-r5" x="0" y="337.2" textLength="1464" clip-path="url(#breeze-stop-line-13)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-stop-r2" x="1464" y="337.2" textLength="12.2" clip-path="url(#breeze-stop-line-13)">
-</text>
-    </g>
-    </g>
-</svg>
diff --git a/images/breeze/output_testing_docker-compose-tests.svg b/images/breeze/output_testing_docker-compose-tests.svg
index f76556dc7e..45a18624ae 100644
--- a/images/breeze/output_testing_docker-compose-tests.svg
+++ b/images/breeze/output_testing_docker-compose-tests.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 513.5999999999999" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 635.5999999999999" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -43,7 +43,7 @@
 
     <defs>
     <clipPath id="breeze-testing-docker-compose-tests-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="462.59999999999997" />
+      <rect x="0" y="0" width="1463.0" height="584.5999999999999" />
     </clipPath>
     <clipPath id="breeze-testing-docker-compose-tests-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -99,9 +99,24 @@
 <clipPath id="breeze-testing-docker-compose-tests-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="breeze-testing-docker-compose-tests-line-18">
+    <rect x="0" y="440.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-testing-docker-compose-tests-line-19">
+    <rect x="0" y="465.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-testing-docker-compose-tests-line-20">
+    <rect x="0" y="489.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-testing-docker-compose-tests-line-21">
+    <rect x="0" y="513.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-testing-docker-compose-tests-line-22">
+    <rect x="0" y="538.3" width="1464" height="24.65"/>
+            </clipPath>
     </defs>
 
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="511.6" rx="8"/><text class="breeze-testing-docker-compose-tests-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;testing&#160;docker-compose-tests</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="633.6" rx="8"/><text class="breeze-testing-docker-compose-tests-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;testing&#160;docker-compose-tests</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -117,19 +132,24 @@
 </text><text class="breeze-testing-docker-compose-tests-r2" x="12.2" y="93.2" textLength="305" clip-path="url(#breeze-testing-docker-compose-tests-line-3)">Run&#160;docker-compose&#160;tests.</text><text class="breeze-testing-docker-compose-tests-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-3)">
 </text><text class="breeze-testing-docker-compose-tests-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-4)">
 </text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-testing-docker-compose-tests-line-5)">╭─</text><text class="breeze-testing-docker-compose-tests-r5" x="24.4" y="142" textLength="329.4" clip-path="url(#breeze-testing-docker-compose-tests-line-5)">&#160;Docker-compose&#160;tests&#160;flag&#160;</text><text class="breeze-testing-docker-compose-tests-r5" x="353.8" y="142" textLength="1085.8" clip-path="url(#breeze-testing-dock [...]
-</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-6)">│</text><text class="breeze-testing-docker-compose-tests-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-6)">-</text><text class="breeze-testing-docker-compose-tests-r4" x="36.6" y="166.4" textLength="73.2" clip-path="url(#breeze-testing-docker-compose-tests-line-6)">-image</text><text  [...]
-</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-7)">│</text><text class="breeze-testing-docker-compose-tests-r4" x="24.4" y="190.8" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-7)">-</text><text class="breeze-testing-docker-compose-tests-r4" x="36.6" y="190.8" textLength="73.2" clip-path="url(#breeze-testing-docker-compose-tests-line-7)">-image</text><text  [...]
-</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-8)">│</text><text class="breeze-testing-docker-compose-tests-r5" x="329.4" y="215.2" textLength="963.8" clip-path="url(#breeze-testing-docker-compose-tests-line-8)">[default:&#160;latest]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-9)">│</text><text class="breeze-testing-docker-compose-tests-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-9)">-</text><text class="breeze-testing-docker-compose-tests-r4" x="36.6" y="239.6" textLength="85.4" clip-path="url(#breeze-testing-docker-compose-tests-line-9)">-python</text><text [...]
-</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-10)">│</text><text class="breeze-testing-docker-compose-tests-r7" x="329.4" y="264" textLength="732" clip-path="url(#breeze-testing-docker-compose-tests-line-10)">(&gt;3.7&lt;&#160;|&#160;3.8&#160;|&#160;3.9&#160;|&#160;3.10&#160;|&#160;3.11)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-11)">│</text><text class="breeze-testing-docker-compose-tests-r5" x="329.4" y="288.4" textLength="732" clip-path="url(#breeze-testing-docker-compose-tests-line-11)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-12)">│</text><text class="breeze-testing-docker-compose-tests-r4" x="24.4" y="312.8" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-12)">-</text><text class="breeze-testing-docker-compose-tests-r4" x="36.6" y="312.8" textLength="85.4" clip-path="url(#breeze-testing-docker-compose-tests-line-12)">-github</text><t [...]
-</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="337.2" textLength="1464" clip-path="url(#breeze-testing-docker-compose-tests-line-13)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-docker-compose-tests-r2" x="1464" y="337.2" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-13)">
-</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="361.6" textLength="24.4" clip-path="url(#breeze-testing-docker-compose-tests-line-14)">╭─</text><text class="breeze-testing-docker-compose-tests-r5" x="24.4" y="361.6" textLength="195.2" clip-path="url(#breeze-testing-docker-compose-tests-line-14)">&#160;Common&#160;options&#160;</text><text class="breeze-testing-docker-compose-tests-r5" x="219.6" y="361.6" textLength="1220" clip-path="url(#breeze-testing-docker-compose [...]
-</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-15)">│</text><text class="breeze-testing-docker-compose-tests-r4" x="24.4" y="386" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-15)">-</text><text class="breeze-testing-docker-compose-tests-r4" x="36.6" y="386" textLength="97.6" clip-path="url(#breeze-testing-docker-compose-tests-line-15)">-verbose</text><text c [...]
-</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-16)">│</text><text class="breeze-testing-docker-compose-tests-r4" x="24.4" y="410.4" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-16)">-</text><text class="breeze-testing-docker-compose-tests-r4" x="36.6" y="410.4" textLength="48.8" clip-path="url(#breeze-testing-docker-compose-tests-line-16)">-dry</text><text [...]
-</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-17)">│</text><text class="breeze-testing-docker-compose-tests-r4" x="24.4" y="434.8" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-17)">-</text><text class="breeze-testing-docker-compose-tests-r4" x="36.6" y="434.8" textLength="61" clip-path="url(#breeze-testing-docker-compose-tests-line-17)">-help</text><text  [...]
+</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-6)">│</text><text class="breeze-testing-docker-compose-tests-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-6)">-</text><text class="breeze-testing-docker-compose-tests-r4" x="36.6" y="166.4" textLength="73.2" clip-path="url(#breeze-testing-docker-compose-tests-line-6)">-image</text><text  [...]
+</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-7)">│</text><text class="breeze-testing-docker-compose-tests-r4" x="24.4" y="190.8" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-7)">-</text><text class="breeze-testing-docker-compose-tests-r4" x="36.6" y="190.8" textLength="73.2" clip-path="url(#breeze-testing-docker-compose-tests-line-7)">-image</text><text  [...]
+</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-8)">│</text><text class="breeze-testing-docker-compose-tests-r7" x="463.6" y="215.2" textLength="963.8" clip-path="url(#breeze-testing-docker-compose-tests-line-8)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
+</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-9)">│</text><text class="breeze-testing-docker-compose-tests-r5" x="463.6" y="239.6" textLength="963.8" clip-path="url(#breeze-testing-docker-compose-tests-line-9)">[default:&#160;latest]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-10)">│</text><text class="breeze-testing-docker-compose-tests-r4" x="24.4" y="264" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-10)">-</text><text class="breeze-testing-docker-compose-tests-r4" x="36.6" y="264" textLength="85.4" clip-path="url(#breeze-testing-docker-compose-tests-line-10)">-python</text><text cl [...]
+</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-11)">│</text><text class="breeze-testing-docker-compose-tests-r7" x="463.6" y="288.4" textLength="732" clip-path="url(#breeze-testing-docker-compose-tests-line-11)">(&gt;3.7&lt;&#160;|&#160;3.8&#160;|&#160;3.9&#160;|&#160;3.10&#160;|&#160;3.11)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-12)">│</text><text class="breeze-testing-docker-compose-tests-r5" x="463.6" y="312.8" textLength="732" clip-path="url(#breeze-testing-docker-compose-tests-line-12)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-13)">│</text><text class="breeze-testing-docker-compose-tests-r4" x="24.4" y="337.2" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-13)">-</text><text class="breeze-testing-docker-compose-tests-r4" x="36.6" y="337.2" textLength="61" clip-path="url(#breeze-testing-docker-compose-tests-line-13)">-skip</text><text  [...]
+</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-14)">│</text><text class="breeze-testing-docker-compose-tests-r4" x="24.4" y="361.6" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-14)">-</text><text class="breeze-testing-docker-compose-tests-r4" x="36.6" y="361.6" textLength="61" clip-path="url(#breeze-testing-docker-compose-tests-line-14)">-wait</text><text  [...]
+</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-15)">│</text><text class="breeze-testing-docker-compose-tests-r5" x="463.6" y="386" textLength="658.8" clip-path="url(#breeze-testing-docker-compose-tests-line-15)">[default:&#160;300;&#160;0&lt;=x&lt;=600]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-16)">│</text><text class="breeze-testing-docker-compose-tests-r4" x="24.4" y="410.4" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-16)">-</text><text class="breeze-testing-docker-compose-tests-r4" x="36.6" y="410.4" textLength="85.4" clip-path="url(#breeze-testing-docker-compose-tests-line-16)">-github</text><t [...]
+</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-17)">│</text><text class="breeze-testing-docker-compose-tests-r5" x="463.6" y="434.8" textLength="585.6" clip-path="url(#breeze-testing-docker-compose-tests-line-17)">[default:&#160;apache/airflow]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text [...]
 </text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="459.2" textLength="1464" clip-path="url(#breeze-testing-docker-compose-tests-line-18)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-docker-compose-tests-r2" x="1464" y="459.2" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-18)">
+</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="483.6" textLength="24.4" clip-path="url(#breeze-testing-docker-compose-tests-line-19)">╭─</text><text class="breeze-testing-docker-compose-tests-r5" x="24.4" y="483.6" textLength="195.2" clip-path="url(#breeze-testing-docker-compose-tests-line-19)">&#160;Common&#160;options&#160;</text><text class="breeze-testing-docker-compose-tests-r5" x="219.6" y="483.6" textLength="1220" clip-path="url(#breeze-testing-docker-compose [...]
+</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-20)">│</text><text class="breeze-testing-docker-compose-tests-r4" x="24.4" y="508" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-20)">-</text><text class="breeze-testing-docker-compose-tests-r4" x="36.6" y="508" textLength="97.6" clip-path="url(#breeze-testing-docker-compose-tests-line-20)">-verbose</text><text c [...]
+</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-21)">│</text><text class="breeze-testing-docker-compose-tests-r4" x="24.4" y="532.4" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-21)">-</text><text class="breeze-testing-docker-compose-tests-r4" x="36.6" y="532.4" textLength="48.8" clip-path="url(#breeze-testing-docker-compose-tests-line-21)">-dry</text><text [...]
+</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-22)">│</text><text class="breeze-testing-docker-compose-tests-r4" x="24.4" y="556.8" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-22)">-</text><text class="breeze-testing-docker-compose-tests-r4" x="36.6" y="556.8" textLength="61" clip-path="url(#breeze-testing-docker-compose-tests-line-22)">-help</text><text  [...]
+</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="581.2" textLength="1464" clip-path="url(#breeze-testing-docker-compose-tests-line-23)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-docker-compose-tests-r2" x="1464" y="581.2" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-23)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output_testing_integration-tests.svg b/images/breeze/output_testing_integration-tests.svg
index 5c3c553535..b1325e0d6c 100644
--- a/images/breeze/output_testing_integration-tests.svg
+++ b/images/breeze/output_testing_integration-tests.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 904.0" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 928.4" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -43,7 +43,7 @@
 
     <defs>
     <clipPath id="breeze-testing-integration-tests-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="853.0" />
+      <rect x="0" y="0" width="1463.0" height="877.4" />
     </clipPath>
     <clipPath id="breeze-testing-integration-tests-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -147,9 +147,12 @@
 <clipPath id="breeze-testing-integration-tests-line-33">
     <rect x="0" y="806.7" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="breeze-testing-integration-tests-line-34">
+    <rect x="0" y="831.1" width="1464" height="24.65"/>
+            </clipPath>
     </defs>
 
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="902" rx="8"/><text class="breeze-testing-integration-tests-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;testing&#160;integration-tests</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="926.4" rx="8"/><text class="breeze-testing-integration-tests-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;testing&#160;integration-tests</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -165,35 +168,36 @@
 </text><text class="breeze-testing-integration-tests-r2" x="12.2" y="93.2" textLength="427" clip-path="url(#breeze-testing-integration-tests-line-3)">Run&#160;the&#160;specified&#160;integratio&#160;tests.</text><text class="breeze-testing-integration-tests-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-3)">
 </text><text class="breeze-testing-integration-tests-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-4)">
 </text><text class="breeze-testing-integration-tests-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-testing-integration-tests-line-5)">╭─</text><text class="breeze-testing-integration-tests-r5" x="24.4" y="142" textLength="512.4" clip-path="url(#breeze-testing-integration-tests-line-5)">&#160;Basic&#160;flag&#160;for&#160;integration&#160;tests&#160;command&#160;</text><text class="breeze-testing-integration-tests-r5" x="536.8" y="142" textLength="902.8" clip-path="url(#breez [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-6)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-6)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="166.4" textLength="146.4" clip-path="url(#breeze-testing-integration-tests-line-6)">-integration</text><text class="bree [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-7)">│</text><text class="breeze-testing-integration-tests-r6" x="317.2" y="190.8" textLength="1122.4" clip-path="url(#breeze-testing-integration-tests-line-7)">(all&#160;|&#160;all-testable&#160;|&#160;cassandra&#160;|&#160;celery&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;otel&#160;|&#160;pinot&#160;|&#160;statsd&#160;|&#160;statsd</tex [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-8)">│</text><text class="breeze-testing-integration-tests-r6" x="317.2" y="215.2" textLength="1122.4" clip-path="url(#breeze-testing-integration-tests-line-8)">|&#160;trino)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-9)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-9)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="239.6" textLength="61" clip-path="url(#breeze-testing-integration-tests-line-9)">-test</text><text class="breeze-testing [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-10)">│</text><text class="breeze-testing-integration-tests-r6" x="317.2" y="264" textLength="988.2" clip-path="url(#breeze-testing-integration-tests-line-10)">(INTEGER&#160;RANGE)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-11)">│</text><text class="breeze-testing-integration-tests-r5" x="317.2" y="288.4" textLength="988.2" clip-path="url(#breeze-testing-integration-tests-line-11)">[default:&#160;60;&#160;x&gt;=0]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-12)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="312.8" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-12)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="312.8" textLength="36.6" clip-path="url(#breeze-testing-integration-tests-line-12)">-db</text><text class="breeze-test [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-13)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="337.2" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-13)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="337.2" textLength="97.6" clip-path="url(#breeze-testing-integration-tests-line-13)">-backend</text><text class="breeze [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-14)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="361.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-14)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="361.6" textLength="85.4" clip-path="url(#breeze-testing-integration-tests-line-14)">-python</text><text class="breeze- [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-15)">│</text><text class="breeze-testing-integration-tests-r6" x="317.2" y="386" textLength="732" clip-path="url(#breeze-testing-integration-tests-line-15)">(&gt;3.7&lt;&#160;|&#160;3.8&#160;|&#160;3.9&#160;|&#160;3.10&#160;|&#160;3.11)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-16)">│</text><text class="breeze-testing-integration-tests-r5" x="317.2" y="410.4" textLength="732" clip-path="url(#breeze-testing-integration-tests-line-16)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-17)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="434.8" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-17)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="434.8" textLength="109.8" clip-path="url(#breeze-testing-integration-tests-line-17)">-postgres</text><text class="bree [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-18)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="459.2" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-18)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="459.2" textLength="73.2" clip-path="url(#breeze-testing-integration-tests-line-18)">-mysql</text><text class="breeze-t [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-19)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="483.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-19)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="483.6" textLength="73.2" clip-path="url(#breeze-testing-integration-tests-line-19)">-mssql</text><text class="breeze-t [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="508" textLength="1464" clip-path="url(#breeze-testing-integration-tests-line-20)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-integration-tests-r2" x="1464" y="508" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-20)">
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="532.4" textLength="24.4" clip-path="url(#breeze-testing-integration-tests-line-21)">╭─</text><text class="breeze-testing-integration-tests-r5" x="24.4" y="532.4" textLength="549" clip-path="url(#breeze-testing-integration-tests-line-21)">&#160;Advanced&#160;flag&#160;for&#160;integration&#160;tests&#160;command&#160;</text><text class="breeze-testing-integration-tests-r5" x="573.4" y="532.4" textLength="866.2" clip-path="u [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-22)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="556.8" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-22)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="556.8" textLength="73.2" clip-path="url(#breeze-testing-integration-tests-line-22)">-image</text><text class="breeze-t [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-23)">│</text><text class="breeze-testing-integration-tests-r5" x="353.8" y="581.2" textLength="963.8" clip-path="url(#breeze-testing-integration-tests-line-23)">[default:&#160;latest]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-24)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="605.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-24)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="605.6" textLength="73.2" clip-path="url(#breeze-testing-integration-tests-line-24)">-mount</text><text class="breeze-t [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-25)">│</text><text class="breeze-testing-integration-tests-r2" x="353.8" y="630" textLength="1085.8" clip-path="url(#breeze-testing-integration-tests-line-25)">selected).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-26)">│</text><text class="breeze-testing-integration-tests-r6" x="353.8" y="654.4" textLength="1085.8" clip-path="url(#breeze-testing-integration-tests-line-26)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-27)">│</text><text class="breeze-testing-integration-tests-r5" x="353.8" y="678.8" textLength="1085.8" clip-path="url(#breeze-testing-integration-tests-line-27)">[default:&#160;selected]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-28)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="703.2" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-28)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="703.2" textLength="61" clip-path="url(#breeze-testing-integration-tests-line-28)">-skip</text><text class="breeze-test [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="727.6" textLength="1464" clip-path="url(#breeze-testing-integration-tests-line-29)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-integration-tests-r2" x="1464" y="727.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-29)">
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="752" textLength="24.4" clip-path="url(#breeze-testing-integration-tests-line-30)">╭─</text><text class="breeze-testing-integration-tests-r5" x="24.4" y="752" textLength="195.2" clip-path="url(#breeze-testing-integration-tests-line-30)">&#160;Common&#160;options&#160;</text><text class="breeze-testing-integration-tests-r5" x="219.6" y="752" textLength="1220" clip-path="url(#breeze-testing-integration-tests-line-30)">─────── [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-31)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="776.4" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-31)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="776.4" textLength="97.6" clip-path="url(#breeze-testing-integration-tests-line-31)">-verbose</text><text class="breeze [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-32)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="800.8" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-32)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="800.8" textLength="48.8" clip-path="url(#breeze-testing-integration-tests-line-32)">-dry</text><text class="breeze-tes [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-33)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="825.2" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-33)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="825.2" textLength="61" clip-path="url(#breeze-testing-integration-tests-line-33)">-help</text><text class="breeze-test [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="849.6" textLength="1464" clip-path="url(#breeze-testing-integration-tests-line-34)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-integration-tests-r2" x="1464" y="849.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-34)">
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-6)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-6)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="166.4" textLength="146.4" clip-path="url(#breeze-testing-integration-tests-line-6)">-integration</text><text class="bree [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-7)">│</text><text class="breeze-testing-integration-tests-r6" x="329.4" y="190.8" textLength="1110.2" clip-path="url(#breeze-testing-integration-tests-line-7)">(all&#160;|&#160;all-testable&#160;|&#160;cassandra&#160;|&#160;celery&#160;|&#160;kafka&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;otel&#160;|&#160;pinot&#160;|&#160;statsd</text [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-8)">│</text><text class="breeze-testing-integration-tests-r6" x="329.4" y="215.2" textLength="1110.2" clip-path="url(#breeze-testing-integration-tests-line-8)">|&#160;statsd&#160;|&#160;trino)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-9)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-9)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="239.6" textLength="61" clip-path="url(#breeze-testing-integration-tests-line-9)">-test</text><text class="breeze-testing [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-10)">│</text><text class="breeze-testing-integration-tests-r6" x="329.4" y="264" textLength="988.2" clip-path="url(#breeze-testing-integration-tests-line-10)">(INTEGER&#160;RANGE)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-11)">│</text><text class="breeze-testing-integration-tests-r5" x="329.4" y="288.4" textLength="988.2" clip-path="url(#breeze-testing-integration-tests-line-11)">[default:&#160;60;&#160;x&gt;=0]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-12)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="312.8" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-12)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="312.8" textLength="36.6" clip-path="url(#breeze-testing-integration-tests-line-12)">-db</text><text class="breeze-test [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-13)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="337.2" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-13)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="337.2" textLength="97.6" clip-path="url(#breeze-testing-integration-tests-line-13)">-backend</text><text class="breeze [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-14)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="361.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-14)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="361.6" textLength="85.4" clip-path="url(#breeze-testing-integration-tests-line-14)">-python</text><text class="breeze- [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-15)">│</text><text class="breeze-testing-integration-tests-r6" x="329.4" y="386" textLength="732" clip-path="url(#breeze-testing-integration-tests-line-15)">(&gt;3.7&lt;&#160;|&#160;3.8&#160;|&#160;3.9&#160;|&#160;3.10&#160;|&#160;3.11)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-16)">│</text><text class="breeze-testing-integration-tests-r5" x="329.4" y="410.4" textLength="732" clip-path="url(#breeze-testing-integration-tests-line-16)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-17)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="434.8" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-17)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="434.8" textLength="109.8" clip-path="url(#breeze-testing-integration-tests-line-17)">-postgres</text><text class="bree [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-18)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="459.2" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-18)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="459.2" textLength="73.2" clip-path="url(#breeze-testing-integration-tests-line-18)">-mysql</text><text class="breeze-t [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-19)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="483.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-19)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="483.6" textLength="73.2" clip-path="url(#breeze-testing-integration-tests-line-19)">-mssql</text><text class="breeze-t [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-20)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="508" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-20)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="508" textLength="85.4" clip-path="url(#breeze-testing-integration-tests-line-20)">-github</text><text class="breeze-testin [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="532.4" textLength="1464" clip-path="url(#breeze-testing-integration-tests-line-21)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-integration-tests-r2" x="1464" y="532.4" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-21)">
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="556.8" textLength="24.4" clip-path="url(#breeze-testing-integration-tests-line-22)">╭─</text><text class="breeze-testing-integration-tests-r5" x="24.4" y="556.8" textLength="549" clip-path="url(#breeze-testing-integration-tests-line-22)">&#160;Advanced&#160;flag&#160;for&#160;integration&#160;tests&#160;command&#160;</text><text class="breeze-testing-integration-tests-r5" x="573.4" y="556.8" textLength="866.2" clip-path="u [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-23)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="581.2" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-23)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="581.2" textLength="73.2" clip-path="url(#breeze-testing-integration-tests-line-23)">-image</text><text class="breeze-t [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-24)">│</text><text class="breeze-testing-integration-tests-r5" x="353.8" y="605.6" textLength="963.8" clip-path="url(#breeze-testing-integration-tests-line-24)">[default:&#160;latest]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-25)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="630" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-25)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="630" textLength="73.2" clip-path="url(#breeze-testing-integration-tests-line-25)">-mount</text><text class="breeze-testing [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-26)">│</text><text class="breeze-testing-integration-tests-r2" x="353.8" y="654.4" textLength="1085.8" clip-path="url(#breeze-testing-integration-tests-line-26)">selected).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-27)">│</text><text class="breeze-testing-integration-tests-r6" x="353.8" y="678.8" textLength="1085.8" clip-path="url(#breeze-testing-integration-tests-line-27)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-28)">│</text><text class="breeze-testing-integration-tests-r5" x="353.8" y="703.2" textLength="1085.8" clip-path="url(#breeze-testing-integration-tests-line-28)">[default:&#160;selected]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-29)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="727.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-29)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="727.6" textLength="61" clip-path="url(#breeze-testing-integration-tests-line-29)">-skip</text><text class="breeze-test [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="752" textLength="1464" clip-path="url(#breeze-testing-integration-tests-line-30)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-integration-tests-r2" x="1464" y="752" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-30)">
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="776.4" textLength="24.4" clip-path="url(#breeze-testing-integration-tests-line-31)">╭─</text><text class="breeze-testing-integration-tests-r5" x="24.4" y="776.4" textLength="195.2" clip-path="url(#breeze-testing-integration-tests-line-31)">&#160;Common&#160;options&#160;</text><text class="breeze-testing-integration-tests-r5" x="219.6" y="776.4" textLength="1220" clip-path="url(#breeze-testing-integration-tests-line-31)">─ [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-32)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="800.8" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-32)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="800.8" textLength="97.6" clip-path="url(#breeze-testing-integration-tests-line-32)">-verbose</text><text class="breeze [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-33)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="825.2" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-33)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="825.2" textLength="48.8" clip-path="url(#breeze-testing-integration-tests-line-33)">-dry</text><text class="breeze-tes [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-34)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="849.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-34)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="849.6" textLength="61" clip-path="url(#breeze-testing-integration-tests-line-34)">-help</text><text class="breeze-test [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="874" textLength="1464" clip-path="url(#breeze-testing-integration-tests-line-35)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-integration-tests-r2" x="1464" y="874" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-35)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output_testing_tests.svg b/images/breeze/output_testing_tests.svg
index d3b9d8502e..4c00df095a 100644
--- a/images/breeze/output_testing_tests.svg
+++ b/images/breeze/output_testing_tests.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1318.8" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1416.3999999999999" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -43,7 +43,7 @@
 
     <defs>
     <clipPath id="breeze-testing-tests-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="1267.8" />
+      <rect x="0" y="0" width="1463.0" height="1365.3999999999999" />
     </clipPath>
     <clipPath id="breeze-testing-tests-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -198,9 +198,21 @@
 <clipPath id="breeze-testing-tests-line-50">
     <rect x="0" y="1221.5" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="breeze-testing-tests-line-51">
+    <rect x="0" y="1245.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-testing-tests-line-52">
+    <rect x="0" y="1270.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-testing-tests-line-53">
+    <rect x="0" y="1294.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-testing-tests-line-54">
+    <rect x="0" y="1319.1" width="1464" height="24.65"/>
+            </clipPath>
     </defs>
 
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1316.8" rx="8"/><text class="breeze-testing-tests-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;testing&#160;tests</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1414.4" rx="8"/><text class="breeze-testing-tests-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;testing&#160;tests</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -216,52 +228,56 @@
 </text><text class="breeze-testing-tests-r2" x="12.2" y="93.2" textLength="439.2" clip-path="url(#breeze-testing-tests-line-3)">Run&#160;the&#160;specified&#160;unit&#160;test&#160;targets.</text><text class="breeze-testing-tests-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-3)">
 </text><text class="breeze-testing-tests-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-4)">
 </text><text class="breeze-testing-tests-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-testing-tests-line-5)">╭─</text><text class="breeze-testing-tests-r5" x="24.4" y="142" textLength="366" clip-path="url(#breeze-testing-tests-line-5)">&#160;Basic&#160;flag&#160;for&#160;tests&#160;command&#160;</text><text class="breeze-testing-tests-r5" x="390.4" y="142" textLength="1049.2" clip-path="url(#breeze-testing-tests-line-5)">───────────────────────────────────────────────────── [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-6)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-6)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="166.4" textLength="61" clip-path="url(#breeze-testing-tests-line-6)">-test</text><text class="breeze-testing-tests-r4" x="97.6" y="166.4" textLength="61" clip-path="url(#breeze-tes [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-7)">│</text><text class="breeze-testing-tests-r2" x="317.2" y="190.8" textLength="915" clip-path="url(#breeze-testing-tests-line-7)">`Providers[airbyte,http]`&#160;or&#160;excluded&#160;from&#160;the&#160;full&#160;test&#160;suite:&#160;`Providers[</text><text class="breeze-testing-tests-r6" x="1232.2" y="190.8" textLength="85.4" clip-path="url(#breeze-testing-tests-li [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-8)">│</text><text class="breeze-testing-tests-r7" x="317.2" y="215.2" textLength="1122.4" clip-path="url(#breeze-testing-tests-line-8)">(All&#160;|&#160;API&#160;|&#160;Always&#160;|&#160;CLI&#160;|&#160;Core&#160;|&#160;Other&#160;|&#160;Providers&#160;|&#160;WWW&#160;|&#160;PlainAsserts&#160;|&#160;Postgres&#160;|&#160;MySQL</text><text class="breeze-testing-tests-r5 [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-9)">│</text><text class="breeze-testing-tests-r7" x="317.2" y="239.6" textLength="1122.4" clip-path="url(#breeze-testing-tests-line-9)">|&#160;Quarantine)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-testing-tests-line-10)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="264" textLength="12.2" clip-path="url(#breeze-testing-tests-line-10)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="264" textLength="61" clip-path="url(#breeze-testing-tests-line-10)">-test</text><text class="breeze-testing-tests-r4" x="97.6" y="264" textLength="97.6" clip-path="url(#breeze-testin [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-11)">│</text><text class="breeze-testing-tests-r7" x="317.2" y="288.4" textLength="988.2" clip-path="url(#breeze-testing-tests-line-11)">(INTEGER&#160;RANGE)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-12)">│</text><text class="breeze-testing-tests-r5" x="317.2" y="312.8" textLength="988.2" clip-path="url(#breeze-testing-tests-line-12)">[default:&#160;60;&#160;x&gt;=0]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-13)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="337.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-13)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="337.2" textLength="97.6" clip-path="url(#breeze-testing-tests-line-13)">-collect</text><text class="breeze-testing-tests-r4" x="134.2" y="337.2" textLength="61" clip-path="url(#b [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-14)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="361.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-14)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="361.6" textLength="36.6" clip-path="url(#breeze-testing-tests-line-14)">-db</text><text class="breeze-testing-tests-r4" x="73.2" y="361.6" textLength="73.2" clip-path="url(#breez [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-testing-tests-line-15)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="386" textLength="12.2" clip-path="url(#breeze-testing-tests-line-15)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="386" textLength="97.6" clip-path="url(#breeze-testing-tests-line-15)">-backend</text><text class="breeze-testing-tests-r6" x="268.4" y="386" textLength="24.4" clip-path="url(#breeze- [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-16)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="410.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-16)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="410.4" textLength="85.4" clip-path="url(#breeze-testing-tests-line-16)">-python</text><text class="breeze-testing-tests-r6" x="268.4" y="410.4" textLength="24.4" clip-path="url(# [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-17)">│</text><text class="breeze-testing-tests-r7" x="317.2" y="434.8" textLength="732" clip-path="url(#breeze-testing-tests-line-17)">(&gt;3.7&lt;&#160;|&#160;3.8&#160;|&#160;3.9&#160;|&#160;3.10&#160;|&#160;3.11)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-18)">│</text><text class="breeze-testing-tests-r5" x="317.2" y="459.2" textLength="732" clip-path="url(#breeze-testing-tests-line-18)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-19)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="483.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-19)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="483.6" textLength="109.8" clip-path="url(#breeze-testing-tests-line-19)">-postgres</text><text class="breeze-testing-tests-r4" x="146.4" y="483.6" textLength="97.6" clip-path="ur [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-testing-tests-line-20)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="508" textLength="12.2" clip-path="url(#breeze-testing-tests-line-20)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="508" textLength="73.2" clip-path="url(#breeze-testing-tests-line-20)">-mysql</text><text class="breeze-testing-tests-r4" x="109.8" y="508" textLength="97.6" clip-path="url(#breeze-te [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-21)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="532.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-21)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="532.4" textLength="73.2" clip-path="url(#breeze-testing-tests-line-21)">-mssql</text><text class="breeze-testing-tests-r4" x="109.8" y="532.4" textLength="97.6" clip-path="url(#b [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-22)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="556.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-22)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="556.8" textLength="146.4" clip-path="url(#breeze-testing-tests-line-22)">-integration</text><text class="breeze-testing-tests-r2" x="317.2" y="556.8" textLength="1122.4" clip-pat [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-23)">│</text><text class="breeze-testing-tests-r7" x="317.2" y="581.2" textLength="1122.4" clip-path="url(#breeze-testing-tests-line-23)">(all&#160;|&#160;all-testable&#160;|&#160;cassandra&#160;|&#160;celery&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;otel&#160;|&#160;pinot&#160;|&#160;statsd&#160;|&#160;statsd</text><text class="breeze-testing-tests-r5" x="145 [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-24)">│</text><text class="breeze-testing-tests-r7" x="317.2" y="605.6" textLength="1122.4" clip-path="url(#breeze-testing-tests-line-24)">|&#160;trino)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="630" textLength="1464" clip-path="url(#breeze-testing-tests-line-25)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-tests-r2" x="1464" y="630" textLength="12.2" clip-path="url(#breeze-testing-tests-line-25)">
-</text><text class="breeze-testing-tests-r5" x="0" y="654.4" textLength="24.4" clip-path="url(#breeze-testing-tests-line-26)">╭─</text><text class="breeze-testing-tests-r5" x="24.4" y="654.4" textLength="439.2" clip-path="url(#breeze-testing-tests-line-26)">&#160;Options&#160;for&#160;parallel&#160;test&#160;commands&#160;</text><text class="breeze-testing-tests-r5" x="463.6" y="654.4" textLength="976" clip-path="url(#breeze-testing-tests-line-26)">─────────────────────────────────────── [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-27)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="678.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-27)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="678.8" textLength="48.8" clip-path="url(#breeze-testing-tests-line-27)">-run</text><text class="breeze-testing-tests-r4" x="85.4" y="678.8" textLength="146.4" clip-path="url(#bre [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-28)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="703.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-28)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="703.2" textLength="146.4" clip-path="url(#breeze-testing-tests-line-28)">-parallelism</text><text class="breeze-testing-tests-r2" x="378.2" y="703.2" textLength="915" clip-path=" [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-29)">│</text><text class="breeze-testing-tests-r7" x="378.2" y="727.6" textLength="915" clip-path="url(#breeze-testing-tests-line-29)">(INTEGER&#160;RANGE)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-testing-tests-line-30)">│</text><text class="breeze-testing-tests-r5" x="378.2" y="752" textLength="915" clip-path="url(#breeze-testing-tests-line-30)">[default:&#160;4;&#160;1&lt;=x&lt;=8]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-31)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="776.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-31)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="776.4" textLength="109.8" clip-path="url(#breeze-testing-tests-line-31)">-parallel</text><text class="breeze-testing-tests-r4" x="146.4" y="776.4" textLength="134.2" clip-path="u [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-32)">│</text><text class="breeze-testing-tests-r5" x="378.2" y="800.8" textLength="780.8" clip-path="url(#breeze-testing-tests-line-32)">[default:&#160;API&#160;Always&#160;CLI&#160;Core&#160;Other&#160;Providers&#160;WWW&#160;PlainAsserts]&#160;</text><text class="breeze-testing-tests-r5" x="1451.8" y="800.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-33)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="825.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-33)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="825.2" textLength="61" clip-path="url(#breeze-testing-tests-line-33)">-skip</text><text class="breeze-testing-tests-r4" x="97.6" y="825.2" textLength="97.6" clip-path="url(#breez [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-34)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="849.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-34)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="849.6" textLength="73.2" clip-path="url(#breeze-testing-tests-line-34)">-debug</text><text class="breeze-testing-tests-r4" x="109.8" y="849.6" textLength="122" clip-path="url(#br [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-testing-tests-line-35)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="874" textLength="12.2" clip-path="url(#breeze-testing-tests-line-35)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="874" textLength="97.6" clip-path="url(#breeze-testing-tests-line-35)">-include</text><text class="breeze-testing-tests-r4" x="134.2" y="874" textLength="195.2" clip-path="url(#breeze [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="898.4" textLength="1464" clip-path="url(#breeze-testing-tests-line-36)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-tests-r2" x="1464" y="898.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-36)">
-</text><text class="breeze-testing-tests-r5" x="0" y="922.8" textLength="24.4" clip-path="url(#breeze-testing-tests-line-37)">╭─</text><text class="breeze-testing-tests-r5" x="24.4" y="922.8" textLength="402.6" clip-path="url(#breeze-testing-tests-line-37)">&#160;Advanced&#160;flag&#160;for&#160;tests&#160;command&#160;</text><text class="breeze-testing-tests-r5" x="427" y="922.8" textLength="1012.6" clip-path="url(#breeze-testing-tests-line-37)">───────────────────────────────────────── [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-38)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="947.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-38)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="947.2" textLength="73.2" clip-path="url(#breeze-testing-tests-line-38)">-image</text><text class="breeze-testing-tests-r4" x="109.8" y="947.2" textLength="48.8" clip-path="url(#b [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-39)">│</text><text class="breeze-testing-tests-r5" x="353.8" y="971.6" textLength="963.8" clip-path="url(#breeze-testing-tests-line-39)">[default:&#160;latest]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="996" textLength="12.2" clip-path="url(#breeze-testing-tests-line-40)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="996" textLength="12.2" clip-path="url(#breeze-testing-tests-line-40)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="996" textLength="73.2" clip-path="url(#breeze-testing-tests-line-40)">-mount</text><text class="breeze-testing-tests-r4" x="109.8" y="996" textLength="97.6" clip-path="url(#breeze-te [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1020.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-41)">│</text><text class="breeze-testing-tests-r2" x="353.8" y="1020.4" textLength="1085.8" clip-path="url(#breeze-testing-tests-line-41)">selected).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1044.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-42)">│</text><text class="breeze-testing-tests-r7" x="353.8" y="1044.8" textLength="1085.8" clip-path="url(#breeze-testing-tests-line-42)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1069.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-43)">│</text><text class="breeze-testing-tests-r5" x="353.8" y="1069.2" textLength="1085.8" clip-path="url(#breeze-testing-tests-line-43)">[default:&#160;selected]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1093.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-44)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-44)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1093.6" textLength="97.6" clip-path="url(#breeze-testing-tests-line-44)">-upgrade</text><text class="breeze-testing-tests-r4" x="134.2" y="1093.6" textLength="61" clip-path="ur [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1118" textLength="12.2" clip-path="url(#breeze-testing-tests-line-45)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1118" textLength="12.2" clip-path="url(#breeze-testing-tests-line-45)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1118" textLength="85.4" clip-path="url(#breeze-testing-tests-line-45)">-remove</text><text class="breeze-testing-tests-r4" x="122" y="1118" textLength="158.6" clip-path="url(#breez [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1142.4" textLength="1464" clip-path="url(#breeze-testing-tests-line-46)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-tests-r2" x="1464" y="1142.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-46)">
-</text><text class="breeze-testing-tests-r5" x="0" y="1166.8" textLength="24.4" clip-path="url(#breeze-testing-tests-line-47)">╭─</text><text class="breeze-testing-tests-r5" x="24.4" y="1166.8" textLength="195.2" clip-path="url(#breeze-testing-tests-line-47)">&#160;Common&#160;options&#160;</text><text class="breeze-testing-tests-r5" x="219.6" y="1166.8" textLength="1220" clip-path="url(#breeze-testing-tests-line-47)">────────────────────────────────────────────────────────────────────── [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1191.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-48)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-48)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1191.2" textLength="97.6" clip-path="url(#breeze-testing-tests-line-48)">-verbose</text><text class="breeze-testing-tests-r6" x="158.6" y="1191.2" textLength="24.4" clip-path=" [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1215.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-49)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1215.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-49)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1215.6" textLength="48.8" clip-path="url(#breeze-testing-tests-line-49)">-dry</text><text class="breeze-testing-tests-r4" x="85.4" y="1215.6" textLength="48.8" clip-path="url(# [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1240" textLength="12.2" clip-path="url(#breeze-testing-tests-line-50)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1240" textLength="12.2" clip-path="url(#breeze-testing-tests-line-50)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1240" textLength="61" clip-path="url(#breeze-testing-tests-line-50)">-help</text><text class="breeze-testing-tests-r6" x="158.6" y="1240" textLength="24.4" clip-path="url(#breeze-t [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1264.4" textLength="1464" clip-path="url(#breeze-testing-tests-line-51)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-tests-r2" x="1464" y="1264.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-51)">
+</text><text class="breeze-testing-tests-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-6)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-6)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="166.4" textLength="61" clip-path="url(#breeze-testing-tests-line-6)">-test</text><text class="breeze-testing-tests-r4" x="97.6" y="166.4" textLength="61" clip-path="url(#breeze-tes [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-7)">│</text><text class="breeze-testing-tests-r2" x="329.4" y="190.8" textLength="1110.2" clip-path="url(#breeze-testing-tests-line-7)">run:&#160;`Providers[airbyte,http]`&#160;or&#160;excluded&#160;from&#160;the&#160;full&#160;test&#160;suite:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-8)">│</text><text class="breeze-testing-tests-r2" x="329.4" y="215.2" textLength="134.2" clip-path="url(#breeze-testing-tests-line-8)">`Providers[</text><text class="breeze-testing-tests-r6" x="463.6" y="215.2" textLength="85.4" clip-path="url(#breeze-testing-tests-line-8)">-amazon</text><text class="breeze-testing-tests-r2" x="549" y="215.2" textLength="890.6" clip-pa [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-9)">│</text><text class="breeze-testing-tests-r7" x="329.4" y="239.6" textLength="1110.2" clip-path="url(#breeze-testing-tests-line-9)">(All&#160;|&#160;API&#160;|&#160;Always&#160;|&#160;CLI&#160;|&#160;Core&#160;|&#160;Other&#160;|&#160;Providers&#160;|&#160;WWW&#160;|&#160;PlainAsserts&#160;|&#160;Postgres&#160;|&#160;&#160;&#160;&#160;&#160;</text><text class="bree [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-testing-tests-line-10)">│</text><text class="breeze-testing-tests-r7" x="329.4" y="264" textLength="1110.2" clip-path="url(#breeze-testing-tests-line-10)">MySQL&#160;|&#160;Quarantine)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-11)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="288.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-11)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="288.4" textLength="61" clip-path="url(#breeze-testing-tests-line-11)">-test</text><text class="breeze-testing-tests-r4" x="97.6" y="288.4" textLength="97.6" clip-path="url(#breez [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-12)">│</text><text class="breeze-testing-tests-r7" x="329.4" y="312.8" textLength="988.2" clip-path="url(#breeze-testing-tests-line-12)">(INTEGER&#160;RANGE)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-13)">│</text><text class="breeze-testing-tests-r5" x="329.4" y="337.2" textLength="988.2" clip-path="url(#breeze-testing-tests-line-13)">[default:&#160;60;&#160;x&gt;=0]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-14)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="361.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-14)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="361.6" textLength="97.6" clip-path="url(#breeze-testing-tests-line-14)">-collect</text><text class="breeze-testing-tests-r4" x="134.2" y="361.6" textLength="61" clip-path="url(#b [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-testing-tests-line-15)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="386" textLength="12.2" clip-path="url(#breeze-testing-tests-line-15)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="386" textLength="36.6" clip-path="url(#breeze-testing-tests-line-15)">-db</text><text class="breeze-testing-tests-r4" x="73.2" y="386" textLength="73.2" clip-path="url(#breeze-testin [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-16)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="410.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-16)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="410.4" textLength="97.6" clip-path="url(#breeze-testing-tests-line-16)">-backend</text><text class="breeze-testing-tests-r6" x="280.6" y="410.4" textLength="24.4" clip-path="url( [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-17)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="434.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-17)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="434.8" textLength="85.4" clip-path="url(#breeze-testing-tests-line-17)">-python</text><text class="breeze-testing-tests-r6" x="280.6" y="434.8" textLength="24.4" clip-path="url(# [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-18)">│</text><text class="breeze-testing-tests-r7" x="329.4" y="459.2" textLength="732" clip-path="url(#breeze-testing-tests-line-18)">(&gt;3.7&lt;&#160;|&#160;3.8&#160;|&#160;3.9&#160;|&#160;3.10&#160;|&#160;3.11)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-19)">│</text><text class="breeze-testing-tests-r5" x="329.4" y="483.6" textLength="732" clip-path="url(#breeze-testing-tests-line-19)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-testing-tests-line-20)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="508" textLength="12.2" clip-path="url(#breeze-testing-tests-line-20)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="508" textLength="109.8" clip-path="url(#breeze-testing-tests-line-20)">-postgres</text><text class="breeze-testing-tests-r4" x="146.4" y="508" textLength="97.6" clip-path="url(#breez [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-21)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="532.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-21)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="532.4" textLength="73.2" clip-path="url(#breeze-testing-tests-line-21)">-mysql</text><text class="breeze-testing-tests-r4" x="109.8" y="532.4" textLength="97.6" clip-path="url(#b [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-22)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="556.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-22)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="556.8" textLength="73.2" clip-path="url(#breeze-testing-tests-line-22)">-mssql</text><text class="breeze-testing-tests-r4" x="109.8" y="556.8" textLength="97.6" clip-path="url(#b [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-23)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="581.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-23)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="581.2" textLength="146.4" clip-path="url(#breeze-testing-tests-line-23)">-integration</text><text class="breeze-testing-tests-r2" x="329.4" y="581.2" textLength="1110.2" clip-pat [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-24)">│</text><text class="breeze-testing-tests-r7" x="329.4" y="605.6" textLength="1110.2" clip-path="url(#breeze-testing-tests-line-24)">(all&#160;|&#160;all-testable&#160;|&#160;cassandra&#160;|&#160;celery&#160;|&#160;kafka&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;otel&#160;|&#160;pinot&#160;|&#160;statsd</text><text class="breeze-testing-tests-r5" x="1451 [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-testing-tests-line-25)">│</text><text class="breeze-testing-tests-r7" x="329.4" y="630" textLength="1110.2" clip-path="url(#breeze-testing-tests-line-25)">|&#160;statsd&#160;|&#160;trino)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-26)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="654.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-26)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="654.4" textLength="85.4" clip-path="url(#breeze-testing-tests-line-26)">-github</text><text class="breeze-testing-tests-r4" x="122" y="654.4" textLength="134.2" clip-path="url(#b [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="678.8" textLength="1464" clip-path="url(#breeze-testing-tests-line-27)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-tests-r2" x="1464" y="678.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-27)">
+</text><text class="breeze-testing-tests-r5" x="0" y="703.2" textLength="24.4" clip-path="url(#breeze-testing-tests-line-28)">╭─</text><text class="breeze-testing-tests-r5" x="24.4" y="703.2" textLength="439.2" clip-path="url(#breeze-testing-tests-line-28)">&#160;Options&#160;for&#160;parallel&#160;test&#160;commands&#160;</text><text class="breeze-testing-tests-r5" x="463.6" y="703.2" textLength="976" clip-path="url(#breeze-testing-tests-line-28)">─────────────────────────────────────── [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-29)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="727.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-29)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="727.6" textLength="48.8" clip-path="url(#breeze-testing-tests-line-29)">-run</text><text class="breeze-testing-tests-r4" x="85.4" y="727.6" textLength="146.4" clip-path="url(#bre [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-testing-tests-line-30)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="752" textLength="12.2" clip-path="url(#breeze-testing-tests-line-30)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="752" textLength="146.4" clip-path="url(#breeze-testing-tests-line-30)">-parallelism</text><text class="breeze-testing-tests-r2" x="378.2" y="752" textLength="915" clip-path="url(#bre [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-31)">│</text><text class="breeze-testing-tests-r7" x="378.2" y="776.4" textLength="915" clip-path="url(#breeze-testing-tests-line-31)">(INTEGER&#160;RANGE)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-32)">│</text><text class="breeze-testing-tests-r5" x="378.2" y="800.8" textLength="915" clip-path="url(#breeze-testing-tests-line-32)">[default:&#160;4;&#160;1&lt;=x&lt;=8]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-33)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="825.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-33)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="825.2" textLength="109.8" clip-path="url(#breeze-testing-tests-line-33)">-parallel</text><text class="breeze-testing-tests-r4" x="146.4" y="825.2" textLength="134.2" clip-path="u [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-34)">│</text><text class="breeze-testing-tests-r5" x="378.2" y="849.6" textLength="780.8" clip-path="url(#breeze-testing-tests-line-34)">[default:&#160;API&#160;Always&#160;CLI&#160;Core&#160;Other&#160;Providers&#160;WWW&#160;PlainAsserts]&#160;</text><text class="breeze-testing-tests-r5" x="1451.8" y="849.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-testing-tests-line-35)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="874" textLength="12.2" clip-path="url(#breeze-testing-tests-line-35)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="874" textLength="61" clip-path="url(#breeze-testing-tests-line-35)">-skip</text><text class="breeze-testing-tests-r4" x="97.6" y="874" textLength="97.6" clip-path="url(#breeze-testin [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-36)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="898.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-36)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="898.4" textLength="73.2" clip-path="url(#breeze-testing-tests-line-36)">-debug</text><text class="breeze-testing-tests-r4" x="109.8" y="898.4" textLength="122" clip-path="url(#br [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-37)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="922.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-37)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="922.8" textLength="97.6" clip-path="url(#breeze-testing-tests-line-37)">-include</text><text class="breeze-testing-tests-r4" x="134.2" y="922.8" textLength="195.2" clip-path="url [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="947.2" textLength="1464" clip-path="url(#breeze-testing-tests-line-38)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-tests-r2" x="1464" y="947.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-38)">
+</text><text class="breeze-testing-tests-r5" x="0" y="971.6" textLength="24.4" clip-path="url(#breeze-testing-tests-line-39)">╭─</text><text class="breeze-testing-tests-r5" x="24.4" y="971.6" textLength="402.6" clip-path="url(#breeze-testing-tests-line-39)">&#160;Advanced&#160;flag&#160;for&#160;tests&#160;command&#160;</text><text class="breeze-testing-tests-r5" x="427" y="971.6" textLength="1012.6" clip-path="url(#breeze-testing-tests-line-39)">───────────────────────────────────────── [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="996" textLength="12.2" clip-path="url(#breeze-testing-tests-line-40)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="996" textLength="12.2" clip-path="url(#breeze-testing-tests-line-40)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="996" textLength="73.2" clip-path="url(#breeze-testing-tests-line-40)">-image</text><text class="breeze-testing-tests-r4" x="109.8" y="996" textLength="48.8" clip-path="url(#breeze-te [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1020.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-41)">│</text><text class="breeze-testing-tests-r7" x="414.8" y="1020.4" textLength="963.8" clip-path="url(#breeze-testing-tests-line-41)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1044.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-42)">│</text><text class="breeze-testing-tests-r5" x="414.8" y="1044.8" textLength="963.8" clip-path="url(#breeze-testing-tests-line-42)">[default:&#160;latest]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1069.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-43)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-43)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1069.2" textLength="73.2" clip-path="url(#breeze-testing-tests-line-43)">-mount</text><text class="breeze-testing-tests-r4" x="109.8" y="1069.2" textLength="97.6" clip-path="ur [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1093.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-44)">│</text><text class="breeze-testing-tests-r2" x="414.8" y="1093.6" textLength="1024.8" clip-path="url(#breeze-testing-tests-line-44)">selected).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1118" textLength="12.2" clip-path="url(#breeze-testing-tests-line-45)">│</text><text class="breeze-testing-tests-r7" x="414.8" y="1118" textLength="1024.8" clip-path="url(#breeze-testing-tests-line-45)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1142.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-46)">│</text><text class="breeze-testing-tests-r5" x="414.8" y="1142.4" textLength="1024.8" clip-path="url(#breeze-testing-tests-line-46)">[default:&#160;selected]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1166.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-47)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-47)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1166.8" textLength="97.6" clip-path="url(#breeze-testing-tests-line-47)">-upgrade</text><text class="breeze-testing-tests-r4" x="134.2" y="1166.8" textLength="61" clip-path="ur [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1191.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-48)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-48)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1191.2" textLength="85.4" clip-path="url(#breeze-testing-tests-line-48)">-remove</text><text class="breeze-testing-tests-r4" x="122" y="1191.2" textLength="158.6" clip-path="ur [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1215.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-49)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1215.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-49)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1215.6" textLength="61" clip-path="url(#breeze-testing-tests-line-49)">-skip</text><text class="breeze-testing-tests-r4" x="97.6" y="1215.6" textLength="244" clip-path="url(#br [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1240" textLength="1464" clip-path="url(#breeze-testing-tests-line-50)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-tests-r2" x="1464" y="1240" textLength="12.2" clip-path="url(#breeze-testing-tests-line-50)">
+</text><text class="breeze-testing-tests-r5" x="0" y="1264.4" textLength="24.4" clip-path="url(#breeze-testing-tests-line-51)">╭─</text><text class="breeze-testing-tests-r5" x="24.4" y="1264.4" textLength="195.2" clip-path="url(#breeze-testing-tests-line-51)">&#160;Common&#160;options&#160;</text><text class="breeze-testing-tests-r5" x="219.6" y="1264.4" textLength="1220" clip-path="url(#breeze-testing-tests-line-51)">────────────────────────────────────────────────────────────────────── [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1288.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-52)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-52)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1288.8" textLength="97.6" clip-path="url(#breeze-testing-tests-line-52)">-verbose</text><text class="breeze-testing-tests-r6" x="158.6" y="1288.8" textLength="24.4" clip-path=" [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1313.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-53)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1313.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-53)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1313.2" textLength="48.8" clip-path="url(#breeze-testing-tests-line-53)">-dry</text><text class="breeze-testing-tests-r4" x="85.4" y="1313.2" textLength="48.8" clip-path="url(# [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1337.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-54)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1337.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-54)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1337.6" textLength="61" clip-path="url(#breeze-testing-tests-line-54)">-help</text><text class="breeze-testing-tests-r6" x="158.6" y="1337.6" textLength="24.4" clip-path="url(# [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1362" textLength="1464" clip-path="url(#breeze-testing-tests-line-55)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-tests-r2" x="1464" y="1362" textLength="12.2" clip-path="url(#breeze-testing-tests-line-55)">
 </text>
     </g>
     </g>
diff --git a/scripts/ci/docker-compose/_docker.env b/scripts/ci/docker-compose/_docker.env
index 7eb8a7efd6..ec53b2a433 100644
--- a/scripts/ci/docker-compose/_docker.env
+++ b/scripts/ci/docker-compose/_docker.env
@@ -17,7 +17,6 @@
 AIRFLOW_CI_IMAGE
 AIRFLOW_EXTRAS
 AIRFLOW_ENABLE_AIP_44
-AIRFLOW_ENABLE_AIP_52
 AIRFLOW_CONSTRAINTS_REFERENCE
 ANSWER
 BACKEND
@@ -47,6 +46,7 @@ INIT_SCRIPT_FILE
 INSTALL_AIRFLOW_VERSION
 AIRFLOW_CONSTRAINTS_MODE
 INSTALL_PROVIDERS_FROM_SOURCES
+INSTALL_SELECTED_PROVIDERS
 USE_AIRFLOW_VERSION
 USE_PACKAGES_FROM_DIST
 ISSUE_ID
@@ -54,6 +54,7 @@ LOAD_DEFAULT_CONNECTIONS
 LOAD_EXAMPLES
 MYSQL_VERSION
 NUM_RUNS
+ONLY_MIN_VERSION_UPDATE
 PACKAGE_FORMAT
 POSTGRES_VERSION
 PYTHONDONTWRITEBYTECODE
@@ -61,12 +62,12 @@ PYTHON_MAJOR_MINOR_VERSION
 REMOVE_ARM_PACKAGES
 RUN_TESTS
 RUN_SYSTEM_TESTS
-START_AIRFLOW
 SKIP_CONSTRAINTS
 SKIP_ENVIRONMENT_INITIALIZATION
 SKIP_PROVIDER_TESTS
 SKIP_SSH_SETUP
 SUSPENDED_PROVIDERS_FOLDERS
+START_AIRFLOW
 TEST_TIMEOUT
 TEST_TYPE
 UPGRADE_BOTO
diff --git a/scripts/ci/docker-compose/backend-mssql.yml b/scripts/ci/docker-compose/backend-mssql.yml
index 877eae2ea9..cb36328d61 100644
--- a/scripts/ci/docker-compose/backend-mssql.yml
+++ b/scripts/ci/docker-compose/backend-mssql.yml
@@ -22,7 +22,6 @@ services:
       - BACKEND=mssql
       - AIRFLOW__DATABASE__SQL_ALCHEMY_CONN=mssql+pyodbc://sa:Airflow123@mssql:1433/airflow?driver=ODBC+Driver+18+for+SQL+Server&Encrypt=No
       - AIRFLOW__CELERY__RESULT_BACKEND=db+mssql+pyodbc://sa:Airflow123@mssql:1433/airflow?driver=ODBC+Driver+18+for+SQL+Server&Encrypt=No
-      - AIRFLOW__CORE__EXECUTOR=LocalExecutor
     depends_on:
       mssql:
         condition: service_healthy
diff --git a/scripts/ci/docker-compose/backend-mysql.yml b/scripts/ci/docker-compose/backend-mysql.yml
index 34e9d34f9e..22ec85dc27 100644
--- a/scripts/ci/docker-compose/backend-mysql.yml
+++ b/scripts/ci/docker-compose/backend-mysql.yml
@@ -22,7 +22,6 @@ services:
       - BACKEND=mysql
       - AIRFLOW__DATABASE__SQL_ALCHEMY_CONN=mysql://root@mysql/airflow?charset=utf8mb4
       - AIRFLOW__CELERY__RESULT_BACKEND=db+mysql://root@mysql/airflow?charset=utf8mb4
-      - AIRFLOW__CORE__EXECUTOR=LocalExecutor
     depends_on:
       mysql:
         condition: service_healthy
diff --git a/scripts/ci/docker-compose/backend-postgres.yml b/scripts/ci/docker-compose/backend-postgres.yml
index afeb9472f2..223b6630a8 100644
--- a/scripts/ci/docker-compose/backend-postgres.yml
+++ b/scripts/ci/docker-compose/backend-postgres.yml
@@ -22,7 +22,6 @@ services:
       - BACKEND=postgres
       - AIRFLOW__DATABASE__SQL_ALCHEMY_CONN=postgresql+psycopg2://postgres:airflow@postgres/airflow
       - AIRFLOW__CELERY__RESULT_BACKEND=db+postgresql://postgres:airflow@postgres/airflow
-      - AIRFLOW__CORE__EXECUTOR=LocalExecutor
     depends_on:
       postgres:
         condition: service_healthy
diff --git a/scripts/ci/docker-compose/backend-sqlite.yml b/scripts/ci/docker-compose/backend-sqlite.yml
index 2a9e895ec7..13210d0947 100644
--- a/scripts/ci/docker-compose/backend-sqlite.yml
+++ b/scripts/ci/docker-compose/backend-sqlite.yml
@@ -21,9 +21,8 @@ services:
     environment:
       - BACKEND=sqlite
       - AIRFLOW__DATABASE__SQL_ALCHEMY_CONN=${SQLITE_URL}
-      - AIRFLOW__CORE__EXECUTOR=SequentialExecutor
     volumes:
       - /dev/urandom:/dev/random   # Required to get non-blocking entropy source
-      - sqlite-db-volume:/root/airflow
+      - sqlite-db-volume:/root/airflow/sqlite
 volumes:
   sqlite-db-volume:
diff --git a/scripts/ci/docker-compose/base.yml b/scripts/ci/docker-compose/base.yml
index 1873c38f7a..9967d7608b 100644
--- a/scripts/ci/docker-compose/base.yml
+++ b/scripts/ci/docker-compose/base.yml
@@ -23,15 +23,14 @@ services:
     environment:
       - USER=root
       - ADDITIONAL_PATH=~/.local/bin
-      - CELERY_BROKER_URLS=amqp://guest:guest@rabbitmq:5672,redis://redis:6379/0
       - KUBECONFIG=/files/.kube/config
       # We need all those env variables here because docker-compose-v2 does not really work well
       # With env files and there are many problems with it:
       - AIRFLOW_CI_IMAGE=${AIRFLOW_CI_IMAGE}
       - AIRFLOW_EXTRAS=${AIRFLOW_EXTRAS}
       - AIRFLOW_ENABLE_AIP_44=${AIRFLOW_ENABLE_AIP_44}
-      - AIRFLOW_ENABLE_AIP_52=${AIRFLOW_ENABLE_AIP_52}
       - AIRFLOW_CONSTRAINTS_REFERENCE=${AIRFLOW_CONSTRAINTS_REFERENCE}
+      - AIRFLOW__CORE__EXECUTOR=${AIRFLOW__CORE__EXECUTOR}
       - ANSWER=${ANSWER}
       - BACKEND=${BACKEND}
       - BASE_BRANCH=${BASE_BRANCH}
@@ -60,6 +59,7 @@ services:
       - INSTALL_AIRFLOW_VERSION=${INSTALL_AIRFLOW_VERSION}
       - AIRFLOW_CONSTRAINTS_MODE=${AIRFLOW_CONSTRAINTS_MODE}
       - INSTALL_PROVIDERS_FROM_SOURCES=${INSTALL_PROVIDERS_FROM_SOURCES}
+      - INSTALL_SELECTED_PROVIDERS=${INSTALL_SELECTED_PROVIDERS}
       - USE_AIRFLOW_VERSION=${USE_AIRFLOW_VERSION}
       - USE_PACKAGES_FROM_DIST=${USE_PACKAGES_FROM_DIST}
       - ISSUE_ID=${ISSUE_ID}
@@ -67,6 +67,7 @@ services:
       - LOAD_EXAMPLES=${LOAD_EXAMPLES}
       - MYSQL_VERSION=${MYSQL_VERSION}
       - NUM_RUNS=${NUM_RUNS}
+      - ONLY_MIN_VERSION_UPDATE=${ONLY_MIN_VERSION_UPDATE}
       - PACKAGE_FORMAT=${PACKAGE_FORMAT}
       - POSTGRES_VERSION=${POSTGRES_VERSION}
       - PYTHONDONTWRITEBYTECODE=${PYTHONDONTWRITEBYTECODE}
@@ -74,11 +75,11 @@ services:
       - REMOVE_ARM_PACKAGES=${REMOVE_ARM_PACKAGES}
       - RUN_TESTS=${RUN_TESTS}
       - RUN_SYSTEM_TESTS=${RUN_SYSTEM_TESTS}
-      - START_AIRFLOW=${START_AIRFLOW}
       - SKIP_CONSTRAINTS=${SKIP_CONSTRAINTS}
       - SKIP_ENVIRONMENT_INITIALIZATION=${SKIP_ENVIRONMENT_INITIALIZATION}
       - SKIP_PROVIDER_TESTS=${SKIP_PROVIDER_TESTS}
       - SKIP_SSH_SETUP=${SKIP_SSH_SETUP}
+      - START_AIRFLOW=${START_AIRFLOW}
       - SUSPENDED_PROVIDERS_FOLDERS=${SUSPENDED_PROVIDERS_FOLDERS}
       - TEST_TYPE=${TEST_TYPE}
       - TEST_TIMEOUT=${TEST_TIMEOUT}
diff --git a/scripts/ci/docker-compose/devcontainer.env b/scripts/ci/docker-compose/devcontainer.env
index accbcf3c08..d66767fa02 100644
--- a/scripts/ci/docker-compose/devcontainer.env
+++ b/scripts/ci/docker-compose/devcontainer.env
@@ -15,11 +15,10 @@
 # specific language governing permissions and limitations
 # under the License.
 HOME=
-AIRFLOW_CI_IMAGE="ghcr.io/apache/airflow/main/ci/python3.7:latest"
+AIRFLOW_CI_IMAGE="ghcr.io/apache/airflow/main/ci/python3.8:latest"
 ANSWER=
 AIRFLOW_ENABLE_AIP_44="true"
-AIRFLOW_ENABLE_AIP_52="true"
-PYTHON_MAJOR_MINOR_VERSION="3.7"
+PYTHON_MAJOR_MINOR_VERSION="3.8"
 AIRFLOW_EXTRAS=
 BASE_BRANCH="main"
 BREEZE="true"
@@ -47,6 +46,7 @@ INIT_SCRIPT_FILE="init.sh"
 INSTALL_AIRFLOW_VERSION=
 AIRFLOW_CONSTRAINTS_MODE=
 INSTALL_PROVIDERS_FROM_SOURCES=
+INSTALL_SELECTED_PROVIDERS=
 USE_AIRFLOW_VERSION=
 USE_PACKAGES_FROM_DIST=
 ISSUE_ID=
@@ -54,17 +54,18 @@ LOAD_DEFAULT_CONNECTIONS=
 LOAD_EXAMPLES=
 MYSQL_VERSION=5.7
 NUM_RUNS=
+ONLY_MIN_VERSION_UPDATE="false"
 PACKAGE_FORMAT=
 POSTGRES_VERSION=10
 PYTHONDONTWRITEBYTECODE="true"
 REMOVE_ARM_PACKAGES="false"
 RUN_TESTS="false"
 RUN_SYSTEM_TESTS=""
-START_AIRFLOW="false"
 SKIP_CONSTRAINTS="false"
 SKIP_SSH_SETUP="true"
 SKIP_ENVIRONMENT_INITIALIZATION="false"
 SKIP_PROVIDER_TESTS="false"
+START_AIRFLOW="false"
 SUSPENDED_PROVIDERS_FOLDERS=""
 TEST_TYPE=
 UPGRADE_BOTO="false"
diff --git a/scripts/ci/docker-compose/devcontainer.yml b/scripts/ci/docker-compose/devcontainer.yml
index e7f013684c..a9fc3d6fa7 100644
--- a/scripts/ci/docker-compose/devcontainer.yml
+++ b/scripts/ci/docker-compose/devcontainer.yml
@@ -20,7 +20,7 @@ services:
   airflow:
     stdin_open: true  # docker run -i
     tty: true  # docker run -t
-    image: ghcr.io/apache/airflow/main/ci/python3.7
+    image: ghcr.io/apache/airflow/main/ci/python3.8
     env_file: devcontainer.env
     ports:
       - "22:22"
diff --git a/scripts/ci/docker-compose/forward-credentials.yml b/scripts/ci/docker-compose/forward-credentials.yml
index 31ffcad408..2d6509007a 100644
--- a/scripts/ci/docker-compose/forward-credentials.yml
+++ b/scripts/ci/docker-compose/forward-credentials.yml
@@ -21,9 +21,7 @@ services:
     # Forwards local credentials to docker image
     # Useful for gcloud/aws/kubernetes etc. authorisation to be passed
     # To inside docker. Use with care - your credentials will be available to
-    # Everything you install in Docker
-    # If you add it here - also add it to "in_container_fix_ownership" method in
-    # the _in_container_utils.sh file to make it friendly for Linux users
+    # everything you install in Docker.
     environment:
       - GITHUB_TOKEN
     volumes:
diff --git a/scripts/ci/docker-compose/integration-celery.yml b/scripts/ci/docker-compose/integration-celery.yml
index 4c3f4a0722..90d83aa44b 100644
--- a/scripts/ci/docker-compose/integration-celery.yml
+++ b/scripts/ci/docker-compose/integration-celery.yml
@@ -44,6 +44,8 @@ services:
   airflow:
     environment:
       - INTEGRATION_CELERY=true
+      - CELERY_FLOWER=${CELERY_FLOWER}
+      - AIRFLOW__CELERY__BROKER_URL=${AIRFLOW__CELERY__BROKER_URL}
     depends_on:
       redis:
         condition: service_healthy
diff --git a/scripts/ci/docker-compose/integration-kafka.yml b/scripts/ci/docker-compose/integration-kafka.yml
new file mode 100644
index 0000000000..3f89a94143
--- /dev/null
+++ b/scripts/ci/docker-compose/integration-kafka.yml
@@ -0,0 +1,63 @@
+# 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.
+---
+version: "3.7"
+services:
+  broker:
+    image: confluentinc/cp-kafka:7.3.0
+    hostname: broker
+    container_name: broker
+    ports:
+      - "9092:9092"
+      - "9101:9101"
+    environment:
+      KAFKA_BROKER_ID: 1
+      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: >
+        CONTROLLER:PLAINTEXT,
+        PLAINTEXT:PLAINTEXT,
+        PLAINTEXT_HOST:PLAINTEXT
+      KAFKA_ADVERTISED_LISTENERS: >
+        PLAINTEXT://broker:29092,
+        PLAINTEXT_HOST://localhost:9092
+      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
+      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
+      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
+      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
+      KAFKA_JMX_PORT: 9101
+      KAFKA_JMX_HOSTNAME: localhost
+      KAFKA_PROCESS_ROLES: 'broker,controller'
+      KAFKA_NODE_ID: 1
+      KAFKA_CONTROLLER_QUORUM_VOTERS: '1@broker:29093'
+      KAFKA_LISTENERS: >
+        PLAINTEXT://broker:29092,
+        CONTROLLER://broker:29093,
+        PLAINTEXT_HOST://0.0.0.0:9092
+      KAFKA_INTER_BROKER_LISTENER_NAME: 'PLAINTEXT'
+      KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
+      KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
+    volumes:
+      - ./kafka/update_run.sh:/tmp/update_run.sh
+    command: >
+      bash -c 'if [ ! -f /tmp/update_run.sh ];
+      then echo "ERROR: update_run.sh not mounted?"
+      && exit 1 ; else /tmp/update_run.sh && /etc/confluent/docker/run ; fi'
+
+  airflow:
+    environment:
+      - INTEGRATION_KAFKA=true
+    depends_on:
+      - broker
diff --git a/dev/breeze/src/airflow_breeze/utils/coertions.py b/scripts/ci/docker-compose/kafka/update_run.sh
old mode 100644
new mode 100755
similarity index 61%
copy from dev/breeze/src/airflow_breeze/utils/coertions.py
copy to scripts/ci/docker-compose/kafka/update_run.sh
index 015c363faf..d12bdb332b
--- a/dev/breeze/src/airflow_breeze/utils/coertions.py
+++ b/scripts/ci/docker-compose/kafka/update_run.sh
@@ -1,3 +1,5 @@
+#!/bin/sh
+
 # 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
@@ -15,13 +17,11 @@
 # specific language governing permissions and limitations
 # under the License.
 
-from __future__ import annotations
+# Docker workaround: Remove check for KAFKA_ZOOKEEPER_CONNECT parameter
+sed -i '/KAFKA_ZOOKEEPER_CONNECT/d' /etc/confluent/docker/configure
 
+# Docker workaround: Ignore cub zk-ready
+sed -i 's/cub zk-ready/echo ignore zk-ready/' /etc/confluent/docker/ensure
 
-def coerce_bool_value(value: str | bool) -> bool:
-    if isinstance(value, bool):
-        return value
-    elif not value:  # handle "" and other false-y coerce-able values
-        return False
-    else:
-        return value[0].lower() in ["t", "y"]  # handle all kinds of truth-y/yes-y/false-y/non-sy strings
+# KRaft required step: Format the storage directory with a new cluster ID
+echo "kafka-storage format --ignore-formatted --cluster-id=$(kafka-storage random-uuid) -c /etc/kafka/kafka.properties" >> /etc/confluent/docker/ensure
diff --git a/scripts/ci/images/ci_start_arm_instance_and_connect_to_docker.sh b/scripts/ci/images/ci_start_arm_instance_and_connect_to_docker.sh
index f54f9dc84a..6fcd62a20c 100755
--- a/scripts/ci/images/ci_start_arm_instance_and_connect_to_docker.sh
+++ b/scripts/ci/images/ci_start_arm_instance_and_connect_to_docker.sh
@@ -21,7 +21,7 @@ WORKING_DIR="/tmp/armdocker"
 INSTANCE_INFO="${WORKING_DIR}/instance_info.json"
 ARM_AMI="ami-0e43196369d299715"  # AMI ID of latest arm-docker-ami-v*
 INSTANCE_TYPE="m6g.2xlarge"  # m6g.2xlarge -> 8 vCPUS 32 GB RAM
-MARKET_OPTIONS="MarketType=spot,SpotOptions={MaxPrice=0.2,SpotInstanceType=one-time}"
+MARKET_OPTIONS="MarketType=spot,SpotOptions={MaxPrice=0.25,SpotInstanceType=one-time}"
 REGION="us-east-2"
 EC2_USER="ec2-user"
 USER_DATA_FILE="${SCRIPTS_DIR}/initialize.sh"
@@ -45,6 +45,10 @@ function start_arm_instance() {
         > "${INSTANCE_INFO}"
 
     INSTANCE_ID=$(jq < "${INSTANCE_INFO}" ".Instances[0].InstanceId" -r)
+    if [[ ${INSTANCE_ID} == "" ]]; then
+        echo "ERROR!!!! Failed to start ARM instance. Likely because it could not be allocated on spot market."
+        exit 1
+    fi
     AVAILABILITY_ZONE=$(jq < "${INSTANCE_INFO}" ".Instances[0].Placement.AvailabilityZone" -r)
     aws ec2 wait instance-status-ok --instance-ids "${INSTANCE_ID}"
     INSTANCE_PRIVATE_DNS_NAME=$(aws ec2 describe-instances \
diff --git a/scripts/ci/pre_commit/pre_commit_check_aiobotocore_optional.py b/scripts/ci/pre_commit/pre_commit_check_aiobotocore_optional.py
new file mode 100755
index 0000000000..5c222ebada
--- /dev/null
+++ b/scripts/ci/pre_commit/pre_commit_check_aiobotocore_optional.py
@@ -0,0 +1,48 @@
+#!/usr/bin/env python
+#
+# 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.
+from __future__ import annotations
+
+import sys
+from pathlib import Path
+
+import yaml
+from rich.console import Console
+
+AIRFLOW_SOURCES = Path(__file__).parents[3]
+
+console = Console(color_system="standard", width=200)
+
+if __name__ == "__main__":
+    errors = []
+    for file in sys.argv[1:]:
+        console.print(f"[blue]Checking[/blue]: {file}")
+        provider_yaml_content = yaml.safe_load(Path(file).read_text())
+        dependencies = provider_yaml_content.get("dependencies")
+        if dependencies and any(dependency.startswith("aiobotocore") for dependency in dependencies):
+            errors.append(
+                f"\n[red]Error: the aibotocore cannot be a required dependency, "
+                f"because it restricts botocore too much[/]\n\n"
+                f"The [magenta]{file}[/] file has aiobotocore dependency set at top level.\n\n"
+                f"[yellow]Please remove it and make sure it is added only as "
+                f"an optional dependency in additional-extras[/n]\n"
+            )
+    if errors:
+        for error in errors:
+            console.print(error)
+        sys.exit(1)
diff --git a/scripts/ci/pre_commit/pre_commit_insert_extras.py b/scripts/ci/pre_commit/pre_commit_insert_extras.py
index 3e08bd674d..fac926f611 100755
--- a/scripts/ci/pre_commit/pre_commit_insert_extras.py
+++ b/scripts/ci/pre_commit/pre_commit_insert_extras.py
@@ -27,8 +27,8 @@ sys.path.insert(0, str(Path(__file__).parent.resolve()))  # make sure common_pre
 sys.path.insert(0, str(AIRFLOW_SOURCES_DIR))  # make sure setup is imported from Airflow
 # flake8: noqa: F401
 
-from common_precommit_utils import insert_documentation  # isort: skip # noqa E402
-from setup import EXTRAS_DEPENDENCIES  # isort:skip # noqa
+from common_precommit_utils import insert_documentation  # isort: skip
+from setup import EXTRAS_DEPENDENCIES  # isort:skip
 
 sys.path.append(str(AIRFLOW_SOURCES_DIR))
 
diff --git a/scripts/ci/pre_commit/pre_commit_local_yml_mounts.py b/scripts/ci/pre_commit/pre_commit_local_yml_mounts.py
index 6efba5a6aa..e39fe50e0e 100755
--- a/scripts/ci/pre_commit/pre_commit_local_yml_mounts.py
+++ b/scripts/ci/pre_commit/pre_commit_local_yml_mounts.py
@@ -22,16 +22,16 @@ from pathlib import Path
 
 sys.path.insert(0, str(Path(__file__).parent.resolve()))  # make sure common_precommit_utils is imported
 
-from common_precommit_utils import AIRFLOW_SOURCES_ROOT_PATH  # isort: skip # noqa E402
+from common_precommit_utils import AIRFLOW_SOURCES_ROOT_PATH  # isort: skip
 
 sys.path.insert(0, str(AIRFLOW_SOURCES_ROOT_PATH))  # make sure setup is imported from Airflow
 sys.path.insert(
     0, str(AIRFLOW_SOURCES_ROOT_PATH / "dev" / "breeze" / "src")
 )  # make sure setup is imported from Airflow
 # flake8: noqa: F401
-from airflow_breeze.utils.docker_command_utils import VOLUMES_FOR_SELECTED_MOUNTS  # isort: skip # noqa E402
+from airflow_breeze.utils.docker_command_utils import VOLUMES_FOR_SELECTED_MOUNTS  # isort: skip
 
-from common_precommit_utils import insert_documentation  # isort: skip # noqa E402
+from common_precommit_utils import insert_documentation  # isort: skip
 
 sys.path.append(str(AIRFLOW_SOURCES_ROOT_PATH))
 
diff --git a/scripts/ci/pre_commit/pre_commit_mypy.py b/scripts/ci/pre_commit/pre_commit_mypy.py
index 2c6ac05bfe..18bd2974f6 100755
--- a/scripts/ci/pre_commit/pre_commit_mypy.py
+++ b/scripts/ci/pre_commit/pre_commit_mypy.py
@@ -76,9 +76,15 @@ if __name__ == "__main__":
         check=False,
     )
     if cmd_result.returncode != 0:
+        upgrading = os.environ.get("UPGRADE_TO_NEWER_DEPENDENCIES", "false") != "false"
+        if upgrading:
+            get_console().print(
+                "[warning]You are running mypy with the image that has dependencies upgraded automatically."
+            )
+        flag = " --upgrade-to-newer-dependencies" if upgrading else ""
         get_console().print(
             "[warning]If you see strange stacktraces above, "
-            "run `breeze ci-image build --python 3.7` and try again. "
-            "You can also run `breeze stop --cleanup-mypy-cache` to clean up the cache used."
+            f"run `breeze ci-image build --python 3.7{flag}` and try again. "
+            "You can also run `breeze down --cleanup-mypy-cache` to clean up the cache used."
         )
     sys.exit(cmd_result.returncode)
diff --git a/scripts/ci/pre_commit/pre_commit_supported_versions.py b/scripts/ci/pre_commit/pre_commit_supported_versions.py
index b4d38098bb..8430ad8a6f 100755
--- a/scripts/ci/pre_commit/pre_commit_supported_versions.py
+++ b/scripts/ci/pre_commit/pre_commit_supported_versions.py
@@ -27,7 +27,7 @@ AIRFLOW_SOURCES = Path(__file__).resolve().parent.parent.parent.parent
 HEADERS = ("Version", "Current Patch/Minor", "State", "First Release", "Limited Support", "EOL/Terminated")
 
 SUPPORTED_VERSIONS = (
-    ("2", "2.6.2", "Supported", "Dec 17, 2020", "TBD", "TBD"),
+    ("2", "2.6.1", "Supported", "Dec 17, 2020", "TBD", "TBD"),
     ("1.10", "1.10.15", "EOL", "Aug 27, 2018", "Dec 17, 2020", "June 17, 2021"),
     ("1.9", "1.9.0", "EOL", "Jan 03, 2018", "Aug 27, 2018", "Aug 27, 2018"),
     ("1.8", "1.8.2", "EOL", "Mar 19, 2017", "Jan 03, 2018", "Jan 03, 2018"),
diff --git a/scripts/ci/pre_commit/pre_commit_unittest_testcase.py b/scripts/ci/pre_commit/pre_commit_unittest_testcase.py
new file mode 100755
index 0000000000..c13c9a9925
--- /dev/null
+++ b/scripts/ci/pre_commit/pre_commit_unittest_testcase.py
@@ -0,0 +1,47 @@
+#!/usr/bin/env python
+# 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.
+from __future__ import annotations
+
+import ast
+import pathlib
+import sys
+
+
+def check_test_file(file: str) -> int:
+    node = ast.parse(pathlib.Path(file).read_text("utf-8"), file)
+
+    found = 0
+    classes = [c for c in node.body if isinstance(c, ast.ClassDef)]
+    for c in classes:
+        # Some classes are returned as an ast.Attribute, some as an ast.Name object. Not quite sure why
+        parent_classes = [base.attr for base in c.bases if isinstance(base, ast.Attribute)]
+        parent_classes.extend([base.id for base in c.bases if isinstance(base, ast.Name)])
+
+        if "TestCase" in parent_classes:
+            found += 1
+            print(f"The class {c.name} inherits from TestCase, please use pytest instead")
+
+    return found
+
+
+def main(*args: str) -> int:
+    return sum([check_test_file(file) for file in args[1:]])
+
+
+if __name__ == "__main__":
+    sys.exit(main(*sys.argv))
diff --git a/scripts/docker/entrypoint_ci.sh b/scripts/docker/entrypoint_ci.sh
index 9acd01754d..05d0d23c99 100755
--- a/scripts/docker/entrypoint_ci.sh
+++ b/scripts/docker/entrypoint_ci.sh
@@ -19,6 +19,7 @@ if [[ ${VERBOSE_COMMANDS:="false"} == "true" ]]; then
     set -x
 fi
 
+
 # shellcheck source=scripts/in_container/_in_container_script_init.sh
 . "${AIRFLOW_SOURCES:-/opt/airflow}"/scripts/in_container/_in_container_script_init.sh
 
@@ -189,29 +190,66 @@ if [[ ${SKIP_ENVIRONMENT_INITIALIZATION=} != "true" ]]; then
             exit 1
         fi
         echo
+        if [[ ${INSTALL_SELECTED_PROVIDERS=} != "" ]]; then
+            IFS=\, read -ra selected_providers <<<"${INSTALL_SELECTED_PROVIDERS}"
+            echo
+            echo "${COLOR_BLUE}Selected providers to install: '${selected_providers[*]}'${COLOR_RESET}"
+            echo
+        else
+            echo
+            echo "${COLOR_BLUE}Installing all found providers${COLOR_RESET}"
+            echo
+            selected_providers=()
+        fi
         installable_files=()
         for file in /dist/*.{whl,tar.gz}
         do
-            if [[ ${USE_AIRFLOW_VERSION} == "wheel" && ${file} == "/dist/apache?airflow-[0-9]"* ]]; then
-                # Skip Apache Airflow package - it's just been installed above with extras
-                echo "Skipping ${file}"
+            if [[ ${file} == "/dist/apache?airflow-[0-9]"* ]]; then
+                # Skip Apache Airflow package - it's just been installed above if
+                # --use-airflow-version was set and should be skipped otherwise
+                echo "${COLOR_BLUE}Skipping airflow core package ${file} from provider installation.${COLOR_RESET}"
                 continue
             fi
             if [[ ${PACKAGE_FORMAT} == "wheel" && ${file} == *".whl" ]]; then
-                echo "Adding ${file} to install"
-                installable_files+=( "${file}" )
+                provider_name=$(echo "${file}" | sed 's/\/dist\/apache_airflow_providers_//' | sed 's/-[0-9].*//' | sed 's/-/./g')
+                if [[ ${INSTALL_SELECTED_PROVIDERS=} != "" ]]; then
+                    # shellcheck disable=SC2076
+                    if [[ " ${selected_providers[*]} " =~ " ${provider_name} " ]]; then
+                        echo "${COLOR_BLUE}Adding ${provider_name} to install via ${file}${COLOR_RESET}"
+                        installable_files+=( "${file}" )
+                    else
+                        echo "${COLOR_BLUE}Skipping ${provider_name} as it is not in the list of '${selected_providers[*]}'${COLOR_RESET}"
+                    fi
+                else
+                    echo "${COLOR_BLUE}Adding ${provider_name} to install via ${file}${COLOR_RESET}"
+                    installable_files+=( "${file}" )
+                fi
             fi
             if [[ ${PACKAGE_FORMAT} == "sdist" && ${file} == *".tar.gz" ]]; then
-                echo "Adding ${file} to install"
-                installable_files+=( "${file}" )
+                provider_name=$(echo "${file}" | sed 's/\/dist\/apache-airflow-providers-//' | sed 's/-[0-9].*//' | sed 's/-/./g')
+                if [[ ${INSTALL_SELECTED_PROVIDERS=} != "" ]]; then
+                    # shellcheck disable=SC2076
+                    if [[ " ${selected_providers[*]} " =~ " ${provider_name} " ]]; then
+                        echo "${COLOR_BLUE}Adding ${provider_name} to install via ${file}${COLOR_RESET}"
+                        installable_files+=( "${file}" )
+                    else
+                        echo "${COLOR_BLUE}Skipping ${provider_name} as it is not in the list of '${selected_providers[*]}'${COLOR_RESET}"
+                    fi
+                else
+                    echo "${COLOR_BLUE}Adding ${provider_name} to install via ${file}${COLOR_RESET}"
+                    installable_files+=( "${file}" )
+                fi
             fi
         done
-        if [[ ${USE_AIRFLOW_VERSION} != "wheel" && ${USE_AIRFLOW_VERSION} != "sdist" && ${USE_AIRFLOW_VERSION} != "none" ]]; then
+        if [[ ${USE_AIRFLOW_VERSION} != "wheel" && ${USE_AIRFLOW_VERSION} != "sdist" && ${USE_AIRFLOW_VERSION} != "none" && ${USE_AIRFLOW_VERSION} != "" ]]; then
             echo
             echo "${COLOR_BLUE}Also adding airflow in specified version ${USE_AIRFLOW_VERSION} to make sure it is not upgraded by >= limits${COLOR_RESET}"
             echo
             installable_files+=( "apache-airflow==${USE_AIRFLOW_VERSION}" )
         fi
+        echo
+        echo "${COLOR_BLUE}Installing: ${installable_files[*]}${COLOR_RESET}"
+        echo
         if (( ${#installable_files[@]} )); then
             pip install --root-user-action ignore "${installable_files[@]}"
         fi
diff --git a/scripts/in_container/bin/run_tmux b/scripts/in_container/bin/run_tmux
index a877411d28..ce8a3e02ff 100755
--- a/scripts/in_container/bin/run_tmux
+++ b/scripts/in_container/bin/run_tmux
@@ -68,6 +68,17 @@ if python -c 'import sys; sys.exit(sys.version_info < (3, 7))'; then
     tmux split-window -h
     tmux send-keys 'airflow triggerer' C-m
 fi
+if [[ ${INTEGRATION_CELERY} == "true" ]]; then
+    tmux select-pane -t 0
+    tmux split-window -h
+    tmux send-keys 'airflow celery worker' C-m
+fi
+
+if [[ ${INTEGRATION_CELERY} == "true" && ${CELERY_FLOWER} == "true" ]]; then
+    tmux select-pane -t 3
+    tmux split-window -h
+    tmux send-keys 'airflow celery flower' C-m
+fi
 
 # Attach Session, on the Main window
 tmux select-pane -t 0
diff --git a/scripts/in_container/check_environment.sh b/scripts/in_container/check_environment.sh
index 8e6b975965..a81145a390 100755
--- a/scripts/in_container/check_environment.sh
+++ b/scripts/in_container/check_environment.sh
@@ -160,6 +160,9 @@ if [[ ${INTEGRATION_PINOT} == "true" ]]; then
     CMD="curl --max-time 1 -X GET 'http://pinot:8000/health' -H 'accept: text/plain' | grep OK"
     check_service "Pinot (Broker API)" "${CMD}" 50
 fi
+if [[ ${INTEGRATION_KAFKA} == "true" ]]; then
+    check_service "Kakfa Cluster" "run_nc broker 9092" 50
+fi
 
 if [[ ${EXIT_CODE} != 0 ]]; then
     echo
diff --git a/scripts/in_container/run_generate_constraints.sh b/scripts/in_container/run_generate_constraints.sh
index d16ef6707a..e6f8a95458 100755
--- a/scripts/in_container/run_generate_constraints.sh
+++ b/scripts/in_container/run_generate_constraints.sh
@@ -21,6 +21,7 @@
 CONSTRAINTS_DIR="/files/constraints-${PYTHON_MAJOR_MINOR_VERSION}"
 
 LATEST_CONSTRAINT_FILE="${CONSTRAINTS_DIR}/original-${AIRFLOW_CONSTRAINTS_MODE}-${PYTHON_MAJOR_MINOR_VERSION}.txt"
+CONSTRAINTS_MARKDOWN_DIFF="${CONSTRAINTS_DIR}/diff-${AIRFLOW_CONSTRAINTS_MODE}-${PYTHON_MAJOR_MINOR_VERSION}.md"
 mkdir -pv "${CONSTRAINTS_DIR}"
 
 
@@ -111,6 +112,25 @@ echo "Constraints generated in ${CURRENT_CONSTRAINT_FILE}"
 echo
 
 set +e
-diff --color=always "${LATEST_CONSTRAINT_FILE}" "${CURRENT_CONSTRAINT_FILE}"
+if diff "--ignore-matching-lines=#" --color=always "${LATEST_CONSTRAINT_FILE}" "${CURRENT_CONSTRAINT_FILE}"; then
+    echo
+    echo "${COLOR_GREEN}No changes in constraints - exiting${COLOR_RESET}"
+    echo
+    rm -f "${CONSTRAINTS_MARKDOWN_DIFF}"
+    exit 0
+fi
+
+cat <<EOF >"${CONSTRAINTS_MARKDOWN_DIFF}"
+# Dependencies updated for Python ${PYTHON_MAJOR_MINOR_VERSION}
+
+\`\`\`diff
+$(diff --unified=0 --ignore-matching-lines=# "${LATEST_CONSTRAINT_FILE}" "${CURRENT_CONSTRAINT_FILE}")
+\`\`\`
+EOF
+
+echo
+echo "Constraints error markdown generated in ${CONSTRAINTS_MARKDOWN_DIFF}"
+echo
+
 
 exit 0
diff --git a/scripts/in_container/run_provider_yaml_files_check.py b/scripts/in_container/run_provider_yaml_files_check.py
index 9f821ce74d..b4c83b2d1b 100755
--- a/scripts/in_container/run_provider_yaml_files_check.py
+++ b/scripts/in_container/run_provider_yaml_files_check.py
@@ -38,6 +38,16 @@ from tabulate import tabulate
 
 from airflow.cli.commands.info_command import Architecture
 
+# Those are deprecated modules that contain removed Hooks/Sensors/Operators that we left in the code
+# so that users can get a very specific error message when they try to use them.
+
+EXCLUDED_MODULES = [
+    "airflow.providers.apache.hdfs.sensors.hdfs",
+    "airflow.providers.apache.hdfs.hooks.hdfs",
+    "airflow.providers.cncf.kubernetes.triggers.kubernetes_pod",
+]
+
+
 try:
     from yaml import CSafeLoader as SafeLoader
 except ImportError:
@@ -220,16 +230,17 @@ def parse_module_data(provider_data, resource_type, yaml_file_path):
 
 
 def check_correctness_of_list_of_sensors_operators_hook_modules(yaml_files: dict[str, dict]):
-    print("Checking completeness of list of {sensors, hooks, operators}")
-    print(" -- {sensors, hooks, operators} - Expected modules (left) : Current modules (right)")
+    print("Checking completeness of list of {sensors, hooks, operators, triggers}")
+    print(" -- {sensors, hooks, operators, triggers} - Expected modules (left) : Current modules (right)")
     for (yaml_file_path, provider_data), resource_type in product(
-        yaml_files.items(), ["sensors", "operators", "hooks"]
+        yaml_files.items(), ["sensors", "operators", "hooks", "triggers"]
     ):
         expected_modules, provider_package, resource_data = parse_module_data(
             provider_data, resource_type, yaml_file_path
         )
-
+        expected_modules = {module for module in expected_modules if module not in EXCLUDED_MODULES}
         current_modules = {str(i) for r in resource_data for i in r.get("python-modules", [])}
+
         check_if_objects_exist_and_belong_to_package(
             current_modules, provider_package, yaml_file_path, resource_type, ObjectType.MODULE
         )
@@ -244,9 +255,9 @@ def check_correctness_of_list_of_sensors_operators_hook_modules(yaml_files: dict
 
 
 def check_duplicates_in_integrations_names_of_hooks_sensors_operators(yaml_files: dict[str, dict]):
-    print("Checking for duplicates in list of {sensors, hooks, operators}")
+    print("Checking for duplicates in list of {sensors, hooks, operators, triggers}")
     for (yaml_file_path, provider_data), resource_type in product(
-        yaml_files.items(), ["sensors", "operators", "hooks"]
+        yaml_files.items(), ["sensors", "operators", "hooks", "triggers"]
     ):
         resource_data = provider_data.get(resource_type, [])
         current_integrations = [r.get("integration-name", "") for r in resource_data]
@@ -268,8 +279,9 @@ def check_completeness_of_list_of_transfers(yaml_files: dict[str, dict]):
         expected_modules, provider_package, resource_data = parse_module_data(
             provider_data, resource_type, yaml_file_path
         )
-
+        expected_modules = {module for module in expected_modules if module not in EXCLUDED_MODULES}
         current_modules = {r.get("python-module") for r in resource_data}
+
         check_if_objects_exist_and_belong_to_package(
             current_modules, provider_package, yaml_file_path, resource_type, ObjectType.MODULE
         )
@@ -283,7 +295,7 @@ def check_completeness_of_list_of_transfers(yaml_files: dict[str, dict]):
             )
 
 
-def check_hook_classes(yaml_files: dict[str, dict]):
+def check_hook_connection_classes(yaml_files: dict[str, dict]):
     print("Checking connection classes belong to package, exist and are classes")
     resource_type = "hook-class-names"
     for yaml_file_path, provider_data in yaml_files.items():
@@ -350,7 +362,7 @@ def check_invalid_integration(yaml_files: dict[str, dict]):
     all_integration_names = set(get_all_integration_names(yaml_files))
 
     for (yaml_file_path, provider_data), resource_type in product(
-        yaml_files.items(), ["sensors", "operators", "hooks"]
+        yaml_files.items(), ["sensors", "operators", "hooks", "triggers"]
     ):
         resource_data = provider_data.get(resource_type, [])
         current_names = {r["integration-name"] for r in resource_data}
@@ -395,9 +407,15 @@ def check_doc_files(yaml_files: dict[str, dict]):
             )
     console.print("[yellow]Suspended providers:[/]")
     console.print(suspended_providers)
+
+    expected_doc_files = chain(
+        DOCS_DIR.glob("apache-airflow-providers-*/operators/**/*.rst"),
+        DOCS_DIR.glob("apache-airflow-providers-*/transfer/**/*.rst"),
+    )
+
     expected_doc_urls = {
         f"/docs/{f.relative_to(DOCS_DIR).as_posix()}"
-        for f in DOCS_DIR.glob("apache-airflow-providers-*/operators/**/*.rst")
+        for f in expected_doc_files
         if f.name != "index.rst"
         and "_partials" not in f.parts
         and not any(f.relative_to(DOCS_DIR).as_posix().startswith(s) for s in suspended_providers)
@@ -434,6 +452,7 @@ def check_unique_provider_name(yaml_files: dict[str, dict]):
 
 
 def check_providers_are_mentioned_in_issue_template(yaml_files: dict[str, dict]):
+    print("Checking providers are mentioned in issue template")
     prefix_len = len("apache-airflow-providers-")
     short_provider_names = [d["package-name"][prefix_len:] for d in yaml_files.values()]
     # exclude deprecated provider that shouldn't be in issue template
@@ -488,7 +507,7 @@ if __name__ == "__main__":
 
     check_completeness_of_list_of_transfers(all_parsed_yaml_files)
     check_duplicates_in_list_of_transfers(all_parsed_yaml_files)
-    check_hook_classes(all_parsed_yaml_files)
+    check_hook_connection_classes(all_parsed_yaml_files)
     check_plugin_classes(all_parsed_yaml_files)
     check_extra_link_classes(all_parsed_yaml_files)
     check_correctness_of_list_of_sensors_operators_hook_modules(all_parsed_yaml_files)
diff --git a/scripts/in_container/verify_providers.py b/scripts/in_container/verify_providers.py
index 95e3497615..bc56a5fa93 100755
--- a/scripts/in_container/verify_providers.py
+++ b/scripts/in_container/verify_providers.py
@@ -52,6 +52,7 @@ class EntityType(Enum):
     Sensors = "Sensors"
     Hooks = "Hooks"
     Secrets = "Secrets"
+    Trigger = "Trigger"
 
 
 class EntityTypeSummary(NamedTuple):
@@ -82,6 +83,7 @@ ENTITY_NAMES = {
     EntityType.Sensors: "Sensors",
     EntityType.Hooks: "Hooks",
     EntityType.Secrets: "Secrets",
+    EntityType.Trigger: "Trigger",
 }
 
 TOTALS: dict[EntityType, int] = {
@@ -90,6 +92,7 @@ TOTALS: dict[EntityType, int] = {
     EntityType.Sensors: 0,
     EntityType.Transfers: 0,
     EntityType.Secrets: 0,
+    EntityType.Trigger: 0,
 }
 
 OPERATORS_PATTERN = r".*Operator$"
@@ -98,6 +101,7 @@ HOOKS_PATTERN = r".*Hook$"
 SECRETS_PATTERN = r".*Backend$"
 TRANSFERS_PATTERN = r".*To[A-Z0-9].*Operator$"
 WRONG_TRANSFERS_PATTERN = r".*Transfer$|.*TransferOperator$"
+TRIGGER_PATTERN = r".*Trigger$"
 
 ALL_PATTERNS = {
     OPERATORS_PATTERN,
@@ -106,6 +110,7 @@ ALL_PATTERNS = {
     SECRETS_PATTERN,
     TRANSFERS_PATTERN,
     WRONG_TRANSFERS_PATTERN,
+    TRIGGER_PATTERN,
 }
 
 EXPECTED_SUFFIXES: dict[EntityType, str] = {
@@ -114,6 +119,7 @@ EXPECTED_SUFFIXES: dict[EntityType, str] = {
     EntityType.Sensors: "Sensor",
     EntityType.Secrets: "Backend",
     EntityType.Transfers: "Operator",
+    EntityType.Trigger: "Trigger",
 }
 
 
@@ -149,15 +155,15 @@ KNOWN_COMMON_DEPRECATED_MESSAGES: set[str] = {
     "Param `schedule_interval` is deprecated and will be removed in a future release.",
     "'urllib3.contrib.pyopenssl' module is deprecated",
     "Deprecated API features detected! These feature(s) are not compatible with SQLAlchemy 2.0",
-    "Implementing implicit namespace packages (as specified in PEP 420) is "
-    "preferred to `pkg_resources.declare_namespace`",
+    (
+        "Implementing implicit namespace packages (as specified in PEP 420) is "
+        "preferred to `pkg_resources.declare_namespace`"
+    ),
     "This module is deprecated. Please use `airflow.providers.cncf.kubernetes.operators.pod` instead.",
-    "This operator is deprecated. Please use `GoogleDisplayVideo360CreateQueryOperator`",
-    "This operator is deprecated. Please use `GoogleDisplayVideo360RunQueryOperator`",
-    "This operator is deprecated. Please use `GoogleDisplayVideo360RunQuerySensor`",
-    "This operator is deprecated. Please use `GoogleDisplayVideo360DownloadReportV2Operator`",
     "urllib3 (1.26.6) or chardet (5.1.0)/charset_normalizer (2.0.12) doesn't match a supported version!",
     "urllib3 (1.26.9) or chardet (5.1.0)/charset_normalizer (2.0.12) doesn't match a supported version!",
+    "urllib3 (1.26.12) or chardet (5.1.0)/charset_normalizer (2.0.12) doesn't match a supported version!",
+    "Jupyter is migrating its paths to use standard platformdirs given by the platformdirs library.",
 }
 
 # The set of warning messages generated by direct importing of some deprecated modules. We should only
@@ -173,6 +179,7 @@ KNOWN_DEPRECATED_DIRECT_IMPORTS: set[str] = {
     "S3ToSnowflakeOperator is deprecated.",
     "This module is deprecated. Please use `airflow.providers.cncf.kubernetes.operators.pod` instead.",
     "This module is deprecated. Please use `airflow.providers.cncf.kubernetes.triggers.pod` instead.",
+    "This module is deprecated. Please use `airflow.providers.slack.notifications.slack`",
 }
 
 
@@ -201,8 +208,8 @@ def filter_known_common_deprecated_messages(warn: warnings.WarningMessage) -> bo
 
 
 def get_all_providers() -> list[str]:
-    """
-    Returns all providers for regular packages.
+    """Returns all providers for regular packages.
+
     :return: list of providers that are considered for provider packages
     """
     from setup import ALL_PROVIDERS
@@ -217,13 +224,13 @@ def import_all_classes(
     print_imports: bool = False,
     print_skips: bool = False,
 ) -> tuple[list[str], list[WarningMessage], list[str]]:
-    """
-    Imports all classes in providers packages. This method loads and imports
-    all the classes found in providers, so that we can find all the subclasses
-    of operators/sensors etc.
+    """Imports all classes in providers packages.
 
-    :param walkable_paths_and_prefixes: dict of paths with accompanying prefixes to look the provider
-        packages in
+    This method loads and imports all the classes found in providers, so that we
+    can find all the subclasses of operators/sensors etc.
+
+    :param walkable_paths_and_prefixes: dict of paths with accompanying prefixes
+        to look the provider packages in
     :param prefix: prefix to add
     :param provider_ids - provider ids that should be loaded.
     :param print_imports - if imported class should also be printed in output
@@ -317,8 +324,7 @@ def import_all_classes(
 
 
 def is_imported_from_same_module(the_class: str, imported_name: str) -> bool:
-    """
-    Is the class imported from another module?
+    """Is the class imported from another module?
 
     :param the_class: the class object itself
     :param imported_name: name of the imported class
@@ -328,8 +334,7 @@ def is_imported_from_same_module(the_class: str, imported_name: str) -> bool:
 
 
 def is_example_dag(imported_name: str) -> bool:
-    """
-    Is the class an example_dag class?
+    """Is the class an example_dag class?
 
     :param imported_name: name where the class is imported from
     :return: true if it is an example_dags class
@@ -338,18 +343,17 @@ def is_example_dag(imported_name: str) -> bool:
 
 
 def is_from_the_expected_base_package(the_class: type, expected_package: str) -> bool:
-    """
-    Returns true if the class is from the package expected.
+    """Returns true if the class is from the package expected.
+
     :param the_class: the class object
     :param expected_package: package expected for the class
-    :return:
     """
     return the_class.__module__.startswith(expected_package)
 
 
 def inherits_from(the_class: type, expected_ancestor: type | None = None) -> bool:
-    """
-    Returns true if the class inherits (directly or indirectly) from the class specified.
+    """Returns true if the class inherits (directly or indirectly) from the class specified.
+
     :param the_class: The class to check
     :param expected_ancestor: expected class to inherit from
     :return: true is the class inherits from the class expected
@@ -363,8 +367,8 @@ def inherits_from(the_class: type, expected_ancestor: type | None = None) -> boo
 
 
 def is_class(the_class: type) -> bool:
-    """
-    Returns true if the object passed is a class
+    """Returns true if the object passed is a class.
+
     :param the_class: the class to pass
     :return: true if it is a class
     """
@@ -374,9 +378,8 @@ def is_class(the_class: type) -> bool:
 
 
 def package_name_matches(the_class: type, expected_pattern: str | None = None) -> bool:
-    """
-    In case expected_pattern is set, it checks if the package name matches the pattern.
-    .
+    """In case expected_pattern is set, it checks if the package name matches the pattern.
+
     :param the_class: imported class
     :param expected_pattern: the pattern that should match the package
     :return: true if the expected_pattern is None or the pattern matches the package
@@ -385,8 +388,7 @@ def package_name_matches(the_class: type, expected_pattern: str | None = None) -
 
 
 def convert_classes_to_table(entity_type: EntityType, entities: list[str], full_package_name: str) -> str:
-    """
-    Converts new entities to a Markdown table.
+    """Converts new entities to a Markdown table.
 
     :param entity_type: entity type to convert to markup
     :param entities: list of  entities
@@ -406,14 +408,12 @@ def get_details_about_classes(
     wrong_entities: list[tuple[type, str]],
     full_package_name: str,
 ) -> EntityTypeSummary:
-    """
-    Get details about entities.
+    """Get details about entities.
 
     :param entity_type: type of entity (Operators, Hooks etc.)
     :param entities: set of entities found
     :param wrong_entities: wrong entities found for that type
     :param full_package_name: full package name
-    :return:
     """
     all_entities = list(entities)
     all_entities.sort()
@@ -430,9 +430,7 @@ def get_details_about_classes(
 
 
 def strip_package_from_class(base_package: str, class_name: str) -> str:
-    """
-    Strips base package name from the class (if it starts with the package name).
-    """
+    """Strips base package name from the class (if it starts with the package name)."""
     if class_name.startswith(base_package):
         return class_name[len(base_package) + 1 :]
     else:
@@ -440,8 +438,7 @@ def strip_package_from_class(base_package: str, class_name: str) -> str:
 
 
 def convert_class_name_to_url(base_url: str, class_name) -> str:
-    """
-    Converts the class name to URL that the class can be reached
+    """Converts the class name to URL that the class can be reached.
 
     :param base_url: base URL to use
     :param class_name: name of the class
@@ -451,8 +448,7 @@ def convert_class_name_to_url(base_url: str, class_name) -> str:
 
 
 def get_class_code_link(base_package: str, class_name: str, git_tag: str) -> str:
-    """
-    Provides a Markdown link for the class passed as parameter.
+    """Provides a Markdown link for the class passed as parameter.
 
     :param base_package: base package to strip from most names
     :param class_name: name of the class
@@ -467,8 +463,8 @@ def get_class_code_link(base_package: str, class_name: str, git_tag: str) -> str
 
 
 def print_wrong_naming(entity_type: EntityType, wrong_classes: list[tuple[type, str]]):
-    """
-    Prints wrong entities of a given entity type if there are any
+    """Prints wrong entities of a given entity type if there are any.
+
     :param entity_type: type of the class to print
     :param wrong_classes: list of wrong entities
     """
@@ -488,8 +484,7 @@ def find_all_entities(
     exclude_class_type: type | None = None,
     false_positive_class_names: set[str] | None = None,
 ) -> VerifiedEntities:
-    """
-    Returns set of entities containing all subclasses in package specified.
+    """Returns set of entities containing all subclasses in package specified.
 
     :param imported_classes: entities imported from providers
     :param base_package: base package name where to start looking for the entities
@@ -544,16 +539,18 @@ def find_all_entities(
 def get_package_class_summary(
     full_package_name: str, imported_classes: list[str]
 ) -> dict[EntityType, EntityTypeSummary]:
-    """
-    Gets summary of the package in the form of dictionary containing all types of entities
+    """Gets summary of the package in the form of dictionary containing all types of entities.
+
     :param full_package_name: full package name
     :param imported_classes: entities imported_from providers
-    :return: dictionary of objects usable as context for JINJA2 templates - or None if there are some errors
+    :return: dictionary of objects usable as context for JINJA2 templates, or
+        None if there are some errors
     """
     from airflow.hooks.base import BaseHook
     from airflow.models.baseoperator import BaseOperator
     from airflow.secrets import BaseSecretsBackend
     from airflow.sensors.base import BaseSensorOperator
+    from airflow.triggers.base import BaseTrigger
 
     all_verified_entities: dict[EntityType, VerifiedEntities] = {
         EntityType.Operators: find_all_entities(
@@ -565,6 +562,7 @@ def get_package_class_summary(
             unexpected_class_name_patterns=ALL_PATTERNS - {OPERATORS_PATTERN},
             exclude_class_type=BaseSensorOperator,
             false_positive_class_names={
+                "ProduceToTopicOperator",
                 "CloudVisionAddProductToProductSetOperator",
                 "CloudDataTransferServiceGCSToGCSOperator",
                 "CloudDataTransferServiceS3ToGCSOperator",
@@ -605,6 +603,14 @@ def get_package_class_summary(
             expected_class_name_pattern=TRANSFERS_PATTERN,
             unexpected_class_name_patterns=ALL_PATTERNS - {OPERATORS_PATTERN, TRANSFERS_PATTERN},
         ),
+        EntityType.Trigger: find_all_entities(
+            imported_classes=imported_classes,
+            base_package=full_package_name,
+            sub_package_pattern_match=r".*\.triggers\..*",
+            ancestor_match=BaseTrigger,
+            expected_class_name_pattern=TRIGGER_PATTERN,
+            unexpected_class_name_patterns=ALL_PATTERNS - {TRIGGER_PATTERN},
+        ),
     }
     for entity in EntityType:
         print_wrong_naming(entity, all_verified_entities[entity].wrong_entities)
@@ -623,8 +629,8 @@ def get_package_class_summary(
 
 
 def is_camel_case_with_acronyms(s: str):
-    """
-    Checks if the string passed is Camel Case (with capitalised acronyms allowed).
+    """Checks if the string passed is Camel Case (with capitalised acronyms allowed).
+
     :param s: string to check
     :return: true if the name looks cool as Class name.
     """
@@ -634,9 +640,9 @@ def is_camel_case_with_acronyms(s: str):
 def check_if_classes_are_properly_named(
     entity_summary: dict[EntityType, EntityTypeSummary]
 ) -> tuple[int, int]:
-    """
-    Check if all entities in the dictionary are named properly. It prints names at the output
-    and returns the status of class names.
+    """Check if all entities in the dictionary are named properly.
+
+    It prints names at the output and returns the status of class names.
 
     :param entity_summary: dictionary of class names to check, grouped by types.
     :return: Tuple of 2 ints = total number of entities and number of badly named entities
@@ -759,9 +765,10 @@ def get_providers_paths() -> list[str]:
 def add_all_namespaced_packages(
     walkable_paths_and_prefixes: dict[str, str], provider_path: str, provider_prefix: str
 ):
-    """
-    We need to find namespace packages ourselves as "walk_packages" does not support namespaced packages
-    # and PEP420
+    """Find namespace packages.
+
+    This needs to be done manually as ``walk_packages`` does not support
+    namespaced packages and PEP 420.
 
     :param walkable_paths_and_prefixes: pats
     :param provider_path:
@@ -826,6 +833,10 @@ def verify_provider_classes() -> tuple[list[str], list[str]]:
 
 
 def run_provider_discovery():
+    import packaging.version
+
+    import airflow.version
+
     console.print("[bright_blue]List all providers[/]\n")
     subprocess.run(["airflow", "providers", "list"], check=True)
     console.print("[bright_blue]List all hooks[/]\n")
@@ -842,6 +853,12 @@ def run_provider_discovery():
     subprocess.run(["airflow", "providers", "secrets"], check=True)
     console.print("[bright_blue]List all auth backends[/]\n")
     subprocess.run(["airflow", "providers", "auth"], check=True)
+    if packaging.version.parse(airflow.version.version) >= packaging.version.parse("2.7.0.dev0"):
+        # CI also check if our providers are installable and discoverable in airflow older versions
+        # But the triggers command is not available till airflow-2-6-0
+        # TODO: Remove this block once airflow dependency in providers are > 2-6-0
+        console.print("[bright_blue]List all triggers[/]\n")
+        subprocess.run(["airflow", "providers", "triggers"], check=True)
 
 
 AIRFLOW_LOCAL_SETTINGS_PATH = Path("/opt/airflow") / "airflow_local_settings.py"
diff --git a/scripts/tools/initialize_virtualenv.py b/scripts/tools/initialize_virtualenv.py
index d85ea6caa2..e5e5633fdf 100755
--- a/scripts/tools/initialize_virtualenv.py
+++ b/scripts/tools/initialize_virtualenv.py
@@ -112,7 +112,7 @@ def main():
     Setup local virtual environment.
     """
     airflow_home_dir = Path(os.environ.get("AIRFLOW_HOME", Path.home() / "airflow"))
-    airflow_sources = Path(__file__).parents[2]
+    airflow_sources = Path(__file__).resolve().parents[2]
 
     if not check_if_in_virtualenv():
         print(


[airflow] 02/02: Remove yandex from 2.6 branch

Posted by po...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch v2-6-test
in repository https://gitbox.apache.org/repos/asf/airflow.git

commit c3d61c7bb5e608bf13378be81a410487635d1526
Author: Jarek Potiuk <ja...@potiuk.com>
AuthorDate: Fri Jun 9 19:54:37 2023 +0200

    Remove yandex from 2.6 branch
---
 .../providers/yandex/.latest-doc-only-change.txt   |   1 -
 airflow/providers/yandex/CHANGELOG.rst             | 200 --------
 airflow/providers/yandex/__init__.py               |  16 -
 airflow/providers/yandex/hooks/__init__.py         |  16 -
 airflow/providers/yandex/hooks/yandex.py           | 176 -------
 .../providers/yandex/hooks/yandexcloud_dataproc.py |  35 --
 airflow/providers/yandex/operators/__init__.py     |  16 -
 .../yandex/operators/yandexcloud_dataproc.py       | 525 ---------------------
 airflow/providers/yandex/provider.yaml             |  70 ---
 generated/provider_dependencies.json               |   8 -
 images/breeze/output-commands-hash.txt             |  10 +-
 images/breeze/output_build-docs.svg                |   4 +-
 ...management_generate-issue-content-providers.svg |   2 +-
 ...e-management_prepare-provider-documentation.svg |   2 +-
 ...elease-management_prepare-provider-packages.svg |   2 +-
 15 files changed, 10 insertions(+), 1073 deletions(-)

diff --git a/airflow/providers/yandex/.latest-doc-only-change.txt b/airflow/providers/yandex/.latest-doc-only-change.txt
deleted file mode 100644
index ff7136e07d..0000000000
--- a/airflow/providers/yandex/.latest-doc-only-change.txt
+++ /dev/null
@@ -1 +0,0 @@
-06acf40a4337759797f666d5bb27a5a393b74fed
diff --git a/airflow/providers/yandex/CHANGELOG.rst b/airflow/providers/yandex/CHANGELOG.rst
deleted file mode 100644
index 76ee80f39e..0000000000
--- a/airflow/providers/yandex/CHANGELOG.rst
+++ /dev/null
@@ -1,200 +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.
-
-
-.. NOTE TO CONTRIBUTORS:
-   Please, only add notes to the Changelog just below the "Changelog" header when there are some breaking changes
-   and you want to add an explanation to the users on how they are supposed to deal with them.
-   The changelog is updated and maintained semi-automatically by release manager.
-
-Changelog
----------
-
-3.3.0
-.....
-
-Features
-~~~~~~~~
-
-* ``support Yandex SDK feature "endpoint" (#29635)``
-
-3.2.0
-.....
-
-This release of provider is only available for Airflow 2.3+ as explained in the
-`Apache Airflow providers support policy <https://github.com/apache/airflow/blob/main/README.md#support-for-providers>`_.
-
-Features
-~~~~~~~~
-
-* In YandexCloudBaseHook, non-prefixed extra fields are supported and are preferred (#27040).  E.g. ``folder_id`` will be preferred if ``extra__yandexcloud__folder_id`` is also present.
-
-Misc
-~~~~
-
-* ``Move min airflow version to 2.3.0 for all providers (#27196)``
-
-.. Below changes are excluded from the changelog. Move them to
-   appropriate section above if needed. Do not delete the lines(!):
-   * ``Enable string normalization in python formatting - providers (#27205)``
-   * ``Update docs for September Provider's release (#26731)``
-   * ``Apply PEP-563 (Postponed Evaluation of Annotations) to non-core airflow (#26289)``
-   * ``pRepare docs for November 2022 wave of Providers (#27613)``
-   * ``Prepare for follow-up release for November providers (#27774)``
-
-3.1.0
-.....
-
-Features
-~~~~~~~~
-
-* ``YandexCloud provider: Support new Yandex SDK features for DataProc (#25158)``
-
-.. Below changes are excluded from the changelog. Move them to
-   appropriate section above if needed. Do not delete the lines(!):
-   * ``Add documentation for July 2022 Provider's release (#25030)``
-   * ``Move provider dependencies to inside provider folders (#24672)``
-   * ``Remove 'hook-class-names' from provider.yaml (#24702)``
-
-3.0.0
-.....
-
-Breaking changes
-~~~~~~~~~~~~~~~~
-
-* This release of provider is only available for Airflow 2.2+ as explained in the Apache Airflow
-  providers support policy https://github.com/apache/airflow/blob/main/README.md#support-for-providers
-
-.. Below changes are excluded from the changelog. Move them to
-   appropriate section above if needed. Do not delete the lines(!):
-   * ``Migrate Yandex example DAGs to new design AIP-47 (#24082)``
-   * ``Add explanatory note for contributors about updating Changelog (#24229)``
-   * ``Prepare docs for May 2022 provider's release (#24231)``
-   * ``Update package description to remove double min-airflow specification (#24292)``
-
-2.2.3
-.....
-
-Bug Fixes
-~~~~~~~~~
-
-* ``Fix mistakenly added install_requires for all providers (#22382)``
-
-2.2.2
-.....
-
-Misc
-~~~~~
-
-* ``Add Trove classifiers in PyPI (Framework :: Apache Airflow :: Provider)``
-
-2.2.1
-.....
-
-Misc
-~~~~
-
-* ``Support for Python 3.10``
-
-.. Below changes are excluded from the changelog. Move them to
-   appropriate section above if needed. Do not delete the lines(!):
-   * ``Fixed changelog for January 2022 (delayed) provider's release (#21439)``
-   * ``Add documentation for January 2021 providers release (#21257)``
-   * ``Add optional features in providers. (#21074)``
-   * ``Remove ':type' lines now sphinx-autoapi supports typehints (#20951)``
-   * ``Fix spelling (#22054)``
-
-2.2.0
-.....
-
-Features
-~~~~~~~~
-
-* ``YandexCloud provider: Support new Yandex SDK features: log_group_id, user-agent, maven packages (#20103)``
-
-
-.. Below changes are excluded from the changelog. Move them to
-   appropriate section above if needed. Do not delete the lines(!):
-   * ``Fix mypy for providers: elasticsearch, oracle, yandex (#20344)``
-   * ``Fixup string concatenations (#19099)``
-   * ``Update documentation for November 2021 provider's release (#19882)``
-   * ``Prepare documentation for October Provider's release (#19321)``
-   * ``Update documentation for September providers release (#18613)``
-   * ``Static start_date and default arg cleanup for misc. provider example DAGs (#18597)``
-   * ``Inclusive Language (#18349)``
-   * ``Use typed Context EVERYWHERE (#20565)``
-   * ``Fix template_fields type to have MyPy friendly Sequence type (#20571)``
-   * ``Update documentation for provider December 2021 release (#20523)``
-
-2.1.0
-.....
-
-Misc
-~~~~
-
-* ``Optimise connection importing for Airflow 2.2.0``
-
-
-Features
-~~~~~~~~
-
-* ``Add autoscaling subcluster support and remove defaults (#17033)``
-
-
-.. Below changes are excluded from the changelog. Move them to
-   appropriate section above if needed. Do not delete the lines(!):
-   * ``Update description about the new ''connection-types'' provider meta-data (#17767)``
-   * ``Import Hooks lazily individually in providers manager (#17682)``
-   * ``Prepares docs for Rc2 release of July providers (#17116)``
-   * ``Remove/refactor default_args pattern for miscellaneous providers (#16872)``
-   * ``Prepare documentation for July release of providers. (#17015)``
-   * ``Removes pylint from our toolchain (#16682)``
-
-2.0.0
-.....
-
-Breaking changes
-~~~~~~~~~~~~~~~~
-
-* ``Auto-apply apply_default decorator (#15667)``
-
-.. warning:: Due to apply_default decorator removal, this version of the provider requires Airflow 2.1.0+.
-   If your Airflow version is < 2.1.0, and you want to install this provider version, first upgrade
-   Airflow to at least version 2.1.0. Otherwise your Airflow package version will be upgraded
-   automatically and you will have to manually run ``airflow upgrade db`` to complete the migration.
-
-.. Below changes are excluded from the changelog. Move them to
-   appropriate section above if needed. Do not delete the lines(!):
-   * ``Adds interactivity when generating provider documentation. (#15518)``
-   * ``Prepares provider release after PIP 21 compatibility (#15576)``
-   * ``Update docstrings to adhere to sphinx standards (#14918)``
-   * ``Remove Backport Providers (#14886)``
-   * ``Update documentation for broken package releases (#14734)``
-   * ``Updated documentation for June 2021 provider release (#16294)``
-   * ``Fix Sphinx Issues with Docstrings (#14968)``
-   * ``More documentation update for June providers release (#16405)``
-   * ``Synchronizes updated changelog after buggfix release (#16464)``
-
-1.0.1
-.....
-
-Updated documentation and readme files.
-
-1.0.0
-.....
-
-Initial version of the provider.
diff --git a/airflow/providers/yandex/__init__.py b/airflow/providers/yandex/__init__.py
deleted file mode 100644
index 13a83393a9..0000000000
--- a/airflow/providers/yandex/__init__.py
+++ /dev/null
@@ -1,16 +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.
diff --git a/airflow/providers/yandex/hooks/__init__.py b/airflow/providers/yandex/hooks/__init__.py
deleted file mode 100644
index 13a83393a9..0000000000
--- a/airflow/providers/yandex/hooks/__init__.py
+++ /dev/null
@@ -1,16 +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.
diff --git a/airflow/providers/yandex/hooks/yandex.py b/airflow/providers/yandex/hooks/yandex.py
deleted file mode 100644
index d211d79740..0000000000
--- a/airflow/providers/yandex/hooks/yandex.py
+++ /dev/null
@@ -1,176 +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.
-from __future__ import annotations
-
-import json
-import warnings
-from typing import Any
-
-import yandexcloud
-
-from airflow.exceptions import AirflowException
-from airflow.hooks.base import BaseHook
-
-
-class YandexCloudBaseHook(BaseHook):
-    """
-    A base hook for Yandex.Cloud related tasks.
-
-    :param yandex_conn_id: The connection ID to use when fetching connection info.
-    """
-
-    conn_name_attr = "yandex_conn_id"
-    default_conn_name = "yandexcloud_default"
-    conn_type = "yandexcloud"
-    hook_name = "Yandex Cloud"
-
-    @staticmethod
-    def get_connection_form_widgets() -> dict[str, Any]:
-        """Returns connection widgets to add to connection form"""
-        from flask_appbuilder.fieldwidgets import BS3PasswordFieldWidget, BS3TextFieldWidget
-        from flask_babel import lazy_gettext
-        from wtforms import PasswordField, StringField
-
-        return {
-            "service_account_json": PasswordField(
-                lazy_gettext("Service account auth JSON"),
-                widget=BS3PasswordFieldWidget(),
-                description="Service account auth JSON. Looks like "
-                '{"id", "...", "service_account_id": "...", "private_key": "..."}. '
-                "Will be used instead of OAuth token and SA JSON file path field if specified.",
-            ),
-            "service_account_json_path": StringField(
-                lazy_gettext("Service account auth JSON file path"),
-                widget=BS3TextFieldWidget(),
-                description="Service account auth JSON file path. File content looks like "
-                '{"id", "...", "service_account_id": "...", "private_key": "..."}. '
-                "Will be used instead of OAuth token if specified.",
-            ),
-            "oauth": PasswordField(
-                lazy_gettext("OAuth Token"),
-                widget=BS3PasswordFieldWidget(),
-                description="User account OAuth token. "
-                "Either this or service account JSON must be specified.",
-            ),
-            "folder_id": StringField(
-                lazy_gettext("Default folder ID"),
-                widget=BS3TextFieldWidget(),
-                description="Optional. This folder will be used "
-                "to create all new clusters and nodes by default",
-            ),
-            "public_ssh_key": StringField(
-                lazy_gettext("Public SSH key"),
-                widget=BS3TextFieldWidget(),
-                description="Optional. This key will be placed to all created Compute nodes"
-                "to let you have a root shell there",
-            ),
-            "endpoint": StringField(
-                lazy_gettext("API endpoint"),
-                widget=BS3TextFieldWidget(),
-                description="Optional. Specify an API endpoint. Leave blank to use default.",
-            ),
-        }
-
-    @classmethod
-    def provider_user_agent(cls) -> str | None:
-        """Construct User-Agent from Airflow core & provider package versions"""
-        import airflow
-        from airflow.providers_manager import ProvidersManager
-
-        try:
-            manager = ProvidersManager()
-            provider_name = manager.hooks[cls.conn_type].package_name  # type: ignore[union-attr]
-            provider = manager.providers[provider_name]
-            return f"apache-airflow/{airflow.__version__} {provider_name}/{provider.version}"
-        except KeyError:
-            warnings.warn(f"Hook '{cls.hook_name}' info is not initialized in airflow.ProviderManager")
-            return None
-
-    @staticmethod
-    def get_ui_field_behaviour() -> dict[str, Any]:
-        """Returns custom field behaviour"""
-        return {
-            "hidden_fields": ["host", "schema", "login", "password", "port", "extra"],
-            "relabeling": {},
-        }
-
-    def __init__(
-        self,
-        # Connection id is deprecated. Use yandex_conn_id instead
-        connection_id: str | None = None,
-        yandex_conn_id: str | None = None,
-        default_folder_id: str | None = None,
-        default_public_ssh_key: str | None = None,
-    ) -> None:
-        super().__init__()
-        if connection_id:
-            warnings.warn(
-                "Using `connection_id` is deprecated. Please use `yandex_conn_id` parameter.",
-                DeprecationWarning,
-                stacklevel=2,
-            )
-        self.connection_id = yandex_conn_id or connection_id or self.default_conn_name
-        self.connection = self.get_connection(self.connection_id)
-        self.extras = self.connection.extra_dejson
-        credentials = self._get_credentials()
-        sdk_config = self._get_endpoint()
-        self.sdk = yandexcloud.SDK(user_agent=self.provider_user_agent(), **sdk_config, **credentials)
-        self.default_folder_id = default_folder_id or self._get_field("folder_id", False)
-        self.default_public_ssh_key = default_public_ssh_key or self._get_field("public_ssh_key", False)
-        self.client = self.sdk.client
-
-    def _get_credentials(self) -> dict[str, Any]:
-        service_account_json_path = self._get_field("service_account_json_path", False)
-        service_account_json = self._get_field("service_account_json", False)
-        oauth_token = self._get_field("oauth", False)
-        if not (service_account_json or oauth_token or service_account_json_path):
-            raise AirflowException(
-                "No credentials are found in connection. Specify either service account "
-                "authentication JSON or user OAuth token in Yandex.Cloud connection"
-            )
-        if service_account_json_path:
-            with open(service_account_json_path) as infile:
-                service_account_json = infile.read()
-        if service_account_json:
-            service_account_key = json.loads(service_account_json)
-            return {"service_account_key": service_account_key}
-        else:
-            return {"token": oauth_token}
-
-    def _get_endpoint(self) -> dict[str, str]:
-        sdk_config = {}
-        endpoint = self._get_field("endpoint", None)
-        if endpoint:
-            sdk_config["endpoint"] = endpoint
-        return sdk_config
-
-    def _get_field(self, field_name: str, default: Any = None) -> Any:
-        """Get field from extra, first checking short name, then for backcompat we check for prefixed name."""
-        if not hasattr(self, "extras"):
-            return default
-        backcompat_prefix = "extra__yandexcloud__"
-        if field_name.startswith("extra__"):
-            raise ValueError(
-                f"Got prefixed name {field_name}; please remove the '{backcompat_prefix}' prefix "
-                "when using this method."
-            )
-        if field_name in self.extras:
-            return self.extras[field_name]
-        prefixed_name = f"{backcompat_prefix}{field_name}"
-        if prefixed_name in self.extras:
-            return self.extras[prefixed_name]
-        return default
diff --git a/airflow/providers/yandex/hooks/yandexcloud_dataproc.py b/airflow/providers/yandex/hooks/yandexcloud_dataproc.py
deleted file mode 100644
index 9b1862205e..0000000000
--- a/airflow/providers/yandex/hooks/yandexcloud_dataproc.py
+++ /dev/null
@@ -1,35 +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.
-from __future__ import annotations
-
-from airflow.providers.yandex.hooks.yandex import YandexCloudBaseHook
-
-
-class DataprocHook(YandexCloudBaseHook):
-    """
-    A base hook for Yandex.Cloud Data Proc.
-
-    :param yandex_conn_id: The connection ID to use when fetching connection info.
-    """
-
-    def __init__(self, *args, **kwargs) -> None:
-        super().__init__(*args, **kwargs)
-        self.cluster_id = None
-        self.client = self.sdk.wrappers.Dataproc(
-            default_folder_id=self.default_folder_id,
-            default_public_ssh_key=self.default_public_ssh_key,
-        )
diff --git a/airflow/providers/yandex/operators/__init__.py b/airflow/providers/yandex/operators/__init__.py
deleted file mode 100644
index 13a83393a9..0000000000
--- a/airflow/providers/yandex/operators/__init__.py
+++ /dev/null
@@ -1,16 +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.
diff --git a/airflow/providers/yandex/operators/yandexcloud_dataproc.py b/airflow/providers/yandex/operators/yandexcloud_dataproc.py
deleted file mode 100644
index 625827d109..0000000000
--- a/airflow/providers/yandex/operators/yandexcloud_dataproc.py
+++ /dev/null
@@ -1,525 +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.
-from __future__ import annotations
-
-import warnings
-from dataclasses import dataclass
-from typing import TYPE_CHECKING, Iterable, Sequence
-
-from airflow.models import BaseOperator
-from airflow.providers.yandex.hooks.yandexcloud_dataproc import DataprocHook
-
-if TYPE_CHECKING:
-    from airflow.utils.context import Context
-
-
-@dataclass
-class InitializationAction:
-    """Data for initialization action to be run at start of DataProc cluster."""
-
-    uri: str  # Uri of the executable file
-    args: Sequence[str]  # Arguments to the initialization action
-    timeout: int  # Execution timeout
-
-
-class DataprocCreateClusterOperator(BaseOperator):
-    """Creates Yandex.Cloud Data Proc cluster.
-
-    :param folder_id: ID of the folder in which cluster should be created.
-    :param cluster_name: Cluster name. Must be unique inside the folder.
-    :param cluster_description: Cluster description.
-    :param cluster_image_version: Cluster image version. Use default.
-    :param ssh_public_keys: List of SSH public keys that will be deployed to created compute instances.
-    :param subnet_id: ID of the subnetwork. All Data Proc cluster nodes will use one subnetwork.
-    :param services: List of services that will be installed to the cluster. Possible options:
-        HDFS, YARN, MAPREDUCE, HIVE, TEZ, ZOOKEEPER, HBASE, SQOOP, FLUME, SPARK, SPARK, ZEPPELIN, OOZIE
-    :param s3_bucket: Yandex.Cloud S3 bucket to store cluster logs.
-                      Jobs will not work if the bucket is not specified.
-    :param zone: Availability zone to create cluster in.
-                 Currently there are ru-central1-a, ru-central1-b and ru-central1-c.
-    :param service_account_id: Service account id for the cluster.
-                               Service account can be created inside the folder.
-    :param masternode_resource_preset: Resources preset (CPU+RAM configuration)
-                                       for the primary node of the cluster.
-    :param masternode_disk_size: Masternode storage size in GiB.
-    :param masternode_disk_type: Masternode storage type. Possible options: network-ssd, network-hdd.
-    :param datanode_resource_preset: Resources preset (CPU+RAM configuration)
-                                     for the data nodes of the cluster.
-    :param datanode_disk_size: Datanodes storage size in GiB.
-    :param datanode_disk_type: Datanodes storage type. Possible options: network-ssd, network-hdd.
-    :param computenode_resource_preset: Resources preset (CPU+RAM configuration)
-                                        for the compute nodes of the cluster.
-    :param computenode_disk_size: Computenodes storage size in GiB.
-    :param computenode_disk_type: Computenodes storage type. Possible options: network-ssd, network-hdd.
-    :param connection_id: ID of the Yandex.Cloud Airflow connection.
-    :param computenode_max_count: Maximum number of nodes of compute autoscaling subcluster.
-    :param computenode_warmup_duration: The warmup time of the instance in seconds. During this time,
-                                        traffic is sent to the instance,
-                                        but instance metrics are not collected. In seconds.
-    :param computenode_stabilization_duration: Minimum amount of time in seconds for monitoring before
-                                   Instance Groups can reduce the number of instances in the group.
-                                   During this time, the group size doesn't decrease,
-                                   even if the new metric values indicate that it should. In seconds.
-    :param computenode_preemptible: Preemptible instances are stopped at least once every 24 hours,
-                        and can be stopped at any time if their resources are needed by Compute.
-    :param computenode_cpu_utilization_target: Defines an autoscaling rule
-                                   based on the average CPU utilization of the instance group.
-                                   in percents. 10-100.
-                                   By default is not set and default autoscaling strategy is used.
-    :param computenode_decommission_timeout: Timeout to gracefully decommission nodes during downscaling.
-                                             In seconds
-    :param properties: Properties passed to main node software.
-                        Docs: https://cloud.yandex.com/docs/data-proc/concepts/settings-list
-    :param enable_ui_proxy: Enable UI Proxy feature for forwarding Hadoop components web interfaces
-                        Docs: https://cloud.yandex.com/docs/data-proc/concepts/ui-proxy
-    :param host_group_ids: Dedicated host groups to place VMs of cluster on.
-                        Docs: https://cloud.yandex.com/docs/compute/concepts/dedicated-host
-    :param security_group_ids: User security groups.
-                        Docs: https://cloud.yandex.com/docs/data-proc/concepts/network#security-groups
-    :param log_group_id: Id of log group to write logs. By default logs will be sent to default log group.
-                    To disable cloud log sending set cluster property dataproc:disable_cloud_logging = true
-                    Docs: https://cloud.yandex.com/docs/data-proc/concepts/logs
-    :param initialization_actions: Set of init-actions to run when cluster starts.
-                        Docs: https://cloud.yandex.com/docs/data-proc/concepts/init-action
-    """
-
-    def __init__(
-        self,
-        *,
-        folder_id: str | None = None,
-        cluster_name: str | None = None,
-        cluster_description: str | None = "",
-        cluster_image_version: str | None = None,
-        ssh_public_keys: str | Iterable[str] | None = None,
-        subnet_id: str | None = None,
-        services: Iterable[str] = ("HDFS", "YARN", "MAPREDUCE", "HIVE", "SPARK"),
-        s3_bucket: str | None = None,
-        zone: str = "ru-central1-b",
-        service_account_id: str | None = None,
-        masternode_resource_preset: str | None = None,
-        masternode_disk_size: int | None = None,
-        masternode_disk_type: str | None = None,
-        datanode_resource_preset: str | None = None,
-        datanode_disk_size: int | None = None,
-        datanode_disk_type: str | None = None,
-        datanode_count: int = 1,
-        computenode_resource_preset: str | None = None,
-        computenode_disk_size: int | None = None,
-        computenode_disk_type: str | None = None,
-        computenode_count: int = 0,
-        computenode_max_hosts_count: int | None = None,
-        computenode_measurement_duration: int | None = None,
-        computenode_warmup_duration: int | None = None,
-        computenode_stabilization_duration: int | None = None,
-        computenode_preemptible: bool = False,
-        computenode_cpu_utilization_target: int | None = None,
-        computenode_decommission_timeout: int | None = None,
-        connection_id: str | None = None,
-        properties: dict[str, str] | None = None,
-        enable_ui_proxy: bool = False,
-        host_group_ids: Iterable[str] | None = None,
-        security_group_ids: Iterable[str] | None = None,
-        log_group_id: str | None = None,
-        initialization_actions: Iterable[InitializationAction] | None = None,
-        **kwargs,
-    ) -> None:
-        super().__init__(**kwargs)
-        self.folder_id = folder_id
-        self.yandex_conn_id = connection_id
-        self.cluster_name = cluster_name
-        self.cluster_description = cluster_description
-        self.cluster_image_version = cluster_image_version
-        self.ssh_public_keys = ssh_public_keys
-        self.subnet_id = subnet_id
-        self.services = services
-        self.s3_bucket = s3_bucket
-        self.zone = zone
-        self.service_account_id = service_account_id
-        self.masternode_resource_preset = masternode_resource_preset
-        self.masternode_disk_size = masternode_disk_size
-        self.masternode_disk_type = masternode_disk_type
-        self.datanode_resource_preset = datanode_resource_preset
-        self.datanode_disk_size = datanode_disk_size
-        self.datanode_disk_type = datanode_disk_type
-        self.datanode_count = datanode_count
-        self.computenode_resource_preset = computenode_resource_preset
-        self.computenode_disk_size = computenode_disk_size
-        self.computenode_disk_type = computenode_disk_type
-        self.computenode_count = computenode_count
-        self.computenode_max_hosts_count = computenode_max_hosts_count
-        self.computenode_measurement_duration = computenode_measurement_duration
-        self.computenode_warmup_duration = computenode_warmup_duration
-        self.computenode_stabilization_duration = computenode_stabilization_duration
-        self.computenode_preemptible = computenode_preemptible
-        self.computenode_cpu_utilization_target = computenode_cpu_utilization_target
-        self.computenode_decommission_timeout = computenode_decommission_timeout
-        self.properties = properties
-        self.enable_ui_proxy = enable_ui_proxy
-        self.host_group_ids = host_group_ids
-        self.security_group_ids = security_group_ids
-        self.log_group_id = log_group_id
-        self.initialization_actions = initialization_actions
-
-        self.hook: DataprocHook | None = None
-
-    def execute(self, context: Context) -> dict:
-        self.hook = DataprocHook(
-            yandex_conn_id=self.yandex_conn_id,
-        )
-        operation_result = self.hook.client.create_cluster(
-            folder_id=self.folder_id,
-            cluster_name=self.cluster_name,
-            cluster_description=self.cluster_description,
-            cluster_image_version=self.cluster_image_version,
-            ssh_public_keys=self.ssh_public_keys,
-            subnet_id=self.subnet_id,
-            services=self.services,
-            s3_bucket=self.s3_bucket,
-            zone=self.zone,
-            service_account_id=self.service_account_id,
-            masternode_resource_preset=self.masternode_resource_preset,
-            masternode_disk_size=self.masternode_disk_size,
-            masternode_disk_type=self.masternode_disk_type,
-            datanode_resource_preset=self.datanode_resource_preset,
-            datanode_disk_size=self.datanode_disk_size,
-            datanode_disk_type=self.datanode_disk_type,
-            datanode_count=self.datanode_count,
-            computenode_resource_preset=self.computenode_resource_preset,
-            computenode_disk_size=self.computenode_disk_size,
-            computenode_disk_type=self.computenode_disk_type,
-            computenode_count=self.computenode_count,
-            computenode_max_hosts_count=self.computenode_max_hosts_count,
-            computenode_measurement_duration=self.computenode_measurement_duration,
-            computenode_warmup_duration=self.computenode_warmup_duration,
-            computenode_stabilization_duration=self.computenode_stabilization_duration,
-            computenode_preemptible=self.computenode_preemptible,
-            computenode_cpu_utilization_target=self.computenode_cpu_utilization_target,
-            computenode_decommission_timeout=self.computenode_decommission_timeout,
-            properties=self.properties,
-            enable_ui_proxy=self.enable_ui_proxy,
-            host_group_ids=self.host_group_ids,
-            security_group_ids=self.security_group_ids,
-            log_group_id=self.log_group_id,
-            initialization_actions=self.initialization_actions
-            and [
-                self.hook.sdk.wrappers.InitializationAction(
-                    uri=init_action.uri,
-                    args=init_action.args,
-                    timeout=init_action.timeout,
-                )
-                for init_action in self.initialization_actions
-            ],
-        )
-        cluster_id = operation_result.response.id
-
-        context["task_instance"].xcom_push(key="cluster_id", value=cluster_id)
-        # Deprecated
-        context["task_instance"].xcom_push(key="yandexcloud_connection_id", value=self.yandex_conn_id)
-        return cluster_id
-
-    @property
-    def cluster_id(self):
-        return self.output
-
-
-class DataprocBaseOperator(BaseOperator):
-    """Base class for DataProc operators working with given cluster.
-
-    :param connection_id: ID of the Yandex.Cloud Airflow connection.
-    :param cluster_id: ID of the cluster to remove. (templated)
-    """
-
-    template_fields: Sequence[str] = ("cluster_id",)
-
-    def __init__(self, *, yandex_conn_id: str | None = None, cluster_id: str | None = None, **kwargs) -> None:
-        super().__init__(**kwargs)
-        self.cluster_id = cluster_id
-        self.yandex_conn_id = yandex_conn_id
-
-    def _setup(self, context: Context) -> DataprocHook:
-        if self.cluster_id is None:
-            self.cluster_id = context["task_instance"].xcom_pull(key="cluster_id")
-        if self.yandex_conn_id is None:
-            xcom_yandex_conn_id = context["task_instance"].xcom_pull(key="yandexcloud_connection_id")
-            if xcom_yandex_conn_id:
-                warnings.warn("Implicit pass of `yandex_conn_id` is deprecated, please pass it explicitly")
-                self.yandex_conn_id = xcom_yandex_conn_id
-
-        return DataprocHook(yandex_conn_id=self.yandex_conn_id)
-
-    def execute(self, context: Context):
-        raise NotImplementedError()
-
-
-class DataprocDeleteClusterOperator(DataprocBaseOperator):
-    """Deletes Yandex.Cloud Data Proc cluster.
-
-    :param connection_id: ID of the Yandex.Cloud Airflow connection.
-    :param cluster_id: ID of the cluster to remove. (templated)
-    """
-
-    def __init__(self, *, connection_id: str | None = None, cluster_id: str | None = None, **kwargs) -> None:
-        super().__init__(yandex_conn_id=connection_id, cluster_id=cluster_id, **kwargs)
-
-    def execute(self, context: Context) -> None:
-        hook = self._setup(context)
-        hook.client.delete_cluster(self.cluster_id)
-
-
-class DataprocCreateHiveJobOperator(DataprocBaseOperator):
-    """Runs Hive job in Data Proc cluster.
-
-    :param query: Hive query.
-    :param query_file_uri: URI of the script that contains Hive queries. Can be placed in HDFS or S3.
-    :param properties: A mapping of property names to values, used to configure Hive.
-    :param script_variables: Mapping of query variable names to values.
-    :param continue_on_failure: Whether to continue executing queries if a query fails.
-    :param name: Name of the job. Used for labeling.
-    :param cluster_id: ID of the cluster to run job in.
-                       Will try to take the ID from Dataproc Hook object if it's specified. (templated)
-    :param connection_id: ID of the Yandex.Cloud Airflow connection.
-    """
-
-    def __init__(
-        self,
-        *,
-        query: str | None = None,
-        query_file_uri: str | None = None,
-        script_variables: dict[str, str] | None = None,
-        continue_on_failure: bool = False,
-        properties: dict[str, str] | None = None,
-        name: str = "Hive job",
-        cluster_id: str | None = None,
-        connection_id: str | None = None,
-        **kwargs,
-    ) -> None:
-        super().__init__(yandex_conn_id=connection_id, cluster_id=cluster_id, **kwargs)
-        self.query = query
-        self.query_file_uri = query_file_uri
-        self.script_variables = script_variables
-        self.continue_on_failure = continue_on_failure
-        self.properties = properties
-        self.name = name
-
-    def execute(self, context: Context) -> None:
-        hook = self._setup(context)
-        hook.client.create_hive_job(
-            query=self.query,
-            query_file_uri=self.query_file_uri,
-            script_variables=self.script_variables,
-            continue_on_failure=self.continue_on_failure,
-            properties=self.properties,
-            name=self.name,
-            cluster_id=self.cluster_id,
-        )
-
-
-class DataprocCreateMapReduceJobOperator(DataprocBaseOperator):
-    """Runs Mapreduce job in Data Proc cluster.
-
-    :param main_jar_file_uri: URI of jar file with job.
-                              Can be placed in HDFS or S3. Can be specified instead of main_class.
-    :param main_class: Name of the main class of the job. Can be specified instead of main_jar_file_uri.
-    :param file_uris: URIs of files used in the job. Can be placed in HDFS or S3.
-    :param archive_uris: URIs of archive files used in the job. Can be placed in HDFS or S3.
-    :param jar_file_uris: URIs of JAR files used in the job. Can be placed in HDFS or S3.
-    :param properties: Properties for the job.
-    :param args: Arguments to be passed to the job.
-    :param name: Name of the job. Used for labeling.
-    :param cluster_id: ID of the cluster to run job in.
-                       Will try to take the ID from Dataproc Hook object if it's specified. (templated)
-    :param connection_id: ID of the Yandex.Cloud Airflow connection.
-    """
-
-    def __init__(
-        self,
-        *,
-        main_class: str | None = None,
-        main_jar_file_uri: str | None = None,
-        jar_file_uris: Iterable[str] | None = None,
-        archive_uris: Iterable[str] | None = None,
-        file_uris: Iterable[str] | None = None,
-        args: Iterable[str] | None = None,
-        properties: dict[str, str] | None = None,
-        name: str = "Mapreduce job",
-        cluster_id: str | None = None,
-        connection_id: str | None = None,
-        **kwargs,
-    ) -> None:
-        super().__init__(yandex_conn_id=connection_id, cluster_id=cluster_id, **kwargs)
-        self.main_class = main_class
-        self.main_jar_file_uri = main_jar_file_uri
-        self.jar_file_uris = jar_file_uris
-        self.archive_uris = archive_uris
-        self.file_uris = file_uris
-        self.args = args
-        self.properties = properties
-        self.name = name
-
-    def execute(self, context: Context) -> None:
-        hook = self._setup(context)
-        hook.client.create_mapreduce_job(
-            main_class=self.main_class,
-            main_jar_file_uri=self.main_jar_file_uri,
-            jar_file_uris=self.jar_file_uris,
-            archive_uris=self.archive_uris,
-            file_uris=self.file_uris,
-            args=self.args,
-            properties=self.properties,
-            name=self.name,
-            cluster_id=self.cluster_id,
-        )
-
-
-class DataprocCreateSparkJobOperator(DataprocBaseOperator):
-    """Runs Spark job in Data Proc cluster.
-
-    :param main_jar_file_uri: URI of jar file with job. Can be placed in HDFS or S3.
-    :param main_class: Name of the main class of the job.
-    :param file_uris: URIs of files used in the job. Can be placed in HDFS or S3.
-    :param archive_uris: URIs of archive files used in the job. Can be placed in HDFS or S3.
-    :param jar_file_uris: URIs of JAR files used in the job. Can be placed in HDFS or S3.
-    :param properties: Properties for the job.
-    :param args: Arguments to be passed to the job.
-    :param name: Name of the job. Used for labeling.
-    :param cluster_id: ID of the cluster to run job in.
-                       Will try to take the ID from Dataproc Hook object if it's specified. (templated)
-    :param connection_id: ID of the Yandex.Cloud Airflow connection.
-    :param packages: List of maven coordinates of jars to include on the driver and executor classpaths.
-    :param repositories: List of additional remote repositories to search for the maven coordinates
-                        given with --packages.
-    :param exclude_packages: List of groupId:artifactId, to exclude while resolving the dependencies
-                        provided in --packages to avoid dependency conflicts.
-    """
-
-    def __init__(
-        self,
-        *,
-        main_class: str | None = None,
-        main_jar_file_uri: str | None = None,
-        jar_file_uris: Iterable[str] | None = None,
-        archive_uris: Iterable[str] | None = None,
-        file_uris: Iterable[str] | None = None,
-        args: Iterable[str] | None = None,
-        properties: dict[str, str] | None = None,
-        name: str = "Spark job",
-        cluster_id: str | None = None,
-        connection_id: str | None = None,
-        packages: Iterable[str] | None = None,
-        repositories: Iterable[str] | None = None,
-        exclude_packages: Iterable[str] | None = None,
-        **kwargs,
-    ) -> None:
-        super().__init__(yandex_conn_id=connection_id, cluster_id=cluster_id, **kwargs)
-        self.main_class = main_class
-        self.main_jar_file_uri = main_jar_file_uri
-        self.jar_file_uris = jar_file_uris
-        self.archive_uris = archive_uris
-        self.file_uris = file_uris
-        self.args = args
-        self.properties = properties
-        self.name = name
-        self.packages = packages
-        self.repositories = repositories
-        self.exclude_packages = exclude_packages
-
-    def execute(self, context: Context) -> None:
-        hook = self._setup(context)
-        hook.client.create_spark_job(
-            main_class=self.main_class,
-            main_jar_file_uri=self.main_jar_file_uri,
-            jar_file_uris=self.jar_file_uris,
-            archive_uris=self.archive_uris,
-            file_uris=self.file_uris,
-            args=self.args,
-            properties=self.properties,
-            packages=self.packages,
-            repositories=self.repositories,
-            exclude_packages=self.exclude_packages,
-            name=self.name,
-            cluster_id=self.cluster_id,
-        )
-
-
-class DataprocCreatePysparkJobOperator(DataprocBaseOperator):
-    """Runs Pyspark job in Data Proc cluster.
-
-    :param main_python_file_uri: URI of python file with job. Can be placed in HDFS or S3.
-    :param python_file_uris: URIs of python files used in the job. Can be placed in HDFS or S3.
-    :param file_uris: URIs of files used in the job. Can be placed in HDFS or S3.
-    :param archive_uris: URIs of archive files used in the job. Can be placed in HDFS or S3.
-    :param jar_file_uris: URIs of JAR files used in the job. Can be placed in HDFS or S3.
-    :param properties: Properties for the job.
-    :param args: Arguments to be passed to the job.
-    :param name: Name of the job. Used for labeling.
-    :param cluster_id: ID of the cluster to run job in.
-                       Will try to take the ID from Dataproc Hook object if it's specified. (templated)
-    :param connection_id: ID of the Yandex.Cloud Airflow connection.
-    :param packages: List of maven coordinates of jars to include on the driver and executor classpaths.
-    :param repositories: List of additional remote repositories to search for the maven coordinates
-                         given with --packages.
-    :param exclude_packages: List of groupId:artifactId, to exclude while resolving the dependencies
-                         provided in --packages to avoid dependency conflicts.
-    """
-
-    def __init__(
-        self,
-        *,
-        main_python_file_uri: str | None = None,
-        python_file_uris: Iterable[str] | None = None,
-        jar_file_uris: Iterable[str] | None = None,
-        archive_uris: Iterable[str] | None = None,
-        file_uris: Iterable[str] | None = None,
-        args: Iterable[str] | None = None,
-        properties: dict[str, str] | None = None,
-        name: str = "Pyspark job",
-        cluster_id: str | None = None,
-        connection_id: str | None = None,
-        packages: Iterable[str] | None = None,
-        repositories: Iterable[str] | None = None,
-        exclude_packages: Iterable[str] | None = None,
-        **kwargs,
-    ) -> None:
-        super().__init__(yandex_conn_id=connection_id, cluster_id=cluster_id, **kwargs)
-        self.main_python_file_uri = main_python_file_uri
-        self.python_file_uris = python_file_uris
-        self.jar_file_uris = jar_file_uris
-        self.archive_uris = archive_uris
-        self.file_uris = file_uris
-        self.args = args
-        self.properties = properties
-        self.name = name
-        self.packages = packages
-        self.repositories = repositories
-        self.exclude_packages = exclude_packages
-
-    def execute(self, context: Context) -> None:
-        hook = self._setup(context)
-        hook.client.create_pyspark_job(
-            main_python_file_uri=self.main_python_file_uri,
-            python_file_uris=self.python_file_uris,
-            jar_file_uris=self.jar_file_uris,
-            archive_uris=self.archive_uris,
-            file_uris=self.file_uris,
-            args=self.args,
-            properties=self.properties,
-            packages=self.packages,
-            repositories=self.repositories,
-            exclude_packages=self.exclude_packages,
-            name=self.name,
-            cluster_id=self.cluster_id,
-        )
diff --git a/airflow/providers/yandex/provider.yaml b/airflow/providers/yandex/provider.yaml
deleted file mode 100644
index 6aa8eec209..0000000000
--- a/airflow/providers/yandex/provider.yaml
+++ /dev/null
@@ -1,70 +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.
-
----
-package-name: apache-airflow-providers-yandex
-name: Yandex
-description: |
-    Yandex including `Yandex.Cloud <https://cloud.yandex.com/>`__
-suspended: false
-versions:
-  - 3.3.0
-  - 3.2.0
-  - 3.1.0
-  - 3.0.0
-  - 2.2.3
-  - 2.2.2
-  - 2.2.1
-  - 2.2.0
-  - 2.1.0
-  - 2.0.0
-  - 1.0.1
-  - 1.0.0
-
-dependencies:
-  - apache-airflow>=2.3.0
-  - yandexcloud>=0.173.0
-
-integrations:
-  - integration-name: Yandex.Cloud
-    external-doc-url: https://cloud.yandex.com/
-    logo: /integration-logos/yandex/Yandex-Cloud.png
-    tags: [service]
-
-  - integration-name: Yandex.Cloud Dataproc
-    external-doc-url: https://cloud.yandex.com/dataproc
-    how-to-guide:
-      - /docs/apache-airflow-providers-yandex/operators.rst
-    logo: /integration-logos/yandex/Yandex-Cloud.png
-    tags: [service]
-
-operators:
-  - integration-name: Yandex.Cloud Dataproc
-    python-modules:
-      - airflow.providers.yandex.operators.yandexcloud_dataproc
-
-hooks:
-  - integration-name: Yandex.Cloud
-    python-modules:
-      - airflow.providers.yandex.hooks.yandex
-  - integration-name: Yandex.Cloud Dataproc
-    python-modules:
-      - airflow.providers.yandex.hooks.yandexcloud_dataproc
-
-connection-types:
-  - hook-class-name: airflow.providers.yandex.hooks.yandex.YandexCloudBaseHook
-    connection-type: yandexcloud
diff --git a/generated/provider_dependencies.json b/generated/provider_dependencies.json
index afd6c0e39d..ab399cfe20 100644
--- a/generated/provider_dependencies.json
+++ b/generated/provider_dependencies.json
@@ -837,14 +837,6 @@
     ],
     "excluded-python-versions": []
   },
-  "yandex": {
-    "deps": [
-      "apache-airflow>=2.3.0",
-      "yandexcloud>=0.173.0"
-    ],
-    "cross-providers-deps": [],
-    "excluded-python-versions": []
-  },
   "zendesk": {
     "deps": [
       "apache-airflow>=2.3.0",
diff --git a/images/breeze/output-commands-hash.txt b/images/breeze/output-commands-hash.txt
index 80b78b02bc..0cb17dff19 100644
--- a/images/breeze/output-commands-hash.txt
+++ b/images/breeze/output-commands-hash.txt
@@ -2,7 +2,7 @@
 # Please do not solve it but run `breeze setup regenerate-command-images`.
 # This command should fix the conflict and regenerate help images that you have conflict with.
 main:5bd7ecf7e8fdd34879f24ad8ac390405
-build-docs:093cf82ab80aee65c6ada9b16ac60612
+build-docs:077f48da6be5a16a82deea847130c876
 ci:fix-ownership:fee2c9ec9ef19686792002ae054fecdd
 ci:free-space:47234aa0a60b0efd84972e6e797379f8
 ci:get-workflow-info:01ee34c33ad62fa5dc33e0ac8773223f
@@ -37,16 +37,16 @@ prod-image:verify:e7af8401f1d1fc90075d8f6e8215a9f4
 prod-image:d5cb477a8ba7fa861301fa24db49d2ae
 release-management:create-minor-branch:6a01066dce15e09fb269a8385626657c
 release-management:generate-constraints:0c8e5c1b57b486724760d4afdfd571f7
-release-management:generate-issue-content-providers:f3c00ba74e3afc054fe29b65156740ac
+release-management:generate-issue-content-providers:20723a5f69ef3718c9b562fad302380a
 release-management:install-provider-packages:b05446600134e8f0eca5cf8c6c1de856
 release-management:prepare-airflow-package:3ac14ea6d2b09614959c0ec4fd564789
-release-management:prepare-provider-documentation:ef82f40591e467145085f5c955487ac4
-release-management:prepare-provider-packages:72dd7c3b19f85024bc9a4939cac5d87c
+release-management:prepare-provider-documentation:7bf85a5bc35d20d9396881e8dc442b8a
+release-management:prepare-provider-packages:39ac7c3ea29be199d47ece8e00fdd1c8
 release-management:release-prod-images:dff5d068a253dcc3ac1e65a6af150e3d
 release-management:start-rc-process:6aafbaceabd7b67b9a1af4c2f59abc4c
 release-management:start-release:acb384d86e02ff5fde1bf971897be17c
 release-management:verify-provider-packages:7da96dd515876f4a40fd63486b478d0c
-release-management:2b58afb740a9c7620373cfd71307c9d7
+release-management:65fd35264b7fe39e01af4d5cdb029026
 setup:autocomplete:03343478bf1d0cf9c101d454cdb63b68
 setup:check-all-params-in-groups:1a6a07dcef12a55bf42bcbcef0d86adc
 setup:config:584023d1d225879a5d19e347fe9db1d3
diff --git a/images/breeze/output_build-docs.svg b/images/breeze/output_build-docs.svg
index 71c0c5b79e..380e6770f5 100644
--- a/images/breeze/output_build-docs.svg
+++ b/images/breeze/output_build-docs.svg
@@ -289,8 +289,8 @@
 </text><text class="breeze-build-docs-r5" x="0" y="1215.6" textLength="12.2" clip-path="url(#breeze-build-docs-line-49)">│</text><text class="breeze-build-docs-r7" x="329.4" y="1215.6" textLength="1110.2" clip-path="url(#breeze-build-docs-line-49)">apache-airflow-providers-sqlite&#160;|&#160;apache-airflow-providers-ssh&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</ [...]
 </text><text class="breeze-build-docs-r5" x="0" y="1240" textLength="12.2" clip-path="url(#breeze-build-docs-line-50)">│</text><text class="breeze-build-docs-r7" x="329.4" y="1240" textLength="1110.2" clip-path="url(#breeze-build-docs-line-50)">apache-airflow-providers-tableau&#160;|&#160;apache-airflow-providers-tabular&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-buil [...]
 </text><text class="breeze-build-docs-r5" x="0" y="1264.4" textLength="12.2" clip-path="url(#breeze-build-docs-line-51)">│</text><text class="breeze-build-docs-r7" x="329.4" y="1264.4" textLength="1110.2" clip-path="url(#breeze-build-docs-line-51)">apache-airflow-providers-telegram&#160;|&#160;apache-airflow-providers-trino&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="br [...]
-</text><text class="breeze-build-docs-r5" x="0" y="1288.8" textLength="12.2" clip-path="url(#breeze-build-docs-line-52)">│</text><text class="breeze-build-docs-r7" x="329.4" y="1288.8" textLength="1110.2" clip-path="url(#breeze-build-docs-line-52)">apache-airflow-providers-vertica&#160;|&#160;apache-airflow-providers-yandex&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="br [...]
-</text><text class="breeze-build-docs-r5" x="0" y="1313.2" textLength="12.2" clip-path="url(#breeze-build-docs-line-53)">│</text><text class="breeze-build-docs-r7" x="329.4" y="1313.2" textLength="1110.2" clip-path="url(#breeze-build-docs-line-53)">apache-airflow-providers-zendesk&#160;|&#160;docker-stack&#160;|&#160;helm-chart)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
+</text><text class="breeze-build-docs-r5" x="0" y="1288.8" textLength="12.2" clip-path="url(#breeze-build-docs-line-52)">│</text><text class="breeze-build-docs-r7" x="329.4" y="1288.8" textLength="1110.2" clip-path="url(#breeze-build-docs-line-52)">apache-airflow-providers-vertica&#160;|&#160;apache-airflow-providers-zendesk&#160;|&#160;docker-stack&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-build-docs-r5" x="1451.8" y="1288.8" textLength="12.2" clip-path= [...]
+</text><text class="breeze-build-docs-r5" x="0" y="1313.2" textLength="12.2" clip-path="url(#breeze-build-docs-line-53)">│</text><text class="breeze-build-docs-r7" x="329.4" y="1313.2" textLength="1110.2" clip-path="url(#breeze-build-docs-line-53)">helm-chart)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
 </text><text class="breeze-build-docs-r5" x="0" y="1337.6" textLength="12.2" clip-path="url(#breeze-build-docs-line-54)">│</text><text class="breeze-build-docs-r4" x="24.4" y="1337.6" textLength="12.2" clip-path="url(#breeze-build-docs-line-54)">-</text><text class="breeze-build-docs-r4" x="36.6" y="1337.6" textLength="85.4" clip-path="url(#breeze-build-docs-line-54)">-github</text><text class="breeze-build-docs-r4" x="122" y="1337.6" textLength="134.2" clip-path="url(#breeze-build-docs- [...]
 </text><text class="breeze-build-docs-r5" x="0" y="1362" textLength="1464" clip-path="url(#breeze-build-docs-line-55)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-build-docs-r2" x="1464" y="1362" textLength="12.2" clip-path="url(#breeze-build-docs-line-55)">
 </text><text class="breeze-build-docs-r5" x="0" y="1386.4" textLength="24.4" clip-path="url(#breeze-build-docs-line-56)">╭─</text><text class="breeze-build-docs-r5" x="24.4" y="1386.4" textLength="195.2" clip-path="url(#breeze-build-docs-line-56)">&#160;Common&#160;options&#160;</text><text class="breeze-build-docs-r5" x="219.6" y="1386.4" textLength="1220" clip-path="url(#breeze-build-docs-line-56)">──────────────────────────────────────────────────────────────────────────────────────── [...]
diff --git a/images/breeze/output_release-management_generate-issue-content-providers.svg b/images/breeze/output_release-management_generate-issue-content-providers.svg
index ace464046a..ca8c6bb826 100644
--- a/images/breeze/output_release-management_generate-issue-content-providers.svg
+++ b/images/breeze/output_release-management_generate-issue-content-providers.svg
@@ -177,7 +177,7 @@
 </text><text class="breeze-release-management-generate-issue-content-providers-r1" x="12.2" y="386" textLength="1366.4" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-15)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
 </text><text class="breeze-release-management-generate-issue-content-providers-r1" x="12.2" y="410.4" textLength="1403" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-16)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
 </text><text class="breeze-release-management-generate-issue-content-providers-r1" x="12.2" y="434.8" textLength="1427.4" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-17)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="12.2" y="459.2" textLength="1427.4" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-18)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
+</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="12.2" y="459.2" textLength="1317.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-18)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
 </text><text class="breeze-release-management-generate-issue-content-providers-r2" x="1464" y="483.6" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-19)">
 </text><text class="breeze-release-management-generate-issue-content-providers-r2" x="12.2" y="508" textLength="585.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-20)">Generates&#160;content&#160;for&#160;issue&#160;to&#160;test&#160;the&#160;release.</text><text class="breeze-release-management-generate-issue-content-providers-r2" x="1464" y="508" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-20)">
 </text><text class="breeze-release-management-generate-issue-content-providers-r2" x="1464" y="532.4" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-21)">
diff --git a/images/breeze/output_release-management_prepare-provider-documentation.svg b/images/breeze/output_release-management_prepare-provider-documentation.svg
index 75b2769e59..9f91e0f28f 100644
--- a/images/breeze/output_release-management_prepare-provider-documentation.svg
+++ b/images/breeze/output_release-management_prepare-provider-documentation.svg
@@ -183,7 +183,7 @@
 </text><text class="breeze-release-management-prepare-provider-documentation-r1" x="12.2" y="386" textLength="1439.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-15)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
 </text><text class="breeze-release-management-prepare-provider-documentation-r1" x="12.2" y="410.4" textLength="1366.4" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-16)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
 </text><text class="breeze-release-management-prepare-provider-documentation-r1" x="12.2" y="434.8" textLength="1342" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-17)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="12.2" y="459.2" textLength="1378.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-18)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="12.2" y="459.2" textLength="1268.8" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-18)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
 </text><text class="breeze-release-management-prepare-provider-documentation-r2" x="1464" y="483.6" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-19)">
 </text><text class="breeze-release-management-prepare-provider-documentation-r2" x="12.2" y="508" textLength="97.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-20)">Prepare&#160;</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="109.8" y="508" textLength="109.8" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-20)">CHANGELOG</text><text class="breeze-release-management-prepare-provider-documen [...]
 </text><text class="breeze-release-management-prepare-provider-documentation-r2" x="1464" y="532.4" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-21)">
diff --git a/images/breeze/output_release-management_prepare-provider-packages.svg b/images/breeze/output_release-management_prepare-provider-packages.svg
index d75838e262..e57bdcf16e 100644
--- a/images/breeze/output_release-management_prepare-provider-packages.svg
+++ b/images/breeze/output_release-management_prepare-provider-packages.svg
@@ -169,7 +169,7 @@
 </text><text class="breeze-release-management-prepare-provider-packages-r1" x="12.2" y="337.2" textLength="1439.6" clip-path="url(#breeze-release-management-prepare-provider-packages-line-13)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
 </text><text class="breeze-release-management-prepare-provider-packages-r1" x="12.2" y="361.6" textLength="1427.4" clip-path="url(#breeze-release-management-prepare-provider-packages-line-14)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
 </text><text class="breeze-release-management-prepare-provider-packages-r1" x="12.2" y="386" textLength="1390.8" clip-path="url(#breeze-release-management-prepare-provider-packages-line-15)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="breeze-release-management-prepare-provider-packages-r1" x="12.2" y="410.4" textLength="1415.2" clip-path="url(#breeze-release-management-prepare-provider-packages-line-16)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="breeze-release-management-prepare-provider-packages-r1" x="12.2" y="410.4" textLength="1305.4" clip-path="url(#breeze-release-management-prepare-provider-packages-line-16)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
 </text><text class="breeze-release-management-prepare-provider-packages-r1" x="12.2" y="434.8" textLength="854" clip-path="url(#breeze-release-management-prepare-provider-packages-line-17)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
 </text><text class="breeze-release-management-prepare-provider-packages-r2" x="1464" y="459.2" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-packages-line-18)">
 </text><text class="breeze-release-management-prepare-provider-packages-r2" x="12.2" y="483.6" textLength="585.6" clip-path="url(#breeze-release-management-prepare-provider-packages-line-19)">Prepare&#160;sdist/whl&#160;packages&#160;of&#160;Airflow&#160;Providers.</text><text class="breeze-release-management-prepare-provider-packages-r2" x="1464" y="483.6" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-packages-line-19)">