This is an automated email from the ASF dual-hosted git repository.
shahar1 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 88b89283722 Add 'classify-provider-changes' breeze command for
deterministic change classification (#68215)
88b89283722 is described below
commit 88b89283722a2309df428789d75a5e7f5c4c229c
Author: Jarek Potiuk <[email protected]>
AuthorDate: Wed Jun 17 16:55:31 2026 -0400
Add 'classify-provider-changes' breeze command for deterministic change
classification (#68215)
---
.../prepare-providers-documentation/SKILL.md | 111 +++++++-----
dev/breeze/doc/09_release_management_tasks.rst | 19 ++
.../doc/images/output_release-management.svg | 96 +++++-----
.../doc/images/output_release-management.txt | 2 +-
...elease-management_classify-provider-changes.svg | 200 +++++++++++++++++++++
...elease-management_classify-provider-changes.txt | 1 +
.../output_setup_check-all-params-in-groups.svg | 10 +-
.../output_setup_check-all-params-in-groups.txt | 2 +-
.../output_setup_regenerate-command-images.svg | 80 +++++----
.../output_setup_regenerate-command-images.txt | 2 +-
.../commands/release_management_commands.py | 109 +++++++++++
.../commands/release_management_commands_config.py | 19 ++
.../prepare_providers/provider_documentation.py | 44 +++++
dev/breeze/tests/test_provider_documentation.py | 42 +++++
14 files changed, 609 insertions(+), 128 deletions(-)
diff --git a/.agents/skills/prepare-providers-documentation/SKILL.md
b/.agents/skills/prepare-providers-documentation/SKILL.md
index 688160d3a2a..fb5602f894a 100644
--- a/.agents/skills/prepare-providers-documentation/SKILL.md
+++ b/.agents/skills/prepare-providers-documentation/SKILL.md
@@ -108,49 +108,73 @@ date — running breeze the first time below will recreate
and fetch it.
The skill runs in five phases. Mark tasks with `TaskCreate` for each phase
and tick them off as you go — the release manager wants to see progress.
-### Phase 1 — Discover providers with pending changes
+### Phase 1 — Discover and pre-classify pending changes (deterministic)
-For each provider, the source of truth for "what changed since last release"
-is the same git query breeze uses internally: commits between the latest
-release tag for that provider (`providers-<id>/<version>`) and
-`apache-https-for-providers/<base-branch>`, restricted to the provider's own
-folders.
+The source of truth for "what changed since last release" is the same git
+query breeze uses internally: commits between the latest release tag for that
+provider (`providers-<id>/<version>`) and
`apache-https-for-providers/<base-branch>`,
+restricted to the provider's own folders.
-Discover in batch by running:
+Run the **deterministic classifier** — it discovers every provider with pending
+changes **and** pre-classifies each commit with hard-coded, high-confidence
+rules, flagging only the genuinely ambiguous ones as `needs_llm`. No random
+answers, nothing to discard:
```bash
-breeze release-management prepare-provider-documentation \
- --non-interactive \
- --skip-changelog \
- --skip-readme \
- --release-date "$RELEASE_DATE"
+breeze release-management classify-provider-changes \
+ --base-branch main \
+ --output-file /tmp/provider-changes.json
+# scope to a subset by appending provider ids, e.g. ... amazon cncf.kubernetes
```
-> [!WARNING]
-> Do **not** commit the result of that command. `--non-interactive` answers
-> the classification prompts with random values — Claude will overwrite the
-> changelog and version bumps in Phase 4 with real classifications. The only
-> reason to run breeze first is to refresh the apache remote, regenerate
-> build files, and confirm which providers have pending changes (read the
-> "Summary of prepared documentation" block at the end).
+The JSON it writes:
+
+```json
+{
+ "base_branch": "main",
+ "providers": {
+ "amazon": {
+ "current_version": "9.29.0",
+ "commits": [
+ {"hash": "c2dbd7a75a", "pr": "67987", "subject": "Fix IDC domain S3
path resolution",
+ "classification": "needs_llm", "reason": "no high-confidence
deterministic rule matched"},
+ {"hash": "abc123", "pr": "68087", "subject": "Bump the
edge-ui-package-updates group ...",
+ "classification": "misc", "reason": "dependency bump (subject starts
with 'Bump')"}
+ ]
+ }
+ }
+}
+```
-Record from the summary:
+How to read it:
-- **Success** — providers that had real changes (these need classification).
-- **Docs only** — providers with only documentation changes (already handled
- by breeze; skip in Phase 2).
-- **Skipped on no changes** — nothing to do.
+- Providers under `providers` have pending changes (these need attention).
+- `classification ∈ {documentation, skip, misc}` are **decided by rules — take
+ them as-is**, no sub-agent needed (doc-only → `documentation`, test/example
+ only → `skip`, `Bump …` dependency bump → `misc`).
+- `classification == needs_llm` → **Phase 3 decides** with a sub-agent. These
are
+ the only commits that need LLM analysis.
+- A provider with a `note`/`error` (e.g. a brand-new provider with no prior
+ release tag) → treat as an **initial release** and classify by hand.
-Reset the per-provider files that breeze touched but you'll be rewriting
-yourself before continuing:
+> [!NOTE]
+> The classifier is deliberately conservative: `Fix …`/`Add …` subjects are
+> **not** auto-classified (an "Add …" can be a breaking change), so they come
+> back as `needs_llm`. The rules live in `classify_change_deterministically`
+>
(`dev/breeze/src/airflow_breeze/prepare_providers/provider_documentation.py`).
+
+Then regenerate the auto-generated build files (this does **no**
classification,
+so nothing random is produced):
```bash
+breeze release-management prepare-provider-documentation \
+ --reapply-templates-only --release-date "$RELEASE_DATE"
git checkout -- $(git diff --name-only -- '**/provider.yaml'
'**/changelog.rst')
```
This leaves the regenerated build files (`__init__.py`, `README.rst`,
-`pyproject.toml`, `conf.py`, `get_provider_info.py`, `index.rst`) in place
-and discards only the stuff Claude is about to rewrite.
+`pyproject.toml`, `conf.py`, `get_provider_info.py`, `index.rst`) in place and
+discards only the changelog/version files Claude is about to rewrite itself.
### Phase 2 — Per-provider commit list
@@ -205,32 +229,35 @@ For each commit, classify it into one of:
| `s` | Skip (test/CI/example only — no user impact) | none |
| `v` | Min Airflow version bump | minor (treated as
misc + bump) |
-#### Auto-classify cheap cases first
+#### Take the deterministic classifications from Phase 1
-Before spawning a sub-agent, apply the same fast heuristics breeze uses
-(see `classify_provider_pr_files` in
-`dev/breeze/src/airflow_breeze/prepare_providers/provider_documentation.py`):
+`classify-provider-changes` (Phase 1) already classified every commit it could
+with hard-coded rules. Read `/tmp/provider-changes.json` and:
-- All changed files match `providers/<id>/docs/**/*.rst` → **`d`** (docs).
-- All changed files match `providers/<id>/tests/**` or
- `providers/<id>/src/airflow/providers/<id>/example_dags/**` → **`s`** (skip).
-- Subject contains `Bump minimum Airflow version` and only `__init__.py` /
- `provider.yaml` changed → **`v`**.
+- Use any commit whose `classification` is `documentation`, `skip`, or `misc`
+ **as-is** — these map to `d`, `s`, `m` respectively; no sub-agent needed.
+- Only commits with `classification: needs_llm` go to a sub-agent (below).
-Note these classifications and move on — no sub-agent needed.
+The deterministic rules (doc-only → `d`, test/example-only → `s`, `Bump …`
+dependency bump → `m`) are exactly the cheap cases — now computed once by
+breeze (`classify_change_deterministically`) instead of re-derived here. If you
+ever need the min-Airflow-bump case (`v`), that one is still a `needs_llm`
+judgement: a sub-agent should flag it when a PR bumps the provider's minimum
+Airflow version.
-#### Classify the rest — batched per provider, not one agent per PR
+#### Classify the `needs_llm` commits — batched per provider, not one agent
per PR
+Only the commits the classifier returned as `needs_llm` still need a sub-agent.
Classification is the token-heavy part of this skill, so spend sub-agents
sparingly. Do **not** spawn one sub-agent per PR — that is one agent per
commit and balloons to hundreds of agents on a normal release wave. Pick the
smallest fan-out that fits the volume:
-- **Few commits remain (≲ 15 across all providers) → classify inline.** Read
- each PR and its provider-scoped diff yourself, in this context. Spawn no
+- **Few `needs_llm` commits remain (≲ 15 across all providers) → classify
inline.**
+ Read each PR and its provider-scoped diff yourself, in this context. Spawn no
sub-agents at all.
- **More than that → one sub-agent per provider.** Each agent classifies that
- provider's *entire* remaining commit list in a single pass. This is the
+ provider's *entire* remaining `needs_llm` list in a single pass. This is the
natural unit: multi-provider PRs are classified independently per provider
anyway (see Cross-Cutting Rules), and one provider-scoped agent amortizes
the breaking-change checklist across all of that provider's commits instead
diff --git a/dev/breeze/doc/09_release_management_tasks.rst
b/dev/breeze/doc/09_release_management_tasks.rst
index 6a4d1a86b21..63d69195087 100644
--- a/dev/breeze/doc/09_release_management_tasks.rst
+++ b/dev/breeze/doc/09_release_management_tasks.rst
@@ -447,6 +447,25 @@ You can also add ``--answer yes`` to perform
non-interactive build.
:width: 100%
:alt: Breeze prepare-provider-documentation
+Classifying provider changes
+""""""""""""""""""""""""""""
+
+You can use Breeze to classify each provider's unreleased changes using
hard-coded,
+high-confidence rules, flagging ambiguous commits as ``needs_llm`` for an
agent or skill
+to assess. The result is emitted as JSON, providing a deterministic
alternative to the
+``--non-interactive`` documentation run used purely for change discovery.
+
+The below example classifies the pending changes for all providers.
+
+.. code-block:: bash
+
+ breeze release-management classify-provider-changes
+
+.. image:: ./images/output_release-management_classify-provider-changes.svg
+ :target:
https://raw.githubusercontent.com/apache/airflow/main/dev/breeze/doc/images/output_release-management_classify-provider-changes.svg
+ :width: 100%
+ :alt: Breeze classify-provider-changes
+
Updating provider next version
""""""""""""""""""""""""""""""
diff --git a/dev/breeze/doc/images/output_release-management.svg
b/dev/breeze/doc/images/output_release-management.svg
index 2613a5159f5..309ebac51d6 100644
--- a/dev/breeze/doc/images/output_release-management.svg
+++ b/dev/breeze/doc/images/output_release-management.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1562.8"
xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1660.3999999999999"
xmlns="http://www.w3.org/2000/svg">
<!-- Generated with Rich https://www.textualize.io -->
<style>
@@ -42,7 +42,7 @@
<defs>
<clipPath id="breeze-release-management-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="1511.8" />
+ <rect x="0" y="0" width="1463.0" height="1609.3999999999999" />
</clipPath>
<clipPath id="breeze-release-management-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -227,9 +227,21 @@
<clipPath id="breeze-release-management-line-60">
<rect x="0" y="1465.5" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-release-management-line-61">
+ <rect x="0" y="1489.9" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-line-62">
+ <rect x="0" y="1514.3" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-line-63">
+ <rect x="0" y="1538.7" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-line-64">
+ <rect x="0" y="1563.1" width="1464" height="24.65"/>
+ </clipPath>
</defs>
- <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1"
x="1" y="1" width="1480" height="1560.8" rx="8"/><text
class="breeze-release-management-title" fill="#c5c8c6" text-anchor="middle"
x="740" y="27">Command: release-management</text>
+ <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1"
x="1" y="1" width="1480" height="1658.4" rx="8"/><text
class="breeze-release-management-title" fill="#c5c8c6" text-anchor="middle"
x="740" y="27">Command: release-management</text>
<g transform="translate(26,22)">
<circle cx="0" cy="0" r="7" fill="#ff5f57"/>
<circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -263,44 +275,48 @@
</text><text class="breeze-release-management-r5" x="0" y="532.4"
textLength="1464"
clip-path="url(#breeze-release-management-line-21)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-release-management-r1" x="1464" y="532.4" textLength="12.2"
clip-path="url(#breeze-release-management-line-21)">
</text><text class="breeze-release-management-r5" x="0" y="556.8"
textLength="24.4"
clip-path="url(#breeze-release-management-line-22)">╭─</text><text
class="breeze-release-management-r5" x="24.4" y="556.8" textLength="341.6"
clip-path="url(#breeze-release-management-line-22)"> Providers release commands </text><text
class="breeze-release-management-r5" x="366" y="556.8" textLength="1073.6"
clip-path="url(#breeze-release-management-line-22)">──────────────────────────
[...]
</text><text class="breeze-release-management-r5" x="0" y="581.2"
textLength="12.2"
clip-path="url(#breeze-release-management-line-23)">│</text><text
class="breeze-release-management-r4" x="24.4" y="581.2" textLength="390.4"
clip-path="url(#breeze-release-management-line-23)">prepare-provider-documentation  </text><text
class="breeze-release-management-r1" x="439.2" y="581.2" textLength="1000.4"
clip-path="url(#breeze-release-management-line-23)">Prepare CHANGELOG, RE
[...]
-</text><text class="breeze-release-management-r5" x="0" y="605.6"
textLength="12.2"
clip-path="url(#breeze-release-management-line-24)">│</text><text
class="breeze-release-management-r4" x="24.4" y="605.6" textLength="390.4"
clip-path="url(#breeze-release-management-line-24)">update-providers-next-version   </text><text
class="breeze-release-management-r1" x="439.2" y="605.6" textLength="1000.4"
clip-path="url(#breeze-release-management-line-24)">Update provider 
[...]
-</text><text class="breeze-release-management-r5" x="0" y="630"
textLength="12.2"
clip-path="url(#breeze-release-management-line-25)">│</text><text
class="breeze-release-management-r4" x="24.4" y="630" textLength="390.4"
clip-path="url(#breeze-release-management-line-25)">prepare-provider-distributions  </text><text
class="breeze-release-management-r1" x="439.2" y="630" textLength="1000.4"
clip-path="url(#breeze-release-management-line-25)">Prepare sdist/whl distribut
[...]
-</text><text class="breeze-release-management-r5" x="0" y="654.4"
textLength="12.2"
clip-path="url(#breeze-release-management-line-26)">│</text><text
class="breeze-release-management-r1" x="439.2" y="654.4" textLength="268.4"
clip-path="url(#breeze-release-management-line-26)">wiped with `git clean </text><text
class="breeze-release-management-r6" x="707.6" y="654.4" textLength="48.8"
clip-path="url(#breeze-release-management-line-26)">-fdx</text><text
class="breeze-r [...]
-</text><text class="breeze-release-management-r5" x="0" y="678.8"
textLength="12.2"
clip-path="url(#breeze-release-management-line-27)">│</text><text
class="breeze-release-management-r1" x="439.2" y="678.8" textLength="1000.4"
clip-path="url(#breeze-release-management-line-27)">keep in-tree generated files out of the artifact. See dev/breeze                 &#
[...]
-</text><text class="breeze-release-management-r5" x="0" y="703.2"
textLength="12.2"
clip-path="url(#breeze-release-management-line-28)">│</text><text
class="breeze-release-management-r1" x="439.2" y="703.2" textLength="1000.4"
clip-path="url(#breeze-release-management-line-28)">release-management docs.                              
[...]
-</text><text class="breeze-release-management-r5" x="0" y="727.6"
textLength="12.2"
clip-path="url(#breeze-release-management-line-29)">│</text><text
class="breeze-release-management-r4" x="24.4" y="727.6" textLength="390.4"
clip-path="url(#breeze-release-management-line-29)">install-provider-distributions  </text><text
class="breeze-release-management-r1" x="439.2" y="727.6" textLength="1000.4"
clip-path="url(#breeze-release-management-line-29)">Installs provider dis
[...]
-</text><text class="breeze-release-management-r5" x="0" y="752"
textLength="12.2"
clip-path="url(#breeze-release-management-line-30)">│</text><text
class="breeze-release-management-r4" x="24.4" y="752" textLength="390.4"
clip-path="url(#breeze-release-management-line-30)">verify-provider-distributions   </text><text
class="breeze-release-management-r1" x="439.2" y="752" textLength="1000.4"
clip-path="url(#breeze-release-management-line-30)">Verifies if all p
[...]
-</text><text class="breeze-release-management-r5" x="0" y="776.4"
textLength="12.2"
clip-path="url(#breeze-release-management-line-31)">│</text><text
class="breeze-release-management-r4" x="24.4" y="776.4" textLength="390.4"
clip-path="url(#breeze-release-management-line-31)">generate-providers-metadata     </text><text
class="breeze-release-management-r1" x="439.2" y="776.4" textLength="1000.4"
clip-path="url(#breeze-release-management-line-31)">Generates m [...]
-</text><text class="breeze-release-management-r5" x="0" y="800.8"
textLength="12.2"
clip-path="url(#breeze-release-management-line-32)">│</text><text
class="breeze-release-management-r4" x="24.4" y="800.8" textLength="390.4"
clip-path="url(#breeze-release-management-line-32)">generate-issue-content-providers</text><text
class="breeze-release-management-r1" x="439.2" y="800.8" textLength="1000.4"
clip-path="url(#breeze-release-management-line-32)">Generates content for issu
[...]
-</text><text class="breeze-release-management-r5" x="0" y="825.2"
textLength="12.2"
clip-path="url(#breeze-release-management-line-33)">│</text><text
class="breeze-release-management-r4" x="24.4" y="825.2" textLength="390.4"
clip-path="url(#breeze-release-management-line-33)">clean-old-provider-artifacts    </text><text
class="breeze-release-management-r1" x="439.2" y="825.2" textLength="1000.4"
clip-path="url(#breeze-release-management-line-33)">Cleans the  [...]
-</text><text class="breeze-release-management-r5" x="0" y="849.6"
textLength="12.2"
clip-path="url(#breeze-release-management-line-34)">│</text><text
class="breeze-release-management-r4" x="24.4" y="849.6" textLength="390.4"
clip-path="url(#breeze-release-management-line-34)">tag-providers                   </text><text
class="breeze-release-management-r1" x="439.2" y="849.6" textLength="1000.4
[...]
-</text><text class="breeze-release-management-r5" x="0" y="874"
textLength="1464"
clip-path="url(#breeze-release-management-line-35)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-release-management-r1" x="1464" y="874" textLength="12.2"
clip-path="url(#breeze-release-management-line-35)">
-</text><text class="breeze-release-management-r5" x="0" y="898.4"
textLength="24.4"
clip-path="url(#breeze-release-management-line-36)">╭─</text><text
class="breeze-release-management-r5" x="24.4" y="898.4" textLength="427"
clip-path="url(#breeze-release-management-line-36)"> Airflow Task SDK release commands </text><text
class="breeze-release-management-r5" x="451.4" y="898.4" textLength="988.2"
clip-path="url(#breeze-release-management-line-36)">────────── [...]
-</text><text class="breeze-release-management-r5" x="0" y="922.8"
textLength="12.2"
clip-path="url(#breeze-release-management-line-37)">│</text><text
class="breeze-release-management-r4" x="24.4" y="922.8" textLength="512.4"
clip-path="url(#breeze-release-management-line-37)">prepare-task-sdk-distributions            </text><text
class="breeze-release-management-r1" x="561.2" y="922.8" textLength="878.4"
clip-path="url(#breeze-r [...]
-</text><text class="breeze-release-management-r5" x="0" y="947.2"
textLength="1464"
clip-path="url(#breeze-release-management-line-38)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-release-management-r1" x="1464" y="947.2" textLength="12.2"
clip-path="url(#breeze-release-management-line-38)">
-</text><text class="breeze-release-management-r5" x="0" y="971.6"
textLength="24.4"
clip-path="url(#breeze-release-management-line-39)">╭─</text><text
class="breeze-release-management-r5" x="24.4" y="971.6" textLength="353.8"
clip-path="url(#breeze-release-management-line-39)"> airflowctl release commands </text><text
class="breeze-release-management-r5" x="378.2" y="971.6" textLength="1061.4"
clip-path="url(#breeze-release-management-line-39)">───────────────────────
[...]
-</text><text class="breeze-release-management-r5" x="0" y="996"
textLength="12.2"
clip-path="url(#breeze-release-management-line-40)">│</text><text
class="breeze-release-management-r4" x="24.4" y="996" textLength="414.8"
clip-path="url(#breeze-release-management-line-40)">prepare-airflow-ctl-distributions </text><text
class="breeze-release-management-r1" x="463.6" y="996" textLength="976"
clip-path="url(#breeze-release-management-line-40)">Prepare sdist/whl distributions&#
[...]
-</text><text class="breeze-release-management-r5" x="0" y="1020.4"
textLength="12.2"
clip-path="url(#breeze-release-management-line-41)">│</text><text
class="breeze-release-management-r4" x="24.4" y="1020.4" textLength="414.8"
clip-path="url(#breeze-release-management-line-41)">generate-issue-content-airflow-ctl</text><text
class="breeze-release-management-r1" x="463.6" y="1020.4" textLength="976"
clip-path="url(#breeze-release-management-line-41)">Generates content for is
[...]
-</text><text class="breeze-release-management-r5" x="0" y="1044.8"
textLength="12.2"
clip-path="url(#breeze-release-management-line-42)">│</text><text
class="breeze-release-management-r4" x="24.4" y="1044.8" textLength="414.8"
clip-path="url(#breeze-release-management-line-42)">generate-airflowctl-changelog     </text><text
class="breeze-release-management-r1" x="463.6" y="1044.8" textLength="976"
clip-path="url(#breeze-release-management-line-42)">Generates  [...]
-</text><text class="breeze-release-management-r5" x="0" y="1069.2"
textLength="12.2"
clip-path="url(#breeze-release-management-line-43)">│</text><text
class="breeze-release-management-r1" x="463.6" y="1069.2" textLength="976"
clip-path="url(#breeze-release-management-line-43)">RELEASE_NOTES.rst.                                
[...]
-</text><text class="breeze-release-management-r5" x="0" y="1093.6"
textLength="1464"
clip-path="url(#breeze-release-management-line-44)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-release-management-r1" x="1464" y="1093.6" textLength="12.2"
clip-path="url(#breeze-release-management-line-44)">
-</text><text class="breeze-release-management-r5" x="0" y="1118"
textLength="24.4"
clip-path="url(#breeze-release-management-line-45)">╭─</text><text
class="breeze-release-management-r5" x="24.4" y="1118" textLength="463.6"
clip-path="url(#breeze-release-management-line-45)"> Apache Airflow Mypy release commands </text><text
class="breeze-release-management-r5" x="488" y="1118" textLength="951.6"
clip-path="url(#breeze-release-management-line-45)">────────── [...]
-</text><text class="breeze-release-management-r5" x="0" y="1142.4"
textLength="12.2"
clip-path="url(#breeze-release-management-line-46)">│</text><text
class="breeze-release-management-r4" x="24.4" y="1142.4" textLength="451.4"
clip-path="url(#breeze-release-management-line-46)">prepare-mypy-distributions           </text><text
class="breeze-release-management-r1" x="500.2" y="1142.4" textLength="939.4"
clip-path="url(#breeze-release- [...]
-</text><text class="breeze-release-management-r5" x="0" y="1166.8"
textLength="1464"
clip-path="url(#breeze-release-management-line-47)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-release-management-r1" x="1464" y="1166.8" textLength="12.2"
clip-path="url(#breeze-release-management-line-47)">
-</text><text class="breeze-release-management-r5" x="0" y="1191.2"
textLength="24.4"
clip-path="url(#breeze-release-management-line-48)">╭─</text><text
class="breeze-release-management-r5" x="24.4" y="1191.2" textLength="292.8"
clip-path="url(#breeze-release-management-line-48)"> Other release commands </text><text
class="breeze-release-management-r5" x="317.2" y="1191.2" textLength="1122.4"
clip-path="url(#breeze-release-management-line-48)">─────────────────────────
[...]
-</text><text class="breeze-release-management-r5" x="0" y="1215.6"
textLength="12.2"
clip-path="url(#breeze-release-management-line-49)">│</text><text
class="breeze-release-management-r4" x="24.4" y="1215.6" textLength="292.8"
clip-path="url(#breeze-release-management-line-49)">add-back-references     </text><text
class="breeze-release-management-r1" x="341.6" y="1215.6" textLength="1098"
clip-path="url(#breeze-release-management-line-49)">Command to ad
[...]
-</text><text class="breeze-release-management-r5" x="0" y="1240"
textLength="12.2"
clip-path="url(#breeze-release-management-line-50)">│</text><text
class="breeze-release-management-r4" x="24.4" y="1240" textLength="292.8"
clip-path="url(#breeze-release-management-line-50)">prepare-python-client   </text><text
class="breeze-release-management-r1" x="341.6" y="1240" textLength="1098"
clip-path="url(#breeze-release-management-line-50)">Prepares python client p
[...]
-</text><text class="breeze-release-management-r5" x="0" y="1264.4"
textLength="12.2"
clip-path="url(#breeze-release-management-line-51)">│</text><text
class="breeze-release-management-r4" x="24.4" y="1264.4" textLength="292.8"
clip-path="url(#breeze-release-management-line-51)">publish-docs            </text><text
class="breeze-release-management-r1" x="341.6" y="1264.4" textLength="1098"
clip-path="url(#breeze-release-managemen [...]
-</text><text class="breeze-release-management-r5" x="0" y="1288.8"
textLength="12.2"
clip-path="url(#breeze-release-management-line-52)">│</text><text
class="breeze-release-management-r4" x="24.4" y="1288.8" textLength="292.8"
clip-path="url(#breeze-release-management-line-52)">generate-constraints    </text><text
class="breeze-release-management-r1" x="341.6" y="1288.8" textLength="1098"
clip-path="url(#breeze-release-management-line-52)">Generates pinned c
[...]
-</text><text class="breeze-release-management-r5" x="0" y="1313.2"
textLength="12.2"
clip-path="url(#breeze-release-management-line-53)">│</text><text
class="breeze-release-management-r4" x="24.4" y="1313.2" textLength="292.8"
clip-path="url(#breeze-release-management-line-53)">update-constraints      </text><text
class="breeze-release-management-r1" x="341.6" y="1313.2" textLength="1098"
clip-path="url(#breeze-release-management-line-53)">Update releas [...]
-</text><text class="breeze-release-management-r5" x="0" y="1337.6"
textLength="12.2"
clip-path="url(#breeze-release-management-line-54)">│</text><text
class="breeze-release-management-r4" x="24.4" y="1337.6" textLength="292.8"
clip-path="url(#breeze-release-management-line-54)">publish-docs-to-s3      </text><text
class="breeze-release-management-r1" x="341.6" y="1337.6" textLength="1098"
clip-path="url(#breeze-release-management-line-54)">Publishes doc [...]
-</text><text class="breeze-release-management-r5" x="0" y="1362"
textLength="12.2"
clip-path="url(#breeze-release-management-line-55)">│</text><text
class="breeze-release-management-r4" x="24.4" y="1362" textLength="292.8"
clip-path="url(#breeze-release-management-line-55)">verify-rc-by-pmc        </text><text
class="breeze-release-management-r1" x="341.6" y="1362" textLength="1098"
clip-path="url(#breeze-release-management-line-55)">[EXPERIMENTAL] [...]
-</text><text class="breeze-release-management-r5" x="0" y="1386.4"
textLength="12.2"
clip-path="url(#breeze-release-management-line-56)">│</text><text
class="breeze-release-management-r4" x="24.4" y="1386.4" textLength="292.8"
clip-path="url(#breeze-release-management-line-56)">check-release-files     </text><text
class="breeze-release-management-r1" x="341.6" y="1386.4" textLength="1098"
clip-path="url(#breeze-release-management-line-56)">Verify that a
[...]
-</text><text class="breeze-release-management-r5" x="0" y="1410.8"
textLength="1464"
clip-path="url(#breeze-release-management-line-57)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-release-management-r1" x="1464" y="1410.8" textLength="12.2"
clip-path="url(#breeze-release-management-line-57)">
-</text><text class="breeze-release-management-r5" x="0" y="1435.2"
textLength="24.4"
clip-path="url(#breeze-release-management-line-58)">╭─</text><text
class="breeze-release-management-r5" x="24.4" y="1435.2" textLength="122"
clip-path="url(#breeze-release-management-line-58)"> Commands </text><text
class="breeze-release-management-r5" x="146.4" y="1435.2" textLength="1293.2"
clip-path="url(#breeze-release-management-line-58)">───────────────────────────────────────────────────
[...]
-</text><text class="breeze-release-management-r5" x="0" y="1459.6"
textLength="12.2"
clip-path="url(#breeze-release-management-line-59)">│</text><text
class="breeze-release-management-r4" x="24.4" y="1459.6" textLength="305"
clip-path="url(#breeze-release-management-line-59)">constraints-version-check</text><text
class="breeze-release-management-r1" x="353.8" y="1459.6" textLength="1085.8"
clip-path="url(#breeze-release-management-line-59)">Check constraints against releas
[...]
-</text><text class="breeze-release-management-r5" x="0" y="1484"
textLength="12.2"
clip-path="url(#breeze-release-management-line-60)">│</text><text
class="breeze-release-management-r4" x="24.4" y="1484" textLength="305"
clip-path="url(#breeze-release-management-line-60)">merge-prod-images        </text><text
class="breeze-release-management-r1" x="353.8" y="1484" textLength="1085.8"
clip-path="url(#breeze-release-management-line-60)">Merge pr [...]
+</text><text class="breeze-release-management-r5" x="0" y="605.6"
textLength="12.2"
clip-path="url(#breeze-release-management-line-24)">│</text><text
class="breeze-release-management-r4" x="24.4" y="605.6" textLength="390.4"
clip-path="url(#breeze-release-management-line-24)">classify-provider-changes       </text><text
class="breeze-release-management-r1" x="439.2" y="605.6" textLength="1000.4"
clip-path="url(#breeze-release-management-line-24)">Classi [...]
+</text><text class="breeze-release-management-r5" x="0" y="630"
textLength="12.2"
clip-path="url(#breeze-release-management-line-25)">│</text><text
class="breeze-release-management-r1" x="439.2" y="630" textLength="1000.4"
clip-path="url(#breeze-release-management-line-25)">rules, flagging ambiguous commits as 'needs_llm' for an agent/skill to assess.    </text><text
class="breeze-release-management-r5" x="14 [...]
+</text><text class="breeze-release-management-r5" x="0" y="654.4"
textLength="12.2"
clip-path="url(#breeze-release-management-line-26)">│</text><text
class="breeze-release-management-r1" x="439.2" y="654.4" textLength="707.6"
clip-path="url(#breeze-release-management-line-26)">Outputs JSON - a deterministic alternative to the random '</text><text
class="breeze-release-management-r4" x="1146.8" y="654.4" textLength="207.4"
clip-path="url(# [...]
+</text><text class="breeze-release-management-r5" x="0" y="678.8"
textLength="12.2"
clip-path="url(#breeze-release-management-line-27)">│</text><text
class="breeze-release-management-r1" x="439.2" y="678.8" textLength="1000.4"
clip-path="url(#breeze-release-management-line-27)">used purely for discovery.                            
[...]
+</text><text class="breeze-release-management-r5" x="0" y="703.2"
textLength="12.2"
clip-path="url(#breeze-release-management-line-28)">│</text><text
class="breeze-release-management-r4" x="24.4" y="703.2" textLength="390.4"
clip-path="url(#breeze-release-management-line-28)">update-providers-next-version   </text><text
class="breeze-release-management-r1" x="439.2" y="703.2" textLength="1000.4"
clip-path="url(#breeze-release-management-line-28)">Update provider 
[...]
+</text><text class="breeze-release-management-r5" x="0" y="727.6"
textLength="12.2"
clip-path="url(#breeze-release-management-line-29)">│</text><text
class="breeze-release-management-r4" x="24.4" y="727.6" textLength="390.4"
clip-path="url(#breeze-release-management-line-29)">prepare-provider-distributions  </text><text
class="breeze-release-management-r1" x="439.2" y="727.6" textLength="1000.4"
clip-path="url(#breeze-release-management-line-29)">Prepare sdist/whl dis
[...]
+</text><text class="breeze-release-management-r5" x="0" y="752"
textLength="12.2"
clip-path="url(#breeze-release-management-line-30)">│</text><text
class="breeze-release-management-r1" x="439.2" y="752" textLength="268.4"
clip-path="url(#breeze-release-management-line-30)">wiped with `git clean </text><text
class="breeze-release-management-r6" x="707.6" y="752" textLength="48.8"
clip-path="url(#breeze-release-management-line-30)">-fdx</text><text
class="breeze-release [...]
+</text><text class="breeze-release-management-r5" x="0" y="776.4"
textLength="12.2"
clip-path="url(#breeze-release-management-line-31)">│</text><text
class="breeze-release-management-r1" x="439.2" y="776.4" textLength="1000.4"
clip-path="url(#breeze-release-management-line-31)">keep in-tree generated files out of the artifact. See dev/breeze                 &#
[...]
+</text><text class="breeze-release-management-r5" x="0" y="800.8"
textLength="12.2"
clip-path="url(#breeze-release-management-line-32)">│</text><text
class="breeze-release-management-r1" x="439.2" y="800.8" textLength="1000.4"
clip-path="url(#breeze-release-management-line-32)">release-management docs.                              
[...]
+</text><text class="breeze-release-management-r5" x="0" y="825.2"
textLength="12.2"
clip-path="url(#breeze-release-management-line-33)">│</text><text
class="breeze-release-management-r4" x="24.4" y="825.2" textLength="390.4"
clip-path="url(#breeze-release-management-line-33)">install-provider-distributions  </text><text
class="breeze-release-management-r1" x="439.2" y="825.2" textLength="1000.4"
clip-path="url(#breeze-release-management-line-33)">Installs provider dis
[...]
+</text><text class="breeze-release-management-r5" x="0" y="849.6"
textLength="12.2"
clip-path="url(#breeze-release-management-line-34)">│</text><text
class="breeze-release-management-r4" x="24.4" y="849.6" textLength="390.4"
clip-path="url(#breeze-release-management-line-34)">verify-provider-distributions   </text><text
class="breeze-release-management-r1" x="439.2" y="849.6" textLength="1000.4"
clip-path="url(#breeze-release-management-line-34)">Verifies if all&
[...]
+</text><text class="breeze-release-management-r5" x="0" y="874"
textLength="12.2"
clip-path="url(#breeze-release-management-line-35)">│</text><text
class="breeze-release-management-r4" x="24.4" y="874" textLength="390.4"
clip-path="url(#breeze-release-management-line-35)">generate-providers-metadata     </text><text
class="breeze-release-management-r1" x="439.2" y="874" textLength="1000.4"
clip-path="url(#breeze-release-management-line-35)">Generates metadat [...]
+</text><text class="breeze-release-management-r5" x="0" y="898.4"
textLength="12.2"
clip-path="url(#breeze-release-management-line-36)">│</text><text
class="breeze-release-management-r4" x="24.4" y="898.4" textLength="390.4"
clip-path="url(#breeze-release-management-line-36)">generate-issue-content-providers</text><text
class="breeze-release-management-r1" x="439.2" y="898.4" textLength="1000.4"
clip-path="url(#breeze-release-management-line-36)">Generates content for issu
[...]
+</text><text class="breeze-release-management-r5" x="0" y="922.8"
textLength="12.2"
clip-path="url(#breeze-release-management-line-37)">│</text><text
class="breeze-release-management-r4" x="24.4" y="922.8" textLength="390.4"
clip-path="url(#breeze-release-management-line-37)">clean-old-provider-artifacts    </text><text
class="breeze-release-management-r1" x="439.2" y="922.8" textLength="1000.4"
clip-path="url(#breeze-release-management-line-37)">Cleans the  [...]
+</text><text class="breeze-release-management-r5" x="0" y="947.2"
textLength="12.2"
clip-path="url(#breeze-release-management-line-38)">│</text><text
class="breeze-release-management-r4" x="24.4" y="947.2" textLength="390.4"
clip-path="url(#breeze-release-management-line-38)">tag-providers                   </text><text
class="breeze-release-management-r1" x="439.2" y="947.2" textLength="1000.4
[...]
+</text><text class="breeze-release-management-r5" x="0" y="971.6"
textLength="1464"
clip-path="url(#breeze-release-management-line-39)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-release-management-r1" x="1464" y="971.6" textLength="12.2"
clip-path="url(#breeze-release-management-line-39)">
+</text><text class="breeze-release-management-r5" x="0" y="996"
textLength="24.4"
clip-path="url(#breeze-release-management-line-40)">╭─</text><text
class="breeze-release-management-r5" x="24.4" y="996" textLength="427"
clip-path="url(#breeze-release-management-line-40)"> Airflow Task SDK release commands </text><text
class="breeze-release-management-r5" x="451.4" y="996" textLength="988.2"
clip-path="url(#breeze-release-management-line-40)">──────────────── [...]
+</text><text class="breeze-release-management-r5" x="0" y="1020.4"
textLength="12.2"
clip-path="url(#breeze-release-management-line-41)">│</text><text
class="breeze-release-management-r4" x="24.4" y="1020.4" textLength="512.4"
clip-path="url(#breeze-release-management-line-41)">prepare-task-sdk-distributions            </text><text
class="breeze-release-management-r1" x="561.2" y="1020.4" textLength="878.4"
clip-path="url(#breez [...]
+</text><text class="breeze-release-management-r5" x="0" y="1044.8"
textLength="1464"
clip-path="url(#breeze-release-management-line-42)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-release-management-r1" x="1464" y="1044.8" textLength="12.2"
clip-path="url(#breeze-release-management-line-42)">
+</text><text class="breeze-release-management-r5" x="0" y="1069.2"
textLength="24.4"
clip-path="url(#breeze-release-management-line-43)">╭─</text><text
class="breeze-release-management-r5" x="24.4" y="1069.2" textLength="353.8"
clip-path="url(#breeze-release-management-line-43)"> airflowctl release commands </text><text
class="breeze-release-management-r5" x="378.2" y="1069.2" textLength="1061.4"
clip-path="url(#breeze-release-management-line-43)">──────────────────── [...]
+</text><text class="breeze-release-management-r5" x="0" y="1093.6"
textLength="12.2"
clip-path="url(#breeze-release-management-line-44)">│</text><text
class="breeze-release-management-r4" x="24.4" y="1093.6" textLength="414.8"
clip-path="url(#breeze-release-management-line-44)">prepare-airflow-ctl-distributions </text><text
class="breeze-release-management-r1" x="463.6" y="1093.6" textLength="976"
clip-path="url(#breeze-release-management-line-44)">Prepare sdist/whl distri
[...]
+</text><text class="breeze-release-management-r5" x="0" y="1118"
textLength="12.2"
clip-path="url(#breeze-release-management-line-45)">│</text><text
class="breeze-release-management-r4" x="24.4" y="1118" textLength="414.8"
clip-path="url(#breeze-release-management-line-45)">generate-issue-content-airflow-ctl</text><text
class="breeze-release-management-r1" x="463.6" y="1118" textLength="976"
clip-path="url(#breeze-release-management-line-45)">Generates content for issue
[...]
+</text><text class="breeze-release-management-r5" x="0" y="1142.4"
textLength="12.2"
clip-path="url(#breeze-release-management-line-46)">│</text><text
class="breeze-release-management-r4" x="24.4" y="1142.4" textLength="414.8"
clip-path="url(#breeze-release-management-line-46)">generate-airflowctl-changelog     </text><text
class="breeze-release-management-r1" x="463.6" y="1142.4" textLength="976"
clip-path="url(#breeze-release-management-line-46)">Generates  [...]
+</text><text class="breeze-release-management-r5" x="0" y="1166.8"
textLength="12.2"
clip-path="url(#breeze-release-management-line-47)">│</text><text
class="breeze-release-management-r1" x="463.6" y="1166.8" textLength="976"
clip-path="url(#breeze-release-management-line-47)">RELEASE_NOTES.rst.                                
[...]
+</text><text class="breeze-release-management-r5" x="0" y="1191.2"
textLength="1464"
clip-path="url(#breeze-release-management-line-48)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-release-management-r1" x="1464" y="1191.2" textLength="12.2"
clip-path="url(#breeze-release-management-line-48)">
+</text><text class="breeze-release-management-r5" x="0" y="1215.6"
textLength="24.4"
clip-path="url(#breeze-release-management-line-49)">╭─</text><text
class="breeze-release-management-r5" x="24.4" y="1215.6" textLength="463.6"
clip-path="url(#breeze-release-management-line-49)"> Apache Airflow Mypy release commands </text><text
class="breeze-release-management-r5" x="488" y="1215.6" textLength="951.6"
clip-path="url(#breeze-release-management-line-49)">──── [...]
+</text><text class="breeze-release-management-r5" x="0" y="1240"
textLength="12.2"
clip-path="url(#breeze-release-management-line-50)">│</text><text
class="breeze-release-management-r4" x="24.4" y="1240" textLength="451.4"
clip-path="url(#breeze-release-management-line-50)">prepare-mypy-distributions           </text><text
class="breeze-release-management-r1" x="500.2" y="1240" textLength="939.4"
clip-path="url(#breeze-release-manage [...]
+</text><text class="breeze-release-management-r5" x="0" y="1264.4"
textLength="1464"
clip-path="url(#breeze-release-management-line-51)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-release-management-r1" x="1464" y="1264.4" textLength="12.2"
clip-path="url(#breeze-release-management-line-51)">
+</text><text class="breeze-release-management-r5" x="0" y="1288.8"
textLength="24.4"
clip-path="url(#breeze-release-management-line-52)">╭─</text><text
class="breeze-release-management-r5" x="24.4" y="1288.8" textLength="292.8"
clip-path="url(#breeze-release-management-line-52)"> Other release commands </text><text
class="breeze-release-management-r5" x="317.2" y="1288.8" textLength="1122.4"
clip-path="url(#breeze-release-management-line-52)">─────────────────────────
[...]
+</text><text class="breeze-release-management-r5" x="0" y="1313.2"
textLength="12.2"
clip-path="url(#breeze-release-management-line-53)">│</text><text
class="breeze-release-management-r4" x="24.4" y="1313.2" textLength="292.8"
clip-path="url(#breeze-release-management-line-53)">add-back-references     </text><text
class="breeze-release-management-r1" x="341.6" y="1313.2" textLength="1098"
clip-path="url(#breeze-release-management-line-53)">Command to ad
[...]
+</text><text class="breeze-release-management-r5" x="0" y="1337.6"
textLength="12.2"
clip-path="url(#breeze-release-management-line-54)">│</text><text
class="breeze-release-management-r4" x="24.4" y="1337.6" textLength="292.8"
clip-path="url(#breeze-release-management-line-54)">prepare-python-client   </text><text
class="breeze-release-management-r1" x="341.6" y="1337.6" textLength="1098"
clip-path="url(#breeze-release-management-line-54)">Prepares python client&
[...]
+</text><text class="breeze-release-management-r5" x="0" y="1362"
textLength="12.2"
clip-path="url(#breeze-release-management-line-55)">│</text><text
class="breeze-release-management-r4" x="24.4" y="1362" textLength="292.8"
clip-path="url(#breeze-release-management-line-55)">publish-docs            </text><text
class="breeze-release-management-r1" x="341.6" y="1362" textLength="1098"
clip-path="url(#breeze-release-management-line [...]
+</text><text class="breeze-release-management-r5" x="0" y="1386.4"
textLength="12.2"
clip-path="url(#breeze-release-management-line-56)">│</text><text
class="breeze-release-management-r4" x="24.4" y="1386.4" textLength="292.8"
clip-path="url(#breeze-release-management-line-56)">generate-constraints    </text><text
class="breeze-release-management-r1" x="341.6" y="1386.4" textLength="1098"
clip-path="url(#breeze-release-management-line-56)">Generates pinned c
[...]
+</text><text class="breeze-release-management-r5" x="0" y="1410.8"
textLength="12.2"
clip-path="url(#breeze-release-management-line-57)">│</text><text
class="breeze-release-management-r4" x="24.4" y="1410.8" textLength="292.8"
clip-path="url(#breeze-release-management-line-57)">update-constraints      </text><text
class="breeze-release-management-r1" x="341.6" y="1410.8" textLength="1098"
clip-path="url(#breeze-release-management-line-57)">Update releas [...]
+</text><text class="breeze-release-management-r5" x="0" y="1435.2"
textLength="12.2"
clip-path="url(#breeze-release-management-line-58)">│</text><text
class="breeze-release-management-r4" x="24.4" y="1435.2" textLength="292.8"
clip-path="url(#breeze-release-management-line-58)">publish-docs-to-s3      </text><text
class="breeze-release-management-r1" x="341.6" y="1435.2" textLength="1098"
clip-path="url(#breeze-release-management-line-58)">Publishes doc [...]
+</text><text class="breeze-release-management-r5" x="0" y="1459.6"
textLength="12.2"
clip-path="url(#breeze-release-management-line-59)">│</text><text
class="breeze-release-management-r4" x="24.4" y="1459.6" textLength="292.8"
clip-path="url(#breeze-release-management-line-59)">verify-rc-by-pmc        </text><text
class="breeze-release-management-r1" x="341.6" y="1459.6" textLength="1098"
clip-path="url(#breeze-release-management-line-59)">[EXPERIM [...]
+</text><text class="breeze-release-management-r5" x="0" y="1484"
textLength="12.2"
clip-path="url(#breeze-release-management-line-60)">│</text><text
class="breeze-release-management-r4" x="24.4" y="1484" textLength="292.8"
clip-path="url(#breeze-release-management-line-60)">check-release-files     </text><text
class="breeze-release-management-r1" x="341.6" y="1484" textLength="1098"
clip-path="url(#breeze-release-management-line-60)">Verify that all
[...]
</text><text class="breeze-release-management-r5" x="0" y="1508.4"
textLength="1464"
clip-path="url(#breeze-release-management-line-61)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-release-management-r1" x="1464" y="1508.4" textLength="12.2"
clip-path="url(#breeze-release-management-line-61)">
+</text><text class="breeze-release-management-r5" x="0" y="1532.8"
textLength="24.4"
clip-path="url(#breeze-release-management-line-62)">╭─</text><text
class="breeze-release-management-r5" x="24.4" y="1532.8" textLength="122"
clip-path="url(#breeze-release-management-line-62)"> Commands </text><text
class="breeze-release-management-r5" x="146.4" y="1532.8" textLength="1293.2"
clip-path="url(#breeze-release-management-line-62)">───────────────────────────────────────────────────
[...]
+</text><text class="breeze-release-management-r5" x="0" y="1557.2"
textLength="12.2"
clip-path="url(#breeze-release-management-line-63)">│</text><text
class="breeze-release-management-r4" x="24.4" y="1557.2" textLength="305"
clip-path="url(#breeze-release-management-line-63)">constraints-version-check</text><text
class="breeze-release-management-r1" x="353.8" y="1557.2" textLength="1085.8"
clip-path="url(#breeze-release-management-line-63)">Check constraints against releas
[...]
+</text><text class="breeze-release-management-r5" x="0" y="1581.6"
textLength="12.2"
clip-path="url(#breeze-release-management-line-64)">│</text><text
class="breeze-release-management-r4" x="24.4" y="1581.6" textLength="305"
clip-path="url(#breeze-release-management-line-64)">merge-prod-images        </text><text
class="breeze-release-management-r1" x="353.8" y="1581.6" textLength="1085.8"
clip-path="url(#breeze-release-management-line-64)">Merge&# [...]
+</text><text class="breeze-release-management-r5" x="0" y="1606"
textLength="1464"
clip-path="url(#breeze-release-management-line-65)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-release-management-r1" x="1464" y="1606" textLength="12.2"
clip-path="url(#breeze-release-management-line-65)">
</text>
</g>
</g>
diff --git a/dev/breeze/doc/images/output_release-management.txt
b/dev/breeze/doc/images/output_release-management.txt
index 10f37158801..88669f75b59 100644
--- a/dev/breeze/doc/images/output_release-management.txt
+++ b/dev/breeze/doc/images/output_release-management.txt
@@ -1 +1 @@
-422cbfd07af57d8374a63d90b480edf2
+1588da1100c6c55691550abd5da329b0
diff --git
a/dev/breeze/doc/images/output_release-management_classify-provider-changes.svg
b/dev/breeze/doc/images/output_release-management_classify-provider-changes.svg
new file mode 100644
index 00000000000..e7b78f7153e
--- /dev/null
+++
b/dev/breeze/doc/images/output_release-management_classify-provider-changes.svg
@@ -0,0 +1,200 @@
+<svg class="rich-terminal" viewBox="0 0 1482 904.0"
xmlns="http://www.w3.org/2000/svg">
+ <!-- Generated with Rich https://www.textualize.io -->
+ <style>
+
+ @font-face {
+ font-family: "Fira Code";
+ src: local("FiraCode-Regular"),
+
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2")
format("woff2"),
+
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff")
format("woff");
+ font-style: normal;
+ font-weight: 400;
+ }
+ @font-face {
+ font-family: "Fira Code";
+ src: local("FiraCode-Bold"),
+
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2")
format("woff2"),
+
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff")
format("woff");
+ font-style: bold;
+ font-weight: 700;
+ }
+
+ .breeze-release-management-classify-provider-changes-matrix {
+ font-family: Fira Code, monospace;
+ font-size: 20px;
+ line-height: 24.4px;
+ font-variant-east-asian: full-width;
+ }
+
+ .breeze-release-management-classify-provider-changes-title {
+ font-size: 18px;
+ font-weight: bold;
+ font-family: arial;
+ }
+
+ .breeze-release-management-classify-provider-changes-r1 { fill: #c5c8c6 }
+.breeze-release-management-classify-provider-changes-r2 { fill: #d0b344 }
+.breeze-release-management-classify-provider-changes-r3 { fill:
#c5c8c6;font-weight: bold }
+.breeze-release-management-classify-provider-changes-r4 { fill:
#68a0b3;font-weight: bold }
+.breeze-release-management-classify-provider-changes-r5 { fill: #868887 }
+.breeze-release-management-classify-provider-changes-r6 { fill: #8d7b39 }
+.breeze-release-management-classify-provider-changes-r7 { fill:
#98a84b;font-weight: bold }
+ </style>
+
+ <defs>
+ <clipPath
id="breeze-release-management-classify-provider-changes-clip-terminal">
+ <rect x="0" y="0" width="1463.0" height="853.0" />
+ </clipPath>
+ <clipPath id="breeze-release-management-classify-provider-changes-line-0">
+ <rect x="0" y="1.5" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-classify-provider-changes-line-1">
+ <rect x="0" y="25.9" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-classify-provider-changes-line-2">
+ <rect x="0" y="50.3" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-classify-provider-changes-line-3">
+ <rect x="0" y="74.7" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-classify-provider-changes-line-4">
+ <rect x="0" y="99.1" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-classify-provider-changes-line-5">
+ <rect x="0" y="123.5" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-classify-provider-changes-line-6">
+ <rect x="0" y="147.9" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-classify-provider-changes-line-7">
+ <rect x="0" y="172.3" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-classify-provider-changes-line-8">
+ <rect x="0" y="196.7" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-classify-provider-changes-line-9">
+ <rect x="0" y="221.1" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-classify-provider-changes-line-10">
+ <rect x="0" y="245.5" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-classify-provider-changes-line-11">
+ <rect x="0" y="269.9" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-classify-provider-changes-line-12">
+ <rect x="0" y="294.3" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-classify-provider-changes-line-13">
+ <rect x="0" y="318.7" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-classify-provider-changes-line-14">
+ <rect x="0" y="343.1" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-classify-provider-changes-line-15">
+ <rect x="0" y="367.5" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-classify-provider-changes-line-16">
+ <rect x="0" y="391.9" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-classify-provider-changes-line-17">
+ <rect x="0" y="416.3" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-classify-provider-changes-line-18">
+ <rect x="0" y="440.7" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-classify-provider-changes-line-19">
+ <rect x="0" y="465.1" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-classify-provider-changes-line-20">
+ <rect x="0" y="489.5" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-classify-provider-changes-line-21">
+ <rect x="0" y="513.9" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-classify-provider-changes-line-22">
+ <rect x="0" y="538.3" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-classify-provider-changes-line-23">
+ <rect x="0" y="562.7" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-classify-provider-changes-line-24">
+ <rect x="0" y="587.1" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-classify-provider-changes-line-25">
+ <rect x="0" y="611.5" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-classify-provider-changes-line-26">
+ <rect x="0" y="635.9" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-classify-provider-changes-line-27">
+ <rect x="0" y="660.3" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-classify-provider-changes-line-28">
+ <rect x="0" y="684.7" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-classify-provider-changes-line-29">
+ <rect x="0" y="709.1" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-classify-provider-changes-line-30">
+ <rect x="0" y="733.5" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-classify-provider-changes-line-31">
+ <rect x="0" y="757.9" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-classify-provider-changes-line-32">
+ <rect x="0" y="782.3" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-release-management-classify-provider-changes-line-33">
+ <rect x="0" y="806.7" width="1464" height="24.65"/>
+ </clipPath>
+ </defs>
+
+ <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1"
x="1" y="1" width="1480" height="902" rx="8"/><text
class="breeze-release-management-classify-provider-changes-title"
fill="#c5c8c6" text-anchor="middle" x="740"
y="27">Command: release-management classify-provider-changes</text>
+ <g transform="translate(26,22)">
+ <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
+ <circle cx="22" cy="0" r="7" fill="#febc2e"/>
+ <circle cx="44" cy="0" r="7" fill="#28c840"/>
+ </g>
+
+ <g transform="translate(9, 41)"
clip-path="url(#breeze-release-management-classify-provider-changes-clip-terminal)">
+
+ <g class="breeze-release-management-classify-provider-changes-matrix">
+ <text class="breeze-release-management-classify-provider-changes-r1"
x="1464" y="20" textLength="12.2"
clip-path="url(#breeze-release-management-classify-provider-changes-line-0)">
+</text><text class="breeze-release-management-classify-provider-changes-r2"
x="12.2" y="44.4" textLength="1439.6"
clip-path="url(#breeze-release-management-classify-provider-changes-line-1)">Usage:                                                 &
[...]
+</text><text class="breeze-release-management-classify-provider-changes-r3"
x="12.2" y="68.8" textLength="1439.6"
clip-path="url(#breeze-release-management-classify-provider-changes-line-2)">breeze release-management classify-provider-changes                                        
[...]
+</text><text class="breeze-release-management-classify-provider-changes-r1"
x="12.2" y="93.2" textLength="12.2"
clip-path="url(#breeze-release-management-classify-provider-changes-line-3)">[</text><text
class="breeze-release-management-classify-provider-changes-r4" x="24.4"
y="93.2" textLength="85.4"
clip-path="url(#breeze-release-management-classify-provider-changes-line-3)">OPTIONS</text><text
class="breeze-release-management-classify-provider-changes-r1" x="109.8"
y="93.2" textLength= [...]
+</text><text class="breeze-release-management-classify-provider-changes-r4"
x="12.2" y="117.6" textLength="73.2"
clip-path="url(#breeze-release-management-classify-provider-changes-line-4)">apache</text><text
class="breeze-release-management-classify-provider-changes-r1" x="85.4"
y="117.6" textLength="12.2"
clip-path="url(#breeze-release-management-classify-provider-changes-line-4)">.</text><text
class="breeze-release-management-classify-provider-changes-r4" x="97.6"
y="117.6" textLength [...]
+</text><text class="breeze-release-management-classify-provider-changes-r4"
x="12.2" y="142" textLength="73.2"
clip-path="url(#breeze-release-management-classify-provider-changes-line-5)">apache</text><text
class="breeze-release-management-classify-provider-changes-r1" x="85.4"
y="142" textLength="12.2"
clip-path="url(#breeze-release-management-classify-provider-changes-line-5)">.</text><text
class="breeze-release-management-classify-provider-changes-r4" x="97.6"
y="142" textLength="61" [...]
+</text><text class="breeze-release-management-classify-provider-changes-r4"
x="12.2" y="166.4" textLength="97.6"
clip-path="url(#breeze-release-management-classify-provider-changes-line-6)">cloudant</text><text
class="breeze-release-management-classify-provider-changes-r1" x="109.8"
y="166.4" textLength="36.6"
clip-path="url(#breeze-release-management-classify-provider-changes-line-6)"> | </text><text
class="breeze-release-management-classify-provider-changes-r4" x="146.4" y="1
[...]
+</text><text class="breeze-release-management-classify-provider-changes-r4"
x="12.2" y="190.8" textLength="122"
clip-path="url(#breeze-release-management-classify-provider-changes-line-7)">databricks</text><text
class="breeze-release-management-classify-provider-changes-r1" x="134.2"
y="190.8" textLength="36.6"
clip-path="url(#breeze-release-management-classify-provider-changes-line-7)"> | </text><text
class="breeze-release-management-classify-provider-changes-r4" x="170.8" y="
[...]
+</text><text class="breeze-release-management-classify-provider-changes-r1"
x="12.2" y="215.2" textLength="24.4"
clip-path="url(#breeze-release-management-classify-provider-changes-line-8)">| </text><text
class="breeze-release-management-classify-provider-changes-r4" x="36.6"
y="215.2" textLength="36.6"
clip-path="url(#breeze-release-management-classify-provider-changes-line-8)">git</text><text
class="breeze-release-management-classify-provider-changes-r1" x="73.2"
y="215.2" textLen [...]
+</text><text class="breeze-release-management-classify-provider-changes-r4"
x="12.2" y="239.6" textLength="109.8"
clip-path="url(#breeze-release-management-classify-provider-changes-line-9)">microsoft</text><text
class="breeze-release-management-classify-provider-changes-r1" x="122"
y="239.6" textLength="12.2"
clip-path="url(#breeze-release-management-classify-provider-changes-line-9)">.</text><text
class="breeze-release-management-classify-provider-changes-r4" x="134.2"
y="239.6" textLe [...]
+</text><text class="breeze-release-management-classify-provider-changes-r4"
x="12.2" y="264" textLength="97.6"
clip-path="url(#breeze-release-management-classify-provider-changes-line-10)">openfaas</text><text
class="breeze-release-management-classify-provider-changes-r1" x="109.8"
y="264" textLength="36.6"
clip-path="url(#breeze-release-management-classify-provider-changes-line-10)"> | </text><text
class="breeze-release-management-classify-provider-changes-r4" x="146.4"
y="264 [...]
+</text><text class="breeze-release-management-classify-provider-changes-r4"
x="12.2" y="288.4" textLength="73.2"
clip-path="url(#breeze-release-management-classify-provider-changes-line-11)">presto</text><text
class="breeze-release-management-classify-provider-changes-r1" x="85.4"
y="288.4" textLength="36.6"
clip-path="url(#breeze-release-management-classify-provider-changes-line-11)"> | </text><text
class="breeze-release-management-classify-provider-changes-r4" x="122" y="288.
[...]
+</text><text class="breeze-release-management-classify-provider-changes-r4"
x="12.2" y="312.8" textLength="73.2"
clip-path="url(#breeze-release-management-classify-provider-changes-line-12)">sqlite</text><text
class="breeze-release-management-classify-provider-changes-r1" x="85.4"
y="312.8" textLength="36.6"
clip-path="url(#breeze-release-management-classify-provider-changes-line-12)"> | </text><text
class="breeze-release-management-classify-provider-changes-r4" x="122" y="312.
[...]
+</text><text class="breeze-release-management-classify-provider-changes-r4"
x="12.2" y="337.2" textLength="85.4"
clip-path="url(#breeze-release-management-classify-provider-changes-line-13)">zendesk</text><text
class="breeze-release-management-classify-provider-changes-r1" x="97.6"
y="337.2" textLength="1354.2"
clip-path="url(#breeze-release-management-classify-provider-changes-line-13)">]...                &
[...]
+</text><text class="breeze-release-management-classify-provider-changes-r1"
x="1464" y="361.6" textLength="12.2"
clip-path="url(#breeze-release-management-classify-provider-changes-line-14)">
+</text><text class="breeze-release-management-classify-provider-changes-r1"
x="12.2" y="386" textLength="1390.8"
clip-path="url(#breeze-release-management-classify-provider-changes-line-15)">Classify each provider's unreleased changes with hard-coded, high-confidence rules, flagging ambiguous commits as </text><text
class="breeze-release-management-classify-provider-changes-r1" x="1464"
y="386" textLength="12.2" clip-p [...]
+</text><text class="breeze-release-management-classify-provider-changes-r1"
x="12.2" y="410.4" textLength="1220"
clip-path="url(#breeze-release-management-classify-provider-changes-line-16)">'needs_llm' for an agent/skill to assess. Outputs JSON - a deterministic alternative to the random '</text><text
class="breeze-release-management-classify-provider-changes-r4" x="1232.2"
y="410.4" textLength="20 [...]
+</text><text class="breeze-release-management-classify-provider-changes-r1"
x="12.2" y="434.8" textLength="366"
clip-path="url(#breeze-release-management-classify-provider-changes-line-17)">run used purely for discovery.</text><text
class="breeze-release-management-classify-provider-changes-r1" x="1464"
y="434.8" textLength="12.2"
clip-path="url(#breeze-release-management-classify-provider-changes-line-17)">
+</text><text class="breeze-release-management-classify-provider-changes-r1"
x="1464" y="459.2" textLength="12.2"
clip-path="url(#breeze-release-management-classify-provider-changes-line-18)">
+</text><text class="breeze-release-management-classify-provider-changes-r5"
x="0" y="483.6" textLength="24.4"
clip-path="url(#breeze-release-management-classify-provider-changes-line-19)">╭─</text><text
class="breeze-release-management-classify-provider-changes-r5" x="24.4"
y="483.6" textLength="292.8"
clip-path="url(#breeze-release-management-classify-provider-changes-line-19)"> Classification options </text><text
class="breeze-release-management-classify-provider-changes [...]
+</text><text class="breeze-release-management-classify-provider-changes-r5"
x="0" y="508" textLength="12.2"
clip-path="url(#breeze-release-management-classify-provider-changes-line-20)">│</text><text
class="breeze-release-management-classify-provider-changes-r4" x="24.4"
y="508" textLength="231.8"
clip-path="url(#breeze-release-management-classify-provider-changes-line-20)">--base-branch      </text><text
class="breeze-release-management-classify-provider-ch [...]
+</text><text class="breeze-release-management-classify-provider-changes-r5"
x="0" y="532.4" textLength="12.2"
clip-path="url(#breeze-release-management-classify-provider-changes-line-21)">│</text><text
class="breeze-release-management-classify-provider-changes-r4" x="24.4"
y="532.4" textLength="231.8"
clip-path="url(#breeze-release-management-classify-provider-changes-line-21)">--skip-git-fetch   </text><text
class="breeze-release-management-classify-provider-changes-r1" x [...]
+</text><text class="breeze-release-management-classify-provider-changes-r5"
x="0" y="556.8" textLength="12.2"
clip-path="url(#breeze-release-management-classify-provider-changes-line-22)">│</text><text
class="breeze-release-management-classify-provider-changes-r1" x="329.4"
y="556.8" textLength="1110.2"
clip-path="url(#breeze-release-management-classify-provider-changes-line-22)">as-is.                 &
[...]
+</text><text class="breeze-release-management-classify-provider-changes-r5"
x="0" y="581.2" textLength="12.2"
clip-path="url(#breeze-release-management-classify-provider-changes-line-23)">│</text><text
class="breeze-release-management-classify-provider-changes-r4" x="24.4"
y="581.2" textLength="231.8"
clip-path="url(#breeze-release-management-classify-provider-changes-line-23)">--github-repository</text><text
class="breeze-release-management-classify-provider-changes-r7" x="280.6"
y="581 [...]
+</text><text class="breeze-release-management-classify-provider-changes-r5"
x="0" y="605.6" textLength="12.2"
clip-path="url(#breeze-release-management-classify-provider-changes-line-24)">│</text><text
class="breeze-release-management-classify-provider-changes-r4" x="24.4"
y="605.6" textLength="231.8"
clip-path="url(#breeze-release-management-classify-provider-changes-line-24)">--output-file      </text><text
class="breeze-release-management-classify-provide [...]
+</text><text class="breeze-release-management-classify-provider-changes-r5"
x="0" y="630" textLength="1464"
clip-path="url(#breeze-release-management-classify-provider-changes-line-25)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-release-management-classify-provider-changes-r1" x="1464"
y="630" textLength="12.2"
clip-path="url(#breeze-release-management-classify-provider-changes-line-25)">
+</text><text class="breeze-release-management-classify-provider-changes-r5"
x="0" y="654.4" textLength="24.4"
clip-path="url(#breeze-release-management-classify-provider-changes-line-26)">╭─</text><text
class="breeze-release-management-classify-provider-changes-r5" x="24.4"
y="654.4" textLength="366"
clip-path="url(#breeze-release-management-classify-provider-changes-line-26)"> Select non-regular providers </text><text
class="breeze-release-management-classify-provide [...]
+</text><text class="breeze-release-management-classify-provider-changes-r5"
x="0" y="678.8" textLength="12.2"
clip-path="url(#breeze-release-management-classify-provider-changes-line-27)">│</text><text
class="breeze-release-management-classify-provider-changes-r4" x="24.4"
y="678.8" textLength="353.8"
clip-path="url(#breeze-release-management-classify-provider-changes-line-27)">--include-not-ready-providers</text><text
class="breeze-release-management-classify-provider-changes-r1" x="402 [...]
+</text><text class="breeze-release-management-classify-provider-changes-r5"
x="0" y="703.2" textLength="12.2"
clip-path="url(#breeze-release-management-classify-provider-changes-line-28)">│</text><text
class="breeze-release-management-classify-provider-changes-r4" x="24.4"
y="703.2" textLength="353.8"
clip-path="url(#breeze-release-management-classify-provider-changes-line-28)">--include-removed-providers  </text><text
class="breeze-release-management-classify-provider-changes- [...]
+</text><text class="breeze-release-management-classify-provider-changes-r5"
x="0" y="727.6" textLength="1464"
clip-path="url(#breeze-release-management-classify-provider-changes-line-29)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-release-management-classify-provider-changes-r1" x="1464"
y="727.6" textLength="12.2"
clip-path="url(#breeze-release-management-classify-provider-changes-line-29)">
+</text><text class="breeze-release-management-classify-provider-changes-r5"
x="0" y="752" textLength="24.4"
clip-path="url(#breeze-release-management-classify-provider-changes-line-30)">╭─</text><text
class="breeze-release-management-classify-provider-changes-r5" x="24.4"
y="752" textLength="195.2"
clip-path="url(#breeze-release-management-classify-provider-changes-line-30)"> Common options </text><text
class="breeze-release-management-classify-provider-changes-r5" x="219. [...]
+</text><text class="breeze-release-management-classify-provider-changes-r5"
x="0" y="776.4" textLength="12.2"
clip-path="url(#breeze-release-management-classify-provider-changes-line-31)">│</text><text
class="breeze-release-management-classify-provider-changes-r4" x="24.4"
y="776.4" textLength="109.8"
clip-path="url(#breeze-release-management-classify-provider-changes-line-31)">--verbose</text><text
class="breeze-release-management-classify-provider-changes-r7" x="158.6"
y="776.4" textLe [...]
+</text><text class="breeze-release-management-classify-provider-changes-r5"
x="0" y="800.8" textLength="12.2"
clip-path="url(#breeze-release-management-classify-provider-changes-line-32)">│</text><text
class="breeze-release-management-classify-provider-changes-r4" x="24.4"
y="800.8" textLength="109.8"
clip-path="url(#breeze-release-management-classify-provider-changes-line-32)">--dry-run</text><text
class="breeze-release-management-classify-provider-changes-r7" x="158.6"
y="800.8" textLe [...]
+</text><text class="breeze-release-management-classify-provider-changes-r5"
x="0" y="825.2" textLength="12.2"
clip-path="url(#breeze-release-management-classify-provider-changes-line-33)">│</text><text
class="breeze-release-management-classify-provider-changes-r4" x="24.4"
y="825.2" textLength="109.8"
clip-path="url(#breeze-release-management-classify-provider-changes-line-33)">--help   </text><text
class="breeze-release-management-classify-provider-changes-r7" x="158.6" y
[...]
+</text><text class="breeze-release-management-classify-provider-changes-r5"
x="0" y="849.6" textLength="1464"
clip-path="url(#breeze-release-management-classify-provider-changes-line-34)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-release-management-classify-provider-changes-r1" x="1464"
y="849.6" textLength="12.2"
clip-path="url(#breeze-release-management-classify-provider-changes-line-34)">
+</text>
+ </g>
+ </g>
+</svg>
diff --git
a/dev/breeze/doc/images/output_release-management_classify-provider-changes.txt
b/dev/breeze/doc/images/output_release-management_classify-provider-changes.txt
new file mode 100644
index 00000000000..226f5e3c0fe
--- /dev/null
+++
b/dev/breeze/doc/images/output_release-management_classify-provider-changes.txt
@@ -0,0 +1 @@
+57466e5cb9470b0d4398724fda2a1825
diff --git a/dev/breeze/doc/images/output_setup_check-all-params-in-groups.svg
b/dev/breeze/doc/images/output_setup_check-all-params-in-groups.svg
index e60ddb39e38..a94f436f33f 100644
--- a/dev/breeze/doc/images/output_setup_check-all-params-in-groups.svg
+++ b/dev/breeze/doc/images/output_setup_check-all-params-in-groups.svg
@@ -214,11 +214,11 @@
</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0"
y="337.2" textLength="12.2"
clip-path="url(#breeze-setup-check-all-params-in-groups-line-13)">│</text><text
class="breeze-setup-check-all-params-in-groups-r6" x="158.6" y="337.2"
textLength="1110.2"
clip-path="url(#breeze-setup-check-all-params-in-groups-line-13)">k8s:upload-k8s-image | prod-image | prod-image:build | prod-image:load | prod-image:pull | </text><text
cla [...]
</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0"
y="361.6" textLength="12.2"
clip-path="url(#breeze-setup-check-all-params-in-groups-line-14)">│</text><text
class="breeze-setup-check-all-params-in-groups-r6" x="158.6" y="361.6"
textLength="1134.6"
clip-path="url(#breeze-setup-check-all-params-in-groups-line-14)">prod-image:save | prod-image:verify | registry | registry:backfill | registry:extract-data | </text><text
c [...]
</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="386"
textLength="12.2"
clip-path="url(#breeze-setup-check-all-params-in-groups-line-15)">│</text><text
class="breeze-setup-check-all-params-in-groups-r6" x="158.6" y="386"
textLength="1098"
clip-path="url(#breeze-setup-check-all-params-in-groups-line-15)">registry:publish-versions | release-management | release-management:add-back-references | </text><text
class="breeze-setup-check-all- [...]
-</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0"
y="410.4" textLength="12.2"
clip-path="url(#breeze-setup-check-all-params-in-groups-line-16)">│</text><text
class="breeze-setup-check-all-params-in-groups-r6" x="158.6" y="410.4"
textLength="1110.2"
clip-path="url(#breeze-setup-check-all-params-in-groups-line-16)">release-management:check-release-files | release-management:clean-old-provider-artifacts | </text><text
class="breeze-setup-check-all-par [...]
-</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0"
y="434.8" textLength="12.2"
clip-path="url(#breeze-setup-check-all-params-in-groups-line-17)">│</text><text
class="breeze-setup-check-all-params-in-groups-r6" x="158.6" y="434.8"
textLength="1073.6"
clip-path="url(#breeze-setup-check-all-params-in-groups-line-17)">release-management:constraints-version-check | release-management:create-minor-branch | </text><text
class="breeze-setup-check-all-params [...]
-</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0"
y="459.2" textLength="12.2"
clip-path="url(#breeze-setup-check-all-params-in-groups-line-18)">│</text><text
class="breeze-setup-check-all-params-in-groups-r6" x="158.6" y="459.2"
textLength="1134.6"
clip-path="url(#breeze-setup-check-all-params-in-groups-line-18)">release-management:generate-airflowctl-changelog | release-management:generate-constraints | </text><text
class="breeze-setup-check-all-p [...]
-</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0"
y="483.6" textLength="12.2"
clip-path="url(#breeze-setup-check-all-params-in-groups-line-19)">│</text><text
class="breeze-setup-check-all-params-in-groups-r6" x="158.6" y="483.6"
textLength="1281"
clip-path="url(#breeze-setup-check-all-params-in-groups-line-19)">release-management:generate-issue-content-airflow-ctl | release-management:generate-issue-content-core | </text><text
class="breeze-setup-c [...]
-</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="508"
textLength="12.2"
clip-path="url(#breeze-setup-check-all-params-in-groups-line-20)">│</text><text
class="breeze-setup-check-all-params-in-groups-r6" x="158.6" y="508"
textLength="671"
clip-path="url(#breeze-setup-check-all-params-in-groups-line-20)">release-management:generate-issue-content-helm-chart | </text><text
class="breeze-setup-check-all-params-in-groups-r5" x="1451.8" y="508"
textLength="12.2 [...]
+</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0"
y="410.4" textLength="12.2"
clip-path="url(#breeze-setup-check-all-params-in-groups-line-16)">│</text><text
class="breeze-setup-check-all-params-in-groups-r6" x="158.6" y="410.4"
textLength="1073.6"
clip-path="url(#breeze-setup-check-all-params-in-groups-line-16)">release-management:check-release-files | release-management:classify-provider-changes | </text><text
class="breeze-setup-check-all-params [...]
+</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0"
y="434.8" textLength="12.2"
clip-path="url(#breeze-setup-check-all-params-in-groups-line-17)">│</text><text
class="breeze-setup-check-all-params-in-groups-r6" x="158.6" y="434.8"
textLength="1183.4"
clip-path="url(#breeze-setup-check-all-params-in-groups-line-17)">release-management:clean-old-provider-artifacts | release-management:constraints-version-check | </text><text
class="breeze-setup-check-a [...]
+</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0"
y="459.2" textLength="12.2"
clip-path="url(#breeze-setup-check-all-params-in-groups-line-18)">│</text><text
class="breeze-setup-check-all-params-in-groups-r6" x="158.6" y="459.2"
textLength="1122.4"
clip-path="url(#breeze-setup-check-all-params-in-groups-line-18)">release-management:create-minor-branch | release-management:generate-airflowctl-changelog | </text><text
class="breeze-setup-check-all-pa [...]
+</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0"
y="483.6" textLength="12.2"
clip-path="url(#breeze-setup-check-all-params-in-groups-line-19)">│</text><text
class="breeze-setup-check-all-params-in-groups-r6" x="158.6" y="483.6"
textLength="1195.6"
clip-path="url(#breeze-setup-check-all-params-in-groups-line-19)">release-management:generate-constraints | release-management:generate-issue-content-airflow-ctl | </text><text
class="breeze-setup-check- [...]
+</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0" y="508"
textLength="12.2"
clip-path="url(#breeze-setup-check-all-params-in-groups-line-20)">│</text><text
class="breeze-setup-check-all-params-in-groups-r6" x="158.6" y="508"
textLength="1268.8"
clip-path="url(#breeze-setup-check-all-params-in-groups-line-20)">release-management:generate-issue-content-core | release-management:generate-issue-content-helm-chart | </text><text
class="breeze-setup-chec [...]
</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0"
y="532.4" textLength="12.2"
clip-path="url(#breeze-setup-check-all-params-in-groups-line-21)">│</text><text
class="breeze-setup-check-all-params-in-groups-r6" x="158.6" y="532.4"
textLength="1256.6"
clip-path="url(#breeze-setup-check-all-params-in-groups-line-21)">release-management:generate-issue-content-providers | release-management:generate-providers-metadata | </text><text
class="breeze-setup-c [...]
</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0"
y="556.8" textLength="12.2"
clip-path="url(#breeze-setup-check-all-params-in-groups-line-22)">│</text><text
class="breeze-setup-check-all-params-in-groups-r6" x="158.6" y="556.8"
textLength="1110.2"
clip-path="url(#breeze-setup-check-all-params-in-groups-line-22)">release-management:install-provider-distributions | release-management:merge-prod-images | </text><text
class="breeze-setup-check-all-par [...]
</text><text class="breeze-setup-check-all-params-in-groups-r5" x="0"
y="581.2" textLength="12.2"
clip-path="url(#breeze-setup-check-all-params-in-groups-line-23)">│</text><text
class="breeze-setup-check-all-params-in-groups-r6" x="158.6" y="581.2"
textLength="1281"
clip-path="url(#breeze-setup-check-all-params-in-groups-line-23)">release-management:prepare-airflow-ctl-distributions | release-management:prepare-airflow-distributions |</text><text
class="breeze-setup-check- [...]
diff --git a/dev/breeze/doc/images/output_setup_check-all-params-in-groups.txt
b/dev/breeze/doc/images/output_setup_check-all-params-in-groups.txt
index 827782657be..f6155ca71eb 100644
--- a/dev/breeze/doc/images/output_setup_check-all-params-in-groups.txt
+++ b/dev/breeze/doc/images/output_setup_check-all-params-in-groups.txt
@@ -1 +1 @@
-e9e98d932ec6cb9cfb86af58105b007f
+ab7f4fb815bf503631f336876c24e2b1
diff --git a/dev/breeze/doc/images/output_setup_regenerate-command-images.svg
b/dev/breeze/doc/images/output_setup_regenerate-command-images.svg
index df79de9080e..0e07ebb3f1e 100644
--- a/dev/breeze/doc/images/output_setup_regenerate-command-images.svg
+++ b/dev/breeze/doc/images/output_setup_regenerate-command-images.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1343.1999999999998"
xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1367.6"
xmlns="http://www.w3.org/2000/svg">
<!-- Generated with Rich https://www.textualize.io -->
<style>
@@ -43,7 +43,7 @@
<defs>
<clipPath id="breeze-setup-regenerate-command-images-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="1292.1999999999998" />
+ <rect x="0" y="0" width="1463.0" height="1316.6" />
</clipPath>
<clipPath id="breeze-setup-regenerate-command-images-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -201,9 +201,12 @@
<clipPath id="breeze-setup-regenerate-command-images-line-51">
<rect x="0" y="1245.9" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-setup-regenerate-command-images-line-52">
+ <rect x="0" y="1270.3" width="1464" height="24.65"/>
+ </clipPath>
</defs>
- <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1"
x="1" y="1" width="1480" height="1341.2" rx="8"/><text
class="breeze-setup-regenerate-command-images-title" fill="#c5c8c6"
text-anchor="middle" x="740"
y="27">Command: setup regenerate-command-images</text>
+ <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1"
x="1" y="1" width="1480" height="1365.6" rx="8"/><text
class="breeze-setup-regenerate-command-images-title" fill="#c5c8c6"
text-anchor="middle" x="740"
y="27">Command: setup regenerate-command-images</text>
<g transform="translate(26,22)">
<circle cx="0" cy="0" r="7" fill="#ff5f57"/>
<circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -231,41 +234,42 @@
</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="386"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-15)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="386"
textLength="1244.4"
clip-path="url(#breeze-setup-regenerate-command-images-line-15)">prod-image:build | prod-image:load | prod-image:pull | prod-image:save | prod-image:verify | registry </text><
[...]
</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="410.4"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-16)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="410.4"
textLength="1159"
clip-path="url(#breeze-setup-regenerate-command-images-line-16)">| registry:backfill | registry:extract-data | registry:publish-versions | release-management | </text><text
class="bre [...]
</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="434.8"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-17)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="434.8"
textLength="1000.4"
clip-path="url(#breeze-setup-regenerate-command-images-line-17)">release-management:add-back-references | release-management:check-release-files | </text><text
class="breeze-setup-regenerate-command-images- [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="459.2"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-18)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="459.2"
textLength="1183.4"
clip-path="url(#breeze-setup-regenerate-command-images-line-18)">release-management:clean-old-provider-artifacts | release-management:constraints-version-check | </text><text
class="breeze-setup-regenerate- [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="483.6"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-19)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="483.6"
textLength="1122.4"
clip-path="url(#breeze-setup-regenerate-command-images-line-19)">release-management:create-minor-branch | release-management:generate-airflowctl-changelog | </text><text
class="breeze-setup-regenerate-comma [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="508"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-20)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="508"
textLength="1195.6"
clip-path="url(#breeze-setup-regenerate-command-images-line-20)">release-management:generate-constraints | release-management:generate-issue-content-airflow-ctl | </text><text
class="breeze-setup-regenerate-com [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="532.4"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-21)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="532.4"
textLength="1244.4"
clip-path="url(#breeze-setup-regenerate-command-images-line-21)">release-management:generate-issue-content-core | release-management:generate-issue-content-helm-chart </text><text
class="breeze-setup-regenerate- [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="556.8"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-22)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="556.8"
textLength="1244.4"
clip-path="url(#breeze-setup-regenerate-command-images-line-22)">| release-management:generate-issue-content-providers | release-management:generate-providers-metadata</text><text
class="breeze-setup-regenerate- [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="581.2"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-23)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="581.2"
textLength="1134.6"
clip-path="url(#breeze-setup-regenerate-command-images-line-23)">| release-management:install-provider-distributions | release-management:merge-prod-images | </text><text
class="breeze-setup-regenerate [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="605.6"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-24)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="605.6"
textLength="671"
clip-path="url(#breeze-setup-regenerate-command-images-line-24)">release-management:prepare-airflow-ctl-distributions | </text><text
class="breeze-setup-regenerate-command-images-r5" x="1451.8" y="605.6"
textLength="12. [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="630"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-25)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="630"
textLength="1207.8"
clip-path="url(#breeze-setup-regenerate-command-images-line-25)">release-management:prepare-airflow-distributions | release-management:prepare-helm-chart-package | </text><text
class="breeze-setup-regenerate-co [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="654.4"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-26)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="654.4"
textLength="1171.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-26)">release-management:prepare-helm-chart-tarball | release-management:prepare-mypy-distributions | </text><text
class="breeze-setup-regenerate-c [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="678.8"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-27)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="678.8"
textLength="1244.4"
clip-path="url(#breeze-setup-regenerate-command-images-line-27)">release-management:prepare-provider-distributions | release-management:prepare-provider-documentation </text><text
class="breeze-setup-regenerate- [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="703.2"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-28)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="703.2"
textLength="1000.4"
clip-path="url(#breeze-setup-regenerate-command-images-line-28)">| release-management:prepare-python-client | release-management:prepare-tarball | </text><text
class="breeze-setup-regenerate-command-im [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="727.6"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-29)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="727.6"
textLength="1049.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-29)">release-management:prepare-task-sdk-distributions | release-management:publish-docs | </text><text
class="breeze-setup-regenerate-command-ima [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="752"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-30)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="752"
textLength="988.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-30)">release-management:publish-docs-to-s3 | release-management:release-prod-images | </text><text
class="breeze-setup-regenerate-command-images-r5" x= [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="776.4"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-31)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="776.4"
textLength="890.6"
clip-path="url(#breeze-setup-regenerate-command-images-line-31)">release-management:start-rc-process | release-management:start-release | </text><text
class="breeze-setup-regenerate-command-images-r5" x="145 [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="800.8"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-32)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="800.8"
textLength="915"
clip-path="url(#breeze-setup-regenerate-command-images-line-32)">release-management:tag-providers | release-management:update-constraints | </text><text
class="breeze-setup-regenerate-command-images-r5" x="145 [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="825.2"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-33)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="825.2"
textLength="1244.4"
clip-path="url(#breeze-setup-regenerate-command-images-line-33)">release-management:update-providers-next-version | release-management:verify-provider-distributions | </text><text
class="breeze-setup-regene [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="849.6"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-34)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="849.6"
textLength="1012.6"
clip-path="url(#breeze-setup-regenerate-command-images-line-34)">release-management:verify-rc-by-pmc | run | sbom | sbom:build-all-airflow-images | </text><text
class="breeze-setup-regen [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="874"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-35)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="874"
textLength="927.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-35)">sbom:export-dependency-information | sbom:generate-providers-requirements | </text><text
class="breeze-setup-regenerate-command-images-r5" x="1451 [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="898.4"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-36)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="898.4"
textLength="1159"
clip-path="url(#breeze-setup-regenerate-command-images-line-36)">sbom:update-sbom-information | setup | setup:autocomplete | setup:check-all-params-in-groups | </text><text
class="breeze-s [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="922.8"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-37)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="922.8"
textLength="1244.4"
clip-path="url(#breeze-setup-regenerate-command-images-line-37)">setup:config | setup:regenerate-command-images | setup:self-upgrade | setup:synchronize-local-mounts |</text><text
class="bree [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="947.2"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-38)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="947.2"
textLength="1098"
clip-path="url(#breeze-setup-regenerate-command-images-line-38)">setup:version | shell | start-airflow | testing | testing:airflow-ctl-integration-tests | </text><text
class="bre [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="971.6"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-39)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="971.6"
textLength="1085.8"
clip-path="url(#breeze-setup-regenerate-command-images-line-39)">testing:airflow-ctl-tests | testing:airflow-e2e-tests | testing:core-integration-tests | </text><text
class="breeze-setup-regenerat [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="996"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-40)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="996"
textLength="890.6"
clip-path="url(#breeze-setup-regenerate-command-images-line-40)">testing:core-tests | testing:docker-compose-tests | testing:helm-tests | </text><text
class="breeze-setup-regenerate-command-images-r5" [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0"
y="1020.4" textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-41)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="1020.4"
textLength="1195.6"
clip-path="url(#breeze-setup-regenerate-command-images-line-41)">testing:providers-integration-tests | testing:providers-tests | testing:python-api-client-tests | </text><text
class="breeze-setu [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0"
y="1044.8" textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-42)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="1044.8"
textLength="1037"
clip-path="url(#breeze-setup-regenerate-command-images-line-42)">testing:system-tests | testing:task-sdk-integration-tests | testing:task-sdk-tests | </text><text
class="breeze-setup-regenerate-co [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0"
y="1069.2" textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-43)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="1069.2"
textLength="1207.8"
clip-path="url(#breeze-setup-regenerate-command-images-line-43)">testing:ui-e2e-tests | ui | ui:check-translation-completeness | ui:compile-assets | workflow-run | </text><te
[...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0"
y="1093.6" textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-44)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="1093.6"
textLength="317.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-44)">workflow-run:publish-docs)</text><text
class="breeze-setup-regenerate-command-images-r5" x="1451.8" y="1093.6"
textLength="12.2" clip-path="url(#breeze-setup-re [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="1118"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-45)">│</text><text
class="breeze-setup-regenerate-command-images-r4" x="24.4" y="1118"
textLength="146.4"
clip-path="url(#breeze-setup-regenerate-command-images-line-45)">--check-only</text><text
class="breeze-setup-regenerate-command-images-r1" x="195.2" y="1118"
textLength="1244.4" clip-path="url(#breeze-setup-regenerate-command-ima [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0"
y="1142.4" textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-46)">│</text><text
class="breeze-setup-regenerate-command-images-r1" x="195.2" y="1142.4"
textLength="170.8"
clip-path="url(#breeze-setup-regenerate-command-images-line-46)">together with </text><text
class="breeze-setup-regenerate-command-images-r4" x="366" y="1142.4"
textLength="109.8" clip-path="url(#breeze-setup-regene [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0"
y="1166.8" textLength="1464"
clip-path="url(#breeze-setup-regenerate-command-images-line-47)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-setup-regenerate-command-images-r1" x="1464" y="1166.8"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-47)">
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0"
y="1191.2" textLength="24.4"
clip-path="url(#breeze-setup-regenerate-command-images-line-48)">╭─</text><text
class="breeze-setup-regenerate-command-images-r5" x="24.4" y="1191.2"
textLength="195.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-48)"> Common options </text><text
class="breeze-setup-regenerate-command-images-r5" x="219.6" y="1191.2"
textLength="1220" clip-path="url(#breeze-setu [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0"
y="1215.6" textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-49)">│</text><text
class="breeze-setup-regenerate-command-images-r4" x="24.4" y="1215.6"
textLength="109.8"
clip-path="url(#breeze-setup-regenerate-command-images-line-49)">--verbose</text><text
class="breeze-setup-regenerate-command-images-r7" x="158.6" y="1215.6"
textLength="24.4" clip-path="url(#breeze-setup-regenerate-command-im [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="1240"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-50)">│</text><text
class="breeze-setup-regenerate-command-images-r4" x="24.4" y="1240"
textLength="109.8"
clip-path="url(#breeze-setup-regenerate-command-images-line-50)">--dry-run</text><text
class="breeze-setup-regenerate-command-images-r7" x="158.6" y="1240"
textLength="24.4" clip-path="url(#breeze-setup-regenerate-command-images-l [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0"
y="1264.4" textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-51)">│</text><text
class="breeze-setup-regenerate-command-images-r4" x="24.4" y="1264.4"
textLength="109.8"
clip-path="url(#breeze-setup-regenerate-command-images-line-51)">--help   </text><text
class="breeze-setup-regenerate-command-images-r7" x="158.6" y="1264.4"
textLength="24.4" clip-path="url(#breeze-setup-regene [...]
-</text><text class="breeze-setup-regenerate-command-images-r5" x="0"
y="1288.8" textLength="1464"
clip-path="url(#breeze-setup-regenerate-command-images-line-52)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-setup-regenerate-command-images-r1" x="1464" y="1288.8"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-52)">
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="459.2"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-18)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="459.2"
textLength="1183.4"
clip-path="url(#breeze-setup-regenerate-command-images-line-18)">release-management:classify-provider-changes | release-management:clean-old-provider-artifacts | </text><text
class="breeze-setup-regenerate- [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="483.6"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-19)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="483.6"
textLength="1073.6"
clip-path="url(#breeze-setup-regenerate-command-images-line-19)">release-management:constraints-version-check | release-management:create-minor-branch | </text><text
class="breeze-setup-regenerate-command-i [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="508"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-20)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="508"
textLength="1134.6"
clip-path="url(#breeze-setup-regenerate-command-images-line-20)">release-management:generate-airflowctl-changelog | release-management:generate-constraints | </text><text
class="breeze-setup-regenerate-command- [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="532.4"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-21)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="532.4"
textLength="1244.4"
clip-path="url(#breeze-setup-regenerate-command-images-line-21)">release-management:generate-issue-content-airflow-ctl | release-management:generate-issue-content-core</text><text
class="breeze-setup-regenerate-comma [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="556.8"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-22)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="556.8"
textLength="695.4"
clip-path="url(#breeze-setup-regenerate-command-images-line-22)">| release-management:generate-issue-content-helm-chart | </text><text
class="breeze-setup-regenerate-command-images-r5" x="1451.8" y="556.8" textLe
[...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="581.2"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-23)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="581.2"
textLength="1244.4"
clip-path="url(#breeze-setup-regenerate-command-images-line-23)">release-management:generate-issue-content-providers | release-management:generate-providers-metadata |</text><text
class="breeze-setup-regenerate- [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="605.6"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-24)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="605.6"
textLength="1110.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-24)">release-management:install-provider-distributions | release-management:merge-prod-images | </text><text
class="breeze-setup-regenerate-comman [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="630"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-25)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="630"
textLength="671"
clip-path="url(#breeze-setup-regenerate-command-images-line-25)">release-management:prepare-airflow-ctl-distributions | </text><text
class="breeze-setup-regenerate-command-images-r5" x="1451.8" y="630"
textLength="12.2" cli [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="654.4"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-26)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="654.4"
textLength="1207.8"
clip-path="url(#breeze-setup-regenerate-command-images-line-26)">release-management:prepare-airflow-distributions | release-management:prepare-helm-chart-package | </text><text
class="breeze-setup-regenerat [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="678.8"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-27)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="678.8"
textLength="1171.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-27)">release-management:prepare-helm-chart-tarball | release-management:prepare-mypy-distributions | </text><text
class="breeze-setup-regenerate-c [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="703.2"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-28)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="703.2"
textLength="1244.4"
clip-path="url(#breeze-setup-regenerate-command-images-line-28)">release-management:prepare-provider-distributions | release-management:prepare-provider-documentation </text><text
class="breeze-setup-regenerate- [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="727.6"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-29)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="727.6"
textLength="1000.4"
clip-path="url(#breeze-setup-regenerate-command-images-line-29)">| release-management:prepare-python-client | release-management:prepare-tarball | </text><text
class="breeze-setup-regenerate-command-im [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="752"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-30)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="752"
textLength="1049.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-30)">release-management:prepare-task-sdk-distributions | release-management:publish-docs | </text><text
class="breeze-setup-regenerate-command-images- [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="776.4"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-31)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="776.4"
textLength="988.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-31)">release-management:publish-docs-to-s3 | release-management:release-prod-images | </text><text
class="breeze-setup-regenerate-command-images-r5 [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="800.8"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-32)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="800.8"
textLength="890.6"
clip-path="url(#breeze-setup-regenerate-command-images-line-32)">release-management:start-rc-process | release-management:start-release | </text><text
class="breeze-setup-regenerate-command-images-r5" x="145 [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="825.2"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-33)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="825.2"
textLength="915"
clip-path="url(#breeze-setup-regenerate-command-images-line-33)">release-management:tag-providers | release-management:update-constraints | </text><text
class="breeze-setup-regenerate-command-images-r5" x="145 [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="849.6"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-34)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="849.6"
textLength="1244.4"
clip-path="url(#breeze-setup-regenerate-command-images-line-34)">release-management:update-providers-next-version | release-management:verify-provider-distributions | </text><text
class="breeze-setup-regene [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="874"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-35)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="874"
textLength="1012.6"
clip-path="url(#breeze-setup-regenerate-command-images-line-35)">release-management:verify-rc-by-pmc | run | sbom | sbom:build-all-airflow-images | </text><text
class="breeze-setup-regenerat [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="898.4"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-36)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="898.4"
textLength="927.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-36)">sbom:export-dependency-information | sbom:generate-providers-requirements | </text><text
class="breeze-setup-regenerate-command-images-r5" x=" [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="922.8"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-37)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="922.8"
textLength="1159"
clip-path="url(#breeze-setup-regenerate-command-images-line-37)">sbom:update-sbom-information | setup | setup:autocomplete | setup:check-all-params-in-groups | </text><text
class="breeze-s [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="947.2"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-38)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="947.2"
textLength="1244.4"
clip-path="url(#breeze-setup-regenerate-command-images-line-38)">setup:config | setup:regenerate-command-images | setup:self-upgrade | setup:synchronize-local-mounts |</text><text
class="bree [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="971.6"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-39)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="971.6"
textLength="1098"
clip-path="url(#breeze-setup-regenerate-command-images-line-39)">setup:version | shell | start-airflow | testing | testing:airflow-ctl-integration-tests | </text><text
class="bre [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="996"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-40)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="996"
textLength="1085.8"
clip-path="url(#breeze-setup-regenerate-command-images-line-40)">testing:airflow-ctl-tests | testing:airflow-e2e-tests | testing:core-integration-tests | </text><text
class="breeze-setup-regenerate-co [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0"
y="1020.4" textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-41)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="1020.4"
textLength="890.6"
clip-path="url(#breeze-setup-regenerate-command-images-line-41)">testing:core-tests | testing:docker-compose-tests | testing:helm-tests | </text><text
class="breeze-setup-regenerate-command-image [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0"
y="1044.8" textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-42)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="1044.8"
textLength="1195.6"
clip-path="url(#breeze-setup-regenerate-command-images-line-42)">testing:providers-integration-tests | testing:providers-tests | testing:python-api-client-tests | </text><text
class="breeze-setu [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0"
y="1069.2" textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-43)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="1069.2"
textLength="1037"
clip-path="url(#breeze-setup-regenerate-command-images-line-43)">testing:system-tests | testing:task-sdk-integration-tests | testing:task-sdk-tests | </text><text
class="breeze-setup-regenerate-co [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0"
y="1093.6" textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-44)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="1093.6"
textLength="1207.8"
clip-path="url(#breeze-setup-regenerate-command-images-line-44)">testing:ui-e2e-tests | ui | ui:check-translation-completeness | ui:compile-assets | workflow-run | </text><te
[...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="1118"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-45)">│</text><text
class="breeze-setup-regenerate-command-images-r6" x="195.2" y="1118"
textLength="317.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-45)">workflow-run:publish-docs)</text><text
class="breeze-setup-regenerate-command-images-r5" x="1451.8" y="1118"
textLength="12.2" clip-path="url(#breeze-setup-regenera [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0"
y="1142.4" textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-46)">│</text><text
class="breeze-setup-regenerate-command-images-r4" x="24.4" y="1142.4"
textLength="146.4"
clip-path="url(#breeze-setup-regenerate-command-images-line-46)">--check-only</text><text
class="breeze-setup-regenerate-command-images-r1" x="195.2" y="1142.4"
textLength="1244.4" clip-path="url(#breeze-setup-regenerate-comma [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0"
y="1166.8" textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-47)">│</text><text
class="breeze-setup-regenerate-command-images-r1" x="195.2" y="1166.8"
textLength="170.8"
clip-path="url(#breeze-setup-regenerate-command-images-line-47)">together with </text><text
class="breeze-setup-regenerate-command-images-r4" x="366" y="1166.8"
textLength="109.8" clip-path="url(#breeze-setup-regene [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0"
y="1191.2" textLength="1464"
clip-path="url(#breeze-setup-regenerate-command-images-line-48)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-setup-regenerate-command-images-r1" x="1464" y="1191.2"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-48)">
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0"
y="1215.6" textLength="24.4"
clip-path="url(#breeze-setup-regenerate-command-images-line-49)">╭─</text><text
class="breeze-setup-regenerate-command-images-r5" x="24.4" y="1215.6"
textLength="195.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-49)"> Common options </text><text
class="breeze-setup-regenerate-command-images-r5" x="219.6" y="1215.6"
textLength="1220" clip-path="url(#breeze-setu [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0" y="1240"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-50)">│</text><text
class="breeze-setup-regenerate-command-images-r4" x="24.4" y="1240"
textLength="109.8"
clip-path="url(#breeze-setup-regenerate-command-images-line-50)">--verbose</text><text
class="breeze-setup-regenerate-command-images-r7" x="158.6" y="1240"
textLength="24.4" clip-path="url(#breeze-setup-regenerate-command-images-l [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0"
y="1264.4" textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-51)">│</text><text
class="breeze-setup-regenerate-command-images-r4" x="24.4" y="1264.4"
textLength="109.8"
clip-path="url(#breeze-setup-regenerate-command-images-line-51)">--dry-run</text><text
class="breeze-setup-regenerate-command-images-r7" x="158.6" y="1264.4"
textLength="24.4" clip-path="url(#breeze-setup-regenerate-command-im [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0"
y="1288.8" textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-52)">│</text><text
class="breeze-setup-regenerate-command-images-r4" x="24.4" y="1288.8"
textLength="109.8"
clip-path="url(#breeze-setup-regenerate-command-images-line-52)">--help   </text><text
class="breeze-setup-regenerate-command-images-r7" x="158.6" y="1288.8"
textLength="24.4" clip-path="url(#breeze-setup-regene [...]
+</text><text class="breeze-setup-regenerate-command-images-r5" x="0"
y="1313.2" textLength="1464"
clip-path="url(#breeze-setup-regenerate-command-images-line-53)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-setup-regenerate-command-images-r1" x="1464" y="1313.2"
textLength="12.2"
clip-path="url(#breeze-setup-regenerate-command-images-line-53)">
</text>
</g>
</g>
diff --git a/dev/breeze/doc/images/output_setup_regenerate-command-images.txt
b/dev/breeze/doc/images/output_setup_regenerate-command-images.txt
index 37b9c5d0a5f..328bd526239 100644
--- a/dev/breeze/doc/images/output_setup_regenerate-command-images.txt
+++ b/dev/breeze/doc/images/output_setup_regenerate-command-images.txt
@@ -1 +1 @@
-a48314c7b578d0c781e27c660641c459
+3a1ef6b761c61aa0fa09fe849e948a0e
diff --git
a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
index c7e6378239b..a117e9f11f6 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
@@ -811,6 +811,115 @@ def provider_action_summary(description: str,
message_type: MessageType, package
console_print()
+@release_management_group.command(
+ name="classify-provider-changes",
+ help="Classify each provider's unreleased changes with hard-coded,
high-confidence rules, "
+ "flagging ambiguous commits as 'needs_llm' for an agent/skill to assess.
Outputs JSON - a "
+ "deterministic alternative to the random '--non-interactive' run used
purely for discovery.",
+)
[email protected](
+ "--base-branch",
+ type=str,
+ default="main",
+ help="Base branch to diff the provider changes against.",
+)
[email protected](
+ "--skip-git-fetch",
+ is_flag=True,
+ help="Skip recreating/fetching the 'apache-https-for-providers' remote;
use the local state as-is.",
+)
[email protected](
+ "--output-file",
+ type=click.Path(dir_okay=False, writable=True, path_type=Path),
+ help="Write the JSON result here instead of stdout (keeps stdout free of
progress output).",
+)
+@option_github_repository
+@option_include_not_ready_providers
+@option_include_removed_providers
+@argument_provider_distributions
+@option_verbose
+@option_dry_run
+def classify_provider_changes(
+ base_branch: str,
+ skip_git_fetch: bool,
+ output_file: Path | None,
+ github_repository: str,
+ include_not_ready_providers: bool,
+ include_removed_providers: bool,
+ provider_distributions: tuple[str, ...],
+):
+ import json
+
+ from airflow_breeze.prepare_providers.provider_documentation import (
+ NEEDS_LLM_CLASSIFICATION,
+ _get_all_changes_for_package,
+ classify_change_deterministically,
+ )
+
+ perform_environment_checks()
+ cleanup_python_generated_files()
+ if not provider_distributions:
+ provider_distributions = get_available_distributions(
+ include_removed=include_removed_providers,
include_not_ready=include_not_ready_providers
+ )
+ if not skip_git_fetch:
+ run_command(["git", "remote", "rm", "apache-https-for-providers"],
check=False, stderr=DEVNULL)
+
make_sure_remote_apache_exists_and_fetch(github_repository=github_repository)
+
+ result: dict[str, Any] = {"base_branch": base_branch, "providers": {}}
+ needs_llm_total = 0
+ for provider_id in provider_distributions:
+ try:
+ basic_provider_checks(provider_id)
+ _, list_of_list_of_changes, _ = _get_all_changes_for_package(
+ provider_id,
+ base_branch,
+ reapply_templates_only=False,
+ only_min_version_update=False,
+ )
+ except Exception as e:
+ # Typically a brand-new provider with no prior release tag, or a
suspended provider.
+ result["providers"][provider_id] = {
+ "pending": True,
+ "needs_llm": True,
+ "note": f"could not compute diff (new provider or missing
release tag): {e}",
+ }
+ continue
+ changes = list_of_list_of_changes[0] if list_of_list_of_changes else []
+ if not changes:
+ continue
+ commits = []
+ for change in changes:
+ classification, reason =
classify_change_deterministically(provider_id, change)
+ if classification == NEEDS_LLM_CLASSIFICATION:
+ needs_llm_total += 1
+ commits.append(
+ {
+ "hash": change.short_hash,
+ "pr": change.pr,
+ "subject": change.message_without_backticks,
+ "classification": classification,
+ "reason": reason,
+ }
+ )
+ result["providers"][provider_id] = {
+ "current_version": get_provider_details(provider_id).versions[0],
+ "commits": commits,
+ }
+
+ payload = json.dumps(result, indent=2)
+ if output_file:
+ output_file.write_text(payload + "\n")
+ console_print(
+ f"[success]Wrote classification for {len(result['providers'])}
provider(s) "
+ f"to {output_file}[/]\n"
+ f"[info]{needs_llm_total} commit(s) flagged 'needs_llm' for LLM
assessment.[/]"
+ )
+ else:
+ # Plain stdout (not via the rich console) so the JSON is
machine-parsable.
+ print(payload)
+
+
@release_management_group.command(
name="prepare-provider-documentation",
help="Prepare CHANGELOG, README and COMMITS information for providers.",
diff --git
a/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py
b/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py
index 52c51e0c531..2b4c8073b88 100644
---
a/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py
+++
b/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py
@@ -42,6 +42,7 @@ RELEASE_PROVIDERS_COMMANDS: dict[str, str | list[str]] = {
"name": "Providers release commands",
"commands": [
"prepare-provider-documentation",
+ "classify-provider-changes",
"update-providers-next-version",
"prepare-provider-distributions",
"install-provider-distributions",
@@ -266,6 +267,24 @@ RELEASE_MANAGEMENT_PARAMETERS: dict[str, list[dict[str,
str | list[str]]]] = {
],
},
],
+ "breeze release-management classify-provider-changes": [
+ {
+ "name": "Classification options",
+ "options": [
+ "--base-branch",
+ "--skip-git-fetch",
+ "--github-repository",
+ "--output-file",
+ ],
+ },
+ {
+ "name": "Select non-regular providers",
+ "options": [
+ "--include-not-ready-providers",
+ "--include-removed-providers",
+ ],
+ },
+ ],
"breeze release-management prepare-provider-documentation": [
{
"name": "Documentation generation mode",
diff --git
a/dev/breeze/src/airflow_breeze/prepare_providers/provider_documentation.py
b/dev/breeze/src/airflow_breeze/prepare_providers/provider_documentation.py
index 3b42befe3fa..0a3053f1184 100644
--- a/dev/breeze/src/airflow_breeze/prepare_providers/provider_documentation.py
+++ b/dev/breeze/src/airflow_breeze/prepare_providers/provider_documentation.py
@@ -251,6 +251,50 @@ def classify_provider_pr_files(provider_id: str,
commit_hash: str) -> str:
return classification_result(provider_id, changed_files)
+# Classification value emitted when no high-confidence hard-coded rule matches
and
+# an LLM/agent must assess the type of change. The deterministic rules only
ever
+# decide ``documentation``/``skip``/``misc`` (the cases that can be decided
with
+# near-certainty from changed files or the commit subject); everything else is
+# deliberately left to an LLM, because ``Fix``/``Add`` subjects are too often
wrong
+# (e.g. an "Add ..." that is actually a breaking change).
+NEEDS_LLM_CLASSIFICATION = "needs_llm"
+
+# Maps the deterministic file/subject verdicts to the human-readable
classification
+# names used by the prepare-providers-documentation skill and changelog
sections.
+_DETERMINISTIC_CLASSIFICATION_NAMES = {
+ TypeOfChange.DOCUMENTATION: "documentation",
+ TypeOfChange.SKIP: "skip",
+ TypeOfChange.MISC: "misc",
+}
+
+_BUMP_SUBJECT_RE = re.compile(r"^\s*bump\b", re.IGNORECASE)
+
+
+def classify_change_deterministically(provider_id: str, change: Change) ->
tuple[str, str]:
+ """Classify a single provider change using only hard-coded,
high-confidence rules.
+
+ Returns a ``(classification, reason)`` tuple where ``classification`` is
one of
+ ``documentation``, ``skip``, ``misc`` (decided here) or ``needs_llm`` (no
+ high-confidence rule matched - an LLM/agent must assess the type of
change).
+
+ Intentionally conservative: only changed-files heuristics and a ``Bump``
+ dependency-bump subject are trusted. ``Fix``/``Add`` subjects are NOT
+ auto-classified as bugfix/feature, since they are wrong too often to be
safe.
+ """
+ files_class = classify_provider_pr_files(provider_id, change.full_hash)
+ if files_class == "documentation":
+ return
_DETERMINISTIC_CLASSIFICATION_NAMES[TypeOfChange.DOCUMENTATION], (
+ "only provider documentation (*.rst) files changed"
+ )
+ if files_class == "test_or_example_only":
+ return _DETERMINISTIC_CLASSIFICATION_NAMES[TypeOfChange.SKIP], ("only
tests / example DAGs changed")
+ if _BUMP_SUBJECT_RE.match(change.message):
+ return _DETERMINISTIC_CLASSIFICATION_NAMES[TypeOfChange.MISC], (
+ "dependency bump (subject starts with 'Bump')"
+ )
+ return NEEDS_LLM_CLASSIFICATION, "no high-confidence deterministic rule
matched"
+
+
def _get_git_log_command(
folder_paths: list[Path] | None = None, from_commit: str | None = None,
to_commit: str | None = None
) -> list[str]:
diff --git a/dev/breeze/tests/test_provider_documentation.py
b/dev/breeze/tests/test_provider_documentation.py
index 9d4340c48ae..b1048452071 100644
--- a/dev/breeze/tests/test_provider_documentation.py
+++ b/dev/breeze/tests/test_provider_documentation.py
@@ -23,6 +23,7 @@ from pathlib import Path
import pytest
from airflow_breeze.prepare_providers.provider_documentation import (
+ NEEDS_LLM_CLASSIFICATION,
VERSION_MAJOR_INDEX,
VERSION_MINOR_INDEX,
VERSION_PATCHLEVEL_INDEX,
@@ -34,6 +35,7 @@ from airflow_breeze.prepare_providers.provider_documentation
import (
_get_changes_classified,
_get_git_log_command,
classification_result,
+ classify_change_deterministically,
get_most_impactful_change,
get_version_tag,
)
@@ -490,3 +492,43 @@ def test_get_most_impactful_change(changes, expected):
def test_classify_provider_pr_files_logic(provider_id, changed_files,
expected):
result = classification_result(provider_id, changed_files)
assert result == expected
+
+
+def _make_change(subject: str) -> Change:
+ return Change(
+ full_hash="deadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
+ short_hash="deadbee",
+ date="2026-06-08",
+ version="1.0.0",
+ message=subject,
+ message_without_backticks=subject.replace("`", "'"),
+ pr="123",
+ )
+
+
[email protected](
+ ("files_class", "subject", "expected"),
+ [
+ # changed-files verdict wins, regardless of the subject
+ pytest.param("documentation", "Fix typo in docs", "documentation",
id="doc_only"),
+ pytest.param("documentation", "Bump aiohttp", "documentation",
id="doc_only_beats_bump"),
+ pytest.param("test_or_example_only", "Add a flaky test", "skip",
id="test_only"),
+ # subject-based deterministic rule: dependency bumps
+ pytest.param("other", "Bump aiohttp regarding dependabot warning",
"misc", id="bump_misc"),
+ pytest.param("other", "bump the deps group across 1 directory",
"misc", id="lowercase_bump_misc"),
+ # everything else is intentionally left to the LLM (conservative)
+ pytest.param("other", "Fix the ftp tls", NEEDS_LLM_CLASSIFICATION,
id="fix_needs_llm"),
+ pytest.param("other", "Add DmsModifyTaskOperator",
NEEDS_LLM_CLASSIFICATION, id="add_needs_llm"),
+ pytest.param("other", "Rename resumablemixin file",
NEEDS_LLM_CLASSIFICATION, id="rename_needs_llm"),
+ ],
+)
+def test_classify_change_deterministically(files_class, subject, expected):
+ from unittest import mock
+
+ with mock.patch(
+
"airflow_breeze.prepare_providers.provider_documentation.classify_provider_pr_files",
+ return_value=files_class,
+ ):
+ classification, reason = classify_change_deterministically("amazon",
_make_change(subject))
+ assert classification == expected
+ assert reason, "a non-empty reason must always be returned"