This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch v3-2-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/v3-2-test by this push:
new b0113ce6533 Fix bulk task instance update for mapped TIs and auth
error rendering (#65874)
b0113ce6533 is described below
commit b0113ce65335814a562dd4156ccf935d87da98fe
Author: Jarek Potiuk <[email protected]>
AuthorDate: Sun Apr 26 18:52:28 2026 +0200
Fix bulk task instance update for mapped TIs and auth error rendering
(#65874)
On v3-2-test, BulkTaskInstanceService had three pre-existing bugs:
1. `_perform_update` did not pass `map_index` to
`_patch_ti_validate_request`, so the validation step looked up the
wrong TI (default map_index=-1) and persistence silently no-op'd
for mapped task instances.
2. `specific_entity_map` and `all_map_entity_map` used raw
`(entity.dag_id, entity.dag_run_id, entity.task_id, ...)` tuples
as keys. When `dag_id`/`dag_run_id` came from the path and not the
request body, those attributes were `None` on the entity, while
keys produced by `_categorize_entities` resolved them via
`_extract_task_identifiers`. The resulting key mismatch meant
matched task keys never resolved back to an entity, so
`_perform_update` was never called and `response.update.success`
came back empty.
3. `action_name=action.action` rendered as `'BulkAction.UPDATE'`
/`'BulkAction.DELETE'` in authorization error messages because
Python's str-enum `__format__` returns the enum repr, not the
value. Use `.value` to get "update"/"delete".
All three fixes already exist on main; this backport is the minimal
diff to bring v3-2-test in line with main for this file.
Also includes the following pre-existing v3-2-test fixes that the
prek hooks force to land alongside any source change:
- Regenerated _private_ui.yaml, schemas.gen.ts and types.gen.ts:
generate-openapi-spec caught a description drift on `ExtraMenuItem`.
- Added `fpr` to docs/spelling_wordlist.txt: codespell flagged the
GPG colons-format `^fpr:` regex tag in dev/README_RELEASE_*.md.
Same fix already on main from #65501.
- Regenerated dev/breeze/doc/images/output_pr_auto-triage.{svg,txt}:
the boring-cyborg config update in #65872 added the
`backport-to-airflow-ctl-v0-1-test` label, which appears in the
`breeze pr auto-triage --help` output and changes its hash.
---
.../api_fastapi/core_api/openapi/_private_ui.yaml | 2 ++
.../core_api/services/public/task_instances.py | 9 +++----
.../airflow/ui/openapi-gen/requests/schemas.gen.ts | 3 ++-
.../airflow/ui/openapi-gen/requests/types.gen.ts | 3 +++
dev/breeze/doc/images/output_pr_auto-triage.svg | 28 +++++++++++-----------
dev/breeze/doc/images/output_pr_auto-triage.txt | 2 +-
docs/spelling_wordlist.txt | 1 +
7 files changed, 28 insertions(+), 20 deletions(-)
diff --git
a/airflow-core/src/airflow/api_fastapi/core_api/openapi/_private_ui.yaml
b/airflow-core/src/airflow/api_fastapi/core_api/openapi/_private_ui.yaml
index 54d93597fad..dc5c6d101dc 100644
--- a/airflow-core/src/airflow/api_fastapi/core_api/openapi/_private_ui.yaml
+++ b/airflow-core/src/airflow/api_fastapi/core_api/openapi/_private_ui.yaml
@@ -2215,6 +2215,8 @@ components:
- text
- href
title: ExtraMenuItem
+ description: Define a menu item that can be added to the menu by auth
managers
+ or plugins.
GanttResponse:
properties:
dag_id:
diff --git
a/airflow-core/src/airflow/api_fastapi/core_api/services/public/task_instances.py
b/airflow-core/src/airflow/api_fastapi/core_api/services/public/task_instances.py
index 6de3658e442..1db92911eeb 100644
---
a/airflow-core/src/airflow/api_fastapi/core_api/services/public/task_instances.py
+++
b/airflow-core/src/airflow/api_fastapi/core_api/services/public/task_instances.py
@@ -299,6 +299,7 @@ class
BulkTaskInstanceService(BulkService[BulkTaskInstanceBody]):
dag_bag=self.dag_bag,
body=entity,
session=self.session,
+ map_index=map_index,
update_mask=update_mask,
)
@@ -337,17 +338,17 @@ class
BulkTaskInstanceService(BulkService[BulkTaskInstanceBody]):
"""Bulk Update Task Instances."""
# Validate and categorize entities into specific and all map index
update sets
update_specific_map_index_task_keys, update_all_map_index_task_keys =
self._categorize_entities(
- action.entities, results, method="PUT", action_name=action.action
+ action.entities, results, method="PUT",
action_name=action.action.value
)
try:
specific_entity_map = {
- (entity.dag_id, entity.dag_run_id, entity.task_id,
entity.map_index): entity
+ self._extract_task_identifiers(entity): entity
for entity in action.entities
if entity.map_index is not None
}
all_map_entity_map = {
- (entity.dag_id, entity.dag_run_id, entity.task_id): entity
+ self._extract_task_identifiers(entity)[:3]: entity
for entity in action.entities
if entity.map_index is None
}
@@ -439,7 +440,7 @@ class
BulkTaskInstanceService(BulkService[BulkTaskInstanceBody]):
"""Bulk delete task instances."""
# Validate and categorize entities into specific and all map index
delete sets
delete_specific_map_index_task_keys, delete_all_map_index_task_keys =
self._categorize_entities(
- action.entities, results, method="DELETE",
action_name=action.action
+ action.entities, results, method="DELETE",
action_name=action.action.value
)
try:
diff --git a/airflow-core/src/airflow/ui/openapi-gen/requests/schemas.gen.ts
b/airflow-core/src/airflow/ui/openapi-gen/requests/schemas.gen.ts
index 8f421941772..1041852b42e 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/requests/schemas.gen.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/requests/schemas.gen.ts
@@ -8125,7 +8125,8 @@ export const $ExtraMenuItem = {
},
type: 'object',
required: ['text', 'href'],
- title: 'ExtraMenuItem'
+ title: 'ExtraMenuItem',
+ description: 'Define a menu item that can be added to the menu by auth
managers or plugins.'
} as const;
export const $GanttResponse = {
diff --git a/airflow-core/src/airflow/ui/openapi-gen/requests/types.gen.ts
b/airflow-core/src/airflow/ui/openapi-gen/requests/types.gen.ts
index c582d575b96..8150f58ebdc 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/requests/types.gen.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/requests/types.gen.ts
@@ -1985,6 +1985,9 @@ export type EdgeResponse = {
is_source_asset?: boolean | null;
};
+/**
+ * Define a menu item that can be added to the menu by auth managers or
plugins.
+ */
export type ExtraMenuItem = {
text: string;
href: string;
diff --git a/dev/breeze/doc/images/output_pr_auto-triage.svg
b/dev/breeze/doc/images/output_pr_auto-triage.svg
index 8cbffab9f40..8e676dafea4 100644
--- a/dev/breeze/doc/images/output_pr_auto-triage.svg
+++ b/dev/breeze/doc/images/output_pr_auto-triage.svg
@@ -371,20 +371,20 @@
</text><text class="breeze-pr-auto-triage-r5" x="0" y="581.2"
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-23)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="581.2" textLength="988.2"
clip-path="url(#breeze-pr-auto-triage-line-23)">area:db-migrations | area:deadline-alerts | area:dev-tools | area:docker-tests | </text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="581.2" textLength="12.2"
clip-path="url(#breeze-p [...]
</text><text class="breeze-pr-auto-triage-r5" x="0" y="605.6"
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-24)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="605.6" textLength="976"
clip-path="url(#breeze-pr-auto-triage-line-24)">area:go-sdk | area:helm-chart | area:kubernetes-tests | area:production-image | </text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="605.6" textLength="12.2"
clip-path="url(#breeze-pr-a [...]
</text><text class="breeze-pr-auto-triage-r5" x="0" y="630" textLength="12.2"
clip-path="url(#breeze-pr-auto-triage-line-25)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="630" textLength="1085.8"
clip-path="url(#breeze-pr-auto-triage-line-25)">area:providers | area:registry | area:system-tests | area:task-sdk | area:translations | </text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="630" textLength="12.2"
clip-path=" [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="654.4"
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-26)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="654.4" textLength="1012.6"
clip-path="url(#breeze-pr-auto-triage-line-26)">backport-to-v3-1-test | kind:documentation | provider:airbyte | provider:alibaba | </text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="654.4" textLength="12.2"
clip-path="url(#breez [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="678.8"
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-27)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="678.8" textLength="1110.2"
clip-path="url(#breeze-pr-auto-triage-line-27)">provider:amazon | provider:apache-beam | provider:apache-cassandra | provider:apache-drill </text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="678.8" textLength="12.2"
clip-path="url(#br [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="703.2"
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-28)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="703.2" textLength="890.6"
clip-path="url(#breeze-pr-auto-triage-line-28)">| provider:apache-druid | provider:apache-flink | provider:apache-hdfs | </text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="703.2" textLength="12.2"
clip-path="url(#breeze-pr-auto-triage [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="727.6"
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-29)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="727.6" textLength="902.8"
clip-path="url(#breeze-pr-auto-triage-line-29)">provider:apache-hive | provider:apache-iceberg | provider:apache-impala | </text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="727.6" textLength="12.2"
clip-path="url(#breeze-pr-auto-triage-lin [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="752" textLength="12.2"
clip-path="url(#breeze-pr-auto-triage-line-30)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="752" textLength="1110.2"
clip-path="url(#breeze-pr-auto-triage-line-30)">provider:apache-kafka | provider:apache-kylin | provider:apache-livy | provider:apache-pig </text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="752" textLength="12.2"
clip-path="url(#breeze-p [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="776.4"
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-31)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="776.4" textLength="951.6"
clip-path="url(#breeze-pr-auto-triage-line-31)">| provider:apache-pinot | provider:apache-spark | provider:apache-tinkerpop | </text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="776.4" textLength="12.2"
clip-path="url(#breeze-pr-auto-t [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="800.8"
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-32)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="800.8" textLength="1000.4"
clip-path="url(#breeze-pr-auto-triage-line-32)">provider:apprise | provider:arangodb | provider:asana | provider:atlassian-jira | </text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="800.8" textLength="12.2"
clip-path="url(#breeze [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="825.2"
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-33)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="825.2" textLength="1012.6"
clip-path="url(#breeze-pr-auto-triage-line-33)">provider:celery | provider:cloudant | provider:cncf-kubernetes | provider:cohere | </text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="825.2" textLength="12.2"
clip-path="url(#breez [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="849.6"
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-34)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="849.6" textLength="817.4"
clip-path="url(#breeze-pr-auto-triage-line-34)">provider:common-ai | provider:common-compat | provider:common-io | </text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="849.6" textLength="12.2"
clip-path="url(#breeze-pr-auto-triage-line-34)"> [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="874" textLength="12.2"
clip-path="url(#breeze-pr-auto-triage-line-35)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="874" textLength="1110.2"
clip-path="url(#breeze-pr-auto-triage-line-35)">provider:common-messaging | provider:common-sql | provider:databricks | provider:datadog | </text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="874" textLength="12.2"
clip-path="url(#bre [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="898.4"
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-36)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="898.4" textLength="1110.2"
clip-path="url(#breeze-pr-auto-triage-line-36)">provider:dbt-cloud | provider:dingding | provider:discord | provider:docker | provider:edge</text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="898.4" textLength="12.2"
clip-path="ur [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="922.8"
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-37)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="922.8" textLength="976"
clip-path="url(#breeze-pr-auto-triage-line-37)">| provider:elasticsearch | provider:exasol | provider:fab | provider:facebook | </text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="922.8" textLength="12.2"
clip-path="url(#breeze [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="947.2"
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-38)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="947.2" textLength="1000.4"
clip-path="url(#breeze-pr-auto-triage-line-38)">provider:ftp | provider:git | provider:github | provider:google | provider:grpc | </text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="947.2" textLength="12.2"
clip-path="u [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="971.6"
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-39)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="971.6" textLength="890.6"
clip-path="url(#breeze-pr-auto-triage-line-39)">provider:hashicorp | provider:http | provider:imap | provider:influxdb | </text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="971.6" textLength="12.2"
clip-path="url(#breeze-pr-auto-t [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="654.4"
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-26)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="654.4" textLength="988.2"
clip-path="url(#breeze-pr-auto-triage-line-26)">backport-to-airflow-ctl-v0-1-test | backport-to-v3-1-test | kind:documentation | </text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="654.4" textLength="12.2"
clip-path="url(#breeze-pr-auto-tri [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="678.8"
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-27)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="678.8" textLength="963.8"
clip-path="url(#breeze-pr-auto-triage-line-27)">provider:airbyte | provider:alibaba | provider:amazon | provider:apache-beam | </text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="678.8" textLength="12.2"
clip-path="url(#breeze-pr- [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="703.2"
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-28)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="703.2" textLength="927.2"
clip-path="url(#breeze-pr-auto-triage-line-28)">provider:apache-cassandra | provider:apache-drill | provider:apache-druid | </text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="703.2" textLength="12.2"
clip-path="url(#breeze-pr-auto-triage-l [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="727.6"
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-29)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="727.6" textLength="854"
clip-path="url(#breeze-pr-auto-triage-line-29)">provider:apache-flink | provider:apache-hdfs | provider:apache-hive | </text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="727.6" textLength="12.2"
clip-path="url(#breeze-pr-auto-triage-line-29)" [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="752" textLength="12.2"
clip-path="url(#breeze-pr-auto-triage-line-30)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="752" textLength="915"
clip-path="url(#breeze-pr-auto-triage-line-30)">provider:apache-iceberg | provider:apache-impala | provider:apache-kafka | </text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="752" textLength="12.2"
clip-path="url(#breeze-pr-auto-triage-line-30)"> [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="776.4"
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-31)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="776.4" textLength="1110.2"
clip-path="url(#breeze-pr-auto-triage-line-31)">provider:apache-kylin | provider:apache-livy | provider:apache-pig | provider:apache-pinot </text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="776.4" textLength="12.2"
clip-path="url(#br [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="800.8"
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-32)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="800.8" textLength="1110.2"
clip-path="url(#breeze-pr-auto-triage-line-32)">| provider:apache-spark | provider:apache-tinkerpop | provider:apprise | provider:arangodb </text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="800.8" textLength="12.2"
clip-path="ur [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="825.2"
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-33)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="825.2" textLength="1012.6"
clip-path="url(#breeze-pr-auto-triage-line-33)">| provider:asana | provider:atlassian-jira | provider:celery | provider:cloudant | </text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="825.2" textLength="12.2"
clip-path="url(# [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="849.6"
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-34)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="849.6" textLength="1110.2"
clip-path="url(#breeze-pr-auto-triage-line-34)">provider:cncf-kubernetes | provider:cohere | provider:common-ai | provider:common-compat | </text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="849.6" textLength="12.2"
clip-path="ur [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="874" textLength="12.2"
clip-path="url(#breeze-pr-auto-triage-line-35)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="874" textLength="1110.2"
clip-path="url(#breeze-pr-auto-triage-line-35)">provider:common-io | provider:common-messaging | provider:common-sql | provider:databricks </text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="874" textLength="12.2"
clip-path="url(#breeze-p [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="898.4"
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-36)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="898.4" textLength="988.2"
clip-path="url(#breeze-pr-auto-triage-line-36)">| provider:datadog | provider:dbt-cloud | provider:dingding | provider:discord | </text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="898.4" textLength="12.2"
clip-path="url(#bre [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="922.8"
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-37)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="922.8" textLength="1110.2"
clip-path="url(#breeze-pr-auto-triage-line-37)">provider:docker | provider:edge | provider:elasticsearch | provider:exasol | provider:fab |</text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="922.8" textLength="12.2"
clip-pat [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="947.2"
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-38)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="947.2" textLength="1049.2"
clip-path="url(#breeze-pr-auto-triage-line-38)">provider:facebook | provider:ftp | provider:git | provider:github | provider:google | </text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="947.2" textLength="12.2"
clip-pat [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="971.6"
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-39)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="971.6" textLength="1085.8"
clip-path="url(#breeze-pr-auto-triage-line-39)">provider:grpc | provider:hashicorp | provider:http | provider:imap | provider:influxdb | </text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="971.6" textLength="12.2" clip-
[...]
</text><text class="breeze-pr-auto-triage-r5" x="0" y="996" textLength="12.2"
clip-path="url(#breeze-pr-auto-triage-line-40)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="996" textLength="951.6"
clip-path="url(#breeze-pr-auto-triage-line-40)">provider:informatica | provider:jdbc | provider:jenkins | provider:keycloak | </text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="996" textLength="12.2"
clip-path="url(#breeze-pr-auto-tr [...]
</text><text class="breeze-pr-auto-triage-r5" x="0" y="1020.4"
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-41)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="1020.4" textLength="976"
clip-path="url(#breeze-pr-auto-triage-line-41)">provider:microsoft-azure | provider:microsoft-mssql | provider:microsoft-psrp | </text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="1020.4" textLength="12.2"
clip-path="url(#breeze-pr-auto-tri [...]
</text><text class="breeze-pr-auto-triage-r5" x="0" y="1044.8"
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-42)">│</text><text
class="breeze-pr-auto-triage-r6" x="329.4" y="1044.8" textLength="1110.2"
clip-path="url(#breeze-pr-auto-triage-line-42)">provider:microsoft-winrm | provider:mongo | provider:mysql | provider:neo4j | provider:odbc</text><text
class="breeze-pr-auto-triage-r5" x="1451.8" y="1044.8" textLength="12.2"
clip-path= [...]
diff --git a/dev/breeze/doc/images/output_pr_auto-triage.txt
b/dev/breeze/doc/images/output_pr_auto-triage.txt
index 21f65be5aaa..7965baf62a6 100644
--- a/dev/breeze/doc/images/output_pr_auto-triage.txt
+++ b/dev/breeze/doc/images/output_pr_auto-triage.txt
@@ -1 +1 @@
-d8cea45c4870fdc6a06e25481f7c85c0
+deebc98535219d8f556f4f2dca908a75
diff --git a/docs/spelling_wordlist.txt b/docs/spelling_wordlist.txt
index 2ba6bf200d5..99e47e0ca91 100644
--- a/docs/spelling_wordlist.txt
+++ b/docs/spelling_wordlist.txt
@@ -651,6 +651,7 @@ formatter
formatters
forwardability
forwardable
+fpr
fqdn
frontend
fs