You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by ep...@apache.org on 2025/12/08 16:36:58 UTC

(airflow) 21/30: [v3-1-test] Fix airflow/task-sdk relase PMC checks (#59164) (#59165)

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

ephraimanierobi pushed a commit to branch v3-1-test
in repository https://gitbox.apache.org/repos/asf/airflow.git

commit c3435fed2e7d27db669a7fea7a8be6bbd09b4a0a
Author: Jarek Potiuk <ja...@potiuk.com>
AuthorDate: Sun Dec 7 19:33:30 2025 +0100

    [v3-1-test] Fix airflow/task-sdk relase PMC checks (#59164) (#59165)
    
    There were few small issues with the airflow/task-sdk release-checks:
    
    * one cd was missing in the process
    * task-sdk folder was not pointing to the right sub-folder.
    * Dockerfile.pmc should use constraints and for task-sdk they
      should install also apache-airflow and apache-airflow-core
      as those are not dependencies of task-sdk and pip failed
      to find them without --pre flag.
    (cherry picked from commit ad6961dc447001e9aa1b6080dffb0f7d51eb060e)
---
 dev/README_RELEASE_AIRFLOW.md                      |   5 +-
 dev/breeze/doc/09_release_management_tasks.rst     |  49 +-
 .../doc/images/output_release-management.svg       |  64 +--
 .../doc/images/output_release-management.txt       |   2 +-
 ...management_generate-issue-content-providers.svg |  32 +-
 ...management_generate-issue-content-providers.txt |   2 +-
 ...lease-management_prepare-helm-chart-package.svg |  32 +-
 ...lease-management_prepare-helm-chart-package.txt |   2 +-
 ...e-management_prepare-provider-distributions.svg |   2 +-
 ...e-management_prepare-provider-distributions.txt |   2 +-
 ...e-management_prepare-provider-documentation.svg | 102 +++--
 ...e-management_prepare-provider-documentation.txt |   2 +-
 .../output_release-management_publish-docs.svg     |   2 +-
 .../output_release-management_publish-docs.txt     |   2 +-
 .../output_release-management_tag-providers.svg    |  37 +-
 .../output_release-management_tag-providers.txt    |   2 +-
 ...se-management_update-providers-next-version.svg |  95 ++++
 ...se-management_update-providers-next-version.txt |   1 +
 .../output_setup_check-all-params-in-groups.svg    |  20 +-
 .../output_setup_check-all-params-in-groups.txt    |   2 +-
 .../output_setup_regenerate-command-images.svg     |  22 +-
 .../output_setup_regenerate-command-images.txt     |   2 +-
 .../commands/release_management_commands.py        | 503 +++++++++++++++------
 .../commands/release_management_commands_config.py |  51 ++-
 .../airflow_breeze/utils/check_release_files.py    |   8 +-
 .../src/airflow_breeze/utils/click_validators.py   |  52 +++
 dev/breeze/src/airflow_breeze/utils/path_utils.py  |  11 +
 27 files changed, 808 insertions(+), 298 deletions(-)

diff --git a/dev/README_RELEASE_AIRFLOW.md b/dev/README_RELEASE_AIRFLOW.md
index 9bbfd99bca3..598cc4e9096 100644
--- a/dev/README_RELEASE_AIRFLOW.md
+++ b/dev/README_RELEASE_AIRFLOW.md
@@ -712,6 +712,7 @@ As a PMC member, you should be able to clone the SVN repository
 or update it if you already checked it out:
 
 ```shell script
+cd ${AIRFLOW_REPO_ROOT}
 cd ..
 [ -d asf-dist ] || svn checkout --depth=immediates https://dist.apache.org/repos/dist asf-dist
 svn update --set-depth=infinity asf-dist/dev/airflow
@@ -728,12 +729,12 @@ Optionally you can use the `breeze release-management check-release-files` comma
 present in SVN. This command may also help with verifying installation of the packages.
 
 ```shell script
-breeze release-management check-release-files airflow --version ${VERSION_RC} --path-to-airflow-svn "${PATH_TO_AIRFLOW_SVN}"
+breeze release-management check-release-files airflow --version ${VERSION_RC}
 ```
 
 
 ```shell script
-breeze release-management check-release-files task-sdk --version ${TASK_SDK_VERSION_RC} --path-to-airflow-svn "${PATH_TO_AIRFLOW_SVN}/task-sdk"
+breeze release-management check-release-files task-sdk --version ${TASK_SDK_VERSION_RC}
 ```
 
 ## Licence check
diff --git a/dev/breeze/doc/09_release_management_tasks.rst b/dev/breeze/doc/09_release_management_tasks.rst
index 731942706c7..3d3108c6df2 100644
--- a/dev/breeze/doc/09_release_management_tasks.rst
+++ b/dev/breeze/doc/09_release_management_tasks.rst
@@ -94,6 +94,32 @@ When testing from HEAD of the branch when the tag
   :width: 100%
   :alt: Breeze release-management prepare-tarball
 
+Validating Release Candidate for PMC
+"""""""""""""""""""""""""""""""""""""
+
+PMC members can use Breeze to automate verification of release candidates instead of manually
+running multiple verification steps. This command validates SVN files, GPG signatures, SHA512
+checksums, Apache RAT licenses, and reproducible builds.
+
+.. code-block:: bash
+
+    breeze release-management validate-rc-by-pmc --distribution airflow --version 3.1.3rc1 --task-sdk-version 1.1.3rc1 --svn-path ~/asf-dist/dev/airflow
+
+You can run individual checks by specifying the ``--checks`` flag:
+
+.. code-block:: bash
+
+    breeze release-management validate-rc-by-pmc \
+      --distribution airflow \
+      --version 3.1.3rc1 \
+      --svn-path ~/asf-dist/dev/airflow \
+      --checks svn,signatures,checksums,licenses
+
+.. image:: ./images/output_release-management_validate-rc-by-pmc.svg
+  :target: https://raw.githubusercontent.com/apache/airflow/main/dev/breeze/doc/images/output_release-management_validate-rc-by-pmc.svg
+  :width: 100%
+  :alt: Breeze release-management validate-rc-by-pmc
+
 Start minor branch of Airflow
 """""""""""""""""""""""""""""
 
@@ -281,10 +307,10 @@ This command can be utilized to manage git tags for providers within the Airflow
 Sometimes in cases when there is a connectivity issue to GitHub, it might be possible that local tags get created and lead to annoying errors.
 The default behaviour would be to clean such local tags up.
 
-The flag ``--clean-local-tags`` can be used to delete the local tags.
+The flag ``--clean-tags`` can be used to delete the local tags.
 
 However, If you want to disable this behaviour, set the envvar CLEAN_LOCAL_TAGS to false or use the
-``--no-clean-local-tags`` flag.
+``--no-clean-tags`` flag.
 
 .. code-block:: bash
 
@@ -381,6 +407,23 @@ You can also add ``--answer yes`` to perform non-interactive build.
   :width: 100%
   :alt: Breeze prepare-provider-documentation
 
+Updating provider next version
+""""""""""""""""""""""""""""""
+
+You can use Breeze to update references to other providers automatically to the
+next version of dependent providers, when they are commented with ``# use next version``.
+
+The below example perform the upgrade.
+
+.. code-block:: bash
+
+     breeze release-management update-providers-next-version
+
+
+.. image:: ./images/output_release-management_update-providers-next-version.svg
+  :target: https://raw.githubusercontent.com/apache/airflow/main/dev/breeze/doc/images/output_release-management_update-providers-next-version.svg
+  :alt: Breeze update-providers-next-version
+
 Preparing providers
 """""""""""""""""""
 
@@ -428,7 +471,7 @@ Installing providers
 """"""""""""""""""""
 
 In some cases we want to just see if the providers 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
+verifying them. This happens automatically on CI for ``sdist`` packages but you can also run it manually if you
 just prepared providers and they are present in ``dist`` folder.
 
 .. code-block:: bash
diff --git a/dev/breeze/doc/images/output_release-management.svg b/dev/breeze/doc/images/output_release-management.svg
index a58d6ee577c..4b0ea7d3f6f 100644
--- a/dev/breeze/doc/images/output_release-management.svg
+++ b/dev/breeze/doc/images/output_release-management.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1294.3999999999999" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1318.8" 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="1243.3999999999999" />
+      <rect x="0" y="0" width="1463.0" height="1267.8" />
     </clipPath>
     <clipPath id="breeze-release-management-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -194,9 +194,12 @@
 <clipPath id="breeze-release-management-line-49">
     <rect x="0" y="1197.1" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="breeze-release-management-line-50">
+    <rect x="0" y="1221.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="1292.4" 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="1316.8" 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"/>
@@ -230,33 +233,34 @@
 </text><text class="breeze-release-management-r5" x="0" y="532.4" textLength="1464" clip-path="url(#breeze-release-management-line-21)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-r1" x="1464" y="532.4" textLength="12.2" clip-path="url(#breeze-release-management-line-21)">
 </text><text class="breeze-release-management-r5" x="0" y="556.8" textLength="24.4" clip-path="url(#breeze-release-management-line-22)">╭─</text><text class="breeze-release-management-r5" x="24.4" y="556.8" textLength="341.6" clip-path="url(#breeze-release-management-line-22)">&#160;Providers&#160;release&#160;commands&#160;</text><text class="breeze-release-management-r5" x="366" y="556.8" textLength="1073.6" clip-path="url(#breeze-release-management-line-22)">────────────────────────── [...]
 </text><text class="breeze-release-management-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-release-management-line-23)">│</text><text class="breeze-release-management-r4" x="24.4" y="581.2" textLength="439.2" clip-path="url(#breeze-release-management-line-23)">prepare-provider-documentation&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="488" y="581.2" textLength="951.6" clip-path="url(#breeze-release-management-line-23)">Prepare&#1 [...]
-</text><text class="breeze-release-management-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-release-management-line-24)">│</text><text class="breeze-release-management-r4" x="24.4" y="605.6" textLength="439.2" clip-path="url(#breeze-release-management-line-24)">prepare-provider-distributions&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="488" y="605.6" textLength="951.6" clip-path="url(#breeze-release-management-line-24)">Prepare&#1 [...]
-</text><text class="breeze-release-management-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-release-management-line-25)">│</text><text class="breeze-release-management-r4" x="24.4" y="630" textLength="439.2" clip-path="url(#breeze-release-management-line-25)">install-provider-distributions&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="488" y="630" textLength="951.6" clip-path="url(#breeze-release-management-line-25)">Installs&#160;pr [...]
-</text><text class="breeze-release-management-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-release-management-line-26)">│</text><text class="breeze-release-management-r4" x="24.4" y="654.4" textLength="439.2" clip-path="url(#breeze-release-management-line-26)">verify-provider-distributions&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="488" y="654.4" textLength="951.6" clip-path="url(#breeze-release-management-line-26)">Verif [...]
-</text><text class="breeze-release-management-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-release-management-line-27)">│</text><text class="breeze-release-management-r4" x="24.4" y="678.8" textLength="439.2" clip-path="url(#breeze-release-management-line-27)">generate-providers-metadata&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="488" y="678.8" textLength="951.6" clip-path="url(#breeze-release-management-line- [...]
-</text><text class="breeze-release-management-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-release-management-line-28)">│</text><text class="breeze-release-management-r4" x="24.4" y="703.2" textLength="439.2" clip-path="url(#breeze-release-management-line-28)">generate-issue-content-providers&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="488" y="703.2" textLength="951.6" clip-path="url(#breeze-release-management-line-28)">Generates&#160;conte [...]
-</text><text class="breeze-release-management-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-release-management-line-29)">│</text><text class="breeze-release-management-r4" x="24.4" y="727.6" textLength="439.2" clip-path="url(#breeze-release-management-line-29)">clean-old-provider-artifacts&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="488" y="727.6" textLength="951.6" clip-path="url(#breeze-release-management-line-29)"> [...]
-</text><text class="breeze-release-management-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-release-management-line-30)">│</text><text class="breeze-release-management-r4" x="24.4" y="752" textLength="439.2" clip-path="url(#breeze-release-management-line-30)">tag-providers&#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-r1" x="488" y="752" te [...]
-</text><text class="breeze-release-management-r5" x="0" y="776.4" textLength="1464" clip-path="url(#breeze-release-management-line-31)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-r1" x="1464" y="776.4" textLength="12.2" clip-path="url(#breeze-release-management-line-31)">
-</text><text class="breeze-release-management-r5" x="0" y="800.8" textLength="24.4" clip-path="url(#breeze-release-management-line-32)">╭─</text><text class="breeze-release-management-r5" x="24.4" y="800.8" textLength="427" clip-path="url(#breeze-release-management-line-32)">&#160;Airflow&#160;Task&#160;SDK&#160;release&#160;commands&#160;</text><text class="breeze-release-management-r5" x="451.4" y="800.8" textLength="988.2" clip-path="url(#breeze-release-management-line-32)">────────── [...]
-</text><text class="breeze-release-management-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-release-management-line-33)">│</text><text class="breeze-release-management-r4" x="24.4" y="825.2" textLength="512.4" clip-path="url(#breeze-release-management-line-33)">prepare-task-sdk-distributions&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="561.2" y="825.2" textLength="878.4" clip-path="url(#breeze-r [...]
-</text><text class="breeze-release-management-r5" x="0" y="849.6" textLength="1464" clip-path="url(#breeze-release-management-line-34)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-r1" x="1464" y="849.6" textLength="12.2" clip-path="url(#breeze-release-management-line-34)">
-</text><text class="breeze-release-management-r5" x="0" y="874" textLength="24.4" clip-path="url(#breeze-release-management-line-35)">╭─</text><text class="breeze-release-management-r5" x="24.4" y="874" textLength="353.8" clip-path="url(#breeze-release-management-line-35)">&#160;airflowctl&#160;release&#160;commands&#160;</text><text class="breeze-release-management-r5" x="378.2" y="874" textLength="1061.4" clip-path="url(#breeze-release-management-line-35)">───────────────────────────── [...]
-</text><text class="breeze-release-management-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-release-management-line-36)">│</text><text class="breeze-release-management-r4" x="24.4" y="898.4" textLength="585.6" clip-path="url(#breeze-release-management-line-36)">prepare-airflow-ctl-distributions&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="634.4" y="898.4" textLength="805.2" cli [...]
-</text><text class="breeze-release-management-r5" x="0" y="922.8" textLength="1464" clip-path="url(#breeze-release-management-line-37)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-r1" x="1464" y="922.8" textLength="12.2" clip-path="url(#breeze-release-management-line-37)">
-</text><text class="breeze-release-management-r5" x="0" y="947.2" textLength="24.4" clip-path="url(#breeze-release-management-line-38)">╭─</text><text class="breeze-release-management-r5" x="24.4" y="947.2" textLength="292.8" clip-path="url(#breeze-release-management-line-38)">&#160;Other&#160;release&#160;commands&#160;</text><text class="breeze-release-management-r5" x="317.2" y="947.2" textLength="1122.4" clip-path="url(#breeze-release-management-line-38)">──────────────────────────── [...]
-</text><text class="breeze-release-management-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-release-management-line-39)">│</text><text class="breeze-release-management-r4" x="24.4" y="971.6" textLength="292.8" clip-path="url(#breeze-release-management-line-39)">add-back-references&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="341.6" y="971.6" textLength="1098" clip-path="url(#breeze-release-management-line-39)">Command&#160;to&#160;add&# [...]
-</text><text class="breeze-release-management-r5" x="0" y="996" textLength="12.2" clip-path="url(#breeze-release-management-line-40)">│</text><text class="breeze-release-management-r4" x="24.4" y="996" textLength="292.8" clip-path="url(#breeze-release-management-line-40)">prepare-python-client&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="341.6" y="996" textLength="1098" clip-path="url(#breeze-release-management-line-40)">Prepares&#160;python&#160;client&#160;pack [...]
-</text><text class="breeze-release-management-r5" x="0" y="1020.4" textLength="12.2" clip-path="url(#breeze-release-management-line-41)">│</text><text class="breeze-release-management-r4" x="24.4" y="1020.4" textLength="292.8" clip-path="url(#breeze-release-management-line-41)">publish-docs&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="341.6" y="1020.4" textLength="1098" clip-path="url(#breeze-release-managemen [...]
-</text><text class="breeze-release-management-r5" x="0" y="1044.8" textLength="12.2" clip-path="url(#breeze-release-management-line-42)">│</text><text class="breeze-release-management-r4" x="24.4" y="1044.8" textLength="292.8" clip-path="url(#breeze-release-management-line-42)">generate-constraints&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="341.6" y="1044.8" textLength="1098" clip-path="url(#breeze-release-management-line-42)">Generates&#160;pinned&#160;c [...]
-</text><text class="breeze-release-management-r5" x="0" y="1069.2" textLength="12.2" clip-path="url(#breeze-release-management-line-43)">│</text><text class="breeze-release-management-r4" x="24.4" y="1069.2" textLength="292.8" clip-path="url(#breeze-release-management-line-43)">update-constraints&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="341.6" y="1069.2" textLength="1098" clip-path="url(#breeze-release-management-line-43)">Update&#160;releas [...]
-</text><text class="breeze-release-management-r5" x="0" y="1093.6" textLength="12.2" clip-path="url(#breeze-release-management-line-44)">│</text><text class="breeze-release-management-r4" x="24.4" y="1093.6" textLength="292.8" clip-path="url(#breeze-release-management-line-44)">publish-docs-to-s3&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="341.6" y="1093.6" textLength="1098" clip-path="url(#breeze-release-management-line-44)">Publishes&#160;doc [...]
-</text><text class="breeze-release-management-r5" x="0" y="1118" textLength="12.2" clip-path="url(#breeze-release-management-line-45)">│</text><text class="breeze-release-management-r4" x="24.4" y="1118" textLength="292.8" clip-path="url(#breeze-release-management-line-45)">check-release-files&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="341.6" y="1118" textLength="1098" clip-path="url(#breeze-release-management-line-45)">Verify&#160;that&#160;all&#16 [...]
-</text><text class="breeze-release-management-r5" x="0" y="1142.4" textLength="1464" clip-path="url(#breeze-release-management-line-46)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-r1" x="1464" y="1142.4" textLength="12.2" clip-path="url(#breeze-release-management-line-46)">
-</text><text class="breeze-release-management-r5" x="0" y="1166.8" textLength="24.4" clip-path="url(#breeze-release-management-line-47)">╭─</text><text class="breeze-release-management-r5" x="24.4" y="1166.8" textLength="122" clip-path="url(#breeze-release-management-line-47)">&#160;Commands&#160;</text><text class="breeze-release-management-r5" x="146.4" y="1166.8" textLength="1293.2" clip-path="url(#breeze-release-management-line-47)">─────────────────────────────────────────────────── [...]
-</text><text class="breeze-release-management-r5" x="0" y="1191.2" textLength="12.2" clip-path="url(#breeze-release-management-line-48)">│</text><text class="breeze-release-management-r4" x="24.4" y="1191.2" textLength="305" clip-path="url(#breeze-release-management-line-48)">constraints-version-check</text><text class="breeze-release-management-r1" x="353.8" y="1191.2" textLength="1085.8" clip-path="url(#breeze-release-management-line-48)">Check&#160;constraints&#160;against&#160;releas [...]
-</text><text class="breeze-release-management-r5" x="0" y="1215.6" textLength="12.2" clip-path="url(#breeze-release-management-line-49)">│</text><text class="breeze-release-management-r4" x="24.4" y="1215.6" textLength="305" clip-path="url(#breeze-release-management-line-49)">merge-prod-images&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="353.8" y="1215.6" textLength="1085.8" clip-path="url(#breeze-release-management-line-49)">Merge&# [...]
-</text><text class="breeze-release-management-r5" x="0" y="1240" textLength="1464" clip-path="url(#breeze-release-management-line-50)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-r1" x="1464" y="1240" textLength="12.2" clip-path="url(#breeze-release-management-line-50)">
+</text><text class="breeze-release-management-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-release-management-line-24)">│</text><text class="breeze-release-management-r4" x="24.4" y="605.6" textLength="439.2" clip-path="url(#breeze-release-management-line-24)">update-providers-next-version&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="488" y="605.6" textLength="951.6" clip-path="url(#breeze-release-management-line-24)">Updat [...]
+</text><text class="breeze-release-management-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-release-management-line-25)">│</text><text class="breeze-release-management-r4" x="24.4" y="630" textLength="439.2" clip-path="url(#breeze-release-management-line-25)">prepare-provider-distributions&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="488" y="630" textLength="951.6" clip-path="url(#breeze-release-management-line-25)">Prepare&#160;sdi [...]
+</text><text class="breeze-release-management-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-release-management-line-26)">│</text><text class="breeze-release-management-r4" x="24.4" y="654.4" textLength="439.2" clip-path="url(#breeze-release-management-line-26)">install-provider-distributions&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="488" y="654.4" textLength="951.6" clip-path="url(#breeze-release-management-line-26)">Installs&# [...]
+</text><text class="breeze-release-management-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-release-management-line-27)">│</text><text class="breeze-release-management-r4" x="24.4" y="678.8" textLength="439.2" clip-path="url(#breeze-release-management-line-27)">verify-provider-distributions&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="488" y="678.8" textLength="951.6" clip-path="url(#breeze-release-management-line-27)">Verif [...]
+</text><text class="breeze-release-management-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-release-management-line-28)">│</text><text class="breeze-release-management-r4" x="24.4" y="703.2" textLength="439.2" clip-path="url(#breeze-release-management-line-28)">generate-providers-metadata&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="488" y="703.2" textLength="951.6" clip-path="url(#breeze-release-management-line- [...]
+</text><text class="breeze-release-management-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-release-management-line-29)">│</text><text class="breeze-release-management-r4" x="24.4" y="727.6" textLength="439.2" clip-path="url(#breeze-release-management-line-29)">generate-issue-content-providers&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="488" y="727.6" textLength="951.6" clip-path="url(#breeze-release-management-line-29)">Generates&#160;conte [...]
+</text><text class="breeze-release-management-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-release-management-line-30)">│</text><text class="breeze-release-management-r4" x="24.4" y="752" textLength="439.2" clip-path="url(#breeze-release-management-line-30)">clean-old-provider-artifacts&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="488" y="752" textLength="951.6" clip-path="url(#breeze-release-management-line-30)">Cleans [...]
+</text><text class="breeze-release-management-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-release-management-line-31)">│</text><text class="breeze-release-management-r4" x="24.4" y="776.4" textLength="439.2" clip-path="url(#breeze-release-management-line-31)">tag-providers&#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-r1" x="488" y="776 [...]
+</text><text class="breeze-release-management-r5" x="0" y="800.8" textLength="1464" clip-path="url(#breeze-release-management-line-32)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-r1" x="1464" y="800.8" textLength="12.2" clip-path="url(#breeze-release-management-line-32)">
+</text><text class="breeze-release-management-r5" x="0" y="825.2" textLength="24.4" clip-path="url(#breeze-release-management-line-33)">╭─</text><text class="breeze-release-management-r5" x="24.4" y="825.2" textLength="427" clip-path="url(#breeze-release-management-line-33)">&#160;Airflow&#160;Task&#160;SDK&#160;release&#160;commands&#160;</text><text class="breeze-release-management-r5" x="451.4" y="825.2" textLength="988.2" clip-path="url(#breeze-release-management-line-33)">────────── [...]
+</text><text class="breeze-release-management-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-release-management-line-34)">│</text><text class="breeze-release-management-r4" x="24.4" y="849.6" textLength="512.4" clip-path="url(#breeze-release-management-line-34)">prepare-task-sdk-distributions&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="561.2" y="849.6" textLength="878.4" clip-path="url(#breeze-r [...]
+</text><text class="breeze-release-management-r5" x="0" y="874" textLength="1464" clip-path="url(#breeze-release-management-line-35)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-r1" x="1464" y="874" textLength="12.2" clip-path="url(#breeze-release-management-line-35)">
+</text><text class="breeze-release-management-r5" x="0" y="898.4" textLength="24.4" clip-path="url(#breeze-release-management-line-36)">╭─</text><text class="breeze-release-management-r5" x="24.4" y="898.4" textLength="353.8" clip-path="url(#breeze-release-management-line-36)">&#160;airflowctl&#160;release&#160;commands&#160;</text><text class="breeze-release-management-r5" x="378.2" y="898.4" textLength="1061.4" clip-path="url(#breeze-release-management-line-36)">─────────────────────── [...]
+</text><text class="breeze-release-management-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-release-management-line-37)">│</text><text class="breeze-release-management-r4" x="24.4" y="922.8" textLength="585.6" clip-path="url(#breeze-release-management-line-37)">prepare-airflow-ctl-distributions&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="634.4" y="922.8" textLength="805.2" cli [...]
+</text><text class="breeze-release-management-r5" x="0" y="947.2" textLength="1464" clip-path="url(#breeze-release-management-line-38)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-r1" x="1464" y="947.2" textLength="12.2" clip-path="url(#breeze-release-management-line-38)">
+</text><text class="breeze-release-management-r5" x="0" y="971.6" textLength="24.4" clip-path="url(#breeze-release-management-line-39)">╭─</text><text class="breeze-release-management-r5" x="24.4" y="971.6" textLength="292.8" clip-path="url(#breeze-release-management-line-39)">&#160;Other&#160;release&#160;commands&#160;</text><text class="breeze-release-management-r5" x="317.2" y="971.6" textLength="1122.4" clip-path="url(#breeze-release-management-line-39)">──────────────────────────── [...]
+</text><text class="breeze-release-management-r5" x="0" y="996" textLength="12.2" clip-path="url(#breeze-release-management-line-40)">│</text><text class="breeze-release-management-r4" x="24.4" y="996" textLength="292.8" clip-path="url(#breeze-release-management-line-40)">add-back-references&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="341.6" y="996" textLength="1098" clip-path="url(#breeze-release-management-line-40)">Command&#160;to&#160;add&#160;ba [...]
+</text><text class="breeze-release-management-r5" x="0" y="1020.4" textLength="12.2" clip-path="url(#breeze-release-management-line-41)">│</text><text class="breeze-release-management-r4" x="24.4" y="1020.4" textLength="292.8" clip-path="url(#breeze-release-management-line-41)">prepare-python-client&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="341.6" y="1020.4" textLength="1098" clip-path="url(#breeze-release-management-line-41)">Prepares&#160;python&#160;client& [...]
+</text><text class="breeze-release-management-r5" x="0" y="1044.8" textLength="12.2" clip-path="url(#breeze-release-management-line-42)">│</text><text class="breeze-release-management-r4" x="24.4" y="1044.8" textLength="292.8" clip-path="url(#breeze-release-management-line-42)">publish-docs&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="341.6" y="1044.8" textLength="1098" clip-path="url(#breeze-release-managemen [...]
+</text><text class="breeze-release-management-r5" x="0" y="1069.2" textLength="12.2" clip-path="url(#breeze-release-management-line-43)">│</text><text class="breeze-release-management-r4" x="24.4" y="1069.2" textLength="292.8" clip-path="url(#breeze-release-management-line-43)">generate-constraints&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="341.6" y="1069.2" textLength="1098" clip-path="url(#breeze-release-management-line-43)">Generates&#160;pinned&#160;c [...]
+</text><text class="breeze-release-management-r5" x="0" y="1093.6" textLength="12.2" clip-path="url(#breeze-release-management-line-44)">│</text><text class="breeze-release-management-r4" x="24.4" y="1093.6" textLength="292.8" clip-path="url(#breeze-release-management-line-44)">update-constraints&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="341.6" y="1093.6" textLength="1098" clip-path="url(#breeze-release-management-line-44)">Update&#160;releas [...]
+</text><text class="breeze-release-management-r5" x="0" y="1118" textLength="12.2" clip-path="url(#breeze-release-management-line-45)">│</text><text class="breeze-release-management-r4" x="24.4" y="1118" textLength="292.8" clip-path="url(#breeze-release-management-line-45)">publish-docs-to-s3&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="341.6" y="1118" textLength="1098" clip-path="url(#breeze-release-management-line-45)">Publishes&#160;docs&#160 [...]
+</text><text class="breeze-release-management-r5" x="0" y="1142.4" textLength="12.2" clip-path="url(#breeze-release-management-line-46)">│</text><text class="breeze-release-management-r4" x="24.4" y="1142.4" textLength="292.8" clip-path="url(#breeze-release-management-line-46)">check-release-files&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="341.6" y="1142.4" textLength="1098" clip-path="url(#breeze-release-management-line-46)">Verify&#160;that&#160;a [...]
+</text><text class="breeze-release-management-r5" x="0" y="1166.8" textLength="1464" clip-path="url(#breeze-release-management-line-47)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-r1" x="1464" y="1166.8" textLength="12.2" clip-path="url(#breeze-release-management-line-47)">
+</text><text class="breeze-release-management-r5" x="0" y="1191.2" textLength="24.4" clip-path="url(#breeze-release-management-line-48)">╭─</text><text class="breeze-release-management-r5" x="24.4" y="1191.2" textLength="122" clip-path="url(#breeze-release-management-line-48)">&#160;Commands&#160;</text><text class="breeze-release-management-r5" x="146.4" y="1191.2" textLength="1293.2" clip-path="url(#breeze-release-management-line-48)">─────────────────────────────────────────────────── [...]
+</text><text class="breeze-release-management-r5" x="0" y="1215.6" textLength="12.2" clip-path="url(#breeze-release-management-line-49)">│</text><text class="breeze-release-management-r4" x="24.4" y="1215.6" textLength="305" clip-path="url(#breeze-release-management-line-49)">constraints-version-check</text><text class="breeze-release-management-r1" x="353.8" y="1215.6" textLength="1085.8" clip-path="url(#breeze-release-management-line-49)">Check&#160;constraints&#160;against&#160;releas [...]
+</text><text class="breeze-release-management-r5" x="0" y="1240" textLength="12.2" clip-path="url(#breeze-release-management-line-50)">│</text><text class="breeze-release-management-r4" x="24.4" y="1240" textLength="305" clip-path="url(#breeze-release-management-line-50)">merge-prod-images&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-release-management-r1" x="353.8" y="1240" textLength="1085.8" clip-path="url(#breeze-release-management-line-50)">Merge&#160;pr [...]
+</text><text class="breeze-release-management-r5" x="0" y="1264.4" textLength="1464" clip-path="url(#breeze-release-management-line-51)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-r1" x="1464" y="1264.4" textLength="12.2" clip-path="url(#breeze-release-management-line-51)">
 </text>
     </g>
     </g>
diff --git a/dev/breeze/doc/images/output_release-management.txt b/dev/breeze/doc/images/output_release-management.txt
index 04d1453a712..74e81545457 100644
--- a/dev/breeze/doc/images/output_release-management.txt
+++ b/dev/breeze/doc/images/output_release-management.txt
@@ -1 +1 @@
-eac5e457db3b3fa57c5180ad88ee7c05
+adf95164020fa37164c778e10dcdaa36
diff --git a/dev/breeze/doc/images/output_release-management_generate-issue-content-providers.svg b/dev/breeze/doc/images/output_release-management_generate-issue-content-providers.svg
index 16a1bc10274..1036ffeb24e 100644
--- a/dev/breeze/doc/images/output_release-management_generate-issue-content-providers.svg
+++ b/dev/breeze/doc/images/output_release-management_generate-issue-content-providers.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 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-release-management-generate-issue-content-providers-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="706.5999999999999" />
+      <rect x="0" y="0" width="1463.0" height="682.1999999999999" />
     </clipPath>
     <clipPath id="breeze-release-management-generate-issue-content-providers-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -126,12 +126,9 @@
 <clipPath id="breeze-release-management-generate-issue-content-providers-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="breeze-release-management-generate-issue-content-providers-line-27">
-    <rect x="0" y="660.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="755.6" rx="8"/><text class="breeze-release-management-generate-issue-content-providers-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;release-management&#160;generate-issue-content-providers</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-release-management-generate-issue-content-providers-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;release-management&#160;generate-issue-content-providers</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -158,18 +155,17 @@
 </text><text class="breeze-release-management-generate-issue-content-providers-r1" x="12.2" y="361.6" textLength="585.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-14)">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-r1" x="1464" y="361.6" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-14)">
 </text><text class="breeze-release-management-generate-issue-content-providers-r1" x="1464" y="386" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-15)">
 </text><text class="breeze-release-management-generate-issue-content-providers-r5" x="0" y="410.4" textLength="24.4" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-16)">╭─</text><text class="breeze-release-management-generate-issue-content-providers-r5" x="24.4" y="410.4" textLength="366" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-16)">&#160;Generate&#160;issue&#160;content&#160;flags&#160;</text><text class="breeze-re [...]
-</text><text class="breeze-release-management-generate-issue-content-providers-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-17)">│</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="24.4" y="434.8" textLength="219.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-17)">--disable-progress</text><text class="breeze-release-management-generate-issue-cont [...]
-</text><text class="breeze-release-management-generate-issue-content-providers-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-18)">│</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="24.4" y="459.2" textLength="219.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-18)">--excluded-pr-list</text><text class="breeze-release-management-generate-issue-cont [...]
-</text><text class="breeze-release-management-generate-issue-content-providers-r5" x="0" 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-r4" x="24.4" y="483.6" textLength="170.8" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-19)">--github-token</text><text class="breeze-release-management-generate-issue-content- [...]
-</text><text class="breeze-release-management-generate-issue-content-providers-r5" x="0" 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-r1" x="378.2" y="508" textLength="1061.4" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-20)">variable&#160;set.&#160;Can&#160;be&#160;generated&#160;with:&#160;&#160;&#160;&#160; [...]
-</text><text class="breeze-release-management-generate-issue-content-providers-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-21)">│</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="378.2" y="532.4" textLength="1061.4" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-21)">https://github.com/settings/tokens/new?description=Read%20sssues&amp;scopes=repo: [...]
-</text><text class="breeze-release-management-generate-issue-content-providers-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-22)">│</text><text class="breeze-release-management-generate-issue-content-providers-r6" x="378.2" y="556.8" textLength="1061.4" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-22)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</text><text class="breeze-release-management-generate-issue-content-providers-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-23)">│</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="24.4" y="581.2" textLength="292.8" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-23)">--only-available-in-dist</text><text class="breeze-release-management-generate-issu [...]
-</text><text class="breeze-release-management-generate-issue-content-providers-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-24)">│</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="24.4" y="605.6" textLength="305" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-24)">--no-include-browser-link</text><text class="breeze-release-management-generate-issue [...]
-</text><text class="breeze-release-management-generate-issue-content-providers-r5" x="0" y="630" textLength="1464" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-25)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="1464" y="630" textLength="12.2" clip-path="url(#breeze-release-management-generate-iss [...]
-</text><text class="breeze-release-management-generate-issue-content-providers-r5" x="0" y="654.4" textLength="24.4" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-26)">╭─</text><text class="breeze-release-management-generate-issue-content-providers-r5" x="24.4" y="654.4" textLength="195.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-26)">&#160;Common&#160;options&#160;</text><text class="breeze-release-management-gener [...]
-</text><text class="breeze-release-management-generate-issue-content-providers-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-27)">│</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="24.4" y="678.8" textLength="73.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-27)">--help</text><text class="breeze-release-management-generate-issue-content-providers [...]
-</text><text class="breeze-release-management-generate-issue-content-providers-r5" x="0" y="703.2" textLength="1464" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-28)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="1464" y="703.2" textLength="12.2" clip-path="url(#breeze-release-management-generate [...]
+</text><text class="breeze-release-management-generate-issue-content-providers-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-17)">│</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="24.4" y="434.8" textLength="219.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-17)">--disable-progress</text><text class="breeze-release-management-generate-issue-cont [...]
+</text><text class="breeze-release-management-generate-issue-content-providers-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-18)">│</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="24.4" y="459.2" textLength="219.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-18)">--excluded-pr-list</text><text class="breeze-release-management-generate-issue-cont [...]
+</text><text class="breeze-release-management-generate-issue-content-providers-r5" x="0" 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-r4" x="24.4" y="483.6" textLength="170.8" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-19)">--github-token</text><text class="breeze-release-management-generate-issue-content- [...]
+</text><text class="breeze-release-management-generate-issue-content-providers-r5" x="0" 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-r1" x="366" y="508" textLength="1073.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-20)">variable&#160;set.&#160;Can&#160;be&#160;generated&#160;with:&#160;&#160;&#160;&#160;&# [...]
+</text><text class="breeze-release-management-generate-issue-content-providers-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-21)">│</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="366" y="532.4" textLength="1073.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-21)">https://github.com/settings/tokens/new?description=Read%20sssues&amp;scopes=repo:st [...]
+</text><text class="breeze-release-management-generate-issue-content-providers-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-22)">│</text><text class="breeze-release-management-generate-issue-content-providers-r6" x="366" y="556.8" textLength="1073.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-22)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="breeze-release-management-generate-issue-content-providers-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-23)">│</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="24.4" y="581.2" textLength="292.8" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-23)">--only-available-in-dist</text><text class="breeze-release-management-generate-issu [...]
+</text><text class="breeze-release-management-generate-issue-content-providers-r5" x="0" y="605.6" textLength="1464" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-24)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="1464" y="605.6" textLength="12.2" clip-path="url(#breeze-release-management-generate [...]
+</text><text class="breeze-release-management-generate-issue-content-providers-r5" x="0" y="630" textLength="24.4" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-25)">╭─</text><text class="breeze-release-management-generate-issue-content-providers-r5" x="24.4" y="630" textLength="195.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-25)">&#160;Common&#160;options&#160;</text><text class="breeze-release-management-generate- [...]
+</text><text class="breeze-release-management-generate-issue-content-providers-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-26)">│</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="24.4" y="654.4" textLength="73.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-26)">--help</text><text class="breeze-release-management-generate-issue-content-providers [...]
+</text><text class="breeze-release-management-generate-issue-content-providers-r5" x="0" y="678.8" textLength="1464" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-27)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="1464" y="678.8" textLength="12.2" clip-path="url(#breeze-release-management-generate [...]
 </text>
     </g>
     </g>
diff --git a/dev/breeze/doc/images/output_release-management_generate-issue-content-providers.txt b/dev/breeze/doc/images/output_release-management_generate-issue-content-providers.txt
index 9d4f5e8d26c..2e7720d4e17 100644
--- a/dev/breeze/doc/images/output_release-management_generate-issue-content-providers.txt
+++ b/dev/breeze/doc/images/output_release-management_generate-issue-content-providers.txt
@@ -1 +1 @@
-c025f2c9ea1fa5f8b3e3e5b8f01dcd6d
+4a8d979dd9f841744b5b400de502144b
diff --git a/dev/breeze/doc/images/output_release-management_prepare-helm-chart-package.svg b/dev/breeze/doc/images/output_release-management_prepare-helm-chart-package.svg
index 996c438385a..f07b12057bd 100644
--- a/dev/breeze/doc/images/output_release-management_prepare-helm-chart-package.svg
+++ b/dev/breeze/doc/images/output_release-management_prepare-helm-chart-package.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 367.2" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 440.4" 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-helm-chart-package-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="316.2" />
+      <rect x="0" y="0" width="1463.0" height="389.4" />
     </clipPath>
     <clipPath id="breeze-release-management-prepare-helm-chart-package-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -81,9 +81,18 @@
 <clipPath id="breeze-release-management-prepare-helm-chart-package-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="breeze-release-management-prepare-helm-chart-package-line-12">
+    <rect x="0" y="294.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-prepare-helm-chart-package-line-13">
+    <rect x="0" y="318.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-prepare-helm-chart-package-line-14">
+    <rect x="0" y="343.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="365.2" rx="8"/><text class="breeze-release-management-prepare-helm-chart-package-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;release-management&#160;prepare-helm-chart-package</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="438.4" rx="8"/><text class="breeze-release-management-prepare-helm-chart-package-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;release-management&#160;prepare-helm-chart-package</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -99,13 +108,16 @@
 </text><text class="breeze-release-management-prepare-helm-chart-package-r1" x="12.2" y="93.2" textLength="341.6" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-3)">Prepares&#160;helm&#160;chart&#160;package.</text><text class="breeze-release-management-prepare-helm-chart-package-r1" x="1464" y="93.2" textLength="12.2" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-3)">
 </text><text class="breeze-release-management-prepare-helm-chart-package-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-4)">
 </text><text class="breeze-release-management-prepare-helm-chart-package-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-5)">╭─</text><text class="breeze-release-management-prepare-helm-chart-package-r5" x="24.4" y="142" textLength="183" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-5)">&#160;Package&#160;flags&#160;</text><text class="breeze-release-management-prepare-helm-chart-package-r5" x="207. [...]
-</text><text class="breeze-release-management-prepare-helm-chart-package-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-6)">│</text><text class="breeze-release-management-prepare-helm-chart-package-r4" x="24.4" y="166.4" textLength="146.4" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-6)">--sign-email</text><text class="breeze-release-management-prepare-helm-chart-package-r1" x="219.6" y="166.4"  [...]
-</text><text class="breeze-release-management-prepare-helm-chart-package-r5" x="0" y="190.8" textLength="1464" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-7)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-prepare-helm-chart-package-r1" x="1464" y="190.8" textLength="12.2" clip-path="url(#breeze-release-management-prepare-helm-chart-package- [...]
-</text><text class="breeze-release-management-prepare-helm-chart-package-r5" x="0" y="215.2" textLength="24.4" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-8)">╭─</text><text class="breeze-release-management-prepare-helm-chart-package-r5" x="24.4" y="215.2" textLength="195.2" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-8)">&#160;Common&#160;options&#160;</text><text class="breeze-release-management-prepare-helm-chart-package-r5"  [...]
-</text><text class="breeze-release-management-prepare-helm-chart-package-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-9)">│</text><text class="breeze-release-management-prepare-helm-chart-package-r4" x="24.4" y="239.6" textLength="109.8" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-9)">--dry-run</text><text class="breeze-release-management-prepare-helm-chart-package-r7" x="158.6" y="239.6" tex [...]
-</text><text class="breeze-release-management-prepare-helm-chart-package-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-10)">│</text><text class="breeze-release-management-prepare-helm-chart-package-r4" x="24.4" y="264" textLength="109.8" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-10)">--verbose</text><text class="breeze-release-management-prepare-helm-chart-package-r7" x="158.6" y="264" textLen [...]
-</text><text class="breeze-release-management-prepare-helm-chart-package-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-11)">│</text><text class="breeze-release-management-prepare-helm-chart-package-r4" x="24.4" y="288.4" textLength="73.2" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-11)">--help</text><text class="breeze-release-management-prepare-helm-chart-package-r7" x="158.6" y="288.4" textL [...]
-</text><text class="breeze-release-management-prepare-helm-chart-package-r5" x="0" y="312.8" textLength="1464" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-12)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-prepare-helm-chart-package-r1" x="1464" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-prepare-helm-chart-package [...]
+</text><text class="breeze-release-management-prepare-helm-chart-package-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-6)">│</text><text class="breeze-release-management-prepare-helm-chart-package-r4" x="24.4" y="166.4" textLength="146.4" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-6)">--sign-email</text><text class="breeze-release-management-prepare-helm-chart-package-r1" x="268.4" y="166.4"  [...]
+</text><text class="breeze-release-management-prepare-helm-chart-package-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-7)">│</text><text class="breeze-release-management-prepare-helm-chart-package-r4" x="24.4" y="190.8" textLength="195.2" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-7)">--version-suffix</text><text class="breeze-release-management-prepare-helm-chart-package-r1" x="268.4" y="190 [...]
+</text><text class="breeze-release-management-prepare-helm-chart-package-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-8)">│</text><text class="breeze-release-management-prepare-helm-chart-package-r1" x="268.4" y="215.2" textLength="1171.2" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-8)">replaced&#160;with&#160;staging&#160;URLs.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="breeze-release-management-prepare-helm-chart-package-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-9)">│</text><text class="breeze-release-management-prepare-helm-chart-package-r6" x="268.4" y="239.6" textLength="1171.2" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-9)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="breeze-release-management-prepare-helm-chart-package-r5" x="0" y="264" textLength="1464" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-10)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-prepare-helm-chart-package-r1" x="1464" y="264" textLength="12.2" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-10)">
+</text><text class="breeze-release-management-prepare-helm-chart-package-r5" x="0" y="288.4" textLength="24.4" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-11)">╭─</text><text class="breeze-release-management-prepare-helm-chart-package-r5" x="24.4" y="288.4" textLength="195.2" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-11)">&#160;Common&#160;options&#160;</text><text class="breeze-release-management-prepare-helm-chart-package-r5 [...]
+</text><text class="breeze-release-management-prepare-helm-chart-package-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-12)">│</text><text class="breeze-release-management-prepare-helm-chart-package-r4" x="24.4" y="312.8" textLength="109.8" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-12)">--dry-run</text><text class="breeze-release-management-prepare-helm-chart-package-r7" x="158.6" y="312.8" t [...]
+</text><text class="breeze-release-management-prepare-helm-chart-package-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-13)">│</text><text class="breeze-release-management-prepare-helm-chart-package-r4" x="24.4" y="337.2" textLength="109.8" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-13)">--verbose</text><text class="breeze-release-management-prepare-helm-chart-package-r7" x="158.6" y="337.2" t [...]
+</text><text class="breeze-release-management-prepare-helm-chart-package-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-14)">│</text><text class="breeze-release-management-prepare-helm-chart-package-r4" x="24.4" y="361.6" textLength="73.2" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-14)">--help</text><text class="breeze-release-management-prepare-helm-chart-package-r7" x="158.6" y="361.6" textL [...]
+</text><text class="breeze-release-management-prepare-helm-chart-package-r5" x="0" y="386" textLength="1464" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-15)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-prepare-helm-chart-package-r1" x="1464" y="386" textLength="12.2" clip-path="url(#breeze-release-management-prepare-helm-chart-package-line-15)">
 </text>
     </g>
     </g>
diff --git a/dev/breeze/doc/images/output_release-management_prepare-helm-chart-package.txt b/dev/breeze/doc/images/output_release-management_prepare-helm-chart-package.txt
index 6051dbc2d79..73731275785 100644
--- a/dev/breeze/doc/images/output_release-management_prepare-helm-chart-package.txt
+++ b/dev/breeze/doc/images/output_release-management_prepare-helm-chart-package.txt
@@ -1 +1 @@
-27169c83fcbcca907a0b32a5c4faeb48
+4d19d7c6652330646ee94bf409c14787
diff --git a/dev/breeze/doc/images/output_release-management_prepare-provider-distributions.svg b/dev/breeze/doc/images/output_release-management_prepare-provider-distributions.svg
index 35e62f8a7e7..ff5a15defb9 100644
--- a/dev/breeze/doc/images/output_release-management_prepare-provider-distributions.svg
+++ b/dev/breeze/doc/images/output_release-management_prepare-provider-distributions.svg
@@ -215,7 +215,7 @@
 </text><text class="breeze-release-management-prepare-provider-distributions-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-distributions-line-29)">│</text><text class="breeze-release-management-prepare-provider-distributions-r1" x="475.8" y="727.6" textLength="963.8" clip-path="url(#breeze-release-management-prepare-provider-distributions-line-29)">.post1,&#160;.post2&#160;etc.).&#160;Note&#160;the&#160;`.`&#160;is&#160;need&#160;in&#160 [...]
 </text><text class="breeze-release-management-prepare-provider-distributions-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-distributions-line-30)">│</text><text class="breeze-release-management-prepare-provider-distributions-r1" x="475.8" y="752" textLength="963.8" clip-path="url(#breeze-release-management-prepare-provider-distributions-line-30)">followed&#160;with&#160;+local_version&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
 </text><text class="breeze-release-management-prepare-provider-distributions-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-distributions-line-31)">│</text><text class="breeze-release-management-prepare-provider-distributions-r7" x="475.8" y="776.4" textLength="963.8" clip-path="url(#breeze-release-management-prepare-provider-distributions-line-31)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="breeze-release-management-prepare-provider-distributions-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-distributions-line-32)">│</text><text class="breeze-release-management-prepare-provider-distributions-r4" x="24.4" y="800.8" textLength="244" clip-path="url(#breeze-release-management-prepare-provider-distributions-line-32)">--distributions-list</text><text class="breeze-release-management-prepare-provider-distributi [...]
+</text><text class="breeze-release-management-prepare-provider-distributions-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-distributions-line-32)">│</text><text class="breeze-release-management-prepare-provider-distributions-r4" x="24.4" y="800.8" textLength="244" clip-path="url(#breeze-release-management-prepare-provider-distributions-line-32)">--distributions-list</text><text class="breeze-release-management-prepare-provider-distributi [...]
 </text><text class="breeze-release-management-prepare-provider-distributions-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-distributions-line-33)">│</text><text class="breeze-release-management-prepare-provider-distributions-r1" x="475.8" y="825.2" textLength="963.8" clip-path="url(#breeze-release-management-prepare-provider-distributions-line-33)">documentation&#160;building,&#160;and&#160;document&#160;publishing.&#160;It&#160;is&#160; [...]
 </text><text class="breeze-release-management-prepare-provider-distributions-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-distributions-line-34)">│</text><text class="breeze-release-management-prepare-provider-distributions-r1" x="475.8" y="849.6" textLength="963.8" clip-path="url(#breeze-release-management-prepare-provider-distributions-line-34)">adding&#160;individual&#160;packages&#160;as&#160;arguments&#160;to&#160;every&#160;comman [...]
 </text><text class="breeze-release-management-prepare-provider-distributions-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-distributions-line-35)">│</text><text class="breeze-release-management-prepare-provider-distributions-r1" x="475.8" y="874" textLength="963.8" clip-path="url(#breeze-release-management-prepare-provider-distributions-line-35)">packages&#160;passed&#160;as&#160;arguments.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
diff --git a/dev/breeze/doc/images/output_release-management_prepare-provider-distributions.txt b/dev/breeze/doc/images/output_release-management_prepare-provider-distributions.txt
index d9a7af41394..8d2300bf36f 100644
--- a/dev/breeze/doc/images/output_release-management_prepare-provider-distributions.txt
+++ b/dev/breeze/doc/images/output_release-management_prepare-provider-distributions.txt
@@ -1 +1 @@
-1d031671d50f0a45410fda366afe659f
+92b4cf987fa3fa7bf32c06a96408a1c6
diff --git a/dev/breeze/doc/images/output_release-management_prepare-provider-documentation.svg b/dev/breeze/doc/images/output_release-management_prepare-provider-documentation.svg
index b615329317a..2b6b595341c 100644
--- a/dev/breeze/doc/images/output_release-management_prepare-provider-documentation.svg
+++ b/dev/breeze/doc/images/output_release-management_prepare-provider-documentation.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1074.8" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1343.1999999999998" 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="1023.8" />
+      <rect x="0" y="0" width="1463.0" height="1292.1999999999998" />
     </clipPath>
     <clipPath id="breeze-release-management-prepare-provider-documentation-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -168,9 +168,42 @@
 <clipPath id="breeze-release-management-prepare-provider-documentation-line-40">
     <rect x="0" y="977.5" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="breeze-release-management-prepare-provider-documentation-line-41">
+    <rect x="0" y="1001.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-prepare-provider-documentation-line-42">
+    <rect x="0" y="1026.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-prepare-provider-documentation-line-43">
+    <rect x="0" y="1050.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-prepare-provider-documentation-line-44">
+    <rect x="0" y="1075.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-prepare-provider-documentation-line-45">
+    <rect x="0" y="1099.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-prepare-provider-documentation-line-46">
+    <rect x="0" y="1123.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-prepare-provider-documentation-line-47">
+    <rect x="0" y="1148.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-prepare-provider-documentation-line-48">
+    <rect x="0" y="1172.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-prepare-provider-documentation-line-49">
+    <rect x="0" y="1197.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-prepare-provider-documentation-line-50">
+    <rect x="0" y="1221.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-prepare-provider-documentation-line-51">
+    <rect x="0" y="1245.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="1072.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>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1341.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>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -196,32 +229,43 @@
 </text><text class="breeze-release-management-prepare-provider-documentation-r1" x="1464" y="337.2" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-13)">
 </text><text class="breeze-release-management-prepare-provider-documentation-r1" x="12.2" y="361.6" textLength="780.8" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-14)">Prepare&#160;CHANGELOG,&#160;README&#160;and&#160;COMMITS&#160;information&#160;for&#160;providers.</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="1464" y="361.6" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation- [...]
 </text><text class="breeze-release-management-prepare-provider-documentation-r1" x="1464" y="386" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-15)">
-</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="410.4" textLength="24.4" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-16)">╭─</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="24.4" y="410.4" textLength="512.4" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-16)">&#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="434.8" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-17)">│</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="434.8" textLength="158.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-17)">--base-branch</text><text class="breeze-release-management-prepare-provider-documentation-r [...]
-</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-18)">│</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="451.4" y="459.2" textLength="988.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-18)">old&#160;branch)&#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="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-r6" x="451.4" y="483.6" textLength="988.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-19)">(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="508" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-20)">│</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="508" textLength="231.8" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-20)">--github-repository</text><text class="breeze-release-management-prepare-provider-documentation [...]
-</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" 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-r4" x="24.4" y="532.4" textLength="353.8" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-21)">--include-not-ready-providers</text><text class="breeze-release-management-prepare-provider [...]
-</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-22)">│</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="556.8" textLength="329.4" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-22)">--include-removed-providers</text><text class="breeze-release-management-prepare-provider-d [...]
-</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="207.4" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-23)">--non-interactive</text><text class="breeze-release-management-prepare-provider-documentati [...]
-</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-r1" x="451.4" y="605.6" textLength="988.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-24)">confirms&#160;releasefor&#160;providers&#160;prepared&#160;for&#160;release&#160;-&#160;us [...]
-</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-r1" x="451.4" y="630" textLength="988.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-25)">non-interactive&#160;mode&#160;in&#160;CI.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</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-r4" x="24.4" y="654.4" textLength="305" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-26)">--only-min-version-update</text><text class="breeze-release-management-prepare-provider-docum [...]
-</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-r1" x="451.4" y="678.8" textLength="988.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-27)">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="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="292.8" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-28)">--reapply-templates-only</text><text class="breeze-release-management-prepare-provider-docu [...]
-</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-r1" x="451.4" y="727.6" textLength="988.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-29)">you&#160;need&#160;to&#160;regenerate&#160;documentation.&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</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="195.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-30)">--skip-git-fetch</text><text class="breeze-release-management-prepare-provider-documentation-r1 [...]
-</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-r1" x="451.4" y="776.4" textLength="988.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-31)">default,&#160;the&#160;remote&#160;is&#160;recreated&#160;and&#160;fetched&#160;to&#160;ma [...]
-</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-r1" x="451.4" y="800.8" textLength="988.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-32)">and&#160;that&#160;recent&#160;commits&#160;are&#160;not&#160;missing&#160;&#160;&#160;&#1 [...]
-</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="195.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-33)">--skip-changelog</text><text class="breeze-release-management-prepare-provider-documentatio [...]
-</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="158.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-34)">--skip-readme</text><text class="breeze-release-management-prepare-provider-documentation-r [...]
-</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="874" textLength="1464" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-35)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="1464" y="874" 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="898.4" textLength="24.4" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-36)">╭─</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="24.4" y="898.4" textLength="195.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-36)">&#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="922.8" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-37)">│</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="922.8" textLength="109.8" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-37)">--verbose</text><text class="breeze-release-management-prepare-provider-documentation-r7" x [...]
-</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-38)">│</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="947.2" textLength="97.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-38)">--answer</text><text class="breeze-release-management-prepare-provider-documentation-r7" x=" [...]
-</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-39)">│</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="971.6" textLength="109.8" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-39)">--dry-run</text><text class="breeze-release-management-prepare-provider-documentation-r7" x [...]
-</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="996" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-40)">│</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="996" textLength="73.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-40)">--help</text><text class="breeze-release-management-prepare-provider-documentation-r7" x="158.6" [...]
-</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="1020.4" textLength="1464" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-41)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="1464" y="1020.4" textLength="12.2" clip-path="url(#breeze-release-management-prepare-prov [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="410.4" textLength="24.4" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-16)">╭─</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="24.4" y="410.4" textLength="378.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-16)">&#160;Documentation&#160;generation&#160;mode&#160;</text><text class="breeze-release-mana [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-17)">│</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="434.8" textLength="170.8" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-17)">--release-date</text><text class="breeze-release-management-prepare-provider-documentation- [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-18)">│</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="378.2" y="459.2" textLength="1061.4" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-18)">2025-11-16&#160;or&#160;2025-11-16_01).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" 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-r6" x="378.2" y="483.6" textLength="1061.4" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-19)">(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="508" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-20)">│</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="508" textLength="244" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-20)">--incremental-update</text><text class="breeze-release-management-prepare-provider-documentation- [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" 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-r1" x="378.2" y="532.4" textLength="1061.4" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-21)">changes.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-22)">│</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="556.8" textLength="305" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-22)">--only-min-version-update</text><text class="breeze-release-management-prepare-provider-docum [...]
+</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-r1" x="378.2" y="581.2" textLength="1061.4" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-23)">documentation&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</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="292.8" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-24)">--reapply-templates-only</text><text class="breeze-release-management-prepare-provider-docu [...]
+</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-r1" x="378.2" y="630" textLength="1061.4" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-25)">need&#160;to&#160;regenerate&#160;documentation.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
+</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-r4" x="24.4" y="654.4" textLength="207.4" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-26)">--non-interactive</text><text class="breeze-release-management-prepare-provider-documentati [...]
+</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-r1" x="378.2" y="678.8" textLength="1061.4" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-27)">confirms&#160;releasefor&#160;providers&#160;prepared&#160;for&#160;release&#160;-&#160;u [...]
+</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-r1" x="378.2" y="703.2" textLength="1061.4" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-28)">non-interactive&#160;mode&#160;in&#160;CI.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="727.6" textLength="1464" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-29)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="1464" y="727.6" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provid [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="752" textLength="24.4" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-30)">╭─</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="24.4" y="752" textLength="366" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-30)">&#160;Select&#160;non-regular&#160;providers&#160;</text><text class="breeze-release-management- [...]
+</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="353.8" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-31)">--include-not-ready-providers</text><text class="breeze-release-management-prepare-provider [...]
+</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="329.4" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-32)">--include-removed-providers</text><text class="breeze-release-management-prepare-provider-d [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="825.2" textLength="1464" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-33)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="1464" y="825.2" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provid [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="849.6" textLength="24.4" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-34)">╭─</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="24.4" y="849.6" textLength="146.4" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-34)">&#160;Skip&#160;steps&#160;</text><text class="breeze-release-management-prepare-provider- [...]
+</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="195.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-35)">--skip-git-fetch</text><text class="breeze-release-management-prepare-provider-documentation-r1 [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-36)">│</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="268.4" y="898.4" textLength="1171.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-36)">remote&#160;is&#160;recreated&#160;and&#160;fetched&#160;to&#160;make&#160;sure&#160;that [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-37)">│</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="268.4" y="922.8" textLength="1171.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-37)">not&#160;missing&#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="947.2" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-38)">│</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="947.2" textLength="195.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-38)">--skip-changelog</text><text class="breeze-release-management-prepare-provider-documentatio [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-39)">│</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="971.6" textLength="158.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-39)">--skip-readme</text><text class="breeze-release-management-prepare-provider-documentation-r [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="996" textLength="1464" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-40)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="1464" y="996" 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="1020.4" textLength="24.4" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-41)">╭─</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="24.4" y="1020.4" textLength="219.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-41)">&#160;Advanced&#160;options&#160;</text><text class="breeze-release-management-prepare-p [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="1044.8" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-42)">│</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="1044.8" textLength="158.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-42)">--base-branch</text><text class="breeze-release-management-prepare-provider-documentation [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="1069.2" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-43)">│</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="329.4" y="1069.2" textLength="1110.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-43)">branch)&#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="1093.6" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-44)">│</text><text class="breeze-release-management-prepare-provider-documentation-r6" x="329.4" y="1093.6" textLength="1110.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-44)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="1118" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-45)">│</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="1118" textLength="231.8" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-45)">--github-repository</text><text class="breeze-release-management-prepare-provider-documentati [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="1142.4" textLength="1464" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-46)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="1464" y="1142.4" textLength="12.2" clip-path="url(#breeze-release-management-prepare-prov [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="1166.8" textLength="24.4" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-47)">╭─</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="24.4" y="1166.8" textLength="195.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-47)">&#160;Common&#160;options&#160;</text><text class="breeze-release-management-prepare-pro [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="1191.2" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-48)">│</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="1191.2" textLength="109.8" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-48)">--verbose</text><text class="breeze-release-management-prepare-provider-documentation-r7" [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="1215.6" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-49)">│</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="1215.6" textLength="97.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-49)">--answer</text><text class="breeze-release-management-prepare-provider-documentation-r7" x [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="1240" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-50)">│</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="1240" textLength="109.8" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-50)">--dry-run</text><text class="breeze-release-management-prepare-provider-documentation-r7" x=" [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="1264.4" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-51)">│</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="1264.4" textLength="73.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-51)">--help</text><text class="breeze-release-management-prepare-provider-documentation-r7" x=" [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r5" x="0" y="1288.8" textLength="1464" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-52)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="1464" y="1288.8" textLength="12.2" clip-path="url(#breeze-release-management-prepare-prov [...]
 </text>
     </g>
     </g>
diff --git a/dev/breeze/doc/images/output_release-management_prepare-provider-documentation.txt b/dev/breeze/doc/images/output_release-management_prepare-provider-documentation.txt
index 638ef96ff40..4be325bf750 100644
--- a/dev/breeze/doc/images/output_release-management_prepare-provider-documentation.txt
+++ b/dev/breeze/doc/images/output_release-management_prepare-provider-documentation.txt
@@ -1 +1 @@
-b3476f20044a01072d03971ddea1b6c4
+df4caa6f639503f0f0da3fe91e7cf1b0
diff --git a/dev/breeze/doc/images/output_release-management_publish-docs.svg b/dev/breeze/doc/images/output_release-management_publish-docs.svg
index 91f36f758b8..149b660fda1 100644
--- a/dev/breeze/doc/images/output_release-management_publish-docs.svg
+++ b/dev/breeze/doc/images/output_release-management_publish-docs.svg
@@ -211,7 +211,7 @@
 </text><text class="breeze-release-management-publish-docs-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-release-management-publish-docs-line-23)">│</text><text class="breeze-release-management-publish-docs-r1" x="488" y="581.2" textLength="951.6" clip-path="url(#breeze-release-management-publish-docs-line-23)">matching&#160;the&#160;full&#160;package&#160;name,&#160;for&#160;example&#160;`apache-airflow-providers-*`.&#160;&#160;&#160;&#160;&#160;</text><text class="breeze [...]
 </text><text class="breeze-release-management-publish-docs-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-release-management-publish-docs-line-24)">│</text><text class="breeze-release-management-publish-docs-r1" x="488" y="605.6" textLength="951.6" clip-path="url(#breeze-release-management-publish-docs-line-24)">Useful&#160;when&#160;you&#160;want&#160;to&#160;selectseveral&#160;similarly&#160;named&#160;packages&#160;together.&#160;&#160;&#160;&#160;&#160;&#160;</text><tex [...]
 </text><text class="breeze-release-management-publish-docs-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-release-management-publish-docs-line-25)">│</text><text class="breeze-release-management-publish-docs-r8" x="488" y="630" textLength="951.6" clip-path="url(#breeze-release-management-publish-docs-line-25)">(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; [...]
-</text><text class="breeze-release-management-publish-docs-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-release-management-publish-docs-line-26)">│</text><text class="breeze-release-management-publish-docs-r4" x="61" y="654.4" textLength="244" clip-path="url(#breeze-release-management-publish-docs-line-26)">--distributions-list</text><text class="breeze-release-management-publish-docs-r1" x="488" y="654.4" textLength="951.6" clip-path="url(#breeze-release-management-publi [...]
+</text><text class="breeze-release-management-publish-docs-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-release-management-publish-docs-line-26)">│</text><text class="breeze-release-management-publish-docs-r4" x="61" y="654.4" textLength="244" clip-path="url(#breeze-release-management-publish-docs-line-26)">--distributions-list</text><text class="breeze-release-management-publish-docs-r1" x="488" y="654.4" textLength="951.6" clip-path="url(#breeze-release-management-publi [...]
 </text><text class="breeze-release-management-publish-docs-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-release-management-publish-docs-line-27)">│</text><text class="breeze-release-management-publish-docs-r1" x="488" y="678.8" textLength="951.6" clip-path="url(#breeze-release-management-publish-docs-line-27)">documentation&#160;building,&#160;and&#160;document&#160;publishing.&#160;It&#160;is&#160;an&#160;easier&#160;alternative&#160;&#160;</text><text class="breeze-rele [...]
 </text><text class="breeze-release-management-publish-docs-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-release-management-publish-docs-line-28)">│</text><text class="breeze-release-management-publish-docs-r1" x="488" y="703.2" textLength="951.6" clip-path="url(#breeze-release-management-publish-docs-line-28)">to&#160;adding&#160;individual&#160;packages&#160;as&#160;arguments&#160;to&#160;every&#160;command.&#160;This&#160;overrides&#160;&#160;&#160;</text><text class="b [...]
 </text><text class="breeze-release-management-publish-docs-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-release-management-publish-docs-line-29)">│</text><text class="breeze-release-management-publish-docs-r1" x="488" y="727.6" textLength="951.6" clip-path="url(#breeze-release-management-publish-docs-line-29)">the&#160;packages&#160;passed&#160;as&#160;arguments.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
diff --git a/dev/breeze/doc/images/output_release-management_publish-docs.txt b/dev/breeze/doc/images/output_release-management_publish-docs.txt
index 7b07e4d1e09..32edfe4bad9 100644
--- a/dev/breeze/doc/images/output_release-management_publish-docs.txt
+++ b/dev/breeze/doc/images/output_release-management_publish-docs.txt
@@ -1 +1 @@
-90b3e65f6dfe76c5580f0cb3880e688a
+a67dcc78f2f47fb5e9a3081485d38a77
diff --git a/dev/breeze/doc/images/output_release-management_tag-providers.svg b/dev/breeze/doc/images/output_release-management_tag-providers.svg
index 00ac6b5bee3..11d454ad8f8 100644
--- a/dev/breeze/doc/images/output_release-management_tag-providers.svg
+++ b/dev/breeze/doc/images/output_release-management_tag-providers.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 416.0" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 464.79999999999995" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -37,12 +37,15 @@
 .breeze-release-management-tag-providers-r3 { fill: #c5c8c6;font-weight: bold }
 .breeze-release-management-tag-providers-r4 { fill: #68a0b3;font-weight: bold }
 .breeze-release-management-tag-providers-r5 { fill: #868887 }
-.breeze-release-management-tag-providers-r6 { fill: #98a84b;font-weight: bold }
+.breeze-release-management-tag-providers-r6 { fill: #cc555a }
+.breeze-release-management-tag-providers-r7 { fill: #8d7b39 }
+.breeze-release-management-tag-providers-r8 { fill: #8a4346 }
+.breeze-release-management-tag-providers-r9 { fill: #98a84b;font-weight: bold }
     </style>
 
     <defs>
     <clipPath id="breeze-release-management-tag-providers-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="365.0" />
+      <rect x="0" y="0" width="1463.0" height="413.79999999999995" />
     </clipPath>
     <clipPath id="breeze-release-management-tag-providers-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -86,9 +89,15 @@
 <clipPath id="breeze-release-management-tag-providers-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="breeze-release-management-tag-providers-line-14">
+    <rect x="0" y="343.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-tag-providers-line-15">
+    <rect x="0" y="367.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="414" rx="8"/><text class="breeze-release-management-tag-providers-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;release-management&#160;tag-providers</text>
+    <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-tag-providers-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;release-management&#160;tag-providers</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -104,15 +113,17 @@
 </text><text class="breeze-release-management-tag-providers-r1" x="12.2" y="93.2" textLength="549" clip-path="url(#breeze-release-management-tag-providers-line-3)">Generates&#160;tags&#160;for&#160;airflow&#160;provider&#160;releases.</text><text class="breeze-release-management-tag-providers-r1" x="1464" y="93.2" textLength="12.2" clip-path="url(#breeze-release-management-tag-providers-line-3)">
 </text><text class="breeze-release-management-tag-providers-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-release-management-tag-providers-line-4)">
 </text><text class="breeze-release-management-tag-providers-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-release-management-tag-providers-line-5)">╭─</text><text class="breeze-release-management-tag-providers-r5" x="24.4" y="142" textLength="280.6" clip-path="url(#breeze-release-management-tag-providers-line-5)">&#160;Add&#160;tags&#160;to&#160;providers&#160;</text><text class="breeze-release-management-tag-providers-r5" x="305" y="142" textLength="1134.6" clip-path="url(# [...]
-</text><text class="breeze-release-management-tag-providers-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-release-management-tag-providers-line-6)">│</text><text class="breeze-release-management-tag-providers-r4" x="24.4" y="166.4" textLength="219.6" clip-path="url(#breeze-release-management-tag-providers-line-6)">--clean-local-tags</text><text class="breeze-release-management-tag-providers-r1" x="244" y="166.4" textLength="12.2" clip-path="url(#breeze-release-management-t [...]
-</text><text class="breeze-release-management-tag-providers-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-release-management-tag-providers-line-7)">│</text><text class="breeze-release-management-tag-providers-r1" x="561.2" y="190.8" textLength="878.4" clip-path="url(#breeze-release-management-tag-providers-line-7)">avoid&#160;errors.&#160;The&#160;default&#160;behaviour&#160;would&#160;be&#160;to&#160;clean&#160;such&#160;local&#160;tags.&#160;&#160;</text><text class="bre [...]
-</text><text class="breeze-release-management-tag-providers-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-release-management-tag-providers-line-8)">│</text><text class="breeze-release-management-tag-providers-r5" x="561.2" y="215.2" textLength="878.4" clip-path="url(#breeze-release-management-tag-providers-line-8)">[default:&#160;clean-local-tags]&#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-tag-providers-r5" x="0" y="239.6" textLength="1464" clip-path="url(#breeze-release-management-tag-providers-line-9)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-tag-providers-r1" x="1464" y="239.6" textLength="12.2" clip-path="url(#breeze-release-management-tag-providers-line-9)">
-</text><text class="breeze-release-management-tag-providers-r5" x="0" y="264" textLength="24.4" clip-path="url(#breeze-release-management-tag-providers-line-10)">╭─</text><text class="breeze-release-management-tag-providers-r5" x="24.4" y="264" textLength="195.2" clip-path="url(#breeze-release-management-tag-providers-line-10)">&#160;Common&#160;options&#160;</text><text class="breeze-release-management-tag-providers-r5" x="219.6" y="264" textLength="1220" clip-path="url(#breeze-release- [...]
-</text><text class="breeze-release-management-tag-providers-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-release-management-tag-providers-line-11)">│</text><text class="breeze-release-management-tag-providers-r4" x="24.4" y="288.4" textLength="109.8" clip-path="url(#breeze-release-management-tag-providers-line-11)">--dry-run</text><text class="breeze-release-management-tag-providers-r6" x="158.6" y="288.4" textLength="24.4" clip-path="url(#breeze-release-management-tag-pr [...]
-</text><text class="breeze-release-management-tag-providers-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-tag-providers-line-12)">│</text><text class="breeze-release-management-tag-providers-r4" x="24.4" y="312.8" textLength="109.8" clip-path="url(#breeze-release-management-tag-providers-line-12)">--verbose</text><text class="breeze-release-management-tag-providers-r6" x="158.6" y="312.8" textLength="24.4" clip-path="url(#breeze-release-management-tag-pr [...]
-</text><text class="breeze-release-management-tag-providers-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-release-management-tag-providers-line-13)">│</text><text class="breeze-release-management-tag-providers-r4" x="24.4" y="337.2" textLength="73.2" clip-path="url(#breeze-release-management-tag-providers-line-13)">--help</text><text class="breeze-release-management-tag-providers-r6" x="158.6" y="337.2" textLength="24.4" clip-path="url(#breeze-release-management-tag-provid [...]
-</text><text class="breeze-release-management-tag-providers-r5" x="0" y="361.6" textLength="1464" clip-path="url(#breeze-release-management-tag-providers-line-14)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-tag-providers-r1" x="1464" y="361.6" textLength="12.2" clip-path="url(#breeze-release-management-tag-providers-line-14)">
+</text><text class="breeze-release-management-tag-providers-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-release-management-tag-providers-line-6)">│</text><text class="breeze-release-management-tag-providers-r4" x="61" y="166.4" textLength="146.4" clip-path="url(#breeze-release-management-tag-providers-line-6)">--clean-tags</text><text class="breeze-release-management-tag-providers-r1" x="207.4" y="166.4" textLength="12.2" clip-path="url(#breeze-release-management-tag-pro [...]
+</text><text class="breeze-release-management-tag-providers-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-release-management-tag-providers-line-7)">│</text><text class="breeze-release-management-tag-providers-r1" x="451.4" y="190.8" textLength="988.2" clip-path="url(#breeze-release-management-tag-providers-line-7)">issues&#160;to&#160;avoid&#160;errors.&#160;The&#160;default&#160;behaviour&#160;would&#160;be&#160;to&#160;clean&#160;both&#160;local&#160;and&#160;&#160;&#160 [...]
+</text><text class="breeze-release-management-tag-providers-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-release-management-tag-providers-line-8)">│</text><text class="breeze-release-management-tag-providers-r1" x="451.4" y="215.2" textLength="988.2" clip-path="url(#breeze-release-management-tag-providers-line-8)">remote&#160;tags.&#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-tag-providers-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-release-management-tag-providers-line-9)">│</text><text class="breeze-release-management-tag-providers-r5" x="451.4" y="239.6" textLength="988.2" clip-path="url(#breeze-release-management-tag-providers-line-9)">[default:&#160;clean-tags]&#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-tag-providers-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-release-management-tag-providers-line-10)">│</text><text class="breeze-release-management-tag-providers-r6" x="24.4" y="264" textLength="12.2" clip-path="url(#breeze-release-management-tag-providers-line-10)">*</text><text class="breeze-release-management-tag-providers-r4" x="61" y="264" textLength="170.8" clip-path="url(#breeze-release-management-tag-providers-line-10)" [...]
+</text><text class="breeze-release-management-tag-providers-r5" x="0" y="288.4" textLength="1464" clip-path="url(#breeze-release-management-tag-providers-line-11)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-tag-providers-r1" x="1464" y="288.4" textLength="12.2" clip-path="url(#breeze-release-management-tag-providers-line-11)">
+</text><text class="breeze-release-management-tag-providers-r5" x="0" y="312.8" textLength="24.4" clip-path="url(#breeze-release-management-tag-providers-line-12)">╭─</text><text class="breeze-release-management-tag-providers-r5" x="24.4" y="312.8" textLength="195.2" clip-path="url(#breeze-release-management-tag-providers-line-12)">&#160;Common&#160;options&#160;</text><text class="breeze-release-management-tag-providers-r5" x="219.6" y="312.8" textLength="1220" clip-path="url(#breeze-re [...]
+</text><text class="breeze-release-management-tag-providers-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-release-management-tag-providers-line-13)">│</text><text class="breeze-release-management-tag-providers-r4" x="24.4" y="337.2" textLength="109.8" clip-path="url(#breeze-release-management-tag-providers-line-13)">--dry-run</text><text class="breeze-release-management-tag-providers-r9" x="158.6" y="337.2" textLength="24.4" clip-path="url(#breeze-release-management-tag-pr [...]
+</text><text class="breeze-release-management-tag-providers-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-release-management-tag-providers-line-14)">│</text><text class="breeze-release-management-tag-providers-r4" x="24.4" y="361.6" textLength="109.8" clip-path="url(#breeze-release-management-tag-providers-line-14)">--verbose</text><text class="breeze-release-management-tag-providers-r9" x="158.6" y="361.6" textLength="24.4" clip-path="url(#breeze-release-management-tag-pr [...]
+</text><text class="breeze-release-management-tag-providers-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-release-management-tag-providers-line-15)">│</text><text class="breeze-release-management-tag-providers-r4" x="24.4" y="386" textLength="73.2" clip-path="url(#breeze-release-management-tag-providers-line-15)">--help</text><text class="breeze-release-management-tag-providers-r9" x="158.6" y="386" textLength="24.4" clip-path="url(#breeze-release-management-tag-providers-li [...]
+</text><text class="breeze-release-management-tag-providers-r5" x="0" y="410.4" textLength="1464" clip-path="url(#breeze-release-management-tag-providers-line-16)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-tag-providers-r1" x="1464" y="410.4" textLength="12.2" clip-path="url(#breeze-release-management-tag-providers-line-16)">
 </text>
     </g>
     </g>
diff --git a/dev/breeze/doc/images/output_release-management_tag-providers.txt b/dev/breeze/doc/images/output_release-management_tag-providers.txt
index eb987987e51..3b892e2f68d 100644
--- a/dev/breeze/doc/images/output_release-management_tag-providers.txt
+++ b/dev/breeze/doc/images/output_release-management_tag-providers.txt
@@ -1 +1 @@
-403dae670f839e37c83baa15ac65af9a
+c9affbadf2d92903409f2c73cba6bfd2
diff --git a/dev/breeze/doc/images/output_release-management_update-providers-next-version.svg b/dev/breeze/doc/images/output_release-management_update-providers-next-version.svg
new file mode 100644
index 00000000000..bd1a673193a
--- /dev/null
+++ b/dev/breeze/doc/images/output_release-management_update-providers-next-version.svg
@@ -0,0 +1,95 @@
+<svg class="rich-terminal" viewBox="0 0 1482 269.6" 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-update-providers-next-version-matrix {
+        font-family: Fira Code, monospace;
+        font-size: 20px;
+        line-height: 24.4px;
+        font-variant-east-asian: full-width;
+    }
+
+    .breeze-release-management-update-providers-next-version-title {
+        font-size: 18px;
+        font-weight: bold;
+        font-family: arial;
+    }
+
+    .breeze-release-management-update-providers-next-version-r1 { fill: #c5c8c6 }
+.breeze-release-management-update-providers-next-version-r2 { fill: #d0b344 }
+.breeze-release-management-update-providers-next-version-r3 { fill: #c5c8c6;font-weight: bold }
+.breeze-release-management-update-providers-next-version-r4 { fill: #68a0b3;font-weight: bold }
+.breeze-release-management-update-providers-next-version-r5 { fill: #868887 }
+.breeze-release-management-update-providers-next-version-r6 { fill: #98a84b;font-weight: bold }
+    </style>
+
+    <defs>
+    <clipPath id="breeze-release-management-update-providers-next-version-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="218.6" />
+    </clipPath>
+    <clipPath id="breeze-release-management-update-providers-next-version-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-update-providers-next-version-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-update-providers-next-version-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-update-providers-next-version-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-update-providers-next-version-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-update-providers-next-version-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-update-providers-next-version-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-update-providers-next-version-line-7">
+    <rect x="0" y="172.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="267.6" rx="8"/><text class="breeze-release-management-update-providers-next-version-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;release-management&#160;update-providers-next-version</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-update-providers-next-version-clip-terminal)">
+    
+    <g class="breeze-release-management-update-providers-next-version-matrix">
+    <text class="breeze-release-management-update-providers-next-version-r1" x="1464" y="20" textLength="12.2" clip-path="url(#breeze-release-management-update-providers-next-version-line-0)">
+</text><text class="breeze-release-management-update-providers-next-version-r2" x="12.2" y="44.4" textLength="73.2" clip-path="url(#breeze-release-management-update-providers-next-version-line-1)">Usage:</text><text class="breeze-release-management-update-providers-next-version-r3" x="97.6" y="44.4" textLength="671" clip-path="url(#breeze-release-management-update-providers-next-version-line-1)">breeze&#160;release-management&#160;update-providers-next-version</text><text class="breeze-r [...]
+</text><text class="breeze-release-management-update-providers-next-version-r1" x="1464" y="68.8" textLength="12.2" clip-path="url(#breeze-release-management-update-providers-next-version-line-2)">
+</text><text class="breeze-release-management-update-providers-next-version-r1" x="12.2" y="93.2" textLength="805.2" clip-path="url(#breeze-release-management-update-providers-next-version-line-3)">Update&#160;provider&#160;versions&#160;marked&#160;with&#160;&#x27;#&#160;use&#160;next&#160;version&#x27;&#160;comment.</text><text class="breeze-release-management-update-providers-next-version-r1" x="1464" y="93.2" textLength="12.2" clip-path="url(#breeze-release-management-update-provider [...]
+</text><text class="breeze-release-management-update-providers-next-version-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-release-management-update-providers-next-version-line-4)">
+</text><text class="breeze-release-management-update-providers-next-version-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-release-management-update-providers-next-version-line-5)">╭─</text><text class="breeze-release-management-update-providers-next-version-r5" x="24.4" y="142" textLength="195.2" clip-path="url(#breeze-release-management-update-providers-next-version-line-5)">&#160;Common&#160;options&#160;</text><text class="breeze-release-management-update-providers-next-v [...]
+</text><text class="breeze-release-management-update-providers-next-version-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-release-management-update-providers-next-version-line-6)">│</text><text class="breeze-release-management-update-providers-next-version-r4" x="24.4" y="166.4" textLength="109.8" clip-path="url(#breeze-release-management-update-providers-next-version-line-6)">--verbose</text><text class="breeze-release-management-update-providers-next-version-r6" x="158.6 [...]
+</text><text class="breeze-release-management-update-providers-next-version-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-release-management-update-providers-next-version-line-7)">│</text><text class="breeze-release-management-update-providers-next-version-r4" x="24.4" y="190.8" textLength="73.2" clip-path="url(#breeze-release-management-update-providers-next-version-line-7)">--help</text><text class="breeze-release-management-update-providers-next-version-r6" x="158.6" y= [...]
+</text><text class="breeze-release-management-update-providers-next-version-r5" x="0" y="215.2" textLength="1464" clip-path="url(#breeze-release-management-update-providers-next-version-line-8)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-update-providers-next-version-r1" x="1464" y="215.2" textLength="12.2" clip-path="url(#breeze-release-management-update-providers-n [...]
+</text>
+    </g>
+    </g>
+</svg>
diff --git a/dev/breeze/doc/images/output_release-management_update-providers-next-version.txt b/dev/breeze/doc/images/output_release-management_update-providers-next-version.txt
new file mode 100644
index 00000000000..63b432b93ad
--- /dev/null
+++ b/dev/breeze/doc/images/output_release-management_update-providers-next-version.txt
@@ -0,0 +1 @@
+91c2333cf1da8fb531655e616dce32d7
diff --git a/dev/breeze/doc/images/output_setup_check-all-params-in-groups.svg b/dev/breeze/doc/images/output_setup_check-all-params-in-groups.svg
index 2c57f9ff605..4f5646195dd 100644
--- a/dev/breeze/doc/images/output_setup_check-all-params-in-groups.svg
+++ b/dev/breeze/doc/images/output_setup_check-all-params-in-groups.svg
@@ -218,16 +218,16 @@
 </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-r6" x="183" y="654.4" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-26)">release-management:publish-docs-to-s3&#160;|&#160;release-management:release-prod-images&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
 </text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-27)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="678.8" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-27)">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="703.2" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-28)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="703.2" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-28)">release-management:tag-providers&#160;|&#160;release-management:update-constraints&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-29)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="727.6" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-29)">release-management:verify-provider-distributions&#160;|&#160;run&#160;|&#160;sbom&#160;|&#160;sbom:build-all-airflow-images&#160;|&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-30)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="752" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-30)">sbom:export-dependency-information&#160;|&#160;sbom:generate-providers-requirements&#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="776.4" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-31)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="776.4" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-31)">sbom:update-sbom-information&#160;|&#160;setup&#160;|&#160;setup:autocomplete&#160;|&#160;setup:check-all-params-in-groups&#160;|&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-32)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="800.8" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-32)">setup:config&#160;|&#160;setup:regenerate-command-images&#160;|&#160;setup:self-upgrade&#160;|&#160;setup:synchronize-local-mounts&#160;|&#160;</text><text cla [...]
-</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-33)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="825.2" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-33)">setup:version&#160;|&#160;shell&#160;|&#160;start-airflow&#160;|&#160;testing&#160;|&#160;testing:airflow-ctl-integration-tests&#160;|&#160;&#160;&#160;&#160;& [...]
-</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-34)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="849.6" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-34)">testing:airflow-ctl-tests&#160;|&#160;testing:core-integration-tests&#160;|&#160;testing:core-tests&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-35)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="874" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-35)">testing:docker-compose-tests&#160;|&#160;testing:helm-tests&#160;|&#160;testing:providers-integration-tests&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-36)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="898.4" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-36)">testing:providers-tests&#160;|&#160;testing:python-api-client-tests&#160;|&#160;testing:system-tests&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-37)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="922.8" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-37)">testing:task-sdk-integration-tests&#160;|&#160;testing:task-sdk-tests&#160;|&#160;ui&#160;|&#160;ui:check-translation-completeness&#160;|&#160;</text><text cla [...]
-</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-38)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="947.2" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-38)">workflow-run&#160;|&#160;workflow-run:publish-docs)&#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="727.6" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-29)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="727.6" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-29)">release-management:update-providers-next-version&#160;|&#160;release-management:verify-provider-distributions&#160;|&#160;&#160;</text><text class="breeze-setu [...]
+</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-30)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="752" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-30)">run&#160;|&#160;sbom&#160;|&#160;sbom:build-all-airflow-images&#160;|&#160;sbom:export-dependency-information&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-31)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="776.4" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-31)">sbom:generate-providers-requirements&#160;|&#160;sbom:update-sbom-information&#160;|&#160;setup&#160;|&#160;setup:autocomplete&#160;|&#160;&#160;&#160;&#160;&# [...]
+</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-32)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="800.8" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-32)">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="825.2" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-33)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="825.2" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-33)">|&#160;setup:synchronize-local-mounts&#160;|&#160;setup:version&#160;|&#160;shell&#160;|&#160;start-airflow&#160;|&#160;testing&#160;|&#160;&#160;&#160;&#160;& [...]
+</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-34)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="849.6" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-34)">testing:airflow-ctl-integration-tests&#160;|&#160;testing:airflow-ctl-tests&#160;|&#160;testing:core-integration-tests&#160;|&#160;&#160;&#160;</text><text cla [...]
+</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-35)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="874" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-35)">testing:core-tests&#160;|&#160;testing:docker-compose-tests&#160;|&#160;testing:helm-tests&#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="898.4" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-36)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="898.4" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-36)">testing:providers-integration-tests&#160;|&#160;testing:providers-tests&#160;|&#160;testing:python-api-client-tests&#160;|&#160;&#160;&#160;&#160;&#160;&#160;< [...]
+</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-37)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="922.8" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-37)">testing:system-tests&#160;|&#160;testing:task-sdk-integration-tests&#160;|&#160;testing:task-sdk-tests&#160;|&#160;ui&#160;|&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-38)">│</text><text class="breeze-setup-check-all-params-in-groups-r6" x="183" y="947.2" textLength="1256.6" clip-path="url(#breeze-setup-check-all-params-in-groups-line-38)">ui:check-translation-completeness&#160;|&#160;workflow-run&#160;|&#160;workflow-run:publish-docs)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
 </text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="971.6" textLength="1464" clip-path="url(#breeze-setup-check-all-params-in-groups-line-39)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-setup-check-all-params-in-groups-r1" x="1464" y="971.6" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-39)">
 </text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="996" textLength="24.4" clip-path="url(#breeze-setup-check-all-params-in-groups-line-40)">╭─</text><text class="breeze-setup-check-all-params-in-groups-r5" x="24.4" y="996" textLength="195.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-40)">&#160;Common&#160;options&#160;</text><text class="breeze-setup-check-all-params-in-groups-r5" x="219.6" y="996" textLength="1220" clip-path="url(#breeze-setup-ch [...]
 </text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="1020.4" textLength="12.2" clip-path="url(#breeze-setup-check-all-params-in-groups-line-41)">│</text><text class="breeze-setup-check-all-params-in-groups-r4" x="24.4" y="1020.4" textLength="109.8" clip-path="url(#breeze-setup-check-all-params-in-groups-line-41)">--verbose</text><text class="breeze-setup-check-all-params-in-groups-r7" x="158.6" y="1020.4" textLength="24.4" clip-path="url(#breeze-setup-check-all-params [...]
diff --git a/dev/breeze/doc/images/output_setup_check-all-params-in-groups.txt b/dev/breeze/doc/images/output_setup_check-all-params-in-groups.txt
index 9c86645f47d..23a4fa47aa0 100644
--- a/dev/breeze/doc/images/output_setup_check-all-params-in-groups.txt
+++ b/dev/breeze/doc/images/output_setup_check-all-params-in-groups.txt
@@ -1 +1 @@
-81b3b38b66743f04103a0fb006418090
+3f7b11d4d7cd31e43d1bb5734e664771
diff --git a/dev/breeze/doc/images/output_setup_regenerate-command-images.svg b/dev/breeze/doc/images/output_setup_regenerate-command-images.svg
index 3ff56e77b57..feae43a75c1 100644
--- a/dev/breeze/doc/images/output_setup_regenerate-command-images.svg
+++ b/dev/breeze/doc/images/output_setup_regenerate-command-images.svg
@@ -235,17 +235,17 @@
 </text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-28)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="703.2" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-28)">release-management:publish-docs&#160;|&#160;release-management:publish-docs-to-s3&#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="727.6" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-29)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="727.6" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-29)">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="752" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-30)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="752" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-30)">release-management:start-release&#160;|&#160;release-management:tag-providers&#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="776.4" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-31)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="776.4" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-31)">release-management:update-constraints&#160;|&#160;release-management:verify-provider-distributions&#160;|&#160;run&#160;|&#160;&#160;&#160;&#160;</text><text class [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-32)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="800.8" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-32)">sbom&#160;|&#160;sbom:build-all-airflow-images&#160;|&#160;sbom:export-dependency-information&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-33)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="825.2" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-33)">sbom:generate-providers-requirements&#160;|&#160;sbom:update-sbom-information&#160;|&#160;setup&#160;|&#160;setup:autocomplete&#160;|&#160;&#160;</text><text class [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-34)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="849.6" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-34)">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="874" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-35)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="874" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-35)">setup:self-upgrade&#160;|&#160;setup:synchronize-local-mounts&#160;|&#160;setup:version&#160;|&#160;shell&#160;|&#160;start-airflow&#160;|&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-36)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="898.4" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-36)">testing&#160;|&#160;testing:airflow-ctl-integration-tests&#160;|&#160;testing:airflow-ctl-tests&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-37)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="922.8" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-37)">testing:core-integration-tests&#160;|&#160;testing:core-tests&#160;|&#160;testing:docker-compose-tests&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-38)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="947.2" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-38)">testing:helm-tests&#160;|&#160;testing:providers-integration-tests&#160;|&#160;testing:providers-tests&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-39)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="971.6" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-39)">testing:python-api-client-tests&#160;|&#160;testing:system-tests&#160;|&#160;testing:task-sdk-integration-tests&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;</t [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="996" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-40)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="996" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-40)">testing:task-sdk-tests&#160;|&#160;ui&#160;|&#160;ui:check-translation-completeness&#160;|&#160;workflow-run&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="1020.4" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-41)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="1020.4" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-41)">workflow-run:publish-docs)&#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-setup-regenerate-command-images-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-31)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="776.4" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-31)">release-management:update-constraints&#160;|&#160;release-management:update-providers-next-version&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-32)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="800.8" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-32)">release-management:verify-provider-distributions&#160;|&#160;run&#160;|&#160;sbom&#160;|&#160;sbom:build-all-airflow-images&#160;|&#160;&#160;&#160;&#160;&#160;</t [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-33)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="825.2" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-33)">sbom:export-dependency-information&#160;|&#160;sbom:generate-providers-requirements&#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="849.6" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-34)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="849.6" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-34)">sbom:update-sbom-information&#160;|&#160;setup&#160;|&#160;setup:autocomplete&#160;|&#160;setup:check-all-params-in-groups&#160;|&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-35)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="874" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-35)">setup:config&#160;|&#160;setup:regenerate-command-images&#160;|&#160;setup:self-upgrade&#160;|&#160;setup:synchronize-local-mounts</text><text class="breeze-setup-rege [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-36)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="898.4" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-36)">|&#160;setup:version&#160;|&#160;shell&#160;|&#160;start-airflow&#160;|&#160;testing&#160;|&#160;testing:airflow-ctl-integration-tests&#160;|&#160;&#160;&#160;&#16 [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-37)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="922.8" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-37)">testing:airflow-ctl-tests&#160;|&#160;testing:core-integration-tests&#160;|&#160;testing:core-tests&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-38)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="947.2" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-38)">testing:docker-compose-tests&#160;|&#160;testing:helm-tests&#160;|&#160;testing:providers-integration-tests&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-39)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="971.6" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-39)">testing:providers-tests&#160;|&#160;testing:python-api-client-tests&#160;|&#160;testing:system-tests&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="996" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-40)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="996" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-40)">testing:task-sdk-integration-tests&#160;|&#160;testing:task-sdk-tests&#160;|&#160;ui&#160;|&#160;ui:check-translation-completeness</text><text class="breeze-setup-rege [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="1020.4" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-41)">│</text><text class="breeze-setup-regenerate-command-images-r6" x="219.6" y="1020.4" textLength="1220" clip-path="url(#breeze-setup-regenerate-command-images-line-41)">|&#160;workflow-run&#160;|&#160;workflow-run:publish-docs)&#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="1044.8" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-42)">│</text><text class="breeze-setup-regenerate-command-images-r4" x="24.4" y="1044.8" textLength="146.4" clip-path="url(#breeze-setup-regenerate-command-images-line-42)">--check-only</text><text class="breeze-setup-regenerate-command-images-r1" x="219.6" y="1044.8" textLength="1220" clip-path="url(#breeze-setup-regenerate-command [...]
 </text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="1069.2" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-43)">│</text><text class="breeze-setup-regenerate-command-images-r1" x="219.6" y="1069.2" textLength="170.8" clip-path="url(#breeze-setup-regenerate-command-images-line-43)">together&#160;with&#160;</text><text class="breeze-setup-regenerate-command-images-r4" x="390.4" y="1069.2" textLength="109.8" clip-path="url(#breeze-setup-rege [...]
 </text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="1093.6" textLength="1464" clip-path="url(#breeze-setup-regenerate-command-images-line-44)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-setup-regenerate-command-images-r1" x="1464" y="1093.6" textLength="12.2" clip-path="url(#breeze-setup-regenerate-command-images-line-44)">
diff --git a/dev/breeze/doc/images/output_setup_regenerate-command-images.txt b/dev/breeze/doc/images/output_setup_regenerate-command-images.txt
index 67e7c83308b..cadee85beb4 100644
--- a/dev/breeze/doc/images/output_setup_regenerate-command-images.txt
+++ b/dev/breeze/doc/images/output_setup_regenerate-command-images.txt
@@ -1 +1 @@
-556b9ff80fe6f6f542c869c2f97fa14e
+fd114d5228eb9c7faef40e79e62dacf3
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 08086dbf0da..1347125d13a 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
@@ -17,7 +17,6 @@
 from __future__ import annotations
 
 import ast
-import contextlib
 import glob
 import operator
 import os
@@ -119,6 +118,7 @@ from airflow_breeze.utils.add_back_references import (
     start_generating_back_references,
 )
 from airflow_breeze.utils.ci_group import ci_group
+from airflow_breeze.utils.click_validators import validate_release_date
 from airflow_breeze.utils.confirm import Answer, user_confirm
 from airflow_breeze.utils.console import MessageType, Output, get_console
 from airflow_breeze.utils.constraints_version_check import constraints_version_check
@@ -157,6 +157,7 @@ from airflow_breeze.utils.path_utils import (
     AIRFLOW_CTL_ROOT_PATH,
     AIRFLOW_CTL_SOURCES_PATH,
     AIRFLOW_DIST_PATH,
+    AIRFLOW_PROVIDERS_LAST_RELEASE_DATE_PATH,
     AIRFLOW_ROOT_PATH,
     OUT_PATH,
     PROVIDER_METADATA_JSON_PATH,
@@ -177,7 +178,7 @@ from airflow_breeze.utils.reproducible import get_source_date_epoch, repack_dete
 from airflow_breeze.utils.run_utils import (
     run_command,
 )
-from airflow_breeze.utils.shared_options import get_dry_run, get_verbose
+from airflow_breeze.utils.shared_options import get_dry_run, get_verbose, set_forced_answer
 from airflow_breeze.utils.version_utils import (
     is_local_package_version,
 )
@@ -236,6 +237,13 @@ PR_PATTERN = re.compile(r".*\(#([0-9]+)\)")
 ISSUE_MATCH_IN_BODY = re.compile(r" #([0-9]+)[^0-9]")
 
 
+def remove_code_blocks(text: str) -> str:
+    """Remove content within code blocks (```...``` and `...`) from text."""
+    text = re.sub(r"```.*?```", "", text, flags=re.DOTALL)
+    text = re.sub(r"`[^`]+`", "", text)
+    return text
+
+
 class VersionedFile(NamedTuple):
     base: str
     version: str
@@ -258,7 +266,7 @@ PYYAML_VERSION = "6.0.3"
 AIRFLOW_BUILD_DOCKERFILE = f"""
 # syntax=docker/dockerfile:1.4
 FROM python:{DEFAULT_PYTHON_MAJOR_MINOR_VERSION}-slim-{ALLOWED_DEBIAN_VERSIONS[0]}
-RUN apt-get update && apt-get install -y --no-install-recommends git curl
+RUN apt-get update && apt-get install -y --no-install-recommends libatomic1 git curl
 RUN pip install uv=={UV_VERSION}
 RUN --mount=type=cache,id=cache-airflow-build-dockerfile-installation,target=/root/.cache/ \
   uv pip install --system ignore pip=={AIRFLOW_PIP_VERSION} hatch=={HATCH_VERSION} \
@@ -775,7 +783,6 @@ def provider_action_summary(description: str, message_type: MessageType, package
     help="Base branch to use as diff for documentation generation (used for releasing from old branch)",
 )
 @option_github_repository
-@argument_provider_distributions
 @option_include_not_ready_providers
 @option_include_removed_providers
 @click.option(
@@ -800,11 +807,25 @@ def provider_action_summary(description: str, message_type: MessageType, package
     is_flag=True,
     help="Skip changelog generation. This is used in prek that updates build-files only.",
 )
+@click.option(
+    "--incremental-update",
+    is_flag=True,
+    help="Runs incremental update only after rebase of earlier branch to check if there are no changes.",
+)
 @click.option(
     "--skip-readme",
     is_flag=True,
     help="Skip readme generation. This is used in prek that updates build-files only.",
 )
+@click.option(
+    "--release-date",
+    type=str,
+    callback=validate_release_date,
+    envvar="RELEASE_DATE",
+    help="Planned release date for the providers release in format "
+    "YYYY-MM-DD[_NN] (e.g., 2025-11-16 or 2025-11-16_01).",
+)
+@argument_provider_distributions
 @option_verbose
 @option_answer
 @option_dry_run
@@ -820,6 +841,8 @@ def prepare_provider_documentation(
     skip_git_fetch: bool,
     skip_changelog: bool,
     skip_readme: bool,
+    incremental_update: bool,
+    release_date: str | None,
 ):
     from airflow_breeze.prepare_providers.provider_documentation import (
         PrepareReleaseDocsChangesOnlyException,
@@ -832,9 +855,15 @@ def prepare_provider_documentation(
         update_release_notes,
     )
 
+    if not release_date and not only_min_version_update:
+        get_console().print("[error]Release date is required unless --only-min-version-update is used![/]")
+        sys.exit(1)
+
     perform_environment_checks()
     fix_ownership_using_docker()
     cleanup_python_generated_files()
+    if incremental_update:
+        set_forced_answer("yes")
     if not provider_distributions:
         provider_distributions = get_available_distributions(
             include_removed=include_removed_providers, include_not_ready=include_not_ready_providers
@@ -938,6 +967,24 @@ def prepare_provider_documentation(
     get_console().print(
         "\n[info]Please review the updated files, classify the changelog entries and commit the changes.\n"
     )
+    if release_date:
+        AIRFLOW_PROVIDERS_LAST_RELEASE_DATE_PATH.write_text(release_date + "\n")
+    if incremental_update:
+        get_console().print(r"\[warning] Generated changes:")
+        run_command(["git", "diff"])
+        get_console().print("\n")
+        get_console().print("[warning]Important")
+        get_console().print(
+            " * Please review manually the changes in changelogs above and move the new changelog "
+            "entries to the right sections."
+        )
+        get_console().print(
+            "* Remove the `Please review ...` comments from the changelogs after moving changeslogs"
+        )
+        get_console().print(
+            "* Update both changelog.rst AND provider.yaml in case the new changes require "
+            "different classification of the upgrade (patchlevel/minor/major)"
+        )
 
 
 def basic_provider_checks(provider_id: str) -> dict[str, Any]:
@@ -969,11 +1016,21 @@ def _build_provider_distributions(
     distribution_format: str,
     skip_tag_check: bool,
     skip_deleting_generated_files: bool,
-):
+) -> bool:
+    """
+    Builds provider distribution.
+
+    :param provider_id: id of the provider package
+    :param package_version_suffix: suffix to append to the package version
+    :param distribution_format: format of the distribution to build (wheel or sdist)
+    :param skip_tag_check: whether to skip tag check
+    :param skip_deleting_generated_files: whether to skip deleting generated files
+    :return: True if package was built, False if it was skipped.
+    """
     if not skip_tag_check:
         should_skip, package_version_suffix = should_skip_the_package(provider_id, package_version_suffix)
         if should_skip:
-            return
+            return False
     get_console().print()
     with ci_group(f"Preparing provider package [special]{provider_id}"):
         get_console().print()
@@ -996,6 +1053,7 @@ def _build_provider_distributions(
             skip_cleanup=skip_deleting_generated_files,
             delete_only_build_and_dist_folders=True,
         )
+    return True
 
 
 @release_management_group.command(
@@ -1033,7 +1091,7 @@ def _build_provider_distributions(
     "--distributions-list",
     envvar="DISTRIBUTIONS_LIST",
     type=str,
-    help="Optional, contains comma-separated list of package ids that are processed for documentation "
+    help="Optional, contains space separated list of package ids that are processed for documentation "
     "building, and document publishing. It is an easier alternative to adding individual packages as"
     " arguments to every command. This overrides the packages passed as arguments.",
 )
@@ -1065,7 +1123,7 @@ def prepare_provider_distributions(
             f"\n[info]Populating provider list from DISTRIBUTIONS_LIST env as {distributions_list}"
         )
         # Override provider_distributions with values from DISTRIBUTIONS_LIST
-        distributions_list_as_tuple = tuple(distributions_list.split(","))
+        distributions_list_as_tuple = tuple(distributions_list.split(" "))
     if provider_distributions and distributions_list_as_tuple:
         get_console().print(
             f"[warning]Both package arguments and --distributions-list / DISTRIBUTIONS_LIST passed. "
@@ -1094,7 +1152,7 @@ def prepare_provider_distributions(
     for provider_id in packages_list:
         try:
             basic_provider_checks(provider_id)
-            _build_provider_distributions(
+            created = _build_provider_distributions(
                 provider_id,
                 version_suffix,
                 distribution_format,
@@ -1111,12 +1169,15 @@ def prepare_provider_distributions(
             suspended_packages.append(provider_id)
         else:
             get_console().print(f"\n[success]Generated package [special]{provider_id}")
-            success_packages.append(provider_id)
+            if created:
+                success_packages.append(provider_id)
+            else:
+                skipped_as_already_released_packages.append(provider_id)
     get_console().print()
     get_console().print("\n[info]Summary of prepared packages:\n")
     provider_action_summary("Success", MessageType.SUCCESS, success_packages)
     provider_action_summary(
-        "Skipped as already released", MessageType.SUCCESS, skipped_as_already_released_packages
+        "Skipped as already released", MessageType.INFO, skipped_as_already_released_packages
     )
     provider_action_summary("Suspended", MessageType.WARNING, suspended_packages)
     provider_action_summary("Wrong setup generated", MessageType.ERROR, wrong_setup_packages)
@@ -1220,18 +1281,26 @@ def run_generate_constraints_in_parallel(
     help="Generates tags for airflow provider releases.",
 )
 @click.option(
-    "--clean-local-tags/--no-clean-local-tags",
+    "--clean-tags/--no-clean-tags",
     default=True,
     is_flag=True,
-    envvar="CLEAN_LOCAL_TAGS",
-    help="Delete local tags that are created due to github connectivity issues to avoid errors. "
-    "The default behaviour would be to clean such local tags.",
+    envvar="CLEAN_TAGS",
+    help="Delete tags (both local and remote) that are created due to github connectivity "
+    "issues to avoid errors. The default behaviour would be to clean both local and remote tags.",
     show_default=True,
 )
+@click.option(
+    "--release-date",
+    type=str,
+    help="Date of the release in YYYY-MM-DD format.",
+    required=True,
+    envvar="RELEASE_DATE",
+)
 @option_dry_run
 @option_verbose
 def tag_providers(
-    clean_local_tags: bool,
+    clean_tags: bool,
+    release_date: str,
 ):
     found_remote = None
     remotes = ["origin", "apache"]
@@ -1249,57 +1318,32 @@ def tag_providers(
         except subprocess.CalledProcessError:
             pass
 
-    release_date = datetime.now().strftime("%Y-%m-%d")
-
     if found_remote is None:
-        raise ValueError("Could not find remote configured to push to apache/airflow")
+        raise ValueError("Could not find the remote configured to push to apache/airflow")
 
+    extra_flags = []
     tags = []
+    if clean_tags:
+        extra_flags.append("--force")
     for file in os.listdir(os.path.join(SOURCE_DIR_PATH, "dist")):
         if file.endswith(".whl"):
             match = re.match(r".*airflow_providers_(.*)-(.*)-py3.*", file)
             if match:
                 provider = f"providers-{match.group(1).replace('_', '-')}"
                 tag = f"{provider}/{match.group(2)}"
-                try:
-                    get_console().print(f"[info]Creating tag: {tag}")
-                    run_command(
-                        ["git", "tag", tag, "-m", f"Release {release_date} of providers"],
-                        check=True,
-                    )
-                    tags.append(tag)
-                except subprocess.CalledProcessError as e:
-                    get_console().print(f"[warning]Failed to create {tag}: {e}")
-                    pass
-    providers_date_tag = f"providers/{release_date}"
+                get_console().print(f"[info]Creating tag: {tag}")
+                run_command(
+                    ["git", "tag", tag, *extra_flags, "-m", f"Release {release_date} of providers"],
+                    check=True,
+                )
+                tags.append(tag)
     if tags:
-        run_command(
-            ["git", "tag", providers_date_tag, "-m", f"Release {release_date} of providers"],
+        push_result = run_command(
+            ["git", "push", found_remote, *extra_flags, *tags],
             check=True,
         )
-        get_console().print()
-        get_console().print("\n[info]The providers release have been tagged with:[/]")
-        get_console().print(providers_date_tag)
-        get_console().print()
-        tags.append(providers_date_tag)
-        try:
-            push_result = run_command(
-                ["git", "push", found_remote, *tags],
-                check=False,
-            )
-            if push_result.returncode == 0:
-                get_console().print("\n[success]Tags pushed successfully.[/]")
-        except subprocess.CalledProcessError:
-            get_console().print("\n[error]Failed to push tags, probably a connectivity issue to GitHub.[/]")
-            if clean_local_tags:
-                for tag in tags:
-                    with contextlib.suppress(subprocess.CalledProcessError):
-                        run_command(["git", "tag", "-d", tag], check=True)
-                get_console().print("\n[success]Cleaning up local tags...[/]")
-            else:
-                get_console().print(
-                    "\n[success]Local tags are not cleaned up, unset CLEAN_LOCAL_TAGS or set to true.[/]"
-                )
+        if push_result.returncode == 0:
+            get_console().print("\n[success]Tags pushed successfully.[/]")
 
 
 @release_management_group.command(
@@ -1799,7 +1843,7 @@ def run_publish_docs_in_parallel(
     "--distributions-list",
     envvar="DISTRIBUTIONS_LIST",
     type=str,
-    help="Optional, contains comma-separated list of package ids that are processed for documentation "
+    help="Optional, contains space separated list of package ids that are processed for documentation "
     "building, and document publishing. It is an easier alternative to adding individual packages as"
     " arguments to every command. This overrides the packages passed as arguments.",
 )
@@ -1830,7 +1874,7 @@ def publish_docs(
             f"\n[info]Populating provider list from DISTRIBUTIONS_LIST env as {distributions_list}"
         )
         # Override doc_packages with values from DISTRIBUTIONS_LIST
-        packages_list_as_tuple = tuple(distributions_list.split(","))
+        packages_list_as_tuple = tuple(distributions_list.split(" "))
     if doc_packages and packages_list_as_tuple:
         get_console().print(
             f"[warning]Both package arguments and --distributions-list / DISTRIBUTIONS_LIST passed. "
@@ -2327,11 +2371,11 @@ VERSION_MATCH = re.compile(r"([0-9]+)\.([0-9]+)\.([0-9]+)(.*)")
 
 def get_suffix_from_package_in_dist(dist_files: list[str], package: str) -> str | None:
     """Get suffix from package prepared in dist folder."""
-    for file in dist_files:
-        if file.startswith(f"apache_airflow_providers_{package.replace('.', '_')}") and file.endswith(
+    for filename in dist_files:
+        if filename.startswith(f"apache_airflow_providers_{package.replace('.', '_')}") and filename.endswith(
             ".tar.gz"
         ):
-            file = file[: -len(".tar.gz")]
+            file = filename[: -len(".tar.gz")]
             version = file.split("-")[-1]
             match = VERSION_MATCH.match(version)
             if match:
@@ -2389,6 +2433,56 @@ def create_github_issue_url(title: str, body: str, labels: Iterable[str]) -> str
     )
 
 
+def get_commented_out_prs_from_provider_changelogs() -> list[int]:
+    """
+    Returns list of PRs that are commented out in the changelog.
+    :return: list of PR numbers that appear only in comments in changelog.rst files in "providers" dir
+    """
+    pr_matcher = re.compile(r".*\(#([0-9]+)\).*")
+    commented_prs = set()
+
+    # Get all provider distributions
+    provider_distributions_metadata = get_provider_distributions_metadata()
+
+    for provider_id in provider_distributions_metadata.keys():
+        provider_details = get_provider_details(provider_id)
+        changelog_path = provider_details.changelog_path
+        print(f"[info]Checking changelog {changelog_path} for PRs to be excluded automatically.")
+        if not changelog_path.exists():
+            continue
+
+        changelog_lines = changelog_path.read_text().splitlines()
+        in_excluded_section = False
+
+        for line in changelog_lines:
+            # Check if we're entering an excluded/commented section
+            if line.strip().startswith(
+                ".. Below changes are excluded from the changelog"
+            ) or line.strip().startswith(".. Review and move the new changes"):
+                in_excluded_section = True
+                continue
+            # Check if we're exiting the excluded section (new version header or regular content)
+            # Version headers are lines that contain only dots (like "4.10.1" followed by "......")
+            # Or lines that start with actual content sections like "Misc", "Features", etc.
+            if (
+                in_excluded_section
+                and line
+                and not line.strip().startswith("..")
+                and not line.strip().startswith("*")
+            ):
+                # end excluded section with empty line
+                if line.strip() == "":
+                    in_excluded_section = False
+
+            # Extract PRs from excluded sections
+            if in_excluded_section and line.strip().startswith("*"):
+                match_result = pr_matcher.search(line)
+                if match_result:
+                    commented_prs.add(int(match_result.group(1)))
+
+    return sorted(commented_prs)
+
+
 @release_management_group.command(
     name="generate-issue-content-providers", help="Generates content for issue to test the release."
 )
@@ -2410,20 +2504,12 @@ def create_github_issue_url(title: str, body: str, labels: Iterable[str]) -> str
     is_flag=True,
     help="Only consider package ids with packages prepared in the dist folder",
 )
-@click.option(
-    "--no-include-browser-link",
-    "include_browser_link",
-    flag_value=False,
-    default=True,
-    help="Do not include browser link to prefill GitHub issue",
-)
 @argument_provider_distributions
 def generate_issue_content_providers(
     disable_progress: bool,
     excluded_pr_list: str,
     github_token: str,
     only_available_in_dist: bool,
-    include_browser_link: bool,
     provider_distributions: list[str],
 ):
     import jinja2
@@ -2443,10 +2529,15 @@ def generate_issue_content_providers(
             excluded_prs = [int(pr) for pr in excluded_pr_list.split(",")]
         else:
             excluded_prs = []
+        commented_prs = get_commented_out_prs_from_provider_changelogs()
+        get_console().print(
+            "[info]Automatically excluding {len(commented_prs)} PRs that are only commented out in changelog:"
+        )
+        excluded_prs.extend(commented_prs)
         all_prs: set[int] = set()
+        all_retrieved_prs: set[int] = set()
         provider_prs: dict[str, list[int]] = {}
-        if only_available_in_dist:
-            files_in_dist = os.listdir(str(AIRFLOW_DIST_PATH))
+        files_in_dist = os.listdir(str(AIRFLOW_DIST_PATH)) if only_available_in_dist else []
         prepared_package_ids = []
         for provider_id in provider_distributions:
             if not only_available_in_dist or is_package_in_dist(files_in_dist, provider_id):
@@ -2464,15 +2555,35 @@ def generate_issue_content_providers(
                     "The changelog file doesn't contain any PRs for the release.\n"
                 )
                 continue
+            all_prs.update(prs)
             provider_prs[provider_id] = [pr for pr in prs if pr not in excluded_prs]
-            all_prs.update(provider_prs[provider_id])
+            all_retrieved_prs.update(provider_prs[provider_id])
+        if not github_token:
+            # Get GitHub token from gh CLI and set it in environment copy
+            gh_token_result = run_command(
+                ["gh", "auth", "token"],
+                capture_output=True,
+                text=True,
+                check=False,
+            )
+            if gh_token_result.returncode == 0:
+                github_token = gh_token_result.stdout.strip()
         g = Github(github_token)
         repo = g.get_repo("apache/airflow")
         pull_requests: dict[int, PullRequest.PullRequest | Issue.Issue] = {}
         linked_issues: dict[int, list[Issue.Issue]] = {}
+        all_prs_len = len(all_prs)
+        all_retrieved_prs_len = len(all_retrieved_prs)
+        get_console().print(
+            f"[info] Found {all_prs_len} PRs in the providers. "
+            f"Retrieving {all_retrieved_prs_len} (excluded {all_prs_len - all_retrieved_prs_len})"
+        )
+        get_console().print(f"Retrieved PRs: {all_retrieved_prs}")
+        excluded_prs = sorted(set(all_prs) - set(all_retrieved_prs))
+        get_console().print(f"Excluded PRs: {excluded_prs}")
         with Progress(console=get_console(), disable=disable_progress) as progress:
-            task = progress.add_task(f"Retrieving {len(all_prs)} PRs ", total=len(all_prs))
-            for pr_number in all_prs:
+            task = progress.add_task(f"Retrieving {all_retrieved_prs_len} PRs ", total=all_retrieved_prs_len)
+            for pr_number in all_retrieved_prs:
                 progress.console.print(
                     f"Retrieving PR#{pr_number}: https://github.com/apache/airflow/pull/{pr_number}"
                 )
@@ -2528,7 +2639,10 @@ def generate_issue_content_providers(
             pull_request_list = [pull_requests[pr] for pr in provider_prs[provider_id] if pr in pull_requests]
             provider_yaml_dict = get_provider_distributions_metadata().get(provider_id)
             if pull_request_list:
-                package_suffix = get_suffix_from_package_in_dist(files_in_dist, provider_id)
+                if only_available_in_dist:
+                    package_suffix = get_suffix_from_package_in_dist(files_in_dist, provider_id)
+                else:
+                    package_suffix = ""
                 providers[provider_id] = ProviderPRInfo(
                     version=provider_yaml_dict["versions"][0],
                     provider_id=provider_id,
@@ -2561,18 +2675,29 @@ def generate_issue_content_providers(
         issue_content += f"All users involved in the PRs:\n{' '.join(users)}"
         syntax = Syntax(issue_content, "markdown", theme="ansi_dark")
         get_console().print(syntax)
-        url_to_create_the_issue = create_github_issue_url(
-            title=f"Status of testing Providers that were prepared on {datetime.now():%B %d, %Y}",
-            body=issue_content,
-            labels=["testing status", "kind:meta"],
-        )
-        if include_browser_link:
-            get_console().print()
-            get_console().print(
-                "[info]You can prefill the issue by copy&pasting this link to browser "
-                "(or Cmd+Click if your terminal supports it):\n"
+        create_issue = user_confirm("Should I create the issue?")
+        if create_issue == Answer.YES:
+            res = run_command(
+                [
+                    "gh",
+                    "issue",
+                    "create",
+                    "-t",
+                    f"Status of testing Providers that were prepared on {datetime.now():%B %d, %Y}",
+                    "-b",
+                    issue_content,
+                    "-l",
+                    "testing status,kind:meta",
+                    "-w",
+                ],
+                check=False,
             )
-            print(url_to_create_the_issue)
+            if res.returncode != 0:
+                get_console().print(
+                    "Failed to create issue. If the error is about 'too long URL' you have "
+                    "to create the issue manually by copy&pasting the above output"
+                )
+                sys.exit(1)
 
 
 def get_git_log_command(
@@ -2891,6 +3016,39 @@ def generate_providers_metadata(
     PROVIDER_METADATA_JSON_PATH.write_text(json.dumps(metadata_dict, indent=4) + "\n")
 
 
+@release_management_group.command(
+    name="update-providers-next-version",
+    help="Update provider versions marked with '# use next version' comment.",
+)
+@option_verbose
+def update_providers_next_version():
+    """
+    Scan all provider pyproject.toml files for dependencies with "# use next version" comment
+    and update them to use the current version from the referenced provider's pyproject.toml.
+    """
+    from airflow_breeze.utils.packages import update_providers_with_next_version_comment
+
+    get_console().print("\n[info]Scanning for providers with '# use next version' comments...\n")
+
+    updates_made = update_providers_with_next_version_comment()
+
+    if updates_made:
+        get_console().print("\n[success]Summary of updates:[/]")
+        for provider_id, dependencies in updates_made.items():
+            get_console().print(f"\n[info]Provider: {provider_id}[/]")
+            for dep_name, dep_info in dependencies.items():
+                get_console().print(f"  • {dep_name}: {dep_info['old_version']} → {dep_info['new_version']}")
+        get_console().print(
+            f"\n[success]Updated {len(updates_made)} provider(s) with "
+            f"{sum(len(deps) for deps in updates_made.values())} dependency change(s).[/]"
+        )
+    else:
+        get_console().print(
+            "\n[info]No updates needed. All providers with '# use next version' "
+            "comments are already using the latest versions.[/]"
+        )
+
+
 def fetch_remote(constraints_repo: Path, remote_name: str) -> None:
     run_command(["git", "fetch", remote_name], cwd=constraints_repo)
 
@@ -3630,6 +3788,18 @@ def prepare_helm_chart_tarball(
     values_content = yaml.safe_load(VALUES_YAML_FILE.read_text())
     airflow_version_in_values = values_content["airflowVersion"]
     default_airflow_tag_in_values = values_content["defaultAirflowTag"]
+
+    # Check if this is an RC version and replace documentation links with staging URLs
+    is_rc_version = version_suffix and "rc" in version_suffix.lower()
+    if is_rc_version:
+        get_console().print(
+            f"[info]RC version detected ({version_suffix}). Replacing documentation links with staging URLs.[/]"
+        )
+        # Replace production URLs with staging URLs for RC versions
+        chart_yaml_file_content = chart_yaml_file_content.replace(
+            "https://airflow.apache.org/", "https://airflow.staged.apache.org/"
+        )
+        get_console().print("[success]Documentation links updated to staging environment for RC version.[/]")
     if ignore_version_check:
         if not version:
             version = version_in_chart
@@ -3761,9 +3931,15 @@ def prepare_helm_chart_tarball(
     envvar="SIGN_EMAIL",
     default="",
 )
+@click.option(
+    "--version-suffix",
+    help="Version suffix used to determine if RC version. For RC versions, documentation links will be replaced with staging URLs.",
+    default="",
+    envvar="VERSION_SUFFIX",
+)
 @option_dry_run
 @option_verbose
-def prepare_helm_chart_package(sign_email: str):
+def prepare_helm_chart_package(sign_email: str, version_suffix: str):
     import yaml
 
     from airflow_breeze.utils.kubernetes_utils import (
@@ -3772,71 +3948,96 @@ def prepare_helm_chart_package(sign_email: str):
         sync_virtualenv,
     )
 
-    chart_yaml_dict = yaml.safe_load(CHART_YAML_FILE.read_text())
-    version = chart_yaml_dict["version"]
-    result = sync_virtualenv(force_venv_setup=False)
-    if result.returncode != 0:
-        sys.exit(result.returncode)
-    make_sure_helm_installed()
-    get_console().print(f"[info]Packaging the chart for Helm Chart {version}[/]")
-    k8s_env = os.environ.copy()
-    k8s_env["PATH"] = str(K8S_BIN_BASE_PATH) + os.pathsep + k8s_env["PATH"]
-    # Tar on modern unix options requires --wildcards parameter to work with globs
-    # See https://github.com/technosophos/helm-gpg/issues/1
-    k8s_env["TAR_OPTIONS"] = "--wildcards"
-    archive_name = f"airflow-{version}.tgz"
-    OUT_PATH.mkdir(parents=True, exist_ok=True)
-    result = run_command(
-        cmd=["helm", "package", "chart", "--dependency-update", "--destination", OUT_PATH.as_posix()],
-        env=k8s_env,
-        check=False,
-    )
-    if result.returncode != 0:
-        get_console().print("[error]Error packaging the chart[/]")
-        sys.exit(result.returncode)
-    AIRFLOW_DIST_PATH.mkdir(parents=True, exist_ok=True)
-    final_archive = AIRFLOW_DIST_PATH / archive_name
-    final_archive.unlink(missing_ok=True)
-    source_archive = OUT_PATH / archive_name
-    result = repack_deterministically(
-        source_archive=source_archive,
-        dest_archive=final_archive,
-        prepend_path=None,
-        timestamp=get_source_date_epoch(CHART_DIR),
-    )
-    if result.returncode != 0:
+    # Check if this is an RC version and temporarily replace documentation links
+    chart_yaml_backup = None
+    is_rc_version = version_suffix and "rc" in version_suffix.lower()
+
+    if is_rc_version:
         get_console().print(
-            f"[error]Error repackaging package for Helm Chart from {source_archive} to {final_archive}[/]"
+            f"[info]RC version detected ({version_suffix}). Temporarily replacing documentation links with staging URLs for packaging.[/]"
         )
-        sys.exit(result.returncode)
-    else:
-        get_console().print(f"[success]Package created in {final_archive}[/]")
-    if sign_email:
-        get_console().print(f"[info]Signing the package with {sign_email}[/]")
-        prov_file = final_archive.with_suffix(".tgz.prov")
-        if prov_file.exists():
-            get_console().print(f"[warning]Removing existing {prov_file}[/]")
-            prov_file.unlink()
-        result = run_command(
-            cmd=["helm", "gpg", "sign", "-u", sign_email, archive_name],
-            cwd=AIRFLOW_DIST_PATH.as_posix(),
-            env=k8s_env,
-            check=False,
+        # Backup original content
+        chart_yaml_backup = CHART_YAML_FILE.read_text()
+        # Replace production URLs with staging URLs for RC versions
+        chart_yaml_content = chart_yaml_backup.replace(
+            "https://airflow.apache.org/", "https://airflow.staged.apache.org/"
+        )
+        CHART_YAML_FILE.write_text(chart_yaml_content)
+        get_console().print(
+            "[success]Documentation links temporarily updated to staging environment for RC version packaging.[/]"
         )
+
+    try:
+        chart_yaml_dict = yaml.safe_load(CHART_YAML_FILE.read_text())
+        version = chart_yaml_dict["version"]
+        result = sync_virtualenv(force_venv_setup=False)
         if result.returncode != 0:
-            get_console().print("[error]Error signing the chart[/]")
             sys.exit(result.returncode)
+        make_sure_helm_installed()
+        get_console().print(f"[info]Packaging the chart for Helm Chart {version}[/]")
+        k8s_env = os.environ.copy()
+        k8s_env["PATH"] = str(K8S_BIN_BASE_PATH) + os.pathsep + k8s_env["PATH"]
+        # Tar on modern unix options requires --wildcards parameter to work with globs
+        # See https://github.com/technosophos/helm-gpg/issues/1
+        k8s_env["TAR_OPTIONS"] = "--wildcards"
+        archive_name = f"airflow-{version}.tgz"
+        OUT_PATH.mkdir(parents=True, exist_ok=True)
         result = run_command(
-            cmd=["helm", "gpg", "verify", archive_name],
-            cwd=AIRFLOW_DIST_PATH.as_posix(),
+            cmd=["helm", "package", "chart", "--dependency-update", "--destination", OUT_PATH.as_posix()],
             env=k8s_env,
             check=False,
         )
         if result.returncode != 0:
-            get_console().print("[error]Error signing the chart[/]")
+            get_console().print("[error]Error packaging the chart[/]")
+            sys.exit(result.returncode)
+        AIRFLOW_DIST_PATH.mkdir(parents=True, exist_ok=True)
+        final_archive = AIRFLOW_DIST_PATH / archive_name
+        final_archive.unlink(missing_ok=True)
+        source_archive = OUT_PATH / archive_name
+        result = repack_deterministically(
+            source_archive=source_archive,
+            dest_archive=final_archive,
+            prepend_path=None,
+            timestamp=get_source_date_epoch(CHART_DIR),
+        )
+        if result.returncode != 0:
+            get_console().print(
+                f"[error]Error repackaging package for Helm Chart from {source_archive} to {final_archive}[/]"
+            )
             sys.exit(result.returncode)
         else:
-            get_console().print(f"[success]Chart signed - the {prov_file} file created.[/]")
+            get_console().print(f"[success]Package created in {final_archive}[/]")
+        if sign_email:
+            get_console().print(f"[info]Signing the package with {sign_email}[/]")
+            prov_file = final_archive.with_suffix(".tgz.prov")
+            if prov_file.exists():
+                get_console().print(f"[warning]Removing existing {prov_file}[/]")
+                prov_file.unlink()
+            result = run_command(
+                cmd=["helm", "gpg", "sign", "-u", sign_email, archive_name],
+                cwd=AIRFLOW_DIST_PATH.as_posix(),
+                env=k8s_env,
+                check=False,
+            )
+            if result.returncode != 0:
+                get_console().print("[error]Error signing the chart[/]")
+                sys.exit(result.returncode)
+            result = run_command(
+                cmd=["helm", "gpg", "verify", archive_name],
+                cwd=AIRFLOW_DIST_PATH.as_posix(),
+                env=k8s_env,
+                check=False,
+            )
+            if result.returncode != 0:
+                get_console().print("[error]Error signing the chart[/]")
+                sys.exit(result.returncode)
+            else:
+                get_console().print(f"[success]Chart signed - the {prov_file} file created.[/]")
+    finally:
+        # Restore original Chart.yaml content if it was modified for RC version
+        if is_rc_version and chart_yaml_backup:
+            CHART_YAML_FILE.write_text(chart_yaml_backup)
+            get_console().print("[info]Restored original Chart.yaml content after packaging.[/]")
 
 
 def generate_issue_content(
@@ -3917,8 +4118,10 @@ def generate_issue_content(
             # Relate so we can find those from the body
             if pr.body:
                 body = " ".join(pr.body.splitlines())
+                body_without_code_blocks = remove_code_blocks(body)
                 linked_issue_numbers = {
-                    int(issue_match.group(1)) for issue_match in ISSUE_MATCH_IN_BODY.finditer(body)
+                    int(issue_match.group(1))
+                    for issue_match in ISSUE_MATCH_IN_BODY.finditer(body_without_code_blocks)
                 }
                 for linked_issue_number in linked_issue_numbers:
                     progress.console.print(
@@ -4128,7 +4331,7 @@ def version_check(
 @option_verbose
 @option_dry_run
 def check_release_files(
-    path: Path,
+    path_to_airflow_svn: Path,
     version: str | None,
     release_date: str | None,
     packages_file: Path | None,
@@ -4167,7 +4370,7 @@ def check_release_files(
         if not release_date:
             console.print("[error]--release-date is required for providers[/]")
             sys.exit(1)
-        directory = path / "providers" / release_date
+        directory = path_to_airflow_svn / "providers" / release_date
     else:
         if not version:
             console.print(f"[error]--version is required for {release_type}[/]")
@@ -4175,13 +4378,13 @@ def check_release_files(
 
         # Determine directory based on release type
         if release_type == "airflow":
-            directory = path / version
+            directory = path_to_airflow_svn / version
         elif release_type == "task-sdk":
-            directory = path / version
+            directory = path_to_airflow_svn / "task-sdk" / version
         elif release_type == "airflow-ctl":
-            directory = path / "airflow-ctl" / version
+            directory = path_to_airflow_svn / "airflow-ctl" / version
         elif release_type == "python-client":
-            directory = path / "clients" / "python" / version
+            directory = path_to_airflow_svn / "clients" / "python" / version
         else:
             console.print(f"[error]Unknown release type: {release_type}[/]")
             sys.exit(1)
@@ -4209,10 +4412,14 @@ def check_release_files(
         )
     elif release_type == "airflow":
         missing_files = check_airflow_release(files, version)
-        create_docker(AIRFLOW_DOCKER.format(version), dockerfile_path)
+        create_docker(AIRFLOW_DOCKER.format(version, version), dockerfile_path)
     elif release_type == "task-sdk":
         missing_files = check_task_sdk_release(files, version)
-        create_docker(TASK_SDK_DOCKER.format(version), dockerfile_path)
+        airflow_version = version.replace("1", "3", 1)
+        create_docker(
+            TASK_SDK_DOCKER.format(version, airflow_version, airflow_version, airflow_version),
+            dockerfile_path,
+        )
     elif release_type == "airflow-ctl":
         missing_files = check_airflow_ctl_release(files, version)
         create_docker(AIRFLOW_CTL_DOCKER.format(version), dockerfile_path)
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 44810eeb64c..5e00c23b866 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
@@ -42,6 +42,7 @@ RELEASE_PROVIDERS_COMMANDS: dict[str, str | list[str]] = {
     "name": "Providers release commands",
     "commands": [
         "prepare-provider-documentation",
+        "update-providers-next-version",
         "prepare-provider-distributions",
         "install-provider-distributions",
         "verify-provider-distributions",
@@ -75,6 +76,7 @@ RELEASE_OTHER_COMMANDS: dict[str, str | list[str]] = {
         "generate-constraints",
         "update-constraints",
         "publish-docs-to-s3",
+        "validate-rc-by-pmc",
         "check-release-files",
     ],
 }
@@ -134,6 +136,7 @@ RELEASE_MANAGEMENT_PARAMETERS: dict[str, list[dict[str, str | list[str]]]] = {
             "name": "Package flags",
             "options": [
                 "--sign-email",
+                "--version-suffix",
             ],
         }
     ],
@@ -240,27 +243,46 @@ RELEASE_MANAGEMENT_PARAMETERS: dict[str, list[dict[str, str | list[str]]]] = {
         {
             "name": "Add tags to providers",
             "options": [
-                "--clean-local-tags",
+                "--clean-tags",
+                "--release-date",
             ],
         },
     ],
     "breeze release-management prepare-provider-documentation": [
         {
-            "name": "Provider documentation preparation flags",
+            "name": "Documentation generation mode",
             "options": [
-                "--base-branch",
-                "--github-repository",
-                "--include-not-ready-providers",
-                "--include-removed-providers",
-                "--non-interactive",
+                "--release-date",
+                "--incremental-update",
                 "--only-min-version-update",
                 "--reapply-templates-only",
+                "--non-interactive",
+            ],
+        },
+        {
+            "name": "Select non-regular providers",
+            "options": [
+                "--include-not-ready-providers",
+                "--include-removed-providers",
+            ],
+        },
+        {
+            "name": "Skip steps",
+            "options": [
                 "--skip-git-fetch",
                 "--skip-changelog",
                 "--skip-readme",
             ],
-        }
+        },
+        {
+            "name": "Advanced options",
+            "options": [
+                "--base-branch",
+                "--github-repository",
+            ],
+        },
     ],
+    "breeze release-management update-providers-next-version": [],
     "breeze release-management prepare-python-client": [
         {
             "name": "Python client preparation flags",
@@ -392,7 +414,6 @@ RELEASE_MANAGEMENT_PARAMETERS: dict[str, list[dict[str, str | list[str]]]] = {
                 "--excluded-pr-list",
                 "--github-token",
                 "--only-available-in-dist",
-                "--no-include-browser-link",
             ],
         }
     ],
@@ -504,6 +525,18 @@ RELEASE_MANAGEMENT_PARAMETERS: dict[str, list[dict[str, str | list[str]]]] = {
             ],
         },
     ],
+    "breeze release-management validate-rc-by-pmc": [
+        {
+            "name": "Validation options",
+            "options": [
+                "--distribution",
+                "--version",
+                "--task-sdk-version",
+                "--path-to-airflow-svn",
+                "--checks",
+            ],
+        },
+    ],
     "breeze release-management check-release-files": [
         {
             "name": "Check release files flags",
diff --git a/dev/breeze/src/airflow_breeze/utils/check_release_files.py b/dev/breeze/src/airflow_breeze/utils/check_release_files.py
index e5143e64b0e..8c64a413763 100644
--- a/dev/breeze/src/airflow_breeze/utils/check_release_files.py
+++ b/dev/breeze/src/airflow_breeze/utils/check_release_files.py
@@ -33,16 +33,16 @@ RUN cd airflow-core; uv sync --no-sources
 AIRFLOW_DOCKER = """\
 FROM python:3.10
 
-# Upgrade
-RUN pip install "apache-airflow=={}"
+RUN pip install "apache-airflow=={}" \
+    --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-{}/constraints-3.10.txt"
 
 """
 
 TASK_SDK_DOCKER = """\
 FROM python:3.10
 
-# Upgrade
-RUN pip install "apache-airflow-task-sdk=={}"
+RUN pip install "apache-airflow-task-sdk=={}" "apache-airflow-core=={}" "apache-airflow=={}"\
+  --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-{}/constraints-3.10.txt"
 
 """
 
diff --git a/dev/breeze/src/airflow_breeze/utils/click_validators.py b/dev/breeze/src/airflow_breeze/utils/click_validators.py
new file mode 100644
index 00000000000..25f9c0f4f46
--- /dev/null
+++ b/dev/breeze/src/airflow_breeze/utils/click_validators.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 re
+from datetime import datetime
+
+import click
+
+
+def validate_release_date(ctx: click.core.Context, param: click.core.Option, value: str) -> str:
+    """
+    Validate that the date follows YYYY-MM-DD[_NN] format.
+
+    :param ctx: Click context
+    :param param: Click parameter
+    :param value: The value to validate
+    :return: The validated value
+    :raises click.BadParameter: If the value doesn't match the required format
+    """
+    if not value:
+        return value
+
+    # Check if the format matches YYYY-MM-DD or YYYY-MM-DD_NN
+    pattern = r"^\d{4}-\d{2}-\d{2}(_\d{2})?$"
+    if not re.match(pattern, value):
+        raise click.BadParameter(
+            "Date must be in YYYY-MM-DD or YYYY-MM-DD_NN format (e.g., 2025-11-16 or 2025-11-16_01)"
+        )
+
+    # Validate that the date part (YYYY-MM-DD) is a valid date
+    date_part = value.split("_")[0]
+    try:
+        datetime.strptime(date_part, "%Y-%m-%d")
+    except ValueError:
+        raise click.BadParameter(f"Invalid date: {date_part}. Please provide a valid date.")
+
+    return value
diff --git a/dev/breeze/src/airflow_breeze/utils/path_utils.py b/dev/breeze/src/airflow_breeze/utils/path_utils.py
index 098d7776e20..6ee4863a093 100644
--- a/dev/breeze/src/airflow_breeze/utils/path_utils.py
+++ b/dev/breeze/src/airflow_breeze/utils/path_utils.py
@@ -249,6 +249,7 @@ AIRFLOW_UI_DIR = AIRFLOW_CORE_SOURCES_PATH / "airflow" / "ui"
 # Do not delete it - it is used for old commit retrieval from providers
 AIRFLOW_ORIGINAL_PROVIDERS_DIR = AIRFLOW_ROOT_PATH / "airflow" / "providers"
 AIRFLOW_PROVIDERS_ROOT_PATH = AIRFLOW_ROOT_PATH / "providers"
+AIRFLOW_PROVIDERS_LAST_RELEASE_DATE_PATH = AIRFLOW_PROVIDERS_ROOT_PATH / ".last_release_date.txt"
 AIRFLOW_DIST_PATH = AIRFLOW_ROOT_PATH / "dist"
 
 TASK_SDK_ROOT_PATH = AIRFLOW_ROOT_PATH / "task-sdk"
@@ -279,8 +280,18 @@ UI_ASSET_COMPILE_LOCK = UI_CACHE_PATH / ".asset_compile.lock"
 UI_ASSET_OUT_FILE = UI_CACHE_PATH / "asset_compile.out"
 UI_ASSET_OUT_DEV_MODE_FILE = UI_CACHE_PATH / "asset_compile_dev_mode.out"
 UI_ASSET_HASH_PATH = AIRFLOW_ROOT_PATH / ".build" / "ui" / "hash.txt"
+
 UI_NODE_MODULES_PATH = AIRFLOW_CORE_SOURCES_PATH / "airflow" / "ui" / "node_modules"
 UI_DIST_PATH = AIRFLOW_CORE_SOURCES_PATH / "airflow" / "ui" / "dist"
+UI_VITE_MANIFEST_PATH = UI_DIST_PATH / ".vite" / "manifest.json"
+FAST_API_SIMPLE_AUTH_MANAGER_PATH = (
+    AIRFLOW_CORE_SOURCES_PATH / "airflow" / "api_fastapi" / "auth" / "managers" / "simple"
+)
+FAST_API_SIMPLE_AUTH_MANAGER_NODE_MODULES_PATH = FAST_API_SIMPLE_AUTH_MANAGER_PATH / "ui" / "node_modules"
+FAST_API_SIMPLE_AUTH_MANAGER_DIST_PATH = FAST_API_SIMPLE_AUTH_MANAGER_PATH / "ui" / "dist"
+FAST_API_SIMPLE_AUTH_MANAGER_VITE_MANIFEST_PATH = (
+    FAST_API_SIMPLE_AUTH_MANAGER_DIST_PATH / ".vite" / "manifest.json"
+)
 
 DAGS_PATH = AIRFLOW_ROOT_PATH / "dags"
 FILES_PATH = AIRFLOW_ROOT_PATH / "files"