You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by ja...@apache.org on 2026/03/13 03:02:10 UTC

(airflow) branch main updated: feat(opensearch): add opensearch as part of breeze integration (#63390)

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

jasonliu pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new 433187af03a feat(opensearch): add opensearch as part of breeze integration (#63390)
433187af03a is described below

commit 433187af03a05cccad2be21bcc464384571b5ee3
Author: Owen Leung <ow...@gmail.com>
AuthorDate: Fri Mar 13 11:02:02 2026 +0800

    feat(opensearch): add opensearch as part of breeze integration (#63390)
    
    * feat(opensearch): add opensearch as part of breeze integration
    
    * feat(opensearch): fix failing static check
    
    * feat(opensearch): fix failing static check
---
 contributing-docs/testing/integration_tests.rst    |  2 +
 dev/breeze/doc/images/output-commands.svg          |  6 +--
 dev/breeze/doc/images/output_shell.svg             | 54 +++++++++++-----------
 dev/breeze/doc/images/output_shell.txt             |  2 +-
 dev/breeze/doc/images/output_start-airflow.svg     | 50 ++++++++++----------
 dev/breeze/doc/images/output_start-airflow.txt     |  2 +-
 .../output_testing_providers-integration-tests.svg | 24 +++++-----
 .../output_testing_providers-integration-tests.txt |  2 +-
 dev/breeze/src/airflow_breeze/global_constants.py  |  3 +-
 .../ci/docker-compose/integration-opensearch.yml   | 48 +++++++++++++++++++
 10 files changed, 122 insertions(+), 71 deletions(-)

diff --git a/contributing-docs/testing/integration_tests.rst b/contributing-docs/testing/integration_tests.rst
index cc4c41eb007..36dadb6a529 100644
--- a/contributing-docs/testing/integration_tests.rst
+++ b/contributing-docs/testing/integration_tests.rst
@@ -82,6 +82,8 @@ core or provider type of test.
 +---------------+-------------------------------------------------------+
 | openlineage   | Integration required for Openlineage hooks.           |
 +---------------+-------------------------------------------------------+
+| opensearch    | Integration required for OpenSearch hooks.            |
++---------------+-------------------------------------------------------+
 | otel          | Integration required for OTEL/opentelemetry hooks.    |
 +---------------+-------------------------------------------------------+
 | pinot         | Integration required for Apache Pinot hooks.          |
diff --git a/dev/breeze/doc/images/output-commands.svg b/dev/breeze/doc/images/output-commands.svg
index 871a9179864..1fed95c89ac 100644
--- a/dev/breeze/doc/images/output-commands.svg
+++ b/dev/breeze/doc/images/output-commands.svg
@@ -372,9 +372,9 @@
 </text><text class="breeze-help-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-help-line-12)">│</text><text class="breeze-help-r4" x="24.4" y="312.8" textLength="671" clip-path="url(#breeze-help-line-12)">--integration&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text>< [...]
 </text><text class="breeze-help-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-help-line-13)">│</text><text class="breeze-help-r1" x="768.6" y="337.2" textLength="134.2" clip-path="url(#breeze-help-line-13)">than&#160;one).&#160;</text><text class="breeze-help-r7" x="902.8" y="337.2" textLength="524.6" clip-path="url(#breeze-help-line-13)">(all&#160;|&#160;all-testable&#160;|&#160;cassandra&#160;|&#160;celery&#160;|&#160;</text><text class="breeze-help-r5" x="1451.8" y="337 [...]
 </text><text class="breeze-help-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-help-line-14)">│</text><text class="breeze-help-r7" x="768.6" y="361.6" textLength="658.8" clip-path="url(#breeze-help-line-14)">drill&#160;|&#160;elasticsearch&#160;|&#160;kafka&#160;|&#160;kerberos&#160;|&#160;keycloak&#160;|&#160;</text><text class="breeze-help-r5" x="1451.8" y="361.6" textLength="12.2" clip-path="url(#breeze-help-line-14)">│</text><text class="breeze-help-r1" x="1464" y="361. [...]
-</text><text class="breeze-help-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-help-line-15)">│</text><text class="breeze-help-r7" x="768.6" y="386" textLength="671" clip-path="url(#breeze-help-line-15)">localstack&#160;|&#160;mongo&#160;|&#160;mssql&#160;|&#160;openlineage&#160;|&#160;otel&#160;|&#160;pinot</text><text class="breeze-help-r5" x="1451.8" y="386" textLength="12.2" clip-path="url(#breeze-help-line-15)">│</text><text class="breeze-help-r1" x="1464" y="386" textLe [...]
-</text><text class="breeze-help-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-help-line-16)">│</text><text class="breeze-help-r7" x="768.6" y="410.4" textLength="671" clip-path="url(#breeze-help-line-16)">|&#160;qdrant&#160;|&#160;redis&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;tinkerpop&#160;|&#160;trino&#160;|</text><text class="breeze-help-r5" x="1451.8" y="410.4" textLength="12.2" clip-path="url(#breeze-help-line-16)">│</text><text class="breeze-help-r1" x="1464 [...]
-</text><text class="breeze-help-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-help-line-17)">│</text><text class="breeze-help-r7" x="768.6" y="434.8" textLength="48.8" clip-path="url(#breeze-help-line-17)">ydb)</text><text class="breeze-help-r5" x="1451.8" y="434.8" textLength="12.2" clip-path="url(#breeze-help-line-17)">│</text><text class="breeze-help-r1" x="1464" y="434.8" textLength="12.2" clip-path="url(#breeze-help-line-17)">
+</text><text class="breeze-help-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-help-line-15)">│</text><text class="breeze-help-r7" x="768.6" y="386" textLength="671" clip-path="url(#breeze-help-line-15)">localstack&#160;|&#160;mongo&#160;|&#160;mssql&#160;|&#160;openlineage&#160;|&#160;opensearch&#160;|</text><text class="breeze-help-r5" x="1451.8" y="386" textLength="12.2" clip-path="url(#breeze-help-line-15)">│</text><text class="breeze-help-r1" x="1464" y="386" textLength= [...]
+</text><text class="breeze-help-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-help-line-16)">│</text><text class="breeze-help-r7" x="768.6" y="410.4" textLength="597.8" clip-path="url(#breeze-help-line-16)">otel&#160;|&#160;pinot&#160;|&#160;qdrant&#160;|&#160;redis&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;</text><text class="breeze-help-r5" x="1451.8" y="410.4" textLength="12.2" clip-path="url(#breeze-help-line-16)">│</text><text class="breeze-help-r1" x="1464" y= [...]
+</text><text class="breeze-help-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-help-line-17)">│</text><text class="breeze-help-r7" x="768.6" y="434.8" textLength="292.8" clip-path="url(#breeze-help-line-17)">tinkerpop&#160;|&#160;trino&#160;|&#160;ydb)</text><text class="breeze-help-r5" x="1451.8" y="434.8" textLength="12.2" clip-path="url(#breeze-help-line-17)">│</text><text class="breeze-help-r1" x="1464" y="434.8" textLength="12.2" clip-path="url(#breeze-help-line-17)">
 </text><text class="breeze-help-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-help-line-18)">│</text><text class="breeze-help-r4" x="24.4" y="459.2" textLength="317.2" clip-path="url(#breeze-help-line-18)">--standalone-dag-processor</text><text class="breeze-help-r1" x="341.6" y="459.2" textLength="12.2" clip-path="url(#breeze-help-line-18)">/</text><text class="breeze-help-r4" x="353.8" y="459.2" textLength="341.6" clip-path="url(#breeze-help-line-18)">--no-standalone-dag [...]
 </text><text class="breeze-help-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-help-line-19)">│</text><text class="breeze-help-r4" x="24.4" y="483.6" textLength="12.2" clip-path="url(#breeze-help-line-19)">r</text><text class="breeze-help-r1" x="768.6" y="483.6" textLength="317.2" clip-path="url(#breeze-help-line-19)">(required&#160;for&#160;Airflow&#160;3).&#160;</text><text class="breeze-help-r5" x="1085.8" y="483.6" textLength="122" clip-path="url(#breeze-help-line-19)"> [...]
 </text><text class="breeze-help-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-help-line-20)">│</text><text class="breeze-help-r5" x="768.6" y="508" textLength="305" clip-path="url(#breeze-help-line-20)">standalone-dag-processor]</text><text class="breeze-help-r5" x="1451.8" y="508" textLength="12.2" clip-path="url(#breeze-help-line-20)">│</text><text class="breeze-help-r1" x="1464" y="508" textLength="12.2" clip-path="url(#breeze-help-line-20)">
diff --git a/dev/breeze/doc/images/output_shell.svg b/dev/breeze/doc/images/output_shell.svg
index 2212cadbaf8..27b1167d91f 100644
--- a/dev/breeze/doc/images/output_shell.svg
+++ b/dev/breeze/doc/images/output_shell.svg
@@ -548,15 +548,15 @@
 </text><text class="breeze-shell-r1" x="1464" y="68.8" textLength="12.2" clip-path="url(#breeze-shell-line-2)">
 </text><text class="breeze-shell-r1" x="12.2" y="93.2" textLength="1024.8" clip-path="url(#breeze-shell-line-3)">Enter&#160;breeze&#160;environment.&#160;this&#160;is&#160;the&#160;default&#160;command&#160;use&#160;when&#160;no&#160;other&#160;is&#160;selected.</text><text class="breeze-shell-r1" x="1464" y="93.2" textLength="12.2" clip-path="url(#breeze-shell-line-3)">
 </text><text class="breeze-shell-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-shell-line-4)">
-</text><text class="breeze-shell-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-shell-line-5)">┌─</text><text class="breeze-shell-r5" x="24.4" y="142" textLength="195.2" clip-path="url(#breeze-shell-line-5)">&#160;Execution&#160;mode&#160;</text><text class="breeze-shell-r5" x="219.6" y="142" textLength="1220" clip-path="url(#breeze-shell-line-5)">────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="breeze-she [...]
+</text><text class="breeze-shell-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-shell-line-5)">╭─</text><text class="breeze-shell-r5" x="24.4" y="142" textLength="195.2" clip-path="url(#breeze-shell-line-5)">&#160;Execution&#160;mode&#160;</text><text class="breeze-shell-r5" x="219.6" y="142" textLength="1220" clip-path="url(#breeze-shell-line-5)">────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="breeze-she [...]
 </text><text class="breeze-shell-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-shell-line-6)">│</text><text class="breeze-shell-r4" x="24.4" y="166.4" textLength="671" clip-path="url(#breeze-shell-line-6)">--python&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
 </text><text class="breeze-shell-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-shell-line-7)">│</text><text class="breeze-shell-r1" x="768.6" y="190.8" textLength="97.6" clip-path="url(#breeze-shell-line-7)">images.&#160;</text><text class="breeze-shell-r5" x="866.2" y="190.8" textLength="183" clip-path="url(#breeze-shell-line-7)">[default:&#160;3.10]</text><text class="breeze-shell-r7" x="1061.4" y="190.8" textLength="353.8" clip-path="url(#breeze-shell-line-7)">(&gt;3.10 [...]
 </text><text class="breeze-shell-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-shell-line-8)">│</text><text class="breeze-shell-r4" x="24.4" y="215.2" textLength="671" clip-path="url(#breeze-shell-line-8)">--integration&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text [...]
 </text><text class="breeze-shell-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-shell-line-9)">│</text><text class="breeze-shell-r1" x="768.6" y="239.6" textLength="134.2" clip-path="url(#breeze-shell-line-9)">than&#160;one).&#160;</text><text class="breeze-shell-r7" x="902.8" y="239.6" textLength="524.6" clip-path="url(#breeze-shell-line-9)">(all&#160;|&#160;all-testable&#160;|&#160;cassandra&#160;|&#160;celery&#160;|&#160;</text><text class="breeze-shell-r5" x="1451.8" y= [...]
 </text><text class="breeze-shell-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-shell-line-10)">│</text><text class="breeze-shell-r7" x="768.6" y="264" textLength="658.8" clip-path="url(#breeze-shell-line-10)">drill&#160;|&#160;elasticsearch&#160;|&#160;kafka&#160;|&#160;kerberos&#160;|&#160;keycloak&#160;|&#160;</text><text class="breeze-shell-r5" x="1451.8" y="264" textLength="12.2" clip-path="url(#breeze-shell-line-10)">│</text><text class="breeze-shell-r1" x="1464" y="264 [...]
-</text><text class="breeze-shell-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-shell-line-11)">│</text><text class="breeze-shell-r7" x="768.6" y="288.4" textLength="671" clip-path="url(#breeze-shell-line-11)">localstack&#160;|&#160;mongo&#160;|&#160;mssql&#160;|&#160;openlineage&#160;|&#160;otel&#160;|&#160;pinot</text><text class="breeze-shell-r5" x="1451.8" y="288.4" textLength="12.2" clip-path="url(#breeze-shell-line-11)">│</text><text class="breeze-shell-r1" x="1464" y [...]
-</text><text class="breeze-shell-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-shell-line-12)">│</text><text class="breeze-shell-r7" x="768.6" y="312.8" textLength="671" clip-path="url(#breeze-shell-line-12)">|&#160;qdrant&#160;|&#160;redis&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;tinkerpop&#160;|&#160;trino&#160;|</text><text class="breeze-shell-r5" x="1451.8" y="312.8" textLength="12.2" clip-path="url(#breeze-shell-line-12)">│</text><text class="breeze-shell-r1"  [...]
-</text><text class="breeze-shell-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-shell-line-13)">│</text><text class="breeze-shell-r7" x="768.6" y="337.2" textLength="48.8" clip-path="url(#breeze-shell-line-13)">ydb)</text><text class="breeze-shell-r5" x="1451.8" y="337.2" textLength="12.2" clip-path="url(#breeze-shell-line-13)">│</text><text class="breeze-shell-r1" x="1464" y="337.2" textLength="12.2" clip-path="url(#breeze-shell-line-13)">
+</text><text class="breeze-shell-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-shell-line-11)">│</text><text class="breeze-shell-r7" x="768.6" y="288.4" textLength="671" clip-path="url(#breeze-shell-line-11)">localstack&#160;|&#160;mongo&#160;|&#160;mssql&#160;|&#160;openlineage&#160;|&#160;opensearch&#160;|</text><text class="breeze-shell-r5" x="1451.8" y="288.4" textLength="12.2" clip-path="url(#breeze-shell-line-11)">│</text><text class="breeze-shell-r1" x="1464" y="288 [...]
+</text><text class="breeze-shell-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-shell-line-12)">│</text><text class="breeze-shell-r7" x="768.6" y="312.8" textLength="597.8" clip-path="url(#breeze-shell-line-12)">otel&#160;|&#160;pinot&#160;|&#160;qdrant&#160;|&#160;redis&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;</text><text class="breeze-shell-r5" x="1451.8" y="312.8" textLength="12.2" clip-path="url(#breeze-shell-line-12)">│</text><text class="breeze-shell-r1" x="1 [...]
+</text><text class="breeze-shell-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-shell-line-13)">│</text><text class="breeze-shell-r7" x="768.6" y="337.2" textLength="292.8" clip-path="url(#breeze-shell-line-13)">tinkerpop&#160;|&#160;trino&#160;|&#160;ydb)</text><text class="breeze-shell-r5" x="1451.8" y="337.2" textLength="12.2" clip-path="url(#breeze-shell-line-13)">│</text><text class="breeze-shell-r1" x="1464" y="337.2" textLength="12.2" clip-path="url(#breeze-shell-line-13)">
 </text><text class="breeze-shell-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-shell-line-14)">│</text><text class="breeze-shell-r4" x="24.4" y="361.6" textLength="671" clip-path="url(#breeze-shell-line-14)">--load-example-dags&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-shell-r [...]
 </text><text class="breeze-shell-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-shell-line-15)">│</text><text class="breeze-shell-r1" x="768.6" y="386" textLength="671" clip-path="url(#breeze-shell-line-15)">Airflow.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
 </text><text class="breeze-shell-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-shell-line-16)">│</text><text class="breeze-shell-r4" x="24.4" y="410.4" textLength="671" clip-path="url(#breeze-shell-line-16)">--load-default-connections&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-shell-r6" x="719.8" y="410.4" textLength=" [...]
@@ -569,24 +569,24 @@
 </text><text class="breeze-shell-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-shell-line-23)">│</text><text class="breeze-shell-r4" x="24.4" y="581.2" textLength="671" clip-path="url(#breeze-shell-line-23)">--auth-manager&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#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><t [...]
 </text><text class="breeze-shell-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-shell-line-24)">│</text><text class="breeze-shell-r5" x="768.6" y="605.6" textLength="219.6" clip-path="url(#breeze-shell-line-24)">SimpleAuthManager]</text><text class="breeze-shell-r7" x="1000.4" y="605.6" textLength="280.6" clip-path="url(#breeze-shell-line-24)">(&gt;SimpleAuthManager&lt;&#160;|&#160;</text><text class="breeze-shell-r5" x="1451.8" y="605.6" textLength="12.2" clip-path="url(#b [...]
 </text><text class="breeze-shell-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-shell-line-25)">│</text><text class="breeze-shell-r7" x="768.6" y="630" textLength="183" clip-path="url(#breeze-shell-line-25)">FabAuthManager)</text><text class="breeze-shell-r5" x="1451.8" y="630" textLength="12.2" clip-path="url(#breeze-shell-line-25)">│</text><text class="breeze-shell-r1" x="1464" y="630" textLength="12.2" clip-path="url(#breeze-shell-line-25)">
-</text><text class="breeze-shell-r5" x="0" y="654.4" textLength="1464" clip-path="url(#breeze-shell-line-26)">└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘</text><text class="breeze-shell-r1" x="1464" y="654.4" textLength="12.2" clip-path="url(#breeze-shell-line-26)">
-</text><text class="breeze-shell-r5" x="0" y="678.8" textLength="24.4" clip-path="url(#breeze-shell-line-27)">┌─</text><text class="breeze-shell-r5" x="24.4" y="678.8" textLength="427" clip-path="url(#breeze-shell-line-27)">&#160;Docker&#160;Compose&#160;project&#160;management&#160;</text><text class="breeze-shell-r5" x="451.4" y="678.8" textLength="988.2" clip-path="url(#breeze-shell-line-27)">─────────────────────────────────────────────────────────────────────────────────</text><text [...]
+</text><text class="breeze-shell-r5" x="0" y="654.4" textLength="1464" clip-path="url(#breeze-shell-line-26)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-shell-r1" x="1464" y="654.4" textLength="12.2" clip-path="url(#breeze-shell-line-26)">
+</text><text class="breeze-shell-r5" x="0" y="678.8" textLength="24.4" clip-path="url(#breeze-shell-line-27)">╭─</text><text class="breeze-shell-r5" x="24.4" y="678.8" textLength="427" clip-path="url(#breeze-shell-line-27)">&#160;Docker&#160;Compose&#160;project&#160;management&#160;</text><text class="breeze-shell-r5" x="451.4" y="678.8" textLength="988.2" clip-path="url(#breeze-shell-line-27)">─────────────────────────────────────────────────────────────────────────────────</text><text [...]
 </text><text class="breeze-shell-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-shell-line-28)">│</text><text class="breeze-shell-r4" x="24.4" y="703.2" textLength="317.2" clip-path="url(#breeze-shell-line-28)">--project-name&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-shell-r1" x="366" y="703.2" textLength="1073.6" clip-path="url(#breeze-shell-line-28)">Name&#160;of&#160;the&#160;docker-compose&#160;project&#160;to&#160 [...]
 </text><text class="breeze-shell-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-shell-line-29)">│</text><text class="breeze-shell-r1" x="366" y="727.6" textLength="597.8" clip-path="url(#breeze-shell-line-29)">breeze&#160;project&#160;name&#160;and&#160;you&#160;can&#160;use&#160;`breeze&#160;down&#160;</text><text class="breeze-shell-r4" x="963.8" y="727.6" textLength="170.8" clip-path="url(#breeze-shell-line-29)">--project-name</text><text class="breeze-shell-r1" x="1134. [...]
 </text><text class="breeze-shell-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-shell-line-30)">│</text><text class="breeze-shell-r1" x="366" y="752" textLength="390.4" clip-path="url(#breeze-shell-line-30)">all&#160;containers&#160;belonging&#160;to&#160;it.&#160;</text><text class="breeze-shell-r5" x="756.4" y="752" textLength="207.4" clip-path="url(#breeze-shell-line-30)">[default:&#160;breeze]</text><text class="breeze-shell-r7" x="976" y="752" textLength="390.4" clip-pat [...]
 </text><text class="breeze-shell-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-shell-line-31)">│</text><text class="breeze-shell-r4" x="24.4" y="776.4" textLength="109.8" clip-path="url(#breeze-shell-line-31)">--restart</text><text class="breeze-shell-r1" x="134.2" y="776.4" textLength="12.2" clip-path="url(#breeze-shell-line-31)">,</text><text class="breeze-shell-r4" x="146.4" y="776.4" textLength="195.2" clip-path="url(#breeze-shell-line-31)">--remove-orphans</text><text [...]
 </text><text class="breeze-shell-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-shell-line-32)">│</text><text class="breeze-shell-r4" x="24.4" y="800.8" textLength="317.2" clip-path="url(#breeze-shell-line-32)">--docker-host&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-shell-r1" x="366" y="800.8" textLength="915" clip-path="url(#breeze-shell-line-32)">Optional&#160;-&#160;docker&#160;host&#160;to&#160;use&#160;when& [...]
 </text><text class="breeze-shell-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-shell-line-33)">│</text><text class="breeze-shell-r1" x="366" y="825.2" textLength="488" clip-path="url(#breeze-shell-line-33)">option&#160;is&#160;ignored&#160;when&#160;building&#160;images.&#160;</text><text class="breeze-shell-r7" x="854" y="825.2" textLength="73.2" clip-path="url(#breeze-shell-line-33)">(TEXT)</text><text class="breeze-shell-r5" x="1451.8" y="825.2" textLength="12.2" clip-p [...]
-</text><text class="breeze-shell-r5" x="0" y="849.6" textLength="1464" clip-path="url(#breeze-shell-line-34)">└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘</text><text class="breeze-shell-r1" x="1464" y="849.6" textLength="12.2" clip-path="url(#breeze-shell-line-34)">
-</text><text class="breeze-shell-r5" x="0" y="874" textLength="24.4" clip-path="url(#breeze-shell-line-35)">┌─</text><text class="breeze-shell-r5" x="24.4" y="874" textLength="231.8" clip-path="url(#breeze-shell-line-35)">&#160;Scripts&#160;execution&#160;</text><text class="breeze-shell-r5" x="256.2" y="874" textLength="1183.4" clip-path="url(#breeze-shell-line-35)">─────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="breez [...]
+</text><text class="breeze-shell-r5" x="0" y="849.6" textLength="1464" clip-path="url(#breeze-shell-line-34)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-shell-r1" x="1464" y="849.6" textLength="12.2" clip-path="url(#breeze-shell-line-34)">
+</text><text class="breeze-shell-r5" x="0" y="874" textLength="24.4" clip-path="url(#breeze-shell-line-35)">╭─</text><text class="breeze-shell-r5" x="24.4" y="874" textLength="231.8" clip-path="url(#breeze-shell-line-35)">&#160;Scripts&#160;execution&#160;</text><text class="breeze-shell-r5" x="256.2" y="874" textLength="1183.4" clip-path="url(#breeze-shell-line-35)">─────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="breez [...]
 </text><text class="breeze-shell-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-shell-line-36)">│</text><text class="breeze-shell-r4" x="24.4" y="898.4" textLength="402.6" clip-path="url(#breeze-shell-line-36)">--quiet&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-shell-r1" x="451.4" y="898.4" textLength="549" clip-path="url(#breeze-shell-l [...]
 </text><text class="breeze-shell-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-shell-line-37)">│</text><text class="breeze-shell-r4" x="24.4" y="922.8" textLength="402.6" clip-path="url(#breeze-shell-line-37)">--skip-image-upgrade-check&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-shell-r1" x="451.4" y="922.8" textLength="536.8" clip-path="url(#breeze-shell-line-37)">Skip&#160;checking&#160;if&#160;the&#160;CI&#160;image&#160;is&#160;up&#160;to&#160; [...]
 </text><text class="breeze-shell-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-shell-line-38)">│</text><text class="breeze-shell-r4" x="24.4" y="947.2" textLength="402.6" clip-path="url(#breeze-shell-line-38)">--warn-image-upgrade-needed&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-shell-r1" x="451.4" y="947.2" textLength="512.4" clip-path="url(#breeze-shell-line-38)">Warn&#160;when&#160;image&#160;upgrade&#160;is&#160;needed&#160;even&#160;if&#160;</text> [...]
 </text><text class="breeze-shell-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-shell-line-39)">│</text><text class="breeze-shell-r4" x="24.4" y="971.6" textLength="402.6" clip-path="url(#breeze-shell-line-39)">--skip-environment-initialization</text><text class="breeze-shell-r1" x="451.4" y="971.6" textLength="939.4" clip-path="url(#breeze-shell-line-39)">Skip&#160;running&#160;breeze&#160;entrypoint&#160;initialization&#160;-&#160;no&#160;user&#160;output,&#160;no&#160;db [...]
 </text><text class="breeze-shell-r5" x="0" y="996" textLength="12.2" clip-path="url(#breeze-shell-line-40)">│</text><text class="breeze-shell-r4" x="24.4" y="996" textLength="402.6" clip-path="url(#breeze-shell-line-40)">--tty&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-shell-r1" x="451.4" y="996" textLength="988.2" clip-path="url(#breeze-s [...]
 </text><text class="breeze-shell-r5" x="0" y="1020.4" textLength="12.2" clip-path="url(#breeze-shell-line-41)">│</text><text class="breeze-shell-r1" x="451.4" y="1020.4" textLength="292.8" clip-path="url(#breeze-shell-line-41)">CI&#160;to&#160;force-enable&#160;it).&#160;</text><text class="breeze-shell-r5" x="744.2" y="1020.4" textLength="183" clip-path="url(#breeze-shell-line-41)">[default:&#160;auto]</text><text class="breeze-shell-r7" x="939.4" y="1020.4" textLength="329.4" clip-path [...]
-</text><text class="breeze-shell-r5" x="0" y="1044.8" textLength="1464" clip-path="url(#breeze-shell-line-42)">└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘</text><text class="breeze-shell-r1" x="1464" y="1044.8" textLength="12.2" clip-path="url(#breeze-shell-line-42)">
-</text><text class="breeze-shell-r5" x="0" y="1069.2" textLength="24.4" clip-path="url(#breeze-shell-line-43)">┌─</text><text class="breeze-shell-r5" x="24.4" y="1069.2" textLength="122" clip-path="url(#breeze-shell-line-43)">&#160;Database&#160;</text><text class="breeze-shell-r5" x="146.4" y="1069.2" textLength="1293.2" clip-path="url(#breeze-shell-line-43)">──────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="bre [...]
+</text><text class="breeze-shell-r5" x="0" y="1044.8" textLength="1464" clip-path="url(#breeze-shell-line-42)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-shell-r1" x="1464" y="1044.8" textLength="12.2" clip-path="url(#breeze-shell-line-42)">
+</text><text class="breeze-shell-r5" x="0" y="1069.2" textLength="24.4" clip-path="url(#breeze-shell-line-43)">╭─</text><text class="breeze-shell-r5" x="24.4" y="1069.2" textLength="122" clip-path="url(#breeze-shell-line-43)">&#160;Database&#160;</text><text class="breeze-shell-r5" x="146.4" y="1069.2" textLength="1293.2" clip-path="url(#breeze-shell-line-43)">──────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="bre [...]
 </text><text class="breeze-shell-r5" x="0" y="1093.6" textLength="12.2" clip-path="url(#breeze-shell-line-44)">│</text><text class="breeze-shell-r4" x="24.4" y="1093.6" textLength="292.8" clip-path="url(#breeze-shell-line-44)">--backend&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-shell-r6" x="341.6" y="1093.6" textLength="24.4" clip-path="url(#breeze-shell-line-44)">-b</text><text class="breeze-shell-r1" x="390.4" y= [...]
 </text><text class="breeze-shell-r5" x="0" y="1118" textLength="12.2" clip-path="url(#breeze-shell-line-45)">│</text><text class="breeze-shell-r1" x="390.4" y="1118" textLength="1049.2" clip-path="url(#breeze-shell-line-45)">with&#160;an&#160;invalid&#160;database&#160;configuration&#160;—&#160;no&#160;database&#160;will&#160;be&#160;available,&#160;and&#160;any&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-shell-r5" x="1451.8" y="1118" textLength="12.2" clip-path=" [...]
 </text><text class="breeze-shell-r5" x="0" y="1142.4" textLength="12.2" clip-path="url(#breeze-shell-line-46)">│</text><text class="breeze-shell-r1" x="390.4" y="1142.4" textLength="1049.2" clip-path="url(#breeze-shell-line-46)">attempt&#160;to&#160;run&#160;Airflow&#160;will&#160;fail.&#160;Use&#160;&#x27;none&#x27;&#160;only&#160;for&#160;specific&#160;non-DB&#160;test&#160;cases.&#160;If&#160;&#160;</text><text class="breeze-shell-r5" x="1451.8" y="1142.4" textLength="12.2" clip-path= [...]
@@ -600,27 +600,27 @@
 </text><text class="breeze-shell-r5" x="0" y="1337.6" textLength="12.2" clip-path="url(#breeze-shell-line-54)">│</text><text class="breeze-shell-r4" x="24.4" y="1337.6" textLength="292.8" clip-path="url(#breeze-shell-line-54)">--postgres-version&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-shell-r6" x="341.6" y="1337.6" textLength="24.4" clip-path="url(#breeze-shell-line-54)">-P</text><text class="breeze-shell-r1" x="390.4" y="1337.6" textLength="317.2" clip-path="url(#b [...]
 </text><text class="breeze-shell-r5" x="0" y="1362" textLength="12.2" clip-path="url(#breeze-shell-line-55)">│</text><text class="breeze-shell-r4" x="24.4" y="1362" textLength="292.8" clip-path="url(#breeze-shell-line-55)">--mysql-version&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-shell-r6" x="341.6" y="1362" textLength="24.4" clip-path="url(#breeze-shell-line-55)">-M</text><text class="breeze-shell-r1" x="390.4" y="1362" textLength="280.6" clip-path= [...]
 </text><text class="breeze-shell-r5" x="0" y="1386.4" textLength="12.2" clip-path="url(#breeze-shell-line-56)">│</text><text class="breeze-shell-r4" x="24.4" y="1386.4" textLength="122" clip-path="url(#breeze-shell-line-56)">--db-reset</text><text class="breeze-shell-r1" x="146.4" y="1386.4" textLength="12.2" clip-path="url(#breeze-shell-line-56)">/</text><text class="breeze-shell-r4" x="158.6" y="1386.4" textLength="158.6" clip-path="url(#breeze-shell-line-56)">--no-db-reset</text><text [...]
-</text><text class="breeze-shell-r5" x="0" y="1410.8" textLength="1464" clip-path="url(#breeze-shell-line-57)">└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘</text><text class="breeze-shell-r1" x="1464" y="1410.8" textLength="12.2" clip-path="url(#breeze-shell-line-57)">
-</text><text class="breeze-shell-r5" x="0" y="1435.2" textLength="24.4" clip-path="url(#breeze-shell-line-58)">┌─</text><text class="breeze-shell-r5" x="24.4" y="1435.2" textLength="207.4" clip-path="url(#breeze-shell-line-58)">&#160;Choose&#160;executor&#160;</text><text class="breeze-shell-r5" x="231.8" y="1435.2" textLength="1207.8" clip-path="url(#breeze-shell-line-58)">───────────────────────────────────────────────────────────────────────────────────────────────────</text><text cla [...]
+</text><text class="breeze-shell-r5" x="0" y="1410.8" textLength="1464" clip-path="url(#breeze-shell-line-57)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-shell-r1" x="1464" y="1410.8" textLength="12.2" clip-path="url(#breeze-shell-line-57)">
+</text><text class="breeze-shell-r5" x="0" y="1435.2" textLength="24.4" clip-path="url(#breeze-shell-line-58)">╭─</text><text class="breeze-shell-r5" x="24.4" y="1435.2" textLength="207.4" clip-path="url(#breeze-shell-line-58)">&#160;Choose&#160;executor&#160;</text><text class="breeze-shell-r5" x="231.8" y="1435.2" textLength="1207.8" clip-path="url(#breeze-shell-line-58)">───────────────────────────────────────────────────────────────────────────────────────────────────</text><text cla [...]
 </text><text class="breeze-shell-r5" x="0" y="1459.6" textLength="12.2" clip-path="url(#breeze-shell-line-59)">│</text><text class="breeze-shell-r4" x="24.4" y="1459.6" textLength="183" clip-path="url(#breeze-shell-line-59)">--executor&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-shell-r1" x="231.8" y="1459.6" textLength="585.6" clip-path="url(#breeze-shell-line-59)">Specify&#160;the&#160;executor&#160;to&#160;use&#160;with&#160;shell&#160;command.&#160;</text><text class="bre [...]
 </text><text class="breeze-shell-r5" x="0" y="1484" textLength="12.2" clip-path="url(#breeze-shell-line-60)">│</text><text class="breeze-shell-r7" x="231.8" y="1484" textLength="1061.4" clip-path="url(#breeze-shell-line-60)">(localexecutor|kubernetesexecutor|celeryexecutor|celerykubernetesexecutor|edgeexecutor)</text><text class="breeze-shell-r5" x="1451.8" y="1484" textLength="12.2" clip-path="url(#breeze-shell-line-60)">│</text><text class="breeze-shell-r1" x="1464" y="1484" textLength [...]
 </text><text class="breeze-shell-r5" x="0" y="1508.4" textLength="12.2" clip-path="url(#breeze-shell-line-61)">│</text><text class="breeze-shell-r4" x="24.4" y="1508.4" textLength="183" clip-path="url(#breeze-shell-line-61)">--celery-broker</text><text class="breeze-shell-r1" x="231.8" y="1508.4" textLength="414.8" clip-path="url(#breeze-shell-line-61)">Specify&#160;the&#160;celery&#160;message&#160;broker&#160;</text><text class="breeze-shell-r5" x="646.6" y="1508.4" textLength="195.2"  [...]
 </text><text class="breeze-shell-r5" x="0" y="1532.8" textLength="12.2" clip-path="url(#breeze-shell-line-62)">│</text><text class="breeze-shell-r4" x="24.4" y="1532.8" textLength="183" clip-path="url(#breeze-shell-line-62)">--celery-flower</text><text class="breeze-shell-r1" x="231.8" y="1532.8" textLength="231.8" clip-path="url(#breeze-shell-line-62)">Start&#160;celery&#160;flower</text><text class="breeze-shell-r5" x="1451.8" y="1532.8" textLength="12.2" clip-path="url(#breeze-shell-l [...]
-</text><text class="breeze-shell-r5" x="0" y="1557.2" textLength="1464" clip-path="url(#breeze-shell-line-63)">└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘</text><text class="breeze-shell-r1" x="1464" y="1557.2" textLength="12.2" clip-path="url(#breeze-shell-line-63)">
-</text><text class="breeze-shell-r5" x="0" y="1581.6" textLength="24.4" clip-path="url(#breeze-shell-line-64)">┌─</text><text class="breeze-shell-r5" x="24.4" y="1581.6" textLength="488" clip-path="url(#breeze-shell-line-64)">&#160;Build&#160;CI&#160;image&#160;(before&#160;entering&#160;shell)&#160;</text><text class="breeze-shell-r5" x="512.4" y="1581.6" textLength="927.2" clip-path="url(#breeze-shell-line-64)">─────────────────────────────────────────────────────────────────────────── [...]
+</text><text class="breeze-shell-r5" x="0" y="1557.2" textLength="1464" clip-path="url(#breeze-shell-line-63)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-shell-r1" x="1464" y="1557.2" textLength="12.2" clip-path="url(#breeze-shell-line-63)">
+</text><text class="breeze-shell-r5" x="0" y="1581.6" textLength="24.4" clip-path="url(#breeze-shell-line-64)">╭─</text><text class="breeze-shell-r5" x="24.4" y="1581.6" textLength="488" clip-path="url(#breeze-shell-line-64)">&#160;Build&#160;CI&#160;image&#160;(before&#160;entering&#160;shell)&#160;</text><text class="breeze-shell-r5" x="512.4" y="1581.6" textLength="927.2" clip-path="url(#breeze-shell-line-64)">─────────────────────────────────────────────────────────────────────────── [...]
 </text><text class="breeze-shell-r5" x="0" y="1606" textLength="12.2" clip-path="url(#breeze-shell-line-65)">│</text><text class="breeze-shell-r4" x="24.4" y="1606" textLength="244" clip-path="url(#breeze-shell-line-65)">--force-build&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-shell-r1" x="341.6" y="1606" textLength="707.6" clip-path="url(#breeze-shell-line-65)">Force&#160;image&#160;build&#160;no&#160;matter&#160;if&#160;it&#160;is&#160;determined&#160;as&#160;n [...]
 </text><text class="breeze-shell-r5" x="0" y="1630.4" textLength="12.2" clip-path="url(#breeze-shell-line-66)">│</text><text class="breeze-shell-r4" x="24.4" y="1630.4" textLength="244" clip-path="url(#breeze-shell-line-66)">--platform&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-shell-r1" x="341.6" y="1630.4" textLength="341.6" clip-path="url(#breeze-shell-line-66)">Platform&#160;for&#160;Airflow&#160;image.&#160;</text><text class="breeze-shell- [...]
 </text><text class="breeze-shell-r5" x="0" y="1654.8" textLength="12.2" clip-path="url(#breeze-shell-line-67)">│</text><text class="breeze-shell-r4" x="24.4" y="1654.8" textLength="244" clip-path="url(#breeze-shell-line-67)">--github-repository&#160;</text><text class="breeze-shell-r6" x="292.8" y="1654.8" textLength="24.4" clip-path="url(#breeze-shell-line-67)">-g</text><text class="breeze-shell-r1" x="341.6" y="1654.8" textLength="597.8" clip-path="url(#breeze-shell-line-67)">GitHub&#1 [...]
 </text><text class="breeze-shell-r5" x="0" y="1679.2" textLength="12.2" clip-path="url(#breeze-shell-line-68)">│</text><text class="breeze-shell-r4" x="24.4" y="1679.2" textLength="244" clip-path="url(#breeze-shell-line-68)">--builder&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-shell-r1" x="341.6" y="1679.2" textLength="768.6" clip-path="url(#breeze-shell-line-68)">Buildx&#160;builder&#160;used&#160;to&#160;perform&#160;`docker&#160;buildx& [...]
 </text><text class="breeze-shell-r5" x="0" y="1703.6" textLength="12.2" clip-path="url(#breeze-shell-line-69)">│</text><text class="breeze-shell-r7" x="341.6" y="1703.6" textLength="73.2" clip-path="url(#breeze-shell-line-69)">(TEXT)</text><text class="breeze-shell-r5" x="1451.8" y="1703.6" textLength="12.2" clip-path="url(#breeze-shell-line-69)">│</text><text class="breeze-shell-r1" x="1464" y="1703.6" textLength="12.2" clip-path="url(#breeze-shell-line-69)">
 </text><text class="breeze-shell-r5" x="0" y="1728" textLength="12.2" clip-path="url(#breeze-shell-line-70)">│</text><text class="breeze-shell-r4" x="24.4" y="1728" textLength="97.6" clip-path="url(#breeze-shell-line-70)">--use-uv</text><text class="breeze-shell-r1" x="122" y="1728" textLength="12.2" clip-path="url(#breeze-shell-line-70)">/</text><text class="breeze-shell-r4" x="134.2" y="1728" textLength="134.2" clip-path="url(#breeze-shell-line-70)">--no-use-uv</text><text class="breez [...]
-</text><text class="breeze-shell-r5" x="0" y="1752.4" textLength="1464" clip-path="url(#breeze-shell-line-71)">└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘</text><text class="breeze-shell-r1" x="1464" y="1752.4" textLength="12.2" clip-path="url(#breeze-shell-line-71)">
-</text><text class="breeze-shell-r5" x="0" y="1776.8" textLength="24.4" clip-path="url(#breeze-shell-line-72)">┌─</text><text class="breeze-shell-r5" x="24.4" y="1776.8" textLength="414.8" clip-path="url(#breeze-shell-line-72)">&#160;Mounting&#160;the&#160;sources&#160;and&#160;volumes&#160;</text><text class="breeze-shell-r5" x="439.2" y="1776.8" textLength="1000.4" clip-path="url(#breeze-shell-line-72)">──────────────────────────────────────────────────────────────────────────────────< [...]
+</text><text class="breeze-shell-r5" x="0" y="1752.4" textLength="1464" clip-path="url(#breeze-shell-line-71)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-shell-r1" x="1464" y="1752.4" textLength="12.2" clip-path="url(#breeze-shell-line-71)">
+</text><text class="breeze-shell-r5" x="0" y="1776.8" textLength="24.4" clip-path="url(#breeze-shell-line-72)">╭─</text><text class="breeze-shell-r5" x="24.4" y="1776.8" textLength="414.8" clip-path="url(#breeze-shell-line-72)">&#160;Mounting&#160;the&#160;sources&#160;and&#160;volumes&#160;</text><text class="breeze-shell-r5" x="439.2" y="1776.8" textLength="1000.4" clip-path="url(#breeze-shell-line-72)">──────────────────────────────────────────────────────────────────────────────────< [...]
 </text><text class="breeze-shell-r5" x="0" y="1801.2" textLength="12.2" clip-path="url(#breeze-shell-line-73)">│</text><text class="breeze-shell-r4" x="24.4" y="1801.2" textLength="256.2" clip-path="url(#breeze-shell-line-73)">--mount-sources&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-shell-r1" x="305" y="1801.2" textLength="1134.6" clip-path="url(#breeze-shell-line-73)">Choose&#160;scope&#160;of&#160;local&#160;sources&#160;that&#160;should&#160;be&#160;mounted,&#160; [...]
 </text><text class="breeze-shell-r5" x="0" y="1825.6" textLength="12.2" clip-path="url(#breeze-shell-line-74)">│</text><text class="breeze-shell-r1" x="305" y="1825.6" textLength="134.2" clip-path="url(#breeze-shell-line-74)">selected).&#160;</text><text class="breeze-shell-r5" x="439.2" y="1825.6" textLength="231.8" clip-path="url(#breeze-shell-line-74)">[default:&#160;selected]</text><text class="breeze-shell-r7" x="683.2" y="1825.6" textLength="756.4" clip-path="url(#breeze-shell-line [...]
 </text><text class="breeze-shell-r5" x="0" y="1850" textLength="12.2" clip-path="url(#breeze-shell-line-75)">│</text><text class="breeze-shell-r4" x="24.4" y="1850" textLength="256.2" clip-path="url(#breeze-shell-line-75)">--include-mypy-volume</text><text class="breeze-shell-r1" x="305" y="1850" textLength="915" clip-path="url(#breeze-shell-line-75)">Whether&#160;to&#160;include&#160;mounting&#160;of&#160;the&#160;mypy&#160;volume&#160;(useful&#160;for&#160;debugging&#160;mypy).</text>< [...]
-</text><text class="breeze-shell-r5" x="0" y="1874.4" textLength="1464" clip-path="url(#breeze-shell-line-76)">└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘</text><text class="breeze-shell-r1" x="1464" y="1874.4" textLength="12.2" clip-path="url(#breeze-shell-line-76)">
-</text><text class="breeze-shell-r5" x="0" y="1898.8" textLength="24.4" clip-path="url(#breeze-shell-line-77)">┌─</text><text class="breeze-shell-r5" x="24.4" y="1898.8" textLength="512.4" clip-path="url(#breeze-shell-line-77)">&#160;Installing&#160;packages&#160;after&#160;entering&#160;shell&#160;</text><text class="breeze-shell-r5" x="536.8" y="1898.8" textLength="902.8" clip-path="url(#breeze-shell-line-77)">──────────────────────────────────────────────────────────────────────────</ [...]
+</text><text class="breeze-shell-r5" x="0" y="1874.4" textLength="1464" clip-path="url(#breeze-shell-line-76)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-shell-r1" x="1464" y="1874.4" textLength="12.2" clip-path="url(#breeze-shell-line-76)">
+</text><text class="breeze-shell-r5" x="0" y="1898.8" textLength="24.4" clip-path="url(#breeze-shell-line-77)">╭─</text><text class="breeze-shell-r5" x="24.4" y="1898.8" textLength="512.4" clip-path="url(#breeze-shell-line-77)">&#160;Installing&#160;packages&#160;after&#160;entering&#160;shell&#160;</text><text class="breeze-shell-r5" x="536.8" y="1898.8" textLength="902.8" clip-path="url(#breeze-shell-line-77)">──────────────────────────────────────────────────────────────────────────</ [...]
 </text><text class="breeze-shell-r5" x="0" y="1923.2" textLength="12.2" clip-path="url(#breeze-shell-line-78)">│</text><text class="breeze-shell-r4" x="24.4" y="1923.2" textLength="695.4" clip-path="url(#breeze-shell-line-78)">--airflow-constraints-location&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-shell-r1" x="744.2" y="1923.2" textLength="695 [...]
 </text><text class="breeze-shell-r5" x="0" y="1947.6" textLength="12.2" clip-path="url(#breeze-shell-line-79)">│</text><text class="breeze-shell-r1" x="744.2" y="1947.6" textLength="256.2" clip-path="url(#breeze-shell-line-79)">local&#160;context&#160;file).&#160;</text><text class="breeze-shell-r7" x="1000.4" y="1947.6" textLength="73.2" clip-path="url(#breeze-shell-line-79)">(TEXT)</text><text class="breeze-shell-r5" x="1451.8" y="1947.6" textLength="12.2" clip-path="url(#breeze-shell- [...]
 </text><text class="breeze-shell-r5" x="0" y="1972" textLength="12.2" clip-path="url(#breeze-shell-line-80)">│</text><text class="breeze-shell-r4" x="24.4" y="1972" textLength="695.4" clip-path="url(#breeze-shell-line-80)">--airflow-constraints-mode&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-shell-r1" x="744.2" y="1972" t [...]
@@ -681,31 +681,31 @@
 </text><text class="breeze-shell-r5" x="0" y="3314" textLength="12.2" clip-path="url(#breeze-shell-line-135)">│</text><text class="breeze-shell-r4" x="24.4" y="3314" textLength="695.4" clip-path="url(#breeze-shell-line-135)">--install-airflow-python-client&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-shell-r1" x="744.2" y="3314" textLength="695.4" clip- [...]
 </text><text class="breeze-shell-r5" x="0" y="3338.4" textLength="12.2" clip-path="url(#breeze-shell-line-136)">│</text><text class="breeze-shell-r1" x="744.2" y="3338.4" textLength="12.2" clip-path="url(#breeze-shell-line-136)">(</text><text class="breeze-shell-r4" x="756.4" y="3338.4" textLength="256.2" clip-path="url(#breeze-shell-line-136)">--distribution-format</text><text class="breeze-shell-r1" x="1012.6" y="3338.4" textLength="427" clip-path="url(#breeze-shell-line-136)">&#160;de [...]
 </text><text class="breeze-shell-r5" x="0" y="3362.8" textLength="12.2" clip-path="url(#breeze-shell-line-137)">│</text><text class="breeze-shell-r1" x="744.2" y="3362.8" textLength="695.4" clip-path="url(#breeze-shell-line-137)">folder&#160;when&#160;entering&#160;breeze.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-shell-r5" x="1451. [...]
-</text><text class="breeze-shell-r5" x="0" y="3387.2" textLength="1464" clip-path="url(#breeze-shell-line-138)">└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘</text><text class="breeze-shell-r1" x="1464" y="3387.2" textLength="12.2" clip-path="url(#breeze-shell-line-138)">
-</text><text class="breeze-shell-r5" x="0" y="3411.6" textLength="24.4" clip-path="url(#breeze-shell-line-139)">┌─</text><text class="breeze-shell-r5" x="24.4" y="3411.6" textLength="610" clip-path="url(#breeze-shell-line-139)">&#160;Upgrading/downgrading/removing&#160;selected&#160;packages&#160;</text><text class="breeze-shell-r5" x="634.4" y="3411.6" textLength="805.2" clip-path="url(#breeze-shell-line-139)">──────────────────────────────────────────────────────────────────</text><tex [...]
+</text><text class="breeze-shell-r5" x="0" y="3387.2" textLength="1464" clip-path="url(#breeze-shell-line-138)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-shell-r1" x="1464" y="3387.2" textLength="12.2" clip-path="url(#breeze-shell-line-138)">
+</text><text class="breeze-shell-r5" x="0" y="3411.6" textLength="24.4" clip-path="url(#breeze-shell-line-139)">╭─</text><text class="breeze-shell-r5" x="24.4" y="3411.6" textLength="610" clip-path="url(#breeze-shell-line-139)">&#160;Upgrading/downgrading/removing&#160;selected&#160;packages&#160;</text><text class="breeze-shell-r5" x="634.4" y="3411.6" textLength="805.2" clip-path="url(#breeze-shell-line-139)">──────────────────────────────────────────────────────────────────</text><tex [...]
 </text><text class="breeze-shell-r5" x="0" y="3436" textLength="12.2" clip-path="url(#breeze-shell-line-140)">│</text><text class="breeze-shell-r4" x="24.4" y="3436" textLength="268.4" clip-path="url(#breeze-shell-line-140)">--upgrade-boto&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-shell-r1" x="317.2" y="3436" textLength="866.2" clip-path="url(#breeze-shell-line-140)">Remove&#160;aiobotocore&#160;and&#160;upgrade&#160;botocore&#160;and&#160;boto&#160;to&#16 [...]
 </text><text class="breeze-shell-r5" x="0" y="3460.4" textLength="12.2" clip-path="url(#breeze-shell-line-141)">│</text><text class="breeze-shell-r4" x="24.4" y="3460.4" textLength="268.4" clip-path="url(#breeze-shell-line-141)">--upgrade-sqlalchemy&#160;&#160;</text><text class="breeze-shell-r1" x="317.2" y="3460.4" textLength="500.2" clip-path="url(#breeze-shell-line-141)">Upgrade&#160;SQLAlchemy&#160;to&#160;the&#160;latest&#160;version.</text><text class="breeze-shell-r5" x="1451.8"  [...]
 </text><text class="breeze-shell-r5" x="0" y="3484.8" textLength="12.2" clip-path="url(#breeze-shell-line-142)">│</text><text class="breeze-shell-r4" x="24.4" y="3484.8" textLength="268.4" clip-path="url(#breeze-shell-line-142)">--downgrade-sqlalchemy</text><text class="breeze-shell-r1" x="317.2" y="3484.8" textLength="610" clip-path="url(#breeze-shell-line-142)">Downgrade&#160;SQLAlchemy&#160;to&#160;minimum&#160;supported&#160;version.</text><text class="breeze-shell-r5" x="1451.8" y=" [...]
 </text><text class="breeze-shell-r5" x="0" y="3509.2" textLength="12.2" clip-path="url(#breeze-shell-line-143)">│</text><text class="breeze-shell-r4" x="24.4" y="3509.2" textLength="268.4" clip-path="url(#breeze-shell-line-143)">--downgrade-pendulum&#160;&#160;</text><text class="breeze-shell-r1" x="317.2" y="3509.2" textLength="585.6" clip-path="url(#breeze-shell-line-143)">Downgrade&#160;Pendulum&#160;to&#160;minimum&#160;supported&#160;version.</text><text class="breeze-shell-r5" x="1 [...]
-</text><text class="breeze-shell-r5" x="0" y="3533.6" textLength="1464" clip-path="url(#breeze-shell-line-144)">└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘</text><text class="breeze-shell-r1" x="1464" y="3533.6" textLength="12.2" clip-path="url(#breeze-shell-line-144)">
-</text><text class="breeze-shell-r5" x="0" y="3558" textLength="24.4" clip-path="url(#breeze-shell-line-145)">┌─</text><text class="breeze-shell-r5" x="24.4" y="3558" textLength="183" clip-path="url(#breeze-shell-line-145)">&#160;DB&#160;test&#160;flags&#160;</text><text class="breeze-shell-r5" x="207.4" y="3558" textLength="1232.2" clip-path="url(#breeze-shell-line-145)">─────────────────────────────────────────────────────────────────────────────────────────────────────</text><text cla [...]
+</text><text class="breeze-shell-r5" x="0" y="3533.6" textLength="1464" clip-path="url(#breeze-shell-line-144)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-shell-r1" x="1464" y="3533.6" textLength="12.2" clip-path="url(#breeze-shell-line-144)">
+</text><text class="breeze-shell-r5" x="0" y="3558" textLength="24.4" clip-path="url(#breeze-shell-line-145)">╭─</text><text class="breeze-shell-r5" x="24.4" y="3558" textLength="183" clip-path="url(#breeze-shell-line-145)">&#160;DB&#160;test&#160;flags&#160;</text><text class="breeze-shell-r5" x="207.4" y="3558" textLength="1232.2" clip-path="url(#breeze-shell-line-145)">─────────────────────────────────────────────────────────────────────────────────────────────────────</text><text cla [...]
 </text><text class="breeze-shell-r5" x="0" y="3582.4" textLength="12.2" clip-path="url(#breeze-shell-line-146)">│</text><text class="breeze-shell-r4" x="24.4" y="3582.4" textLength="231.8" clip-path="url(#breeze-shell-line-146)">--run-db-tests-only</text><text class="breeze-shell-r1" x="280.6" y="3582.4" textLength="475.8" clip-path="url(#breeze-shell-line-146)">Only&#160;runs&#160;tests&#160;that&#160;require&#160;a&#160;database</text><text class="breeze-shell-r5" x="1451.8" y="3582.4" [...]
 </text><text class="breeze-shell-r5" x="0" y="3606.8" textLength="12.2" clip-path="url(#breeze-shell-line-147)">│</text><text class="breeze-shell-r4" x="24.4" y="3606.8" textLength="231.8" clip-path="url(#breeze-shell-line-147)">--skip-db-tests&#160;&#160;&#160;&#160;</text><text class="breeze-shell-r1" x="280.6" y="3606.8" textLength="414.8" clip-path="url(#breeze-shell-line-147)">Skip&#160;tests&#160;that&#160;require&#160;a&#160;database</text><text class="breeze-shell-r5" x="1451.8"  [...]
-</text><text class="breeze-shell-r5" x="0" y="3631.2" textLength="1464" clip-path="url(#breeze-shell-line-148)">└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘</text><text class="breeze-shell-r1" x="1464" y="3631.2" textLength="12.2" clip-path="url(#breeze-shell-line-148)">
-</text><text class="breeze-shell-r5" x="0" y="3655.6" textLength="24.4" clip-path="url(#breeze-shell-line-149)">┌─</text><text class="breeze-shell-r5" x="24.4" y="3655.6" textLength="183" clip-path="url(#breeze-shell-line-149)">&#160;Other&#160;options&#160;</text><text class="breeze-shell-r5" x="207.4" y="3655.6" textLength="1232.2" clip-path="url(#breeze-shell-line-149)">─────────────────────────────────────────────────────────────────────────────────────────────────────</text><text cl [...]
+</text><text class="breeze-shell-r5" x="0" y="3631.2" textLength="1464" clip-path="url(#breeze-shell-line-148)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-shell-r1" x="1464" y="3631.2" textLength="12.2" clip-path="url(#breeze-shell-line-148)">
+</text><text class="breeze-shell-r5" x="0" y="3655.6" textLength="24.4" clip-path="url(#breeze-shell-line-149)">╭─</text><text class="breeze-shell-r5" x="24.4" y="3655.6" textLength="183" clip-path="url(#breeze-shell-line-149)">&#160;Other&#160;options&#160;</text><text class="breeze-shell-r5" x="207.4" y="3655.6" textLength="1232.2" clip-path="url(#breeze-shell-line-149)">─────────────────────────────────────────────────────────────────────────────────────────────────────</text><text cl [...]
 </text><text class="breeze-shell-r5" x="0" y="3680" textLength="12.2" clip-path="url(#breeze-shell-line-150)">│</text><text class="breeze-shell-r4" x="24.4" y="3680" textLength="256.2" clip-path="url(#breeze-shell-line-150)">--forward-credentials</text><text class="breeze-shell-r6" x="305" y="3680" textLength="24.4" clip-path="url(#breeze-shell-line-150)">-f</text><text class="breeze-shell-r1" x="353.8" y="3680" textLength="634.4" clip-path="url(#breeze-shell-line-150)">Forward&#160;loca [...]
 </text><text class="breeze-shell-r5" x="0" y="3704.4" textLength="12.2" clip-path="url(#breeze-shell-line-151)">│</text><text class="breeze-shell-r4" x="24.4" y="3704.4" textLength="256.2" clip-path="url(#breeze-shell-line-151)">--max-time&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-shell-r1" x="353.8" y="3704.4" textLength="1085.8" clip-path="url(#breeze-shell-line-151)">Maximum&#160;time&#160;that&#160;the&#160;command&#160;should&#160;ta [...]
 </text><text class="breeze-shell-r5" x="0" y="3728.8" textLength="12.2" clip-path="url(#breeze-shell-line-152)">│</text><text class="breeze-shell-r7" x="353.8" y="3728.8" textLength="244" clip-path="url(#breeze-shell-line-152)">(INTEGER&#160;RANGE&#160;x&gt;=1)</text><text class="breeze-shell-r5" x="1451.8" y="3728.8" textLength="12.2" clip-path="url(#breeze-shell-line-152)">│</text><text class="breeze-shell-r1" x="1464" y="3728.8" textLength="12.2" clip-path="url(#breeze-shell-line-152)">
 </text><text class="breeze-shell-r5" x="0" y="3753.2" textLength="12.2" clip-path="url(#breeze-shell-line-153)">│</text><text class="breeze-shell-r4" x="24.4" y="3753.2" textLength="256.2" clip-path="url(#breeze-shell-line-153)">--verbose-commands&#160;&#160;&#160;</text><text class="breeze-shell-r1" x="353.8" y="3753.2" textLength="414.8" clip-path="url(#breeze-shell-line-153)">Show&#160;details&#160;of&#160;commands&#160;executed.</text><text class="breeze-shell-r5" x="1451.8" y="3753. [...]
 </text><text class="breeze-shell-r5" x="0" y="3777.6" textLength="12.2" clip-path="url(#breeze-shell-line-154)">│</text><text class="breeze-shell-r4" x="24.4" y="3777.6" textLength="256.2" clip-path="url(#breeze-shell-line-154)">--keep-env-variables&#160;</text><text class="breeze-shell-r1" x="353.8" y="3777.6" textLength="1000.4" clip-path="url(#breeze-shell-line-154)">Do&#160;not&#160;clear&#160;environment&#160;variables&#160;that&#160;might&#160;have&#160;side&#160;effect&#160;while& [...]
 </text><text class="breeze-shell-r5" x="0" y="3802" textLength="12.2" clip-path="url(#breeze-shell-line-155)">│</text><text class="breeze-shell-r4" x="24.4" y="3802" textLength="256.2" clip-path="url(#breeze-shell-line-155)">--no-db-cleanup&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-shell-r1" x="353.8" y="3802" textLength="597.8" clip-path="url(#breeze-shell-line-155)">Do&#160;not&#160;clear&#160;the&#160;database&#160;before&#160;each&#160;test&#160;module</text><text [...]
-</text><text class="breeze-shell-r5" x="0" y="3826.4" textLength="1464" clip-path="url(#breeze-shell-line-156)">└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘</text><text class="breeze-shell-r1" x="1464" y="3826.4" textLength="12.2" clip-path="url(#breeze-shell-line-156)">
-</text><text class="breeze-shell-r5" x="0" y="3850.8" textLength="24.4" clip-path="url(#breeze-shell-line-157)">┌─</text><text class="breeze-shell-r5" x="24.4" y="3850.8" textLength="195.2" clip-path="url(#breeze-shell-line-157)">&#160;Common&#160;options&#160;</text><text class="breeze-shell-r5" x="219.6" y="3850.8" textLength="1220" clip-path="url(#breeze-shell-line-157)">────────────────────────────────────────────────────────────────────────────────────────────────────</text><text cl [...]
+</text><text class="breeze-shell-r5" x="0" y="3826.4" textLength="1464" clip-path="url(#breeze-shell-line-156)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-shell-r1" x="1464" y="3826.4" textLength="12.2" clip-path="url(#breeze-shell-line-156)">
+</text><text class="breeze-shell-r5" x="0" y="3850.8" textLength="24.4" clip-path="url(#breeze-shell-line-157)">╭─</text><text class="breeze-shell-r5" x="24.4" y="3850.8" textLength="195.2" clip-path="url(#breeze-shell-line-157)">&#160;Common&#160;options&#160;</text><text class="breeze-shell-r5" x="219.6" y="3850.8" textLength="1220" clip-path="url(#breeze-shell-line-157)">────────────────────────────────────────────────────────────────────────────────────────────────────</text><text cl [...]
 </text><text class="breeze-shell-r5" x="0" y="3875.2" textLength="12.2" clip-path="url(#breeze-shell-line-158)">│</text><text class="breeze-shell-r4" x="24.4" y="3875.2" textLength="109.8" clip-path="url(#breeze-shell-line-158)">--answer&#160;</text><text class="breeze-shell-r6" x="158.6" y="3875.2" textLength="24.4" clip-path="url(#breeze-shell-line-158)">-a</text><text class="breeze-shell-r1" x="207.4" y="3875.2" textLength="329.4" clip-path="url(#breeze-shell-line-158)">Force&#160;ans [...]
 </text><text class="breeze-shell-r5" x="0" y="3899.6" textLength="12.2" clip-path="url(#breeze-shell-line-159)">│</text><text class="breeze-shell-r4" x="24.4" y="3899.6" textLength="109.8" clip-path="url(#breeze-shell-line-159)">--dry-run</text><text class="breeze-shell-r6" x="158.6" y="3899.6" textLength="24.4" clip-path="url(#breeze-shell-line-159)">-D</text><text class="breeze-shell-r1" x="207.4" y="3899.6" textLength="719.8" clip-path="url(#breeze-shell-line-159)">If&#160;dry-run&#16 [...]
 </text><text class="breeze-shell-r5" x="0" y="3924" textLength="12.2" clip-path="url(#breeze-shell-line-160)">│</text><text class="breeze-shell-r4" x="24.4" y="3924" textLength="109.8" clip-path="url(#breeze-shell-line-160)">--verbose</text><text class="breeze-shell-r6" x="158.6" y="3924" textLength="24.4" clip-path="url(#breeze-shell-line-160)">-v</text><text class="breeze-shell-r1" x="207.4" y="3924" textLength="585.6" clip-path="url(#breeze-shell-line-160)">Print&#160;verbose&#160;inf [...]
 </text><text class="breeze-shell-r5" x="0" y="3948.4" textLength="12.2" clip-path="url(#breeze-shell-line-161)">│</text><text class="breeze-shell-r4" x="24.4" y="3948.4" textLength="109.8" clip-path="url(#breeze-shell-line-161)">--help&#160;&#160;&#160;</text><text class="breeze-shell-r6" x="158.6" y="3948.4" textLength="24.4" clip-path="url(#breeze-shell-line-161)">-h</text><text class="breeze-shell-r1" x="207.4" y="3948.4" textLength="329.4" clip-path="url(#breeze-shell-line-161)">Show [...]
-</text><text class="breeze-shell-r5" x="0" y="3972.8" textLength="1464" clip-path="url(#breeze-shell-line-162)">└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘</text><text class="breeze-shell-r1" x="1464" y="3972.8" textLength="12.2" clip-path="url(#breeze-shell-line-162)">
+</text><text class="breeze-shell-r5" x="0" y="3972.8" textLength="1464" clip-path="url(#breeze-shell-line-162)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-shell-r1" x="1464" y="3972.8" textLength="12.2" clip-path="url(#breeze-shell-line-162)">
 </text>
     </g>
     </g>
diff --git a/dev/breeze/doc/images/output_shell.txt b/dev/breeze/doc/images/output_shell.txt
index 871ae1ed8ce..55cbd8309bf 100644
--- a/dev/breeze/doc/images/output_shell.txt
+++ b/dev/breeze/doc/images/output_shell.txt
@@ -1 +1 @@
-c816ef588c64c0a59e4e700aeba3da3f
+ffb165b60278e72cb935354d0ecfc20b
diff --git a/dev/breeze/doc/images/output_start-airflow.svg b/dev/breeze/doc/images/output_start-airflow.svg
index 5b5f9e991ab..bf4940d500f 100644
--- a/dev/breeze/doc/images/output_start-airflow.svg
+++ b/dev/breeze/doc/images/output_start-airflow.svg
@@ -486,7 +486,7 @@
 </text><text class="breeze-start-airflow-r1" x="12.2" y="93.2" textLength="1439.6" clip-path="url(#breeze-start-airflow-line-3)">Enter&#160;breeze&#160;environment&#160;and&#160;starts&#160;all&#160;Airflow&#160;components&#160;in&#160;terminal&#160;multiplexer&#160;session.&#160;Compile&#160;assets&#160;if&#160;contents</text><text class="breeze-start-airflow-r1" x="1464" y="93.2" textLength="12.2" clip-path="url(#breeze-start-airflow-line-3)">
 </text><text class="breeze-start-airflow-r1" x="12.2" y="117.6" textLength="305" clip-path="url(#breeze-start-airflow-line-4)">of&#160;www&#160;directory&#160;changed.</text><text class="breeze-start-airflow-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-4)">
 </text><text class="breeze-start-airflow-r1" x="1464" y="142" textLength="12.2" clip-path="url(#breeze-start-airflow-line-5)">
-</text><text class="breeze-start-airflow-r5" x="0" y="166.4" textLength="24.4" clip-path="url(#breeze-start-airflow-line-6)">┌─</text><text class="breeze-start-airflow-r5" x="24.4" y="166.4" textLength="195.2" clip-path="url(#breeze-start-airflow-line-6)">&#160;Execution&#160;mode&#160;</text><text class="breeze-start-airflow-r5" x="219.6" y="166.4" textLength="1220" clip-path="url(#breeze-start-airflow-line-6)">──────────────────────────────────────────────────────────────────────────── [...]
+</text><text class="breeze-start-airflow-r5" x="0" y="166.4" textLength="24.4" clip-path="url(#breeze-start-airflow-line-6)">╭─</text><text class="breeze-start-airflow-r5" x="24.4" y="166.4" textLength="195.2" clip-path="url(#breeze-start-airflow-line-6)">&#160;Execution&#160;mode&#160;</text><text class="breeze-start-airflow-r5" x="219.6" y="166.4" textLength="1220" clip-path="url(#breeze-start-airflow-line-6)">──────────────────────────────────────────────────────────────────────────── [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-start-airflow-line-7)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="190.8" textLength="671" clip-path="url(#breeze-start-airflow-line-7)">--python&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-start-airflow-line-8)">│</text><text class="breeze-start-airflow-r1" x="768.6" y="215.2" textLength="97.6" clip-path="url(#breeze-start-airflow-line-8)">images.&#160;</text><text class="breeze-start-airflow-r5" x="866.2" y="215.2" textLength="183" clip-path="url(#breeze-start-airflow-line-8)">[default:&#160;3.10]</text><text class="breeze-start-airflow-r7" x="1061.4" y="215.2" textLength [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-9)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="239.6" textLength="671" clip-path="url(#breeze-start-airflow-line-9)">--platform&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
@@ -494,9 +494,9 @@
 </text><text class="breeze-start-airflow-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-11)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="288.4" textLength="671" clip-path="url(#breeze-start-airflow-line-11)">--integration&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-start-airflow-line-12)">│</text><text class="breeze-start-airflow-r1" x="768.6" y="312.8" textLength="134.2" clip-path="url(#breeze-start-airflow-line-12)">than&#160;one).&#160;</text><text class="breeze-start-airflow-r7" x="902.8" y="312.8" textLength="524.6" clip-path="url(#breeze-start-airflow-line-12)">(all&#160;|&#160;all-testable&#160;|&#160;cassandra&#160;|&#160;celery&#160;|&#160 [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-start-airflow-line-13)">│</text><text class="breeze-start-airflow-r7" x="768.6" y="337.2" textLength="658.8" clip-path="url(#breeze-start-airflow-line-13)">drill&#160;|&#160;elasticsearch&#160;|&#160;kafka&#160;|&#160;kerberos&#160;|&#160;keycloak&#160;|&#160;</text><text class="breeze-start-airflow-r5" x="1451.8" y="337.2" textLength="12.2" clip-path="url(#breeze-start-airflow-line-13)" [...]
-</text><text class="breeze-start-airflow-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-14)">│</text><text class="breeze-start-airflow-r7" x="768.6" y="361.6" textLength="671" clip-path="url(#breeze-start-airflow-line-14)">localstack&#160;|&#160;mongo&#160;|&#160;mssql&#160;|&#160;openlineage&#160;|&#160;otel&#160;|&#160;pinot</text><text class="breeze-start-airflow-r5" x="1451.8" y="361.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-14)"> [...]
-</text><text class="breeze-start-airflow-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-start-airflow-line-15)">│</text><text class="breeze-start-airflow-r7" x="768.6" y="386" textLength="671" clip-path="url(#breeze-start-airflow-line-15)">|&#160;qdrant&#160;|&#160;redis&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;tinkerpop&#160;|&#160;trino&#160;|</text><text class="breeze-start-airflow-r5" x="1451.8" y="386" textLength="12.2" clip-path="url(#breeze-start-airflow-line-1 [...]
-</text><text class="breeze-start-airflow-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-16)">│</text><text class="breeze-start-airflow-r7" x="768.6" y="410.4" textLength="48.8" clip-path="url(#breeze-start-airflow-line-16)">ydb)</text><text class="breeze-start-airflow-r5" x="1451.8" y="410.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-16)">│</text><text class="breeze-start-airflow-r1" x="1464" y="410.4" textLength="12.2" clip-path="url(#b [...]
+</text><text class="breeze-start-airflow-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-14)">│</text><text class="breeze-start-airflow-r7" x="768.6" y="361.6" textLength="671" clip-path="url(#breeze-start-airflow-line-14)">localstack&#160;|&#160;mongo&#160;|&#160;mssql&#160;|&#160;openlineage&#160;|&#160;opensearch&#160;|</text><text class="breeze-start-airflow-r5" x="1451.8" y="361.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-14)">│</te [...]
+</text><text class="breeze-start-airflow-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-start-airflow-line-15)">│</text><text class="breeze-start-airflow-r7" x="768.6" y="386" textLength="597.8" clip-path="url(#breeze-start-airflow-line-15)">otel&#160;|&#160;pinot&#160;|&#160;qdrant&#160;|&#160;redis&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;</text><text class="breeze-start-airflow-r5" x="1451.8" y="386" textLength="12.2" clip-path="url(#breeze-start-airflow-line-15)"> [...]
+</text><text class="breeze-start-airflow-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-16)">│</text><text class="breeze-start-airflow-r7" x="768.6" y="410.4" textLength="292.8" clip-path="url(#breeze-start-airflow-line-16)">tinkerpop&#160;|&#160;trino&#160;|&#160;ydb)</text><text class="breeze-start-airflow-r5" x="1451.8" y="410.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-16)">│</text><text class="breeze-start-airflow-r1" x="1464" y="4 [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-start-airflow-line-17)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="434.8" textLength="317.2" clip-path="url(#breeze-start-airflow-line-17)">--standalone-dag-processor</text><text class="breeze-start-airflow-r1" x="341.6" y="434.8" textLength="12.2" clip-path="url(#breeze-start-airflow-line-17)">/</text><text class="breeze-start-airflow-r4" x="353.8" y="434.8" textLength="3 [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-start-airflow-line-18)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="459.2" textLength="12.2" clip-path="url(#breeze-start-airflow-line-18)">r</text><text class="breeze-start-airflow-r1" x="768.6" y="459.2" textLength="317.2" clip-path="url(#breeze-start-airflow-line-18)">(required&#160;for&#160;Airflow&#160;3).&#160;</text><text class="breeze-start-airflow-r5" x="1085.8" y= [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-19)">│</text><text class="breeze-start-airflow-r5" x="768.6" y="483.6" textLength="305" clip-path="url(#breeze-start-airflow-line-19)">standalone-dag-processor]</text><text class="breeze-start-airflow-r5" x="1451.8" y="483.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-19)">│</text><text class="breeze-start-airflow-r1" x="1464" y="483.6" textLength="12. [...]
@@ -509,16 +509,16 @@
 </text><text class="breeze-start-airflow-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-26)">│</text><text class="breeze-start-airflow-r1" x="768.6" y="654.4" textLength="671" clip-path="url(#breeze-start-airflow-line-26)">Airflow.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-start-airflow-line-27)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="678.8" textLength="671" clip-path="url(#breeze-start-airflow-line-27)">--load-default-connections&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-start-airf [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-start-airflow-line-28)">│</text><text class="breeze-start-airflow-r1" x="768.6" y="703.2" textLength="671" clip-path="url(#breeze-start-airflow-line-28)">starting&#160;Airflow.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</text><text class="breeze-start-airflow-r5" x="0" y="727.6" textLength="1464" clip-path="url(#breeze-start-airflow-line-29)">└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘</text><text class="breeze-start-airflow-r1" x="1464" y="727.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-29)">
-</text><text class="breeze-start-airflow-r5" x="0" y="752" textLength="24.4" clip-path="url(#breeze-start-airflow-line-30)">┌─</text><text class="breeze-start-airflow-r5" x="24.4" y="752" textLength="463.6" clip-path="url(#breeze-start-airflow-line-30)">&#160;Docker&#160;Compose&#160;selection&#160;and&#160;cleanup&#160;</text><text class="breeze-start-airflow-r5" x="488" y="752" textLength="951.6" clip-path="url(#breeze-start-airflow-line-30)">─────────────────────────────────────────── [...]
+</text><text class="breeze-start-airflow-r5" x="0" y="727.6" textLength="1464" clip-path="url(#breeze-start-airflow-line-29)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-start-airflow-r1" x="1464" y="727.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-29)">
+</text><text class="breeze-start-airflow-r5" x="0" y="752" textLength="24.4" clip-path="url(#breeze-start-airflow-line-30)">╭─</text><text class="breeze-start-airflow-r5" x="24.4" y="752" textLength="463.6" clip-path="url(#breeze-start-airflow-line-30)">&#160;Docker&#160;Compose&#160;selection&#160;and&#160;cleanup&#160;</text><text class="breeze-start-airflow-r5" x="488" y="752" textLength="951.6" clip-path="url(#breeze-start-airflow-line-30)">─────────────────────────────────────────── [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-31)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="776.4" textLength="317.2" clip-path="url(#breeze-start-airflow-line-31)">--project-name&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-start-airflow-r1" x="366" y="776.4" textLength="1073.6" clip-path="url(#breeze-start-airflow-line-31)">Name&#160;of&#160;t [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-start-airflow-line-32)">│</text><text class="breeze-start-airflow-r1" x="366" y="800.8" textLength="597.8" clip-path="url(#breeze-start-airflow-line-32)">breeze&#160;project&#160;name&#160;and&#160;you&#160;can&#160;use&#160;`breeze&#160;down&#160;</text><text class="breeze-start-airflow-r4" x="963.8" y="800.8" textLength="170.8" clip-path="url(#breeze-start-airflow-line-32)">--project-n [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-start-airflow-line-33)">│</text><text class="breeze-start-airflow-r1" x="366" y="825.2" textLength="390.4" clip-path="url(#breeze-start-airflow-line-33)">all&#160;containers&#160;belonging&#160;to&#160;it.&#160;</text><text class="breeze-start-airflow-r5" x="756.4" y="825.2" textLength="207.4" clip-path="url(#breeze-start-airflow-line-33)">[default:&#160;breeze]</text><text class="breeze [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-34)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="849.6" textLength="109.8" clip-path="url(#breeze-start-airflow-line-34)">--restart</text><text class="breeze-start-airflow-r1" x="134.2" y="849.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-34)">,</text><text class="breeze-start-airflow-r4" x="146.4" y="849.6" textLength="195.2" clip-path=" [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-start-airflow-line-35)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="874" textLength="317.2" clip-path="url(#breeze-start-airflow-line-35)">--docker-host&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-start-airflow-r1" x="366" y="874" textLength="915" clip-path="url(#breeze-start-airflow-line-35)">Optional&#160;-&#160;do [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-36)">│</text><text class="breeze-start-airflow-r1" x="366" y="898.4" textLength="488" clip-path="url(#breeze-start-airflow-line-36)">option&#160;is&#160;ignored&#160;when&#160;building&#160;images.&#160;</text><text class="breeze-start-airflow-r7" x="854" y="898.4" textLength="73.2" clip-path="url(#breeze-start-airflow-line-36)">(TEXT)</text><text class="breeze-start-a [...]
-</text><text class="breeze-start-airflow-r5" x="0" y="922.8" textLength="1464" clip-path="url(#breeze-start-airflow-line-37)">└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘</text><text class="breeze-start-airflow-r1" x="1464" y="922.8" textLength="12.2" clip-path="url(#breeze-start-airflow-line-37)">
-</text><text class="breeze-start-airflow-r5" x="0" y="947.2" textLength="24.4" clip-path="url(#breeze-start-airflow-line-38)">┌─</text><text class="breeze-start-airflow-r5" x="24.4" y="947.2" textLength="122" clip-path="url(#breeze-start-airflow-line-38)">&#160;Database&#160;</text><text class="breeze-start-airflow-r5" x="146.4" y="947.2" textLength="1293.2" clip-path="url(#breeze-start-airflow-line-38)">──────────────────────────────────────────────────────────────────────────────────── [...]
+</text><text class="breeze-start-airflow-r5" x="0" y="922.8" textLength="1464" clip-path="url(#breeze-start-airflow-line-37)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-start-airflow-r1" x="1464" y="922.8" textLength="12.2" clip-path="url(#breeze-start-airflow-line-37)">
+</text><text class="breeze-start-airflow-r5" x="0" y="947.2" textLength="24.4" clip-path="url(#breeze-start-airflow-line-38)">╭─</text><text class="breeze-start-airflow-r5" x="24.4" y="947.2" textLength="122" clip-path="url(#breeze-start-airflow-line-38)">&#160;Database&#160;</text><text class="breeze-start-airflow-r5" x="146.4" y="947.2" textLength="1293.2" clip-path="url(#breeze-start-airflow-line-38)">──────────────────────────────────────────────────────────────────────────────────── [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-39)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="971.6" textLength="292.8" clip-path="url(#breeze-start-airflow-line-39)">--backend&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-start-airflow-r6" x="341.6" y="971.6" textLength="24.4" clip-path="url(#breeze-start-airflow-line-39)">-b</te [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="996" textLength="12.2" clip-path="url(#breeze-start-airflow-line-40)">│</text><text class="breeze-start-airflow-r1" x="390.4" y="996" textLength="1049.2" clip-path="url(#breeze-start-airflow-line-40)">with&#160;an&#160;invalid&#160;database&#160;configuration&#160;—&#160;no&#160;database&#160;will&#160;be&#160;available,&#160;and&#160;any&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-start-airflow-r5" x="1451.8"  [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="1020.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-41)">│</text><text class="breeze-start-airflow-r1" x="390.4" y="1020.4" textLength="1049.2" clip-path="url(#breeze-start-airflow-line-41)">attempt&#160;to&#160;run&#160;Airflow&#160;will&#160;fail.&#160;Use&#160;&#x27;none&#x27;&#160;only&#160;for&#160;specific&#160;non-DB&#160;test&#160;cases.&#160;If&#160;&#160;</text><text class="breeze-start-airflow-r5" x="1451.8" [...]
@@ -532,31 +532,31 @@
 </text><text class="breeze-start-airflow-r5" x="0" y="1215.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-49)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="1215.6" textLength="292.8" clip-path="url(#breeze-start-airflow-line-49)">--postgres-version&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-start-airflow-r6" x="341.6" y="1215.6" textLength="24.4" clip-path="url(#breeze-start-airflow-line-49)">-P</text><text class="breeze-start-airflow-r1" x [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="1240" textLength="12.2" clip-path="url(#breeze-start-airflow-line-50)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="1240" textLength="292.8" clip-path="url(#breeze-start-airflow-line-50)">--mysql-version&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-start-airflow-r6" x="341.6" y="1240" textLength="24.4" clip-path="url(#breeze-start-airflow-line-50)">-M</text><text class="breeze-start-airf [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="1264.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-51)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="1264.4" textLength="122" clip-path="url(#breeze-start-airflow-line-51)">--db-reset</text><text class="breeze-start-airflow-r1" x="146.4" y="1264.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-51)">/</text><text class="breeze-start-airflow-r4" x="158.6" y="1264.4" textLength="158.6" clip-pat [...]
-</text><text class="breeze-start-airflow-r5" x="0" y="1288.8" textLength="1464" clip-path="url(#breeze-start-airflow-line-52)">└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘</text><text class="breeze-start-airflow-r1" x="1464" y="1288.8" textLength="12.2" clip-path="url(#breeze-start-airflow-line-52)">
-</text><text class="breeze-start-airflow-r5" x="0" y="1313.2" textLength="24.4" clip-path="url(#breeze-start-airflow-line-53)">┌─</text><text class="breeze-start-airflow-r5" x="24.4" y="1313.2" textLength="231.8" clip-path="url(#breeze-start-airflow-line-53)">&#160;Choosing&#160;executor&#160;</text><text class="breeze-start-airflow-r5" x="256.2" y="1313.2" textLength="1183.4" clip-path="url(#breeze-start-airflow-line-53)">───────────────────────────────────────────────────────────────── [...]
+</text><text class="breeze-start-airflow-r5" x="0" y="1288.8" textLength="1464" clip-path="url(#breeze-start-airflow-line-52)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-start-airflow-r1" x="1464" y="1288.8" textLength="12.2" clip-path="url(#breeze-start-airflow-line-52)">
+</text><text class="breeze-start-airflow-r5" x="0" y="1313.2" textLength="24.4" clip-path="url(#breeze-start-airflow-line-53)">╭─</text><text class="breeze-start-airflow-r5" x="24.4" y="1313.2" textLength="231.8" clip-path="url(#breeze-start-airflow-line-53)">&#160;Choosing&#160;executor&#160;</text><text class="breeze-start-airflow-r5" x="256.2" y="1313.2" textLength="1183.4" clip-path="url(#breeze-start-airflow-line-53)">───────────────────────────────────────────────────────────────── [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="1337.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-54)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="1337.6" textLength="183" clip-path="url(#breeze-start-airflow-line-54)">--executor&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-start-airflow-r1" x="231.8" y="1337.6" textLength="1207.8" clip-path="url(#breeze-start-airflow-line-54)">Specify&#160;the&#160;executor&#160;to&#160;use&#160;with&#160 [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="1362" textLength="12.2" clip-path="url(#breeze-start-airflow-line-55)">│</text><text class="breeze-start-airflow-r1" x="231.8" y="1362" textLength="439.2" clip-path="url(#breeze-start-airflow-line-55)">depending&#160;on&#160;the&#160;integration&#160;used).&#160;</text><text class="breeze-start-airflow-r7" x="671" y="1362" textLength="524.6" clip-path="url(#breeze-start-airflow-line-55)">(localexecutor|celeryexecutor|edgeexecutor)</te [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="1386.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-56)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="1386.4" textLength="183" clip-path="url(#breeze-start-airflow-line-56)">--celery-broker</text><text class="breeze-start-airflow-r1" x="231.8" y="1386.4" textLength="414.8" clip-path="url(#breeze-start-airflow-line-56)">Specify&#160;the&#160;celery&#160;message&#160;broker&#160;</text><text class="breeze-st [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="1410.8" textLength="12.2" clip-path="url(#breeze-start-airflow-line-57)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="1410.8" textLength="183" clip-path="url(#breeze-start-airflow-line-57)">--celery-flower</text><text class="breeze-start-airflow-r1" x="231.8" y="1410.8" textLength="231.8" clip-path="url(#breeze-start-airflow-line-57)">Start&#160;celery&#160;flower</text><text class="breeze-start-airflow-r5" x="1451.8" y=" [...]
-</text><text class="breeze-start-airflow-r5" x="0" y="1435.2" textLength="1464" clip-path="url(#breeze-start-airflow-line-58)">└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘</text><text class="breeze-start-airflow-r1" x="1464" y="1435.2" textLength="12.2" clip-path="url(#breeze-start-airflow-line-58)">
-</text><text class="breeze-start-airflow-r5" x="0" y="1459.6" textLength="24.4" clip-path="url(#breeze-start-airflow-line-59)">┌─</text><text class="breeze-start-airflow-r5" x="24.4" y="1459.6" textLength="329.4" clip-path="url(#breeze-start-airflow-line-59)">&#160;Asset&#160;compilation&#160;options&#160;</text><text class="breeze-start-airflow-r5" x="353.8" y="1459.6" textLength="1085.8" clip-path="url(#breeze-start-airflow-line-59)">──────────────────────────────────────────────────── [...]
+</text><text class="breeze-start-airflow-r5" x="0" y="1435.2" textLength="1464" clip-path="url(#breeze-start-airflow-line-58)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-start-airflow-r1" x="1464" y="1435.2" textLength="12.2" clip-path="url(#breeze-start-airflow-line-58)">
+</text><text class="breeze-start-airflow-r5" x="0" y="1459.6" textLength="24.4" clip-path="url(#breeze-start-airflow-line-59)">╭─</text><text class="breeze-start-airflow-r5" x="24.4" y="1459.6" textLength="329.4" clip-path="url(#breeze-start-airflow-line-59)">&#160;Asset&#160;compilation&#160;options&#160;</text><text class="breeze-start-airflow-r5" x="353.8" y="1459.6" textLength="1085.8" clip-path="url(#breeze-start-airflow-line-59)">──────────────────────────────────────────────────── [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="1484" textLength="12.2" clip-path="url(#breeze-start-airflow-line-60)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="1484" textLength="305" clip-path="url(#breeze-start-airflow-line-60)">--skip-assets-compilation</text><text class="breeze-start-airflow-r1" x="353.8" y="1484" textLength="1085.8" clip-path="url(#breeze-start-airflow-line-60)">Skips&#160;compilation&#160;of&#160;assets&#160;when&#160;starting&#160;airflow&#16 [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="1508.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-61)">│</text><text class="breeze-start-airflow-r1" x="353.8" y="1508.4" textLength="305" clip-path="url(#breeze-start-airflow-line-61)">(mutually&#160;exclusive&#160;with&#160;</text><text class="breeze-start-airflow-r4" x="658.8" y="1508.4" textLength="122" clip-path="url(#breeze-start-airflow-line-61)">--dev-mode</text><text class="breeze-start-airflow-r1" x="780.8" [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="1532.8" textLength="12.2" clip-path="url(#breeze-start-airflow-line-62)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="1532.8" textLength="305" clip-path="url(#breeze-start-airflow-line-62)">--dev-mode&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-start-airflow-r1" x="353.8" y="1532.8" textLength="1085.8" clip-path="url(#breeze-start-airflow-line-62)">St [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="1557.2" textLength="12.2" clip-path="url(#breeze-start-airflow-line-63)">│</text><text class="breeze-start-airflow-r1" x="353.8" y="1557.2" textLength="305" clip-path="url(#breeze-start-airflow-line-63)">(mutually&#160;exclusive&#160;with&#160;</text><text class="breeze-start-airflow-r4" x="658.8" y="1557.2" textLength="305" clip-path="url(#breeze-start-airflow-line-63)">--skip-assets-compilation</text><text class="breeze-start-airflo [...]
-</text><text class="breeze-start-airflow-r5" x="0" y="1581.6" textLength="1464" clip-path="url(#breeze-start-airflow-line-64)">└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘</text><text class="breeze-start-airflow-r1" x="1464" y="1581.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-64)">
-</text><text class="breeze-start-airflow-r5" x="0" y="1606" textLength="24.4" clip-path="url(#breeze-start-airflow-line-65)">┌─</text><text class="breeze-start-airflow-r5" x="24.4" y="1606" textLength="488" clip-path="url(#breeze-start-airflow-line-65)">&#160;Build&#160;CI&#160;image&#160;(before&#160;entering&#160;shell)&#160;</text><text class="breeze-start-airflow-r5" x="512.4" y="1606" textLength="927.2" clip-path="url(#breeze-start-airflow-line-65)">───────────────────────────────── [...]
+</text><text class="breeze-start-airflow-r5" x="0" y="1581.6" textLength="1464" clip-path="url(#breeze-start-airflow-line-64)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-start-airflow-r1" x="1464" y="1581.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-64)">
+</text><text class="breeze-start-airflow-r5" x="0" y="1606" textLength="24.4" clip-path="url(#breeze-start-airflow-line-65)">╭─</text><text class="breeze-start-airflow-r5" x="24.4" y="1606" textLength="488" clip-path="url(#breeze-start-airflow-line-65)">&#160;Build&#160;CI&#160;image&#160;(before&#160;entering&#160;shell)&#160;</text><text class="breeze-start-airflow-r5" x="512.4" y="1606" textLength="927.2" clip-path="url(#breeze-start-airflow-line-65)">───────────────────────────────── [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="1630.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-66)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="1630.4" textLength="244" clip-path="url(#breeze-start-airflow-line-66)">--force-build&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-start-airflow-r1" x="341.6" y="1630.4" textLength="707.6" clip-path="url(#breeze-start-airflow-line-66)">Force&#160;image&#160;build&#160;no&#160;matter& [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="1654.8" textLength="12.2" clip-path="url(#breeze-start-airflow-line-67)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="1654.8" textLength="244" clip-path="url(#breeze-start-airflow-line-67)">--github-repository&#160;</text><text class="breeze-start-airflow-r6" x="292.8" y="1654.8" textLength="24.4" clip-path="url(#breeze-start-airflow-line-67)">-g</text><text class="breeze-start-airflow-r1" x="341.6" y="1654.8" textLength= [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="1679.2" textLength="12.2" clip-path="url(#breeze-start-airflow-line-68)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="1679.2" textLength="244" clip-path="url(#breeze-start-airflow-line-68)">--builder&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-start-airflow-r1" x="341.6" y="1679.2" textLength="768.6" clip-path="url(#breeze-start-airflow-line-68)">Buildx&#160;builder&#160;use [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="1703.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-69)">│</text><text class="breeze-start-airflow-r7" x="341.6" y="1703.6" textLength="73.2" clip-path="url(#breeze-start-airflow-line-69)">(TEXT)</text><text class="breeze-start-airflow-r5" x="1451.8" y="1703.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-69)">│</text><text class="breeze-start-airflow-r1" x="1464" y="1703.6" textLength="12.2" clip-path=" [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="1728" textLength="12.2" clip-path="url(#breeze-start-airflow-line-70)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="1728" textLength="97.6" clip-path="url(#breeze-start-airflow-line-70)">--use-uv</text><text class="breeze-start-airflow-r1" x="122" y="1728" textLength="12.2" clip-path="url(#breeze-start-airflow-line-70)">/</text><text class="breeze-start-airflow-r4" x="134.2" y="1728" textLength="134.2" clip-path="url(#bre [...]
-</text><text class="breeze-start-airflow-r5" x="0" y="1752.4" textLength="1464" clip-path="url(#breeze-start-airflow-line-71)">└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘</text><text class="breeze-start-airflow-r1" x="1464" y="1752.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-71)">
-</text><text class="breeze-start-airflow-r5" x="0" y="1776.8" textLength="24.4" clip-path="url(#breeze-start-airflow-line-72)">┌─</text><text class="breeze-start-airflow-r5" x="24.4" y="1776.8" textLength="414.8" clip-path="url(#breeze-start-airflow-line-72)">&#160;Mounting&#160;the&#160;sources&#160;and&#160;volumes&#160;</text><text class="breeze-start-airflow-r5" x="439.2" y="1776.8" textLength="1000.4" clip-path="url(#breeze-start-airflow-line-72)">─────────────────────────────────── [...]
+</text><text class="breeze-start-airflow-r5" x="0" y="1752.4" textLength="1464" clip-path="url(#breeze-start-airflow-line-71)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-start-airflow-r1" x="1464" y="1752.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-71)">
+</text><text class="breeze-start-airflow-r5" x="0" y="1776.8" textLength="24.4" clip-path="url(#breeze-start-airflow-line-72)">╭─</text><text class="breeze-start-airflow-r5" x="24.4" y="1776.8" textLength="414.8" clip-path="url(#breeze-start-airflow-line-72)">&#160;Mounting&#160;the&#160;sources&#160;and&#160;volumes&#160;</text><text class="breeze-start-airflow-r5" x="439.2" y="1776.8" textLength="1000.4" clip-path="url(#breeze-start-airflow-line-72)">─────────────────────────────────── [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="1801.2" textLength="12.2" clip-path="url(#breeze-start-airflow-line-73)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="1801.2" textLength="183" clip-path="url(#breeze-start-airflow-line-73)">--mount-sources</text><text class="breeze-start-airflow-r1" x="231.8" y="1801.2" textLength="1207.8" clip-path="url(#breeze-start-airflow-line-73)">Choose&#160;scope&#160;of&#160;local&#160;sources&#160;that&#160;should&#160;be&#160;mo [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="1825.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-74)">│</text><text class="breeze-start-airflow-r5" x="231.8" y="1825.6" textLength="231.8" clip-path="url(#breeze-start-airflow-line-74)">[default:&#160;selected]</text><text class="breeze-start-airflow-r7" x="475.8" y="1825.6" textLength="756.4" clip-path="url(#breeze-start-airflow-line-74)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove&#160;|&#160;te [...]
-</text><text class="breeze-start-airflow-r5" x="0" y="1850" textLength="1464" clip-path="url(#breeze-start-airflow-line-75)">└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘</text><text class="breeze-start-airflow-r1" x="1464" y="1850" textLength="12.2" clip-path="url(#breeze-start-airflow-line-75)">
-</text><text class="breeze-start-airflow-r5" x="0" y="1874.4" textLength="24.4" clip-path="url(#breeze-start-airflow-line-76)">┌─</text><text class="breeze-start-airflow-r5" x="24.4" y="1874.4" textLength="512.4" clip-path="url(#breeze-start-airflow-line-76)">&#160;Installing&#160;packages&#160;after&#160;entering&#160;shell&#160;</text><text class="breeze-start-airflow-r5" x="536.8" y="1874.4" textLength="902.8" clip-path="url(#breeze-start-airflow-line-76)">──────────────────────────── [...]
+</text><text class="breeze-start-airflow-r5" x="0" y="1850" textLength="1464" clip-path="url(#breeze-start-airflow-line-75)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-start-airflow-r1" x="1464" y="1850" textLength="12.2" clip-path="url(#breeze-start-airflow-line-75)">
+</text><text class="breeze-start-airflow-r5" x="0" y="1874.4" textLength="24.4" clip-path="url(#breeze-start-airflow-line-76)">╭─</text><text class="breeze-start-airflow-r5" x="24.4" y="1874.4" textLength="512.4" clip-path="url(#breeze-start-airflow-line-76)">&#160;Installing&#160;packages&#160;after&#160;entering&#160;shell&#160;</text><text class="breeze-start-airflow-r5" x="536.8" y="1874.4" textLength="902.8" clip-path="url(#breeze-start-airflow-line-76)">──────────────────────────── [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="1898.8" textLength="12.2" clip-path="url(#breeze-start-airflow-line-77)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="1898.8" textLength="695.4" clip-path="url(#breeze-start-airflow-line-77)">--airflow-constraints-location&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-start-airflow- [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="1923.2" textLength="12.2" clip-path="url(#breeze-start-airflow-line-78)">│</text><text class="breeze-start-airflow-r1" x="744.2" y="1923.2" textLength="256.2" clip-path="url(#breeze-start-airflow-line-78)">local&#160;context&#160;file).&#160;</text><text class="breeze-start-airflow-r7" x="1000.4" y="1923.2" textLength="73.2" clip-path="url(#breeze-start-airflow-line-78)">(TEXT)</text><text class="breeze-start-airflow-r5" x="1451.8" y= [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="1947.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-79)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="1947.6" textLength="695.4" clip-path="url(#breeze-start-airflow-line-79)">--airflow-constraints-mode&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="b [...]
@@ -604,24 +604,24 @@
 </text><text class="breeze-start-airflow-r5" x="0" y="2972.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-121)">│</text><text class="breeze-start-airflow-r1" x="744.2" y="2972.4" textLength="146.4" clip-path="url(#breeze-start-airflow-line-121)">pre-release&#160;</text><text class="breeze-start-airflow-r4" x="890.6" y="2972.4" textLength="256.2" clip-path="url(#breeze-start-airflow-line-121)">--use-airflow-version</text><text class="breeze-start-airflow-r1" x="1146.8" y=" [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="2996.8" textLength="12.2" clip-path="url(#breeze-start-airflow-line-122)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="2996.8" textLength="695.4" clip-path="url(#breeze-start-airflow-line-122)">--use-distributions-from-dist&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-start-a [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="3021.2" textLength="12.2" clip-path="url(#breeze-start-airflow-line-123)">│</text><text class="breeze-start-airflow-r1" x="744.2" y="3021.2" textLength="695.4" clip-path="url(#breeze-start-airflow-line-123)">determines&#160;type)&#160;from&#160;&#x27;dist&#x27;&#160;folder&#160;when&#160;entering&#160;breeze.</text><text class="breeze-start-airflow-r5" x="1451.8" y="3021.2" textLength="12.2" clip-path="url(#breeze-start-airflow-line-1 [...]
-</text><text class="breeze-start-airflow-r5" x="0" y="3045.6" textLength="1464" clip-path="url(#breeze-start-airflow-line-124)">└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘</text><text class="breeze-start-airflow-r1" x="1464" y="3045.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-124)">
-</text><text class="breeze-start-airflow-r5" x="0" y="3070" textLength="24.4" clip-path="url(#breeze-start-airflow-line-125)">┌─</text><text class="breeze-start-airflow-r5" x="24.4" y="3070" textLength="183" clip-path="url(#breeze-start-airflow-line-125)">&#160;Other&#160;options&#160;</text><text class="breeze-start-airflow-r5" x="207.4" y="3070" textLength="1232.2" clip-path="url(#breeze-start-airflow-line-125)">────────────────────────────────────────────────────────────────────────── [...]
+</text><text class="breeze-start-airflow-r5" x="0" y="3045.6" textLength="1464" clip-path="url(#breeze-start-airflow-line-124)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-start-airflow-r1" x="1464" y="3045.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-124)">
+</text><text class="breeze-start-airflow-r5" x="0" y="3070" textLength="24.4" clip-path="url(#breeze-start-airflow-line-125)">╭─</text><text class="breeze-start-airflow-r5" x="24.4" y="3070" textLength="183" clip-path="url(#breeze-start-airflow-line-125)">&#160;Other&#160;options&#160;</text><text class="breeze-start-airflow-r5" x="207.4" y="3070" textLength="1232.2" clip-path="url(#breeze-start-airflow-line-125)">────────────────────────────────────────────────────────────────────────── [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="3094.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-126)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="3094.4" textLength="256.2" clip-path="url(#breeze-start-airflow-line-126)">--forward-credentials</text><text class="breeze-start-airflow-r6" x="305" y="3094.4" textLength="24.4" clip-path="url(#breeze-start-airflow-line-126)">-f</text><text class="breeze-start-airflow-r1" x="353.8" y="3094.4" textLength=" [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="3118.8" textLength="12.2" clip-path="url(#breeze-start-airflow-line-127)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="3118.8" textLength="256.2" clip-path="url(#breeze-start-airflow-line-127)">--create-all-roles&#160;&#160;&#160;</text><text class="breeze-start-airflow-r1" x="353.8" y="3118.8" textLength="1085.8" clip-path="url(#breeze-start-airflow-line-127)">Creates&#160;all&#160;user&#160;roles&#160;for&#160;testing&# [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="3143.2" textLength="12.2" clip-path="url(#breeze-start-airflow-line-128)">│</text><text class="breeze-start-airflow-r1" x="353.8" y="3143.2" textLength="1085.8" clip-path="url(#breeze-start-airflow-line-128)">SimpleAuthManager&#160;always&#160;has&#160;all&#160;roles&#160;available.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="breeze-start-airflow-r5" x="0" y="3167.6" textLength="1464" clip-path="url(#breeze-start-airflow-line-129)">└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘</text><text class="breeze-start-airflow-r1" x="1464" y="3167.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-129)">
-</text><text class="breeze-start-airflow-r5" x="0" y="3192" textLength="24.4" clip-path="url(#breeze-start-airflow-line-130)">┌─</text><text class="breeze-start-airflow-r5" x="24.4" y="3192" textLength="231.8" clip-path="url(#breeze-start-airflow-line-130)">&#160;Debugging&#160;options&#160;</text><text class="breeze-start-airflow-r5" x="256.2" y="3192" textLength="1183.4" clip-path="url(#breeze-start-airflow-line-130)">──────────────────────────────────────────────────────────────────── [...]
+</text><text class="breeze-start-airflow-r5" x="0" y="3167.6" textLength="1464" clip-path="url(#breeze-start-airflow-line-129)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-start-airflow-r1" x="1464" y="3167.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-129)">
+</text><text class="breeze-start-airflow-r5" x="0" y="3192" textLength="24.4" clip-path="url(#breeze-start-airflow-line-130)">╭─</text><text class="breeze-start-airflow-r5" x="24.4" y="3192" textLength="231.8" clip-path="url(#breeze-start-airflow-line-130)">&#160;Debugging&#160;options&#160;</text><text class="breeze-start-airflow-r5" x="256.2" y="3192" textLength="1183.4" clip-path="url(#breeze-start-airflow-line-130)">──────────────────────────────────────────────────────────────────── [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="3216.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-131)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="3216.4" textLength="122" clip-path="url(#breeze-start-airflow-line-131)">--debug&#160;&#160;&#160;</text><text class="breeze-start-airflow-r1" x="170.8" y="3216.4" textLength="1268.8" clip-path="url(#breeze-start-airflow-line-131)">Enable&#160;debugging&#160;for&#160;specific&#160;Airflow&#160;components. [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="3240.8" textLength="12.2" clip-path="url(#breeze-start-airflow-line-132)">│</text><text class="breeze-start-airflow-r1" x="170.8" y="3240.8" textLength="671" clip-path="url(#breeze-start-airflow-line-132)">api-server,&#160;dag-processor,&#160;edge-worker,&#160;celery-worker.&#160;</text><text class="breeze-start-airflow-r7" x="841.8" y="3240.8" textLength="463.6" clip-path="url(#breeze-start-airflow-line-132)">(scheduler&#160;|&#160;t [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="3265.2" textLength="12.2" clip-path="url(#breeze-start-airflow-line-133)">│</text><text class="breeze-start-airflow-r7" x="170.8" y="3265.2" textLength="536.8" clip-path="url(#breeze-start-airflow-line-133)">dag-processor&#160;|&#160;edge-worker&#160;|&#160;celery-worker)</text><text class="breeze-start-airflow-r5" x="1451.8" y="3265.2" textLength="12.2" clip-path="url(#breeze-start-airflow-line-133)">│</text><text class="breeze-start [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="3289.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-134)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="3289.6" textLength="122" clip-path="url(#breeze-start-airflow-line-134)">--debugger</text><text class="breeze-start-airflow-r1" x="170.8" y="3289.6" textLength="610" clip-path="url(#breeze-start-airflow-line-134)">Debugger&#160;to&#160;use&#160;for&#160;debugging&#160;Airflow&#160;components.&#160;</text> [...]
-</text><text class="breeze-start-airflow-r5" x="0" y="3314" textLength="1464" clip-path="url(#breeze-start-airflow-line-135)">└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘</text><text class="breeze-start-airflow-r1" x="1464" y="3314" textLength="12.2" clip-path="url(#breeze-start-airflow-line-135)">
-</text><text class="breeze-start-airflow-r5" x="0" y="3338.4" textLength="24.4" clip-path="url(#breeze-start-airflow-line-136)">┌─</text><text class="breeze-start-airflow-r5" x="24.4" y="3338.4" textLength="195.2" clip-path="url(#breeze-start-airflow-line-136)">&#160;Common&#160;options&#160;</text><text class="breeze-start-airflow-r5" x="219.6" y="3338.4" textLength="1220" clip-path="url(#breeze-start-airflow-line-136)">─────────────────────────────────────────────────────────────────── [...]
+</text><text class="breeze-start-airflow-r5" x="0" y="3314" textLength="1464" clip-path="url(#breeze-start-airflow-line-135)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-start-airflow-r1" x="1464" y="3314" textLength="12.2" clip-path="url(#breeze-start-airflow-line-135)">
+</text><text class="breeze-start-airflow-r5" x="0" y="3338.4" textLength="24.4" clip-path="url(#breeze-start-airflow-line-136)">╭─</text><text class="breeze-start-airflow-r5" x="24.4" y="3338.4" textLength="195.2" clip-path="url(#breeze-start-airflow-line-136)">&#160;Common&#160;options&#160;</text><text class="breeze-start-airflow-r5" x="219.6" y="3338.4" textLength="1220" clip-path="url(#breeze-start-airflow-line-136)">─────────────────────────────────────────────────────────────────── [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="3362.8" textLength="12.2" clip-path="url(#breeze-start-airflow-line-137)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="3362.8" textLength="109.8" clip-path="url(#breeze-start-airflow-line-137)">--answer&#160;</text><text class="breeze-start-airflow-r6" x="158.6" y="3362.8" textLength="24.4" clip-path="url(#breeze-start-airflow-line-137)">-a</text><text class="breeze-start-airflow-r1" x="207.4" y="3362.8" textLength="329.4 [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="3387.2" textLength="12.2" clip-path="url(#breeze-start-airflow-line-138)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="3387.2" textLength="109.8" clip-path="url(#breeze-start-airflow-line-138)">--dry-run</text><text class="breeze-start-airflow-r6" x="158.6" y="3387.2" textLength="24.4" clip-path="url(#breeze-start-airflow-line-138)">-D</text><text class="breeze-start-airflow-r1" x="207.4" y="3387.2" textLength="719.8" cli [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="3411.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-139)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="3411.6" textLength="109.8" clip-path="url(#breeze-start-airflow-line-139)">--verbose</text><text class="breeze-start-airflow-r6" x="158.6" y="3411.6" textLength="24.4" clip-path="url(#breeze-start-airflow-line-139)">-v</text><text class="breeze-start-airflow-r1" x="207.4" y="3411.6" textLength="585.6" cli [...]
 </text><text class="breeze-start-airflow-r5" x="0" y="3436" textLength="12.2" clip-path="url(#breeze-start-airflow-line-140)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="3436" textLength="109.8" clip-path="url(#breeze-start-airflow-line-140)">--help&#160;&#160;&#160;</text><text class="breeze-start-airflow-r6" x="158.6" y="3436" textLength="24.4" clip-path="url(#breeze-start-airflow-line-140)">-h</text><text class="breeze-start-airflow-r1" x="207.4" y="3436" textLength="329 [...]
-</text><text class="breeze-start-airflow-r5" x="0" y="3460.4" textLength="1464" clip-path="url(#breeze-start-airflow-line-141)">└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘</text><text class="breeze-start-airflow-r1" x="1464" y="3460.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-141)">
+</text><text class="breeze-start-airflow-r5" x="0" y="3460.4" textLength="1464" clip-path="url(#breeze-start-airflow-line-141)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-start-airflow-r1" x="1464" y="3460.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-141)">
 </text>
     </g>
     </g>
diff --git a/dev/breeze/doc/images/output_start-airflow.txt b/dev/breeze/doc/images/output_start-airflow.txt
index d2fb8b32bbc..f17c0c91b3c 100644
--- a/dev/breeze/doc/images/output_start-airflow.txt
+++ b/dev/breeze/doc/images/output_start-airflow.txt
@@ -1 +1 @@
-d0896b89f29fb1862a8a4331e2c6d3a7
+a8f600fe603562fecd520fb96e6652c6
diff --git a/dev/breeze/doc/images/output_testing_providers-integration-tests.svg b/dev/breeze/doc/images/output_testing_providers-integration-tests.svg
index ac2c209db2d..3ebbcdcf4cf 100644
--- a/dev/breeze/doc/images/output_testing_providers-integration-tests.svg
+++ b/dev/breeze/doc/images/output_testing_providers-integration-tests.svg
@@ -221,14 +221,14 @@
 </text><text class="breeze-testing-providers-integration-tests-r1" x="1464" y="68.8" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-2)">
 </text><text class="breeze-testing-providers-integration-tests-r1" x="12.2" y="93.2" textLength="439.2" clip-path="url(#breeze-testing-providers-integration-tests-line-3)">Run&#160;the&#160;specified&#160;integration&#160;tests.</text><text class="breeze-testing-providers-integration-tests-r1" x="1464" y="93.2" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-3)">
 </text><text class="breeze-testing-providers-integration-tests-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-4)">
-</text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-testing-providers-integration-tests-line-5)">┌─</text><text class="breeze-testing-providers-integration-tests-r5" x="24.4" y="142" textLength="170.8" clip-path="url(#breeze-testing-providers-integration-tests-line-5)">&#160;Test&#160;options&#160;</text><text class="breeze-testing-providers-integration-tests-r5" x="195.2" y="142" textLength="1244.4" clip-path="url(#br [...]
+</text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-testing-providers-integration-tests-line-5)">╭─</text><text class="breeze-testing-providers-integration-tests-r5" x="24.4" y="142" textLength="170.8" clip-path="url(#breeze-testing-providers-integration-tests-line-5)">&#160;Test&#160;options&#160;</text><text class="breeze-testing-providers-integration-tests-r5" x="195.2" y="142" textLength="1244.4" clip-path="url(#br [...]
 </text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-6)">│</text><text class="breeze-testing-providers-integration-tests-r4" x="24.4" y="166.4" textLength="292.8" clip-path="url(#breeze-testing-providers-integration-tests-line-6)">--test-timeout&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-testing-providers-integration-tests-r1" x="390.4 [...]
 </text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-7)">│</text><text class="breeze-testing-providers-integration-tests-r1" x="390.4" y="190.8" textLength="73.2" clip-path="url(#breeze-testing-providers-integration-tests-line-7)">value&#160;</text><text class="breeze-testing-providers-integration-tests-r5" x="463.6" y="190.8" textLength="158.6" clip-path="url(#breeze-testing-p [...]
 </text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-8)">│</text><text class="breeze-testing-providers-integration-tests-r4" x="24.4" y="215.2" textLength="292.8" clip-path="url(#breeze-testing-providers-integration-tests-line-8)">--enable-coverage&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-testing-providers-integration-tests-r1" x="390.4" y="215.2" tex [...]
 </text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-9)">│</text><text class="breeze-testing-providers-integration-tests-r4" x="24.4" y="239.6" textLength="292.8" clip-path="url(#breeze-testing-providers-integration-tests-line-9)">--collect-only&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-testing-providers-integration-tests-r1" x="390.4 [...]
 </text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-10)">│</text><text class="breeze-testing-providers-integration-tests-r4" x="24.4" y="264" textLength="122" clip-path="url(#breeze-testing-providers-integration-tests-line-10)">--db-reset</text><text class="breeze-testing-providers-integration-tests-r1" x="146.4" y="264" textLength="12.2" clip-path="url(#breeze-testing-providers [...]
-</text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="288.4" textLength="1464" clip-path="url(#breeze-testing-providers-integration-tests-line-11)">└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘</text><text class="breeze-testing-providers-integration-tests-r1" x="1464" y="288.4" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-11)">
-</text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="312.8" textLength="24.4" clip-path="url(#breeze-testing-providers-integration-tests-line-12)">┌─</text><text class="breeze-testing-providers-integration-tests-r5" x="24.4" y="312.8" textLength="219.6" clip-path="url(#breeze-testing-providers-integration-tests-line-12)">&#160;Test&#160;environment&#160;</text><text class="breeze-testing-providers-integration-tests-r5" x="244" y="312.8" textLength="1195.6" clip-pat [...]
+</text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="288.4" textLength="1464" clip-path="url(#breeze-testing-providers-integration-tests-line-11)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-providers-integration-tests-r1" x="1464" y="288.4" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-11)">
+</text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="312.8" textLength="24.4" clip-path="url(#breeze-testing-providers-integration-tests-line-12)">╭─</text><text class="breeze-testing-providers-integration-tests-r5" x="24.4" y="312.8" textLength="219.6" clip-path="url(#breeze-testing-providers-integration-tests-line-12)">&#160;Test&#160;environment&#160;</text><text class="breeze-testing-providers-integration-tests-r5" x="244" y="312.8" textLength="1195.6" clip-pat [...]
 </text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-13)">│</text><text class="breeze-testing-providers-integration-tests-r4" x="24.4" y="337.2" textLength="512.4" clip-path="url(#breeze-testing-providers-integration-tests-line-13)">--backend&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
 </text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-14)">│</text><text class="breeze-testing-providers-integration-tests-r1" x="610" y="361.6" textLength="829.6" clip-path="url(#breeze-testing-providers-integration-tests-line-14)">Breeze&#160;will&#160;start&#160;with&#160;an&#160;invalid&#160;database&#160;configuration&#160;—&#160;no&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
 </text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-15)">│</text><text class="breeze-testing-providers-integration-tests-r1" x="610" y="386" textLength="829.6" clip-path="url(#breeze-testing-providers-integration-tests-line-15)">database&#160;will&#160;be&#160;available,&#160;and&#160;any&#160;attempt&#160;to&#160;run&#160;Airflow&#160;will&#160;&#160;&#160;&#160;&#160;</text><t [...]
@@ -251,25 +251,25 @@
 </text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-32)">│</text><text class="breeze-testing-providers-integration-tests-r4" x="24.4" y="800.8" textLength="512.4" clip-path="url(#breeze-testing-providers-integration-tests-line-32)">--forward-credentials&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
 </text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-33)">│</text><text class="breeze-testing-providers-integration-tests-r4" x="24.4" y="825.2" textLength="231.8" clip-path="url(#breeze-testing-providers-integration-tests-line-33)">--force-sa-warnings</text><text class="breeze-testing-providers-integration-tests-r1" x="256.2" y="825.2" textLength="12.2" clip-path="url(#breeze- [...]
 </text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-34)">│</text><text class="breeze-testing-providers-integration-tests-r5" x="610" y="849.6" textLength="341.6" clip-path="url(#breeze-testing-providers-integration-tests-line-34)">[default:&#160;force-sa-warnings]</text><text class="breeze-testing-providers-integration-tests-r5" x="1451.8" y="849.6" textLength="12.2" clip-path [...]
-</text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="874" textLength="1464" clip-path="url(#breeze-testing-providers-integration-tests-line-35)">└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘</text><text class="breeze-testing-providers-integration-tests-r1" x="1464" y="874" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-35)">
-</text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="898.4" textLength="24.4" clip-path="url(#breeze-testing-providers-integration-tests-line-36)">┌─</text><text class="breeze-testing-providers-integration-tests-r5" x="24.4" y="898.4" textLength="231.8" clip-path="url(#breeze-testing-providers-integration-tests-line-36)">&#160;Integration&#160;tests&#160;</text><text class="breeze-testing-providers-integration-tests-r5" x="256.2" y="898.4" textLength="1183.4" clip- [...]
+</text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="874" textLength="1464" clip-path="url(#breeze-testing-providers-integration-tests-line-35)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-providers-integration-tests-r1" x="1464" y="874" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-35)">
+</text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="898.4" textLength="24.4" clip-path="url(#breeze-testing-providers-integration-tests-line-36)">╭─</text><text class="breeze-testing-providers-integration-tests-r5" x="24.4" y="898.4" textLength="231.8" clip-path="url(#breeze-testing-providers-integration-tests-line-36)">&#160;Integration&#160;tests&#160;</text><text class="breeze-testing-providers-integration-tests-r5" x="256.2" y="898.4" textLength="1183.4" clip- [...]
 </text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-37)">│</text><text class="breeze-testing-providers-integration-tests-r4" x="24.4" y="922.8" textLength="158.6" clip-path="url(#breeze-testing-providers-integration-tests-line-37)">--integration</text><text class="breeze-testing-providers-integration-tests-r1" x="207.4" y="922.8" textLength="878.4" clip-path="url(#breeze-testi [...]
-</text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-38)">│</text><text class="breeze-testing-providers-integration-tests-r6" x="207.4" y="947.2" textLength="1232.2" clip-path="url(#breeze-testing-providers-integration-tests-line-38)">cassandra&#160;|&#160;celery&#160;|&#160;drill&#160;|&#160;elasticsearch&#160;|&#160;kafka&#160;|&#160;localstack&#160;|&#160;mongo&#160;|&#160;m [...]
-</text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-39)">│</text><text class="breeze-testing-providers-integration-tests-r6" x="207.4" y="971.6" textLength="524.6" clip-path="url(#breeze-testing-providers-integration-tests-line-39)">|&#160;qdrant&#160;|&#160;redis&#160;|&#160;tinkerpop&#160;|&#160;trino&#160;|&#160;ydb)</text><text class="breeze-testing-providers-integration-t [...]
-</text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="996" textLength="1464" clip-path="url(#breeze-testing-providers-integration-tests-line-40)">└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘</text><text class="breeze-testing-providers-integration-tests-r1" x="1464" y="996" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-40)">
-</text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="1020.4" textLength="24.4" clip-path="url(#breeze-testing-providers-integration-tests-line-41)">┌─</text><text class="breeze-testing-providers-integration-tests-r5" x="24.4" y="1020.4" textLength="402.6" clip-path="url(#breeze-testing-providers-integration-tests-line-41)">&#160;Advanced&#160;flag&#160;for&#160;tests&#160;command&#160;</text><text class="breeze-testing-providers-integration-tests-r5" x="427" y="102 [...]
+</text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-38)">│</text><text class="breeze-testing-providers-integration-tests-r6" x="207.4" y="947.2" textLength="1171.2" clip-path="url(#breeze-testing-providers-integration-tests-line-38)">cassandra&#160;|&#160;celery&#160;|&#160;drill&#160;|&#160;elasticsearch&#160;|&#160;kafka&#160;|&#160;localstack&#160;|&#160;mongo&#160;|&#160;m [...]
+</text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-39)">│</text><text class="breeze-testing-providers-integration-tests-r6" x="207.4" y="971.6" textLength="756.4" clip-path="url(#breeze-testing-providers-integration-tests-line-39)">opensearch&#160;|&#160;pinot&#160;|&#160;qdrant&#160;|&#160;redis&#160;|&#160;tinkerpop&#160;|&#160;trino&#160;|&#160;ydb)</text><text class="bree [...]
+</text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="996" textLength="1464" clip-path="url(#breeze-testing-providers-integration-tests-line-40)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-providers-integration-tests-r1" x="1464" y="996" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-40)">
+</text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="1020.4" textLength="24.4" clip-path="url(#breeze-testing-providers-integration-tests-line-41)">╭─</text><text class="breeze-testing-providers-integration-tests-r5" x="24.4" y="1020.4" textLength="402.6" clip-path="url(#breeze-testing-providers-integration-tests-line-41)">&#160;Advanced&#160;flag&#160;for&#160;tests&#160;command&#160;</text><text class="breeze-testing-providers-integration-tests-r5" x="427" y="102 [...]
 </text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="1044.8" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-42)">│</text><text class="breeze-testing-providers-integration-tests-r4" x="24.4" y="1044.8" textLength="317.2" clip-path="url(#breeze-testing-providers-integration-tests-line-42)">--github-repository&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-testing-providers-integration-tests-r7" x="366" y="1044.8 [...]
 </text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="1069.2" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-43)">│</text><text class="breeze-testing-providers-integration-tests-r4" x="24.4" y="1069.2" textLength="317.2" clip-path="url(#breeze-testing-providers-integration-tests-line-43)">--mount-sources&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-testing-providers-integration-tests-r [...]
 </text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="1093.6" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-44)">│</text><text class="breeze-testing-providers-integration-tests-r1" x="414.8" y="1093.6" textLength="134.2" clip-path="url(#breeze-testing-providers-integration-tests-line-44)">selected).&#160;</text><text class="breeze-testing-providers-integration-tests-r5" x="549" y="1093.6" textLength="231.8" clip-path="url(#breeze- [...]
 </text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="1118" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-45)">│</text><text class="breeze-testing-providers-integration-tests-r6" x="414.8" y="1118" textLength="244" clip-path="url(#breeze-testing-providers-integration-tests-line-45)">providers-and-tests)</text><text class="breeze-testing-providers-integration-tests-r5" x="1451.8" y="1118" textLength="12.2" clip-path="url(#breeze-te [...]
 </text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="1142.4" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-46)">│</text><text class="breeze-testing-providers-integration-tests-r4" x="24.4" y="1142.4" textLength="317.2" clip-path="url(#breeze-testing-providers-integration-tests-line-46)">--skip-docker-compose-down</text><text class="breeze-testing-providers-integration-tests-r1" x="414.8" y="1142.4" textLength="549" clip-path="url [...]
 </text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="1166.8" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-47)">│</text><text class="breeze-testing-providers-integration-tests-r4" x="24.4" y="1166.8" textLength="317.2" clip-path="url(#breeze-testing-providers-integration-tests-line-47)">--keep-env-variables&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-testing-providers-integration-tests-r1" x="414.8" y="1166.8" t [...]
-</text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="1191.2" textLength="1464" clip-path="url(#breeze-testing-providers-integration-tests-line-48)">└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘</text><text class="breeze-testing-providers-integration-tests-r1" x="1464" y="1191.2" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-48)">
-</text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="1215.6" textLength="24.4" clip-path="url(#breeze-testing-providers-integration-tests-line-49)">┌─</text><text class="breeze-testing-providers-integration-tests-r5" x="24.4" y="1215.6" textLength="195.2" clip-path="url(#breeze-testing-providers-integration-tests-line-49)">&#160;Common&#160;options&#160;</text><text class="breeze-testing-providers-integration-tests-r5" x="219.6" y="1215.6" textLength="1220" clip-pa [...]
+</text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="1191.2" textLength="1464" clip-path="url(#breeze-testing-providers-integration-tests-line-48)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-providers-integration-tests-r1" x="1464" y="1191.2" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-48)">
+</text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="1215.6" textLength="24.4" clip-path="url(#breeze-testing-providers-integration-tests-line-49)">╭─</text><text class="breeze-testing-providers-integration-tests-r5" x="24.4" y="1215.6" textLength="195.2" clip-path="url(#breeze-testing-providers-integration-tests-line-49)">&#160;Common&#160;options&#160;</text><text class="breeze-testing-providers-integration-tests-r5" x="219.6" y="1215.6" textLength="1220" clip-pa [...]
 </text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="1240" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-50)">│</text><text class="breeze-testing-providers-integration-tests-r4" x="24.4" y="1240" textLength="109.8" clip-path="url(#breeze-testing-providers-integration-tests-line-50)">--dry-run</text><text class="breeze-testing-providers-integration-tests-r7" x="158.6" y="1240" textLength="24.4" clip-path="url(#breeze-testing-provi [...]
 </text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="1264.4" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-51)">│</text><text class="breeze-testing-providers-integration-tests-r4" x="24.4" y="1264.4" textLength="109.8" clip-path="url(#breeze-testing-providers-integration-tests-line-51)">--verbose</text><text class="breeze-testing-providers-integration-tests-r7" x="158.6" y="1264.4" textLength="24.4" clip-path="url(#breeze-testing [...]
 </text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="1288.8" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-52)">│</text><text class="breeze-testing-providers-integration-tests-r4" x="24.4" y="1288.8" textLength="109.8" clip-path="url(#breeze-testing-providers-integration-tests-line-52)">--help&#160;&#160;&#160;</text><text class="breeze-testing-providers-integration-tests-r7" x="158.6" y="1288.8" textLength="24.4" clip-path="url( [...]
-</text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="1313.2" textLength="1464" clip-path="url(#breeze-testing-providers-integration-tests-line-53)">└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘</text><text class="breeze-testing-providers-integration-tests-r1" x="1464" y="1313.2" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-53)">
+</text><text class="breeze-testing-providers-integration-tests-r5" x="0" y="1313.2" textLength="1464" clip-path="url(#breeze-testing-providers-integration-tests-line-53)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-providers-integration-tests-r1" x="1464" y="1313.2" textLength="12.2" clip-path="url(#breeze-testing-providers-integration-tests-line-53)">
 </text>
     </g>
     </g>
diff --git a/dev/breeze/doc/images/output_testing_providers-integration-tests.txt b/dev/breeze/doc/images/output_testing_providers-integration-tests.txt
index 93f5cdd3369..23f68a03967 100644
--- a/dev/breeze/doc/images/output_testing_providers-integration-tests.txt
+++ b/dev/breeze/doc/images/output_testing_providers-integration-tests.txt
@@ -1 +1 @@
-f48be7aee656b40d9ba1ae09242af12b
+769bdb032703d156065cbfb473770aa6
diff --git a/dev/breeze/src/airflow_breeze/global_constants.py b/dev/breeze/src/airflow_breeze/global_constants.py
index 6051821b724..987dc4b8db7 100644
--- a/dev/breeze/src/airflow_breeze/global_constants.py
+++ b/dev/breeze/src/airflow_breeze/global_constants.py
@@ -103,8 +103,9 @@ KEYCLOAK_INTEGRATION = "keycloak"
 STATSD_INTEGRATION = "statsd"
 OTEL_INTEGRATION = "otel"
 OPENLINEAGE_INTEGRATION = "openlineage"
+OPENSEARCH_INTEGRATION = "opensearch"
 OTHER_CORE_INTEGRATIONS = [STATSD_INTEGRATION, KEYCLOAK_INTEGRATION]
-OTHER_PROVIDERS_INTEGRATIONS = [OPENLINEAGE_INTEGRATION]
+OTHER_PROVIDERS_INTEGRATIONS = [OPENLINEAGE_INTEGRATION, OPENSEARCH_INTEGRATION]
 ALLOWED_DEBIAN_VERSIONS = ["bookworm"]
 ALL_CORE_INTEGRATIONS = sorted(
     [
diff --git a/scripts/ci/docker-compose/integration-opensearch.yml b/scripts/ci/docker-compose/integration-opensearch.yml
new file mode 100644
index 00000000000..9579241679a
--- /dev/null
+++ b/scripts/ci/docker-compose/integration-opensearch.yml
@@ -0,0 +1,48 @@
+# 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.
+---
+services:
+  opensearch:
+    image: opensearchproject/opensearch:2.19.0
+    labels:
+      breeze.description: "Integration required for OpenSearch hooks."
+    environment:
+      - discovery.type=single-node
+      - DISABLE_SECURITY_PLUGIN=true
+      - DISABLE_INSTALL_DEMO_CONFIG=true
+      - "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m"
+    volumes:
+      - opensearch-db-volume:/usr/share/opensearch/data
+    ports:
+      - "${OPENSEARCH_HOST_PORT:-9200}:9200"
+    healthcheck:
+      test: ["CMD-SHELL", "curl -f http://localhost:9200/_cluster/health || exit 1"]
+      interval: 10s
+      timeout: 30s
+      start_period: 60s
+      retries: 50
+    restart: "on-failure"
+
+  airflow:
+    environment:
+      - INTEGRATION_OPENSEARCH=true
+    depends_on:
+      opensearch:
+        condition: service_healthy
+
+volumes:
+  opensearch-db-volume: