This is an automated email from the ASF dual-hosted git repository.
vatsrahul1001 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 51b49b649c0 Remove newsfragments for changes already shipped in
released versions (#73300)
51b49b649c0 is described below
commit 51b49b649c0e8e2b5c0e86f06fc99afc1eadef77
Author: Kaxil Naik <[email protected]>
AuthorDate: Fri Sep 18 05:21:09 2026 +0100
Remove newsfragments for changes already shipped in released versions
(#73300)
107 newsfragments on main describe changes that are already published in
release notes: 105 in airflow-core (Airflow 3.2.0, 3.3.0, 3.3.1, 3.3.2),
one in chart (Helm Chart 1.22.0) and one in the microsoft-azure provider.
Left in place they would re-emit the same entries in the next release's
notes.
The release process already calls for this cleanup -- "Sync
RELEASE_NOTES.rst (including deleting relevant newsfragments)" in
dev/README_RELEASE_AIRFLOW.md -- but the deletions were missed across
several releases.
Each file was kept only if neither the commit that added it nor the PR it
is named after is reachable from a release tag; fragments backported to a
release branch were matched through the cherry-pick commit subject, so
changes released under a backport PR number are removed too.
Also drops four newsfragment paths from the inclusive-language hook's
exclude list in .pre-commit-config.yaml -- all four name files that no
longer exist.
---
.pre-commit-config.yaml | 4 -
airflow-core/newsfragments/54505.significant.rst | 61 -------------
airflow-core/newsfragments/55850.significant.rst | 13 ---
airflow-core/newsfragments/56866.significant.rst | 38 --------
airflow-core/newsfragments/57069.significant.rst | 16 ----
airflow-core/newsfragments/58337.feature.rst | 1 -
airflow-core/newsfragments/58524.significant.rst | 7 --
airflow-core/newsfragments/58992.significant.rst | 43 ---------
airflow-core/newsfragments/59239.feature.rst | 1 -
airflow-core/newsfragments/59780.significant.rst | 9 --
airflow-core/newsfragments/59785.significant.rst | 10 --
airflow-core/newsfragments/59835.significant.rst | 6 --
airflow-core/newsfragments/59855.significant.rst | 1 -
airflow-core/newsfragments/59880.bugfix.rst | 1 -
airflow-core/newsfragments/59938.bugfix.rst | 1 -
airflow-core/newsfragments/60268.improvement.rst | 1 -
airflow-core/newsfragments/60619.significant.rst | 22 -----
airflow-core/newsfragments/60803.significant.rst | 1 -
airflow-core/newsfragments/60804.feature.rst | 1 -
airflow-core/newsfragments/60921.significant.rst | 51 -----------
airflow-core/newsfragments/60951.significant.rst | 7 --
airflow-core/newsfragments/61153.significant.rst | 19 ----
airflow-core/newsfragments/61274.improvement.rst | 1 -
airflow-core/newsfragments/62055.significant.rst | 16 ----
airflow-core/newsfragments/62343.feature.rst | 1 -
airflow-core/newsfragments/62344.feature.rst | 1 -
airflow-core/newsfragments/62369.significant.rst | 30 ------
airflow-core/newsfragments/62487.significant.rst | 1 -
airflow-core/newsfragments/62561.bugfix.rst | 1 -
airflow-core/newsfragments/62964.bugfix.rst | 1 -
airflow-core/newsfragments/63141.bugfix.rst | 1 -
airflow-core/newsfragments/63185.significant.rst | 3 -
airflow-core/newsfragments/63205.bugfix.rst | 1 -
airflow-core/newsfragments/63266.bugfix.rst | 1 -
airflow-core/newsfragments/63296.significant.rst | 16 ----
airflow-core/newsfragments/63312.feature.rst | 1 -
airflow-core/newsfragments/63365.significant.rst | 9 --
airflow-core/newsfragments/63452.significant.rst | 7 --
airflow-core/newsfragments/63664.bugfix.rst | 1 -
airflow-core/newsfragments/63878.bugfix.rst | 1 -
airflow-core/newsfragments/63884.significant.rst | 34 -------
airflow-core/newsfragments/64067.bugfix.rst | 1 -
airflow-core/newsfragments/64207.significant.rst | 1 -
airflow-core/newsfragments/64232.feature.rst | 1 -
airflow-core/newsfragments/64503.bugfix.rst | 1 -
airflow-core/newsfragments/64552.improvement.rst | 1 -
airflow-core/newsfragments/64563.feature.rst | 1 -
airflow-core/newsfragments/64571.significant.rst | 61 -------------
airflow-core/newsfragments/64751.feature.rst | 1 -
airflow-core/newsfragments/64822.significant.rst | 1 -
airflow-core/newsfragments/65269.significant.rst | 1 -
airflow-core/newsfragments/65346.significant.rst | 3 -
airflow-core/newsfragments/65422.bugfix.rst | 1 -
airflow-core/newsfragments/65590.feature.rst | 1 -
airflow-core/newsfragments/66015.significant.rst | 3 -
airflow-core/newsfragments/66030.feature.rst | 1 -
airflow-core/newsfragments/66161.significant.rst | 12 ---
airflow-core/newsfragments/66210.bugfix.rst | 1 -
airflow-core/newsfragments/66412.significant.rst | 26 ------
airflow-core/newsfragments/66499.significant.rst | 14 ---
airflow-core/newsfragments/66584.feature.rst | 1 -
airflow-core/newsfragments/66737.significant.rst | 1 -
airflow-core/newsfragments/66807.feature.rst | 1 -
airflow-core/newsfragments/66848.feature.rst | 1 -
airflow-core/newsfragments/67056.significant.rst | 101 ---------------------
airflow-core/newsfragments/67164.significant.rst | 34 -------
airflow-core/newsfragments/67184.feature.rst | 1 -
airflow-core/newsfragments/67285.feature.rst | 1 -
airflow-core/newsfragments/67288.improvement.rst | 1 -
airflow-core/newsfragments/67475.feature.rst | 1 -
airflow-core/newsfragments/67494.significant.rst | 43 ---------
airflow-core/newsfragments/67523.feature.rst | 1 -
airflow-core/newsfragments/67586.significant.rst | 4 -
airflow-core/newsfragments/67672.improvement.rst | 1 -
airflow-core/newsfragments/67684.bugfix.rst | 1 -
airflow-core/newsfragments/67688.improvement.rst | 1 -
airflow-core/newsfragments/67716.feature.rst | 1 -
airflow-core/newsfragments/67765.bugfix.rst | 1 -
airflow-core/newsfragments/67868.bugfix.rst | 1 -
airflow-core/newsfragments/67873.bugfix.rst | 1 -
airflow-core/newsfragments/68028.feature.rst | 1 -
airflow-core/newsfragments/68266.bugfix.rst | 1 -
airflow-core/newsfragments/68518.bugfix.rst | 1 -
airflow-core/newsfragments/68749.bugfix.rst | 1 -
airflow-core/newsfragments/68888.feature.rst | 1 -
airflow-core/newsfragments/69143.bugfix.rst | 1 -
airflow-core/newsfragments/69377.bugfix.rst | 1 -
airflow-core/newsfragments/69821.bugfix.rst | 1 -
airflow-core/newsfragments/69874.bugfix.rst | 1 -
airflow-core/newsfragments/69877.bugfix.rst | 1 -
airflow-core/newsfragments/70240.bugfix.rst | 1 -
airflow-core/newsfragments/70708.bugfix.rst | 1 -
airflow-core/newsfragments/70755.significant.rst | 29 ------
airflow-core/newsfragments/70923.bugfix.rst | 1 -
airflow-core/newsfragments/70977.bugfix.rst | 1 -
airflow-core/newsfragments/71103.significant.rst | 33 -------
airflow-core/newsfragments/71113.significant.rst | 23 -----
airflow-core/newsfragments/71704.bugfix.rst | 1 -
airflow-core/newsfragments/71767.bugfix.rst | 1 -
airflow-core/newsfragments/71802.bugfix.rst | 1 -
airflow-core/newsfragments/71814.bugfix.rst | 1 -
airflow-core/newsfragments/72042.bugfix.rst | 1 -
airflow-core/newsfragments/72225.significant.rst | 27 ------
airflow-core/newsfragments/72327.bugfix.rst | 1 -
airflow-core/newsfragments/72374.bugfix.rst | 1 -
.../continuous-optional-start-date.improvement.rst | 1 -
chart/newsfragments/66970.significant.rst | 1 -
.../microsoft/azure/newsfragments/51944.bugfix.rst | 1 -
108 files changed, 907 deletions(-)
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index ecccc745ae7..af7f3a2c2e4 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -821,10 +821,6 @@ repos:
^generated/PYPI_README\.md$|
^airflow-core/src/airflow/ui/public/i18n/README\.md$|
^airflow-core/docs/.*commits\.rst$|
- ^airflow-core/newsfragments/41368\.significant\.rst$|
- ^airflow-core/newsfragments/41761.significant\.rst$|
- ^airflow-core/newsfragments/43349\.significant\.rst$|
- ^airflow-core/newsfragments/60921\.significant\.rst$|
^airflow-core/src/airflow/api_fastapi/auth/managers/simple/ui/pnpm-lock\.yaml$|
^airflow-core/src/airflow/api_fastapi/gunicorn_config\.py$|
^airflow-core/src/airflow/cli/commands/api_server_command\.py$|
diff --git a/airflow-core/newsfragments/54505.significant.rst
b/airflow-core/newsfragments/54505.significant.rst
deleted file mode 100644
index 3289308fa0f..00000000000
--- a/airflow-core/newsfragments/54505.significant.rst
+++ /dev/null
@@ -1,61 +0,0 @@
-Move task-level exception imports into the Task SDK
-
-Airflow now sources task-facing exceptions (``AirflowSkipException``,
``TaskDeferred``, etc.) from
-``airflow.sdk.exceptions``. ``airflow.exceptions`` still exposes the same
exceptions, but they are
-proxies that emit ``DeprecatedImportWarning`` so Dag authors can migrate
before the shim is removed.
-
-**What changed:**
-
-- Runtime code now consistently raises the SDK versions of task-level
exceptions.
-- The Task SDK redefines these classes so workers no longer depend on
``airflow-core`` at runtime.
-- ``airflow.providers.common.compat.sdk`` centralizes compatibility imports
for providers.
-
-**Behaviour changes:**
-
-- Sensors and other helpers that validate user input now raise ``ValueError``
(instead of
- ``AirflowException``) when ``poke_interval``/ ``timeout`` arguments are
invalid.
-- Importing deprecated exception names from ``airflow.exceptions`` logs a
warning directing users to
- the SDK import path.
-
-**Exceptions now provided by ``airflow.sdk.exceptions``:**
-
-- ``AirflowException`` and ``AirflowNotFoundException``
-- ``AirflowRescheduleException`` and ``AirflowSensorTimeout``
-- ``AirflowSkipException``, ``AirflowFailException``, ``AirflowTaskTimeout``,
``AirflowTaskTerminated``
-- ``TaskDeferred``, ``TaskDeferralTimeout``, ``TaskDeferralError``
-- ``DagRunTriggerException`` and ``DownstreamTasksSkipped``
-- ``AirflowDagCycleException`` and
``AirflowInactiveAssetInInletOrOutletException``
-- ``ParamValidationError``, ``DuplicateTaskIdFound``,
``TaskAlreadyInTaskGroup``, ``TaskNotFound``, ``XComNotFound``
-- ``AirflowOptionalProviderFeatureException``
-
-**Backward compatibility:**
-
-- Existing Dags/operators that still import from ``airflow.exceptions``
continue to work, though
- they log warnings.
-- Providers can rely on ``airflow.providers.common.compat.sdk`` to keep one
import path that works
- across supported Airflow versions.
-
-**Migration:**
-
-- Update custom operators, sensors, and extensions to import exception classes
from
- ``airflow.sdk.exceptions`` (or from the provider compat shim).
-- Adjust custom validation code to expect ``ValueError`` for invalid sensor
arguments if it
- previously caught ``AirflowException``.
-
-* Types of change
-
- * [ ] Dag changes
- * [ ] Config changes
- * [ ] API changes
- * [ ] CLI changes
- * [x] Behaviour changes
- * [ ] Plugin changes
- * [ ] Dependency changes
- * [x] Code interface changes
-
-* Migration rules needed
-
- * Import task-level exceptions such as ``AirflowSkipException``,
``TaskDeferred``,
- ``AirflowFailException``, etc. from ``airflow.sdk.exceptions`` instead of
``airflow.exceptions``.
- * Update custom sensors/operators that validated arguments by catching
``AirflowException`` to
- expect ``ValueError`` for invalid ``poke_interval`` / ``timeout`` inputs.
diff --git a/airflow-core/newsfragments/55850.significant.rst
b/airflow-core/newsfragments/55850.significant.rst
deleted file mode 100644
index 3a0407b1168..00000000000
--- a/airflow-core/newsfragments/55850.significant.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-Easily allow setting level of individual loggers
-
-Add ``namespace_levels`` config option
(``AIRFLOW__LOGGING__NAMESPACE_LEVELS``) to set log
-levels for individual named loggers, independent of the global
``logging_level``.
-
-This is particularly useful for debugging. For example, it allows enabling
debug
-logging for ``botocore`` while keeping ``sqlalchemy.engine`` quiet::
-
- AIRFLOW__LOGGING__NAMESPACE_LEVELS='botocore=debug sqlalchemy.engine=error'
-
-The format is whitespace- or comma-separated ``<logger>=<level>`` pairs.
Logger names are
-visible in task logs as the ``source`` attribute, or in the ``[]`` after the
message in the
-console log appearance.
diff --git a/airflow-core/newsfragments/56866.significant.rst
b/airflow-core/newsfragments/56866.significant.rst
deleted file mode 100644
index ac3806334a5..00000000000
--- a/airflow-core/newsfragments/56866.significant.rst
+++ /dev/null
@@ -1,38 +0,0 @@
-Support numeric multiplier values for retry_exponential_backoff parameter
-
-The ``retry_exponential_backoff`` parameter now accepts numeric values to
specify custom exponential backoff multipliers for task retries. Previously,
this parameter only accepted boolean values (``True`` or ``False``), with
``True`` using a hardcoded multiplier of ``2.0``.
-
-**New behavior:**
-
-- Numeric values (e.g., ``2.0``, ``3.5``) directly specify the exponential
backoff multiplier
-- ``retry_exponential_backoff=2.0`` doubles the delay between each retry
attempt
-- ``retry_exponential_backoff=0`` or ``False`` disables exponential backoff
(uses fixed ``retry_delay``)
-
-**Backwards compatibility:**
-
-Existing DAGs using boolean values continue to work:
-
-- ``retry_exponential_backoff=True`` → converted to ``2.0`` (maintains
original behavior)
-- ``retry_exponential_backoff=False`` → converted to ``0.0`` (no exponential
backoff)
-
-**API changes:**
-
-The REST API schema for ``retry_exponential_backoff`` has changed from ``type:
boolean`` to ``type: number``. API clients must use numeric values (boolean
values will be rejected).
-
-**Migration:**
-
-While boolean values in Python DAGs are automatically converted for backwards
compatibility, we recommend updating to explicit numeric values for clarity:
-
-- Change ``retry_exponential_backoff=True`` → ``retry_exponential_backoff=2.0``
-- Change ``retry_exponential_backoff=False`` → ``retry_exponential_backoff=0``
-
-* Types of change
-
- * [ ] Dag changes
- * [ ] Config changes
- * [x] API changes
- * [ ] CLI changes
- * [x] Behaviour changes
- * [ ] Plugin changes
- * [ ] Dependency changes
- * [ ] Code interface changes
diff --git a/airflow-core/newsfragments/57069.significant.rst
b/airflow-core/newsfragments/57069.significant.rst
deleted file mode 100644
index a4d1c22bb7a..00000000000
--- a/airflow-core/newsfragments/57069.significant.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-Git provider: Remove '.git' folder from versions in GitDagBundle
-
-A new option(``prune_dotgit_folder``) has been added to the GitDagBundle to
remove ``.git`` from
-versioned bundles by default to reduce disk usage; set
prune_dotgit_folder=False to keep
-repo metadata in the dag bundle's versions folders.
-
-* Types of change
-
- * [ ] Dag changes
- * [ ] Config changes
- * [ ] API changes
- * [ ] CLI changes
- * [x] Behaviour changes
- * [ ] Plugin changes
- * [ ] Dependency changes
- * [ ] Code interface changes
diff --git a/airflow-core/newsfragments/58337.feature.rst
b/airflow-core/newsfragments/58337.feature.rst
deleted file mode 100644
index e2720735819..00000000000
--- a/airflow-core/newsfragments/58337.feature.rst
+++ /dev/null
@@ -1 +0,0 @@
-Enable FIPS Support by making Python LTO configurable via ``PYTHON_LTO`` build
argument
diff --git a/airflow-core/newsfragments/58524.significant.rst
b/airflow-core/newsfragments/58524.significant.rst
deleted file mode 100644
index ef94f296dcf..00000000000
--- a/airflow-core/newsfragments/58524.significant.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-FastAPI dependency is updated and lower bound set to ``0.121.0``
-
-Airflow now requires FastAPI ``>=0.121.0`` and removes the previous upper
-constraint. This aligns with FastAPI's new dependency lifecycle scopes
-(e.g. request/function) that change how dependencies with ``yield`` are
-exited.
-See `FastAPI PR #14262 <https://github.com/fastapi/fastapi/pull/14262>`_.
diff --git a/airflow-core/newsfragments/58992.significant.rst
b/airflow-core/newsfragments/58992.significant.rst
deleted file mode 100644
index 22eb8fe6d8a..00000000000
--- a/airflow-core/newsfragments/58992.significant.rst
+++ /dev/null
@@ -1,43 +0,0 @@
-Move serialization/deserialization (serde) logic into Task SDK
-
-Airflow now sources serde logic from ``airflow.sdk.serde`` instead of
-``airflow.serialization.serde``. Serializer modules have moved from
``airflow.serialization.serializers.*``
-to ``airflow.sdk.serde.serializers.*``. The old import paths still work but
emit ``DeprecatedImportWarning``
-to guide migration. The backward compatibility layer will be removed in
Airflow 4.
-
-**What changed:**
-
-- Serialization/deserialization code moved from ``airflow-core`` to
``task-sdk`` package
-- Serializer modules moved from ``airflow.serialization.serializers.*`` to
``airflow.sdk.serde.serializers.*``
-- New serializers should be added to ``airflow.sdk.serde.serializers.*``
namespace
-
-**Code interface changes:**
-
-- Import serializers from ``airflow.sdk.serde.serializers.*`` instead of
``airflow.serialization.serializers.*``
-- Import serialization functions from ``airflow.sdk.serde`` instead of
``airflow.serialization.serde``
-
-**Backward compatibility:**
-
-- Existing serializers importing from ``airflow.serialization.serializers.*``
continue to work with deprecation warnings
-- All existing serializers (builtin, datetime, pandas, numpy, etc.) are
available at the new location
-
-**Migration:**
-
-- **For existing custom serializers**: Update imports to use
``airflow.sdk.serde.serializers.*``
-- **For new serializers**: Add them to ``airflow.sdk.serde.serializers.*``
namespace (e.g., create
``task-sdk/src/airflow/sdk/serde/serializers/your_serializer.py``)
-
-* Types of change
-
- * [ ] Dag changes
- * [ ] Config changes
- * [ ] API changes
- * [ ] CLI changes
- * [x] Behaviour changes
- * [ ] Plugin changes
- * [ ] Dependency changes
- * [x] Code interface changes
-
-* Migration rules needed
-
- * Import serializers from ``airflow.sdk.serde.serializers.*`` instead of
``airflow.serialization.serializers.*``
- * Add new custom serializers to ``airflow.sdk.serde.serializers.*`` namespace
diff --git a/airflow-core/newsfragments/59239.feature.rst
b/airflow-core/newsfragments/59239.feature.rst
deleted file mode 100644
index e4292a4b906..00000000000
--- a/airflow-core/newsfragments/59239.feature.rst
+++ /dev/null
@@ -1 +0,0 @@
-Support for task queue-based Trigger assignment to specific Triggerer hosts
via the new ``--queues`` CLI option for the ``trigger`` command.
diff --git a/airflow-core/newsfragments/59780.significant.rst
b/airflow-core/newsfragments/59780.significant.rst
deleted file mode 100644
index fb989784a25..00000000000
--- a/airflow-core/newsfragments/59780.significant.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-Methods removed from PriorityWeightStrategy and TaskInstance
-
-On (experimental) class ``PriorityWeightStrategy``, functions ``serialize()``
-and ``deserialize()`` were never used anywhere, and have been removed. They
-should not be relied on in user code.
-
-On class ``TaskInstance``, functions ``run()``, ``render_templates()``, and
-private members related to them have been removed. The class has been
-considered internal since 3.0, and should not be relied on in user code.
diff --git a/airflow-core/newsfragments/59785.significant.rst
b/airflow-core/newsfragments/59785.significant.rst
deleted file mode 100644
index f92ccbc0122..00000000000
--- a/airflow-core/newsfragments/59785.significant.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-Modify the information returned by ``DagBag``
-
-**New behavior:**
-- ``DagBag`` now uses ``Path.relative_to`` for consistent cross-platform
behavior.
-- ``FileLoadStat`` now has two additional nullable fields: ``bundle_path`` and
``bundle_name``.
-
-**Backward compatibility:**
-``FileLoadStat`` will no longer produce paths beginning with ``/`` with the
meaning of "relative to the dags folder".
-This is a breaking change for any custom code that performs string-based path
manipulations relying on this behavior.
-Users are advised to update such code to use ``pathlib.Path``.
diff --git a/airflow-core/newsfragments/59835.significant.rst
b/airflow-core/newsfragments/59835.significant.rst
deleted file mode 100644
index 02b9d709a49..00000000000
--- a/airflow-core/newsfragments/59835.significant.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-Methods removed from TaskInstance
-
-On class ``TaskInstance``, functions ``run()``, ``render_templates()``,
-``get_template_context()``, and private members related to them have been
-removed. The class has been considered internal since 3.0, and should not be
-relied on in user code.
diff --git a/airflow-core/newsfragments/59855.significant.rst
b/airflow-core/newsfragments/59855.significant.rst
deleted file mode 100644
index 94507ca9e3c..00000000000
--- a/airflow-core/newsfragments/59855.significant.rst
+++ /dev/null
@@ -1 +0,0 @@
-Removed the redundant ``--conn-id`` option from the ``airflow connections
list`` CLI command. Use ``airflow connections get`` instead.
diff --git a/airflow-core/newsfragments/59880.bugfix.rst
b/airflow-core/newsfragments/59880.bugfix.rst
deleted file mode 100644
index e1c35a9d640..00000000000
--- a/airflow-core/newsfragments/59880.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-Always mask sensitive configuration values in public config APIs and treat the
deprecated ``non-sensitive-only`` value as ``True``.
diff --git a/airflow-core/newsfragments/59938.bugfix.rst
b/airflow-core/newsfragments/59938.bugfix.rst
deleted file mode 100644
index db9ecabfc0c..00000000000
--- a/airflow-core/newsfragments/59938.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-Pool names with invalid characters for stats reporting are now automatically
normalized (invalid characters replaced with underscores) when emitting
metrics, preventing ``InvalidStatsNameException``. A warning is logged when
normalization occurs, suggesting the pool be renamed.
diff --git a/airflow-core/newsfragments/60268.improvement.rst
b/airflow-core/newsfragments/60268.improvement.rst
deleted file mode 100644
index 8c7e92b8f0d..00000000000
--- a/airflow-core/newsfragments/60268.improvement.rst
+++ /dev/null
@@ -1 +0,0 @@
-The ``PythonOperator`` parameter ``python_callable`` now also supports async
callables in Airflow 3.2, allowing users to run async def functions without
manually managing an event loop.
diff --git a/airflow-core/newsfragments/60619.significant.rst
b/airflow-core/newsfragments/60619.significant.rst
deleted file mode 100644
index 2d975f624bd..00000000000
--- a/airflow-core/newsfragments/60619.significant.rst
+++ /dev/null
@@ -1,22 +0,0 @@
-Add operator-level ``render_template_as_native_obj`` override
-
-Operators can now override the DAG-level ``render_template_as_native_obj``
setting,
-enabling fine-grained control over whether templates are rendered as native
Python
-types or strings on a per-task basis. Set
``render_template_as_native_obj=True`` or
-``False`` on any operator to override the DAG setting, or leave as ``None``
(default)
-to inherit from the DAG.
-
-* Types of change
-
- * [ ] Dag changes
- * [ ] Config changes
- * [ ] API changes
- * [ ] CLI changes
- * [x] Behaviour changes
- * [ ] Plugin changes
- * [ ] Dependency changes
- * [ ] Code interface changes
-
-* Migration rules needed
-
- * None - this is a new optional feature with backwards-compatible defaults
diff --git a/airflow-core/newsfragments/60803.significant.rst
b/airflow-core/newsfragments/60803.significant.rst
deleted file mode 100644
index 1054258ad38..00000000000
--- a/airflow-core/newsfragments/60803.significant.rst
+++ /dev/null
@@ -1 +0,0 @@
-Move ``upstream_map_indexes`` computation from API server to Task SDK,
reducing memory usage on task start by eliminating ``SerializedDAG`` loads.
diff --git a/airflow-core/newsfragments/60804.feature.rst
b/airflow-core/newsfragments/60804.feature.rst
deleted file mode 100644
index 7b75d02ede6..00000000000
--- a/airflow-core/newsfragments/60804.feature.rst
+++ /dev/null
@@ -1 +0,0 @@
-Add configurable LRU+TTL caching for API server DAG retrieval via
``dag_cache_size`` and ``dag_cache_ttl`` config options in the ``[api]``
section. This bounds memory growth from accumulated SerializedDAG objects in
long-running API server processes.
diff --git a/airflow-core/newsfragments/60921.significant.rst
b/airflow-core/newsfragments/60921.significant.rst
deleted file mode 100644
index c97bbcdf97a..00000000000
--- a/airflow-core/newsfragments/60921.significant.rst
+++ /dev/null
@@ -1,51 +0,0 @@
-Add gunicorn support for API server with zero-downtime worker recycling
-
-The API server now supports gunicorn as an alternative server with rolling
worker restarts
-to prevent memory accumulation in long-running processes.
-
-**Key Benefits:**
-
-* **Rolling worker restarts**: New workers spawn and pass health checks before
old workers
- are killed, ensuring zero downtime during worker recycling.
-
-* **Memory sharing**: Gunicorn uses preload + fork, so workers share memory via
- copy-on-write. This significantly reduces total memory usage compared to
uvicorn's
- multiprocess mode where each worker loads everything independently.
-
-* **Correct FIFO signal handling**: Gunicorn's SIGTTOU kills the oldest worker
(FIFO),
- not the newest (LIFO), which is correct for rolling restarts.
-
-**Configuration:**
-
-.. code-block:: ini
-
- [api]
- # Use gunicorn instead of uvicorn
- server_type = gunicorn
-
- # Enable rolling worker restarts every 12 hours
- worker_refresh_interval = 43200
-
- # Restart workers one at a time
- worker_refresh_batch_size = 1
-
-Or via environment variables:
-
-.. code-block:: bash
-
- export AIRFLOW__API__SERVER_TYPE=gunicorn
- export AIRFLOW__API__WORKER_REFRESH_INTERVAL=43200
-
-**Requirements:**
-
-Install the gunicorn extra: ``pip install 'apache-airflow-core[gunicorn]'``
-
-**Note on uvicorn (default):**
-
-The default uvicorn mode does not support rolling worker restarts because:
-
-1. With workers=1, there is no master process to send signals to
-2. uvicorn's SIGTTOU kills the newest worker (LIFO), defeating rolling restart
purposes
-3. Each uvicorn worker loads everything independently with no memory sharing
-
-If you need worker recycling or memory-efficient multi-worker deployment, use
gunicorn.
diff --git a/airflow-core/newsfragments/60951.significant.rst
b/airflow-core/newsfragments/60951.significant.rst
deleted file mode 100644
index 1f203b34a62..00000000000
--- a/airflow-core/newsfragments/60951.significant.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-Improved performance of rendered task instance fields cleanup for DAGs with
many mapped tasks (~42x faster).
-
-The config ``max_num_rendered_ti_fields_per_task`` is renamed to
``num_dag_runs_to_retain_rendered_fields``
-(old name still works with deprecation warning).
-
-Retention is now based on the N most recent dag runs rather than N most recent
task executions,
-which may result in fewer records retained for conditional/sparse tasks.
diff --git a/airflow-core/newsfragments/61153.significant.rst
b/airflow-core/newsfragments/61153.significant.rst
deleted file mode 100644
index 51f4727c240..00000000000
--- a/airflow-core/newsfragments/61153.significant.rst
+++ /dev/null
@@ -1,19 +0,0 @@
-Add synchronous callback support (``SyncCallback``) for Deadline Alerts
-
-Deadline Alerts now support synchronous callbacks via ``SyncCallback`` in
addition to the existing
-asynchronous ``AsyncCallback``. Synchronous callbacks are executed by the
executor (rather than
-the triggerer), and can optionally target a specific executor via the
``executor`` parameter.
-
-A DAG can also define multiple Deadline Alerts by passing a list to the
``deadline`` parameter,
-and each alert can use either callback type.
-
-* Types of change
-
- * [ ] Dag changes
- * [ ] Config changes
- * [ ] API changes
- * [ ] CLI changes
- * [x] Behaviour changes
- * [ ] Plugin changes
- * [ ] Dependency changes
- * [ ] Code interface changes
diff --git a/airflow-core/newsfragments/61274.improvement.rst
b/airflow-core/newsfragments/61274.improvement.rst
deleted file mode 100644
index ab9f4f4c0f0..00000000000
--- a/airflow-core/newsfragments/61274.improvement.rst
+++ /dev/null
@@ -1 +0,0 @@
-Improve Dag callback relevancy by passing a context-relevant task instance
based on the Dag's final state (e.g., the last failed, timed out, or successful
task) instead of an arbitrary lexicographical selection.
diff --git a/airflow-core/newsfragments/62055.significant.rst
b/airflow-core/newsfragments/62055.significant.rst
deleted file mode 100644
index 7e4ddaed981..00000000000
--- a/airflow-core/newsfragments/62055.significant.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-Airflow scheduler CLI command have a new ``--only-idle`` flag to only count
runs when the scheduler is idle.
-
-It will help users to run the scheduler once and process all the triggered
DAGs and all the queued tasks.
-It requires and complements the ``--num-runs`` flag so one can set a small
value to it instead of gessing how many times the scheduler will run.
-
-
-* Types of change
-
- * [ ] Dag changes
- * [ ] Config changes
- * [ ] API changes
- * [X] CLI changes
- * [ ] Behaviour changes
- * [ ] Plugin changes
- * [ ] Dependency changes
- * [ ] Code interface changes
diff --git a/airflow-core/newsfragments/62343.feature.rst
b/airflow-core/newsfragments/62343.feature.rst
deleted file mode 100644
index b69d2868d1f..00000000000
--- a/airflow-core/newsfragments/62343.feature.rst
+++ /dev/null
@@ -1 +0,0 @@
-Add worker-dispatched (asynchronous) connection testing: connection tests can
run on a worker instead of in-process on the API server (so credentials are
exercised on a worker), submitted via ``POST /connections/enqueue-test`` (which
returns a token) and polled via ``GET /connections/enqueue-test`` with the
token in the ``Airflow-Connection-Test-Token`` header, configured under the new
``[connection_test]`` section (``timeout``, ``max_concurrency``,
``reaper_interval``); the synchronous [...]
diff --git a/airflow-core/newsfragments/62344.feature.rst
b/airflow-core/newsfragments/62344.feature.rst
deleted file mode 100644
index 7fd43b0c03f..00000000000
--- a/airflow-core/newsfragments/62344.feature.rst
+++ /dev/null
@@ -1 +0,0 @@
-CLI ``connections list`` and ``variables list`` now hide sensitive values by
default. Use ``--show-values`` to display full details and ``--hide-sensitive``
to mask passwords, URIs, and extras.
diff --git a/airflow-core/newsfragments/62369.significant.rst
b/airflow-core/newsfragments/62369.significant.rst
deleted file mode 100644
index b5d4113ae58..00000000000
--- a/airflow-core/newsfragments/62369.significant.rst
+++ /dev/null
@@ -1,30 +0,0 @@
-Replace per-run TI summary requests with a single NDJSON stream
-
-The grid, graph, gantt, and task-detail views now fetch task-instance
-summaries through a single streaming HTTP request
-(``GET /ui/grid/ti_summaries/{dag_id}?run_ids=...``) instead of one request
-per run. The server emits one JSON line per run as soon as that run's task
-instances are ready, so columns appear progressively rather than all at once.
-
-**What changed:**
-
-- ``GET /ui/grid/ti_summaries/{dag_id}?run_ids=...`` is now the sole endpoint
- for TI summaries, returning an ``application/x-ndjson`` stream where each
- line is a serialized ``GridTISummaries`` object for one run.
-- The old single-run endpoint ``GET /ui/grid/ti_summaries/{dag_id}/{run_id}``
- has been removed.
-- The serialized Dag structure is loaded once and shared across all runs that
- share the same ``dag_version_id``, avoiding redundant deserialization.
-- All UI views (grid, graph, gantt, task instance, mapped task instance, group
- task instance) use the stream endpoint, passing one or more ``run_ids``.
-
-* Types of change
-
- * [ ] Dag changes
- * [ ] Config changes
- * [x] API changes
- * [ ] CLI changes
- * [x] Behaviour changes
- * [ ] Plugin changes
- * [ ] Dependency changes
- * [ ] Code interface changes
diff --git a/airflow-core/newsfragments/62487.significant.rst
b/airflow-core/newsfragments/62487.significant.rst
deleted file mode 100644
index 5de4f8fe479..00000000000
--- a/airflow-core/newsfragments/62487.significant.rst
+++ /dev/null
@@ -1 +0,0 @@
-``dag_processing.last_run.seconds_ago.{dag_file}`` is now a legacy metric. The
new metric ``dag_processing.last_run.seconds_ago`` is emitted with
``file_path``, ``bundle_name`` and ``file_name`` as tags, where ``file_path``
and ``bundle_name`` uniquely identify the DAG file. The legacy metric is still
emitted by default and can be disabled via ``[metrics] legacy_names_on``.
diff --git a/airflow-core/newsfragments/62561.bugfix.rst
b/airflow-core/newsfragments/62561.bugfix.rst
deleted file mode 100644
index 9b40b89e211..00000000000
--- a/airflow-core/newsfragments/62561.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fix backfill marked complete before DagRuns are created; add age-based cleanup
for orphaned backfills.
diff --git a/airflow-core/newsfragments/62964.bugfix.rst
b/airflow-core/newsfragments/62964.bugfix.rst
deleted file mode 100644
index 048ba18893b..00000000000
--- a/airflow-core/newsfragments/62964.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-Prevent JWT tokens from appearing in task logs by excluding the token field
from workload object representations.
diff --git a/airflow-core/newsfragments/63141.bugfix.rst
b/airflow-core/newsfragments/63141.bugfix.rst
deleted file mode 100644
index c9855b3f5e4..00000000000
--- a/airflow-core/newsfragments/63141.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fix security iframe navigation when AIRFLOW__API__BASE_URL basename is
configured
diff --git a/airflow-core/newsfragments/63185.significant.rst
b/airflow-core/newsfragments/63185.significant.rst
deleted file mode 100644
index cab2d663bb3..00000000000
--- a/airflow-core/newsfragments/63185.significant.rst
+++ /dev/null
@@ -1,3 +0,0 @@
-Fix 2.x to 3.0+ upgrade failure when a custom Dag bundle is configured
-
-The ``0082_3_1_0_make_bundle_name_not_nullable`` migration assigned every
legacy row ``bundle_name='dags-folder'``, so triggering a DagRun raised
``Requested bundle 'dags-folder' is not configured.`` on any deployment that
uses a bundle other than the default ``dags-folder``.
``DagFileProcessorManager`` now runs a one-shot, best-effort backfill at
startup that routes each affected Dag to the correct bundle based on its file
path; unmatched Dags self-heal on the next successful parse (or [...]
diff --git a/airflow-core/newsfragments/63205.bugfix.rst
b/airflow-core/newsfragments/63205.bugfix.rst
deleted file mode 100644
index 7e1781bc8ed..00000000000
--- a/airflow-core/newsfragments/63205.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fix grid view URL for dynamic task groups producing 404 by not appending
``/mapped`` to group URLs.
diff --git a/airflow-core/newsfragments/63266.bugfix.rst
b/airflow-core/newsfragments/63266.bugfix.rst
deleted file mode 100644
index a8e1ff44aec..00000000000
--- a/airflow-core/newsfragments/63266.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fix ``ti_skip_downstream`` overwriting RUNNING tasks to SKIPPED in HA
deployments.
diff --git a/airflow-core/newsfragments/63296.significant.rst
b/airflow-core/newsfragments/63296.significant.rst
deleted file mode 100644
index 566e21e0de6..00000000000
--- a/airflow-core/newsfragments/63296.significant.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-Block path traversal via ``..`` in ``dag_id`` and ``run_id``
-
-DAG IDs and run IDs containing ``..`` are now rejected by default to prevent
path traversal.
-A configuration flag ``[core] allow_double_dot_in_ids`` (default: ``False``)
is available for
-environments that rely on ``..`` in identifiers.
-
-* Types of change
-
- * [ ] Dag changes
- * [x] Config changes
- * [x] API changes
- * [ ] CLI changes
- * [x] Behaviour changes
- * [ ] Plugin changes
- * [ ] Dependency changes
- * [ ] Code interface changes
diff --git a/airflow-core/newsfragments/63312.feature.rst
b/airflow-core/newsfragments/63312.feature.rst
deleted file mode 100644
index 1af30e04ded..00000000000
--- a/airflow-core/newsfragments/63312.feature.rst
+++ /dev/null
@@ -1 +0,0 @@
-Allow individual secrets backend kwargs to be set via
``AIRFLOW__SECRETS__BACKEND_KWARG__<KEY>`` environment variables
diff --git a/airflow-core/newsfragments/63365.significant.rst
b/airflow-core/newsfragments/63365.significant.rst
deleted file mode 100644
index 494055ec525..00000000000
--- a/airflow-core/newsfragments/63365.significant.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-Structured JSON logging for all API server output
-
-The new ``json_logs`` option under the ``[logging]`` section makes Airflow
-produce all its output as newline-delimited JSON (structured logs) instead of
-human-readable formatted logs. This covers the API server (gunicorn/uvicorn),
-including access logs, warnings, and unhandled exceptions.
-
-Not all components support this yet — notably ``airflow celery worker`` but
-any non-JSON output when ``json_logs`` is enabled will be treated as a bug.
diff --git a/airflow-core/newsfragments/63452.significant.rst
b/airflow-core/newsfragments/63452.significant.rst
deleted file mode 100644
index b0ffc64d4ea..00000000000
--- a/airflow-core/newsfragments/63452.significant.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-Remove legacy OTel Trace metaclass and shared tracer wrappers
-
-The interfaces and functions located in ``airflow.traces`` were
-internal code that provided a standard way to manage spans in
-internal Airflow code. They were not intended as user-facing code
-and were never documented. They are no longer needed so we
-remove them in 3.2.
diff --git a/airflow-core/newsfragments/63664.bugfix.rst
b/airflow-core/newsfragments/63664.bugfix.rst
deleted file mode 100644
index e759d608418..00000000000
--- a/airflow-core/newsfragments/63664.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fix ``timeout_with_traceback`` crashes on Windows and non-main threads
diff --git a/airflow-core/newsfragments/63878.bugfix.rst
b/airflow-core/newsfragments/63878.bugfix.rst
deleted file mode 100644
index f85875f7433..00000000000
--- a/airflow-core/newsfragments/63878.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fixed ``airflow`` CLI commands (including ``airflow db migrate``) crashing
with ``PermissionError`` on startup when ``base_log_folder`` is configured to a
path on a mounted filesystem (e.g. NFS) whose parent directories the Airflow
user cannot create.
diff --git a/airflow-core/newsfragments/63884.significant.rst
b/airflow-core/newsfragments/63884.significant.rst
deleted file mode 100644
index 2695006b183..00000000000
--- a/airflow-core/newsfragments/63884.significant.rst
+++ /dev/null
@@ -1,34 +0,0 @@
-Add ``rerun_with_latest_version`` configuration for DAG bundle versioning
-
-When clearing, rerunning, or backfilling tasks, this setting controls whether
the
-new DAG run uses the latest bundle version or the original version from the
-initial run. It applies to clear/rerun actions (UI and API) and to backfill
-creation (API and CLI). The default is resolved using the following precedence:
-
-1. **Explicit request**: ``run_on_latest_version`` parameter in the API
request body
- or the ``--run-on-latest-version`` / ``--no-run-on-latest-version`` CLI
flag.
-2. **DAG-level**: ``rerun_with_latest_version`` parameter on the DAG
definition.
-3. **Global config**: ``[core] rerun_with_latest_version`` in ``airflow.cfg``.
-4. **Default**: ``False`` for clear/rerun, ``True`` for backfills (preserves
- historical behavior).
-
-In Airflow 2.x, reruns always used the latest code. Airflow 3.x introduced
bundle
-versioning, defaulting to the original version. This setting gives users
control
-over which behaviour is the default.
-
-See :doc:`/administration-and-deployment/dag-bundles` for full details.
-
-* Types of change
-
- * [ ] Dag changes
- * [x] Config changes
- * [x] API changes
- * [ ] CLI changes
- * [x] Behaviour changes
- * [ ] Plugin changes
- * [ ] Dependency changes
- * [ ] Code interface changes
-
-* Migration rules needed
-
- * None - this is a new optional feature with backwards-compatible defaults
diff --git a/airflow-core/newsfragments/64067.bugfix.rst
b/airflow-core/newsfragments/64067.bugfix.rst
deleted file mode 100644
index 8ae9a97f544..00000000000
--- a/airflow-core/newsfragments/64067.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-Restore live stdout logging for Elasticsearch in Airflow 3 by correctly
configuring the handler in ``airflow_local_settings.py`` and forwarding task
logs to stdout in ``LocalExecutor``.
diff --git a/airflow-core/newsfragments/64207.significant.rst
b/airflow-core/newsfragments/64207.significant.rst
deleted file mode 100644
index 3254fa20a54..00000000000
--- a/airflow-core/newsfragments/64207.significant.rst
+++ /dev/null
@@ -1 +0,0 @@
-OTel timer and timing metrics now use Histogram instead of Gauge, preserving
count, sum, and bucket distribution across recordings.
diff --git a/airflow-core/newsfragments/64232.feature.rst
b/airflow-core/newsfragments/64232.feature.rst
deleted file mode 100644
index 393a668ba82..00000000000
--- a/airflow-core/newsfragments/64232.feature.rst
+++ /dev/null
@@ -1 +0,0 @@
-Allow customizing gray, black, and white color tokens in AIRFLOW__API__THEME
in addition to brand.
diff --git a/airflow-core/newsfragments/64503.bugfix.rst
b/airflow-core/newsfragments/64503.bugfix.rst
deleted file mode 100644
index 0358708ea1f..00000000000
--- a/airflow-core/newsfragments/64503.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fix scheduler crashing with ``StaleDataError`` when a task instance is
completed or removed by another session between ``verify_integrity`` loading
task instances and ``session.flush()`` persisting them. Now caught and rolled
back like the existing ``IntegrityError`` path.
diff --git a/airflow-core/newsfragments/64552.improvement.rst
b/airflow-core/newsfragments/64552.improvement.rst
deleted file mode 100644
index ae70554cd22..00000000000
--- a/airflow-core/newsfragments/64552.improvement.rst
+++ /dev/null
@@ -1 +0,0 @@
-Allow UI theme config with only CSS overrides, icon only, or empty ``{}`` to
restore OSS defaults. The ``tokens`` field is now optional in the theme
configuration.
diff --git a/airflow-core/newsfragments/64563.feature.rst
b/airflow-core/newsfragments/64563.feature.rst
deleted file mode 100644
index d22ef4ef25a..00000000000
--- a/airflow-core/newsfragments/64563.feature.rst
+++ /dev/null
@@ -1 +0,0 @@
-Add ``@result`` decorator to mark a TaskFlow task as the DAG's result task.
When ``@dag`` is used, returning a task's ``XComArg`` from the decorated
function also designates it as the result automatically. The result task's
return value is included in the ``/dags/{dag_id}/dagRuns/{dag_run_id}/wait``
API response by default when the ``result`` query parameter is not explicitly
set.
diff --git a/airflow-core/newsfragments/64571.significant.rst
b/airflow-core/newsfragments/64571.significant.rst
deleted file mode 100644
index d9adc38f1d7..00000000000
--- a/airflow-core/newsfragments/64571.significant.rst
+++ /dev/null
@@ -1,61 +0,0 @@
-AIP-76: Asset Partitioning
-
-Airflow 3.2 introduces asset partitioning (time-based), allowing Dags to
produce and consume
-partitioned asset events identified by a ``partition_key`` (e.g.
``2026-03-10T09`` for
-an hourly partition).
-
-**New timetables**:
-
-- ``CronPartitionTimetable`` — schedules a producer Dag on a cron expression
and emits a
- partitioned asset event on each run.
-- ``PartitionedAssetTimetable`` — schedules a consumer Dag when the expected
partitioned
- asset events have arrived.
-
-**Partition mappers** transform upstream partition keys before passing them to
downstream Dags:
-
-- ``IdentityMapper`` — passes the key through unchanged (default).
-- ``StartOfHourMapper``, ``StartOfDayMapper``, ``StartOfWeekMapper``,
``StartOfMonthMapper``,
- ``StartOfQuarterMapper``, ``StartOfYearMapper`` — normalize a datetime
partition key to a
- coarser time granularity (e.g. ``StartOfDayMapper`` maps
``2026-03-10T09:30:00`` → ``2026-03-10``).
-- ``ProductMapper`` — applies a separate mapper to each ``|``-delimited
segment of a
- composite key (e.g. ``ProductMapper(IdentityMapper(), StartOfDayMapper())``
maps
- ``"us|2026-03-10T09:30:00"`` → ``"us|2026-03-10"``).
-- ``ChainMapper`` — applies mappers sequentially, passing each step's output
to the next (e.g.,
- ``ChainMapper(StartOfHourMapper(),
StartOfDayMapper(input_format="%Y-%m-%dT%H"))`` maps
- ``"2026-03-10T09:30:00"`` → ``"2026-03-10"``).
-- ``AllowedKeyMapper`` — validates the key is in a fixed allowlist and passes
it through
- unchanged, raising ``ValueError`` otherwise (e.g.
- ``AllowedKeyMapper(["us", "eu", "ap"])`` accepts ``"us"`` but rejects
``"cn"``).
-
-Mappers can be set globally on a ``PartitionedAssetTimetable`` or overridden
per upstream asset via ``partition_mapper_config``.
-
-**Rollup (one downstream run per window of upstream partitions)**:
-
-- ``RollupMapper`` — wraps a ``upstream_mapper`` (which normalises the
upstream key to the
- downstream granularity) with a ``window`` describing how many upstream
partitions form one
- downstream run. The downstream Dag run is held until every expected upstream
partition for
- the window has arrived (e.g. all 24 hourly partitions before firing a daily
summary).
-- Window types: ``HourWindow``, ``DayWindow``, ``WeekWindow``, ``MonthWindow``,
- ``QuarterWindow``, ``YearWindow`` — enumerate the upstream partition keys
that compose one
- downstream window. ``MonthWindow``/``QuarterWindow``/``YearWindow`` iterate
from the
- ``upstream_mapper``'s emitted period start, so fiscal calendars are handled
transparently when
- the upstream mapper emits non-1st period starts.
-- Typical use:
``default_partition_mapper=RollupMapper(upstream_mapper=StartOfDayMapper(),
- window=DayWindow())`` on a ``PartitionedAssetTimetable`` whose ``assets``
are the hourly
- upstream.
-
-Within the task context, the ``partition_key`` is available as
``dag_run.partition_key``. It can also be provided when manually triggering a
Dag run via the REST API (``POST /dags/{dag_id}/dagRuns``).
-
-**Known limitations**:
-
-- ``DayWindow`` with a local-timezone upstream mapper is unsatisfiable on
spring-forward days:
- the DST gap (e.g. 02:00 ET skips to 03:00) means one of the 24 expected
upstream keys is
- never emitted by producers, so the rollup window can never be fully
satisfied.
-- On fall-back days the extra hour's upstream events are not included in the
expected set and
- do not contribute to any rollup.
-- **Mitigation**: use UTC ``input_format`` (e.g. ``%Y-%m-%dT%H%z``) and ensure
upstream
- producers emit UTC partition keys to avoid local-clock ambiguity.
-
-* Migration rules needed
-
- * None — asset partitioning is a new feature. Existing Dags and assets are
unaffected.
diff --git a/airflow-core/newsfragments/64751.feature.rst
b/airflow-core/newsfragments/64751.feature.rst
deleted file mode 100644
index 41d647f143d..00000000000
--- a/airflow-core/newsfragments/64751.feature.rst
+++ /dev/null
@@ -1 +0,0 @@
-Allow DeadlineAlert intervals to be dynamically resolved at Deadline
evaluation using objects such as VariableInterval.
diff --git a/airflow-core/newsfragments/64822.significant.rst
b/airflow-core/newsfragments/64822.significant.rst
deleted file mode 100644
index 348700d4d1f..00000000000
--- a/airflow-core/newsfragments/64822.significant.rst
+++ /dev/null
@@ -1 +0,0 @@
-Users who only have read access to DAGs will no longer be able to fetch data
from the ``/dags`` endpoint, as it now requires additional permissions
(``DagAccessEntity.RUN``, ``DagAccessEntity.HITL_DETAIL``, and
``DagAccessEntity.TASK_INSTANCE``). This change was made because the endpoint
returns aggregated data from these multiple entities. Please update your custom
user roles to include read access for DAG Runs, Task Instances, and HITL
Details if those users should still have access to [...]
diff --git a/airflow-core/newsfragments/65269.significant.rst
b/airflow-core/newsfragments/65269.significant.rst
deleted file mode 100644
index c5f68aa9457..00000000000
--- a/airflow-core/newsfragments/65269.significant.rst
+++ /dev/null
@@ -1 +0,0 @@
-Synchronous deadline callbacks (``SyncCallback``) can now access Connections
and Variables from the Airflow metadata database.
diff --git a/airflow-core/newsfragments/65346.significant.rst
b/airflow-core/newsfragments/65346.significant.rst
deleted file mode 100644
index bdfc390c31c..00000000000
--- a/airflow-core/newsfragments/65346.significant.rst
+++ /dev/null
@@ -1,3 +0,0 @@
-The SMTP STARTTLS upgrade performed by ``airflow.utils.email.send_email`` now
validates the SMTP server's certificate against the system's trusted CA bundle
by default. Previously the ``starttls()`` call was made without an SSL context,
so any certificate was accepted.
-
-Deployments that intentionally point Airflow at an SMTP server with a
self-signed or otherwise non-validating certificate and need to preserve the
previous behaviour must set ``email.ssl_context = "none"`` in ``airflow.cfg``.
The ``"default"`` value (now also the default when the option is unset) uses
:func:`ssl.create_default_context`. Previously this option applied only to the
``SMTP_SSL`` path; it now applies to the STARTTLS path as well.
diff --git a/airflow-core/newsfragments/65422.bugfix.rst
b/airflow-core/newsfragments/65422.bugfix.rst
deleted file mode 100644
index efb484da723..00000000000
--- a/airflow-core/newsfragments/65422.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fix scheduler crash on asset-triggered DagRuns by eager-loading
``AssetEvent.source_aliases`` in ``SchedulerJobRunner.process_executor_events``.
diff --git a/airflow-core/newsfragments/65590.feature.rst
b/airflow-core/newsfragments/65590.feature.rst
deleted file mode 100644
index 840a15c6f04..00000000000
--- a/airflow-core/newsfragments/65590.feature.rst
+++ /dev/null
@@ -1 +0,0 @@
-Add ``on_kill()`` hook to ``BaseTrigger`` so trigger authors can cancel
external jobs (BigQuery, Databricks, etc.) when a user marks a deferred task as
failed, clears it, or marks it succeeded. The hook is a no-op by default and is
only invoked for user-initiated cancellations — triggerer restarts and
redistributions do not trigger it.
diff --git a/airflow-core/newsfragments/66015.significant.rst
b/airflow-core/newsfragments/66015.significant.rst
deleted file mode 100644
index d7060a4c814..00000000000
--- a/airflow-core/newsfragments/66015.significant.rst
+++ /dev/null
@@ -1,3 +0,0 @@
-In #64963, the Airflow UI switched from full-match ``*_pattern`` REST API
query parameters to the new index-friendly ``*_prefix_pattern`` parameters on
list endpoints. This is a behavioral change for search-as-you-type filters in
the UI: matches are prefix-based (``LIKE 'term%'`` via a range scan) instead of
substring-based (``ILIKE '%term%'``), which means the database can use B-tree
indexes and search stays fast on large deployments. The REST API itself keeps
both forms: existing ``*_p [...]
-
-In #66015, a per-searchbar "Match anywhere" toggle was added so users who
relied on the previous substring behavior can opt back into it from the UI.
Each search input and each text filter pill now has a small regex-icon toggle
next to the value; flipping it on switches that input from ``*_prefix_pattern``
to ``*_pattern``.
diff --git a/airflow-core/newsfragments/66030.feature.rst
b/airflow-core/newsfragments/66030.feature.rst
deleted file mode 100644
index c6382dc0979..00000000000
--- a/airflow-core/newsfragments/66030.feature.rst
+++ /dev/null
@@ -1 +0,0 @@
-Add ``FanOutMapper`` for one-to-many partition mapping (e.g. one weekly
upstream key to seven daily downstream Dag runs). It composes ``upstream_mapper
+ window + downstream_mapper``, mirroring the shape of ``RollupMapper`` and
reusing the existing ``Window`` classes (``DayWindow``, ``WeekWindow``,
``MonthWindow``, ``QuarterWindow``, ``YearWindow``). A new ``[scheduler]
partition_mapper_max_downstream_keys`` config caps the number of downstream
keys produced per upstream event by any ``P [...]
diff --git a/airflow-core/newsfragments/66161.significant.rst
b/airflow-core/newsfragments/66161.significant.rst
deleted file mode 100644
index 79b7313bb29..00000000000
--- a/airflow-core/newsfragments/66161.significant.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-Provider example DAGs are exposed as dedicated bundles
-
-Example DAGs shipped by provider distributions are now discovered via
-``ProvidersManager`` and registered as their own DAG bundles, one per
-provider, named ``apache-airflow-providers-<distribution>-example-dags``
-(or ``<distribution>-example-dags`` for third-party providers). The
-``[core] load_examples`` option still gates whether they are registered.
-
-REST API clients that filtered ``bundle_name`` by ``"dags-folder"`` for
-provider-shipped example DAGs (e.g. ``example_python_operator``) must
-update to the new per-provider bundle names. DAG identifiers are
-unchanged.
diff --git a/airflow-core/newsfragments/66210.bugfix.rst
b/airflow-core/newsfragments/66210.bugfix.rst
deleted file mode 100644
index 8d2176ac9e1..00000000000
--- a/airflow-core/newsfragments/66210.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fix slow and incomplete trigger cleanup in scheduler. Unreferenced triggers
are now reliably deleted instead of accumulating without bound, and the
periodic cleanup no longer scans the full ``task_instance`` table on every
cycle.
diff --git a/airflow-core/newsfragments/66412.significant.rst
b/airflow-core/newsfragments/66412.significant.rst
deleted file mode 100644
index 22b06e7eeb0..00000000000
--- a/airflow-core/newsfragments/66412.significant.rst
+++ /dev/null
@@ -1,26 +0,0 @@
-Fix triggerer race condition and deadlock that caused deferred tasks to stall
indefinitely
-
-Triggers that call synchronous SDK methods (e.g. ``get_task_states`` used by
-``safe_to_cancel`` in several Google provider operators) could crash the
triggerer's
-internal subprocess. The triggerer would then continue to heartbeat normally —
-appearing healthy to the scheduler — while silently processing zero triggers,
causing
-every deferred task to time out. This was first reported in
:github-issue:`64620`; a
-partial fix shipped in Airflow 3.2.1 (:github-pr:`64882`) but introduced a new
deadlock
-with the same visible symptom under load.
-
-Both issues are fixed by replacing the lock-based serialisation with response
-multiplexing: each request now carries a unique ID and the response is routed
back to
-the correct caller, so concurrent requests from trigger threads no longer
contend or
-deadlock regardless of how many triggers are running or what SDK methods they
call.
-
-**New: triggerer subprocess watchdog**
-
-Even with the race fixed, a trigger that blocks the event loop (e.g. by calling
-``time.sleep()`` or performing blocking I/O directly in ``async def run()``)
would
-previously leave the triggerer appearing healthy indefinitely.
-
-A new ``[triggerer] runner_health_check_threshold`` config option (default: 30
seconds)
-adds a watchdog: if the triggerer subprocess goes silent for longer than the
threshold,
-the parent process stops updating the heartbeat so the scheduler can detect
the hang and
-reassign triggers rather than waiting for them to individually time out. Set
the option
-to ``0`` to disable the watchdog.
diff --git a/airflow-core/newsfragments/66499.significant.rst
b/airflow-core/newsfragments/66499.significant.rst
deleted file mode 100644
index 5b321588876..00000000000
--- a/airflow-core/newsfragments/66499.significant.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-Tighten ``[core] allowed_deserialization_classes_regexp`` to require
full-string matches
-
-Patterns in ``[core] allowed_deserialization_classes_regexp`` are now matched
-against the entire classname using ``re.fullmatch()`` instead of
``re.match()``.
-Previously a pattern such as ``airflow\.models\.Variable`` admitted not only
-the intended class but also names that started with it
-(e.g. ``airflow.models.Variable_Malicious``), because ``re.match`` only anchors
-at the start of the string.
-
-The default value of this option is empty, so out-of-the-box deployments are
-unaffected. Deployments that configured this option with patterns relying on
-prefix-match semantics — for example ``airflow\.models\.`` to mean "any class
-under ``airflow.models``" — must add ``.*`` to the pattern
-(``airflow\.models\..*``) to retain the previous behaviour.
diff --git a/airflow-core/newsfragments/66584.feature.rst
b/airflow-core/newsfragments/66584.feature.rst
deleted file mode 100644
index e8a547d10ba..00000000000
--- a/airflow-core/newsfragments/66584.feature.rst
+++ /dev/null
@@ -1 +0,0 @@
-Sibling ``BaseEventTrigger`` instances on different ``AssetWatcher`` s can now
share a single underlying poll loop in the triggerer by overriding
``shared_stream_key``, ``open_shared_stream``, and ``filter_shared_stream``.
Triggers that opt out (the default) keep their existing independent ``run()``
loop behavior.
diff --git a/airflow-core/newsfragments/66737.significant.rst
b/airflow-core/newsfragments/66737.significant.rst
deleted file mode 100644
index 18f0e39331a..00000000000
--- a/airflow-core/newsfragments/66737.significant.rst
+++ /dev/null
@@ -1 +0,0 @@
-Custom deadline reference classes must now be registered via the new
``deadline_references`` attribute on ``AirflowPlugin``, matching the existing
pattern for custom timetables and custom partition mappers. To use a custom
``DeadlineReference`` subclass, register it in a plugin's
``deadline_references`` list. Custom references that are not registered will
raise ``DeadlineReferenceNotRegistered`` at deserialization.
diff --git a/airflow-core/newsfragments/66807.feature.rst
b/airflow-core/newsfragments/66807.feature.rst
deleted file mode 100644
index 623aecef3d2..00000000000
--- a/airflow-core/newsfragments/66807.feature.rst
+++ /dev/null
@@ -1 +0,0 @@
-Add ``dagrun.first_task_start_delay`` timer that measures the elapsed time
between a Dag run's ``queued_at`` and the start time of its first task. This
separates executor-pickup latency from the scheduler-enqueue latency captured
by ``dagrun.first_task_scheduling_delay``.
diff --git a/airflow-core/newsfragments/66848.feature.rst
b/airflow-core/newsfragments/66848.feature.rst
deleted file mode 100644
index 1d1029310f7..00000000000
--- a/airflow-core/newsfragments/66848.feature.rst
+++ /dev/null
@@ -1 +0,0 @@
-Add ``wait_policy`` to ``RollupMapper`` — ``WaitForAll()`` (default) fires
when all keys arrive; ``MinimumCount(n)`` fires on partial windows.
diff --git a/airflow-core/newsfragments/67056.significant.rst
b/airflow-core/newsfragments/67056.significant.rst
deleted file mode 100644
index 266cb2c24e7..00000000000
--- a/airflow-core/newsfragments/67056.significant.rst
+++ /dev/null
@@ -1,101 +0,0 @@
-Decouple remote logging resolution from ``airflow.logging_config``
-
-Remote task log handler resolution is now owned by the shared
-``airflow_shared.logging.factory`` module and applies a single, well-defined
-precedence rule. ``airflow.logging_config.load_logging_config`` is deprecated:
-loading the ``[logging] logging_config_class`` dict and resolving the remote
-handler are now two independent steps.
-
-**Resolution order (``resolve_remote_task_log``):**
-
-1. **User-defined ``[logging] logging_config_class``** — if the user has set
- ``logging_config_class`` to a custom module path, and that module exports a
- ``REMOTE_TASK_LOG`` (or ``DEFAULT_REMOTE_CONN_ID``) attribute, those values
- win. Existing custom logging configs keep working unchanged.
-2. **ProvidersManager scheme dispatch** — the scheme of ``[logging]
- remote_base_log_folder`` (e.g. ``s3``, ``gs``, ``wasb``) is looked up in the
- provider yaml ``remote-logging:`` registry. The matching ``RemoteLogIO``
- class is imported and instantiated via its ``from_config()`` classmethod.
- The connection id comes from ``[logging] remote_log_conn_id`` (set
- explicitly by the user; providers needing a backend default can read it
- inside ``from_config``).
-3. **Legacy attr-path fallback** — if neither of the above produced a handler,
- the resolver imports the default logging module
- (``airflow.config_templates.airflow_local_settings``) and reads its
- ``REMOTE_TASK_LOG`` / ``DEFAULT_REMOTE_CONN_ID`` attributes. This is the
- per-scheme ``if/elif`` chain in ``airflow_local_settings.py`` and is
- transitional — it will be removed once every in-tree provider exposes
- ``from_config`` in Airflow 4.0.
-
-**``RemoteLogIO.from_config`` contract:**
-
-Provider remote-log handler classes opting into provider dispatch must expose
-a ``from_config`` classmethod. The shape is::
-
- class MyRemoteLogIO(LoggingMixin):
- @classmethod
- def from_config(cls) -> "MyRemoteLogIO":
- from airflow.providers.common.compat.sdk import conf
-
- return cls(
- base_log_folder=conf.get("logging", "base_log_folder"),
- remote_base=conf.get("logging", "remote_base_log_folder"),
- delete_local_copy=conf.getboolean("logging",
"delete_local_logs"),
- # backend-specific keys live in the provider's own config
section
- ...,
- )
-
-Key properties:
-
-- Takes no arguments — the shared factory calls ``cls.from_config()`` with no
- inputs. Providers read ``airflow.providers.common.compat.sdk.conf``
themselves and pick
- the keys they care about.
-- Returns a fully instantiated ``RemoteLogIO`` (or ``RemoteLogStreamIO``).
-- Failures inside ``from_config`` are logged and treated as "no remote
- handler" (the factory returns ``None`` and the legacy fallback runs); under
- ``PYTEST_CURRENT_TEST`` the exception is re-raised so tests fail loudly.
-- Providers that don't yet implement ``from_config`` continue to work via the
- legacy ``airflow_local_settings.py`` chain (step 3).
-
-**``airflow.logging_config`` API changes:**
-
-- ``_get_logging_config()`` — new private helper that imports and validates
- the ``[logging] logging_config_class`` dict only. Does not touch remote
- logging state.
-- ``_load_logging_config()`` — new private helper that calls
- ``resolve_remote_task_log`` and caches the result on
- ``_ActiveLoggingConfig``. Used lazily by ``get_remote_task_log`` and
- ``get_default_remote_conn_id``.
-- ``load_logging_config()`` — deprecated. Emits ``DeprecationWarning`` and
- delegates to both helpers; still returns ``(logging_config_dict,
- logging_class_path)`` so existing callers keep working.
-
-**Behaviour changes:**
-
-- ``configure_logging`` no longer eagerly resolves the remote handler.
- Resolution is now lazy and happens on the first call to
- ``get_remote_task_log()`` / ``get_default_remote_conn_id()``.
-- Providers that registered a ``remote-logging:`` block but did not implement
- ``from_config`` will be skipped with a warning; the legacy fallback path
- takes over.
-
-* Types of change
-
- * [ ] Dag changes
- * [ ] Config changes
- * [ ] API changes
- * [ ] CLI changes
- * [x] Behaviour changes
- * [ ] Plugin changes
- * [ ] Dependency changes
- * [x] Code interface changes
-
-* Migration rules needed
-
- * Replace direct calls to ``airflow.logging_config.load_logging_config()``
- with ``_get_logging_config()`` (for the logging dict) and/or
- ``_load_logging_config()`` (to prime the remote-handler cache).
- * Provider remote-log handler classes should implement a no-argument
- ``from_config`` classmethod that reads
``airflow.providers.common.compat.sdk.conf``
- and returns a configured instance. Until they do, resolution falls
- through to the legacy ``airflow_local_settings.py`` chain.
diff --git a/airflow-core/newsfragments/67164.significant.rst
b/airflow-core/newsfragments/67164.significant.rst
deleted file mode 100644
index 283ac07d7af..00000000000
--- a/airflow-core/newsfragments/67164.significant.rst
+++ /dev/null
@@ -1,34 +0,0 @@
-SDK temporal partition mappers: ``timezone`` kwarg and keyword-only constructor
-
-``StartOfHourMapper``, ``StartOfDayMapper``, ``StartOfWeekMapper``,
-``StartOfMonthMapper``, ``StartOfQuarterMapper``, and ``StartOfYearMapper``
-(imported from ``airflow.sdk``) now accept a ``timezone`` keyword argument,
-matching the core ``_BaseTemporalMapper`` signature. The constructor is now
-keyword-only.
-
-**Behaviour changes:**
-
-- ``input_format`` and ``output_format`` are no longer accepted positionally.
- Callers that relied on ``StartOfDayMapper("%Y-%m-%dT%H:%M:%S")`` (valid in
- ``task-sdk`` 1.2.1) must switch to
- ``StartOfDayMapper(input_format="%Y-%m-%dT%H:%M:%S")``.
-- A string ``timezone`` is now resolved via ``parse_timezone`` at
- construction, so unknown names raise
``pendulum.tz.exceptions.InvalidTimezone``
- immediately instead of being stored verbatim and failing later (or, in some
- paths, being silently dropped during serialization).
-
-**Migration:**
-
-- Update any ``StartOf*Mapper(...)`` call sites to pass ``input_format`` and
- ``output_format`` by name.
-
-* Types of change
-
- * [ ] Dag changes
- * [ ] Config changes
- * [ ] API changes
- * [ ] CLI changes
- * [x] Behaviour changes
- * [ ] Plugin changes
- * [ ] Dependency changes
- * [x] Code interface changes
diff --git a/airflow-core/newsfragments/67184.feature.rst
b/airflow-core/newsfragments/67184.feature.rst
deleted file mode 100644
index 759e6921d51..00000000000
--- a/airflow-core/newsfragments/67184.feature.rst
+++ /dev/null
@@ -1 +0,0 @@
-Add ``max_downstream_keys`` parameter to ``PartitionMapper`` to override
``[scheduler] partition_mapper_max_downstream_keys`` per mapper instance.
diff --git a/airflow-core/newsfragments/67285.feature.rst
b/airflow-core/newsfragments/67285.feature.rst
deleted file mode 100644
index 2c4370d5ff6..00000000000
--- a/airflow-core/newsfragments/67285.feature.rst
+++ /dev/null
@@ -1 +0,0 @@
-Propagate ``partition_date`` from producer DagRuns to consumers of partitioned
assets, so date-shaped partitions are available in consumer task templates.
diff --git a/airflow-core/newsfragments/67288.improvement.rst
b/airflow-core/newsfragments/67288.improvement.rst
deleted file mode 100644
index 03293e4ffa2..00000000000
--- a/airflow-core/newsfragments/67288.improvement.rst
+++ /dev/null
@@ -1 +0,0 @@
-Speed up ``TaskGroup.topological_sort`` across Dag shapes (chain, diamond,
layered, reverse-chain); benchmarks show roughly 2-8x faster on large groups.
diff --git a/airflow-core/newsfragments/67475.feature.rst
b/airflow-core/newsfragments/67475.feature.rst
deleted file mode 100644
index ea0b227b0d5..00000000000
--- a/airflow-core/newsfragments/67475.feature.rst
+++ /dev/null
@@ -1 +0,0 @@
-``Window`` subclasses accept a ``direction`` keyword —
``Window.Direction.FORWARD`` (default) fans out the period starting at the
upstream key (forward in time); pass ``direction=Window.Direction.BACKWARD``
(e.g. ``WeekWindow(direction=Window.Direction.BACKWARD)``) to fan out the
trailing period ending at the upstream key instead.
diff --git a/airflow-core/newsfragments/67494.significant.rst
b/airflow-core/newsfragments/67494.significant.rst
deleted file mode 100644
index 93c56980e5e..00000000000
--- a/airflow-core/newsfragments/67494.significant.rst
+++ /dev/null
@@ -1,43 +0,0 @@
-Fix ``jwt_audience`` for the public API being read from two different config
sections
-
-Earlier 3.x releases contained a bug in ``BaseAuthManager``: the JWT signer
read
-``jwt_audience`` from the ``[api]`` section while the validator read it from
the documented
-``[api_auth]`` section. Only ``[api_auth] jwt_audience`` is declared in
``config.yml``;
-``[api] jwt_audience`` was never part of the schema. Default deployments were
unaffected
-because both sides fell back to ``apache-airflow``, but a deployment that set
a custom
-audience under the documented ``[api_auth]`` location had its tokens signed
with the
-default value and silently rejected by the validator. Some operators worked
around the
-bug by setting the audience under the undocumented ``[api]`` section instead,
which made
-the signer emit the configured value but left the validator on the default.
-
-Both the signer and validator now read ``jwt_audience`` from ``[api_auth]``.
-
-**What you should do:**
-
-- If you set ``[api_auth] jwt_audience`` (env
``AIRFLOW__API_AUTH__JWT_AUDIENCE``):
- nothing — this is the documented location and continues to work.
-- If you worked around the original bug by setting ``[api] jwt_audience`` (env
- ``AIRFLOW__API__JWT_AUDIENCE``): move the value to ``[api_auth]
jwt_audience``
- (env ``AIRFLOW__API_AUTH__JWT_AUDIENCE``). The value under ``[api]`` is still
- honoured for backwards compatibility and emits a ``DeprecationWarning``;
support
- for it will be removed in a future release.
-- If you set both: the documented ``[api_auth]`` value wins; remove the
``[api]``
- one to silence the deprecation warning.
-
-**Behaviour changes:**
-
-- Deployments that set ``[api_auth] jwt_audience`` will now also have their
tokens
- signed with that value (previously only validated against it). If signer and
- validator were on different audiences because of this bug, expect tokens
- generated after upgrade to be accepted again.
-
-* Types of change
-
- * [ ] Dag changes
- * [x] Config changes
- * [ ] API changes
- * [ ] CLI changes
- * [x] Behaviour changes
- * [ ] Plugin changes
- * [ ] Dependency changes
- * [ ] Code interface changes
diff --git a/airflow-core/newsfragments/67523.feature.rst
b/airflow-core/newsfragments/67523.feature.rst
deleted file mode 100644
index f5320d97bfd..00000000000
--- a/airflow-core/newsfragments/67523.feature.rst
+++ /dev/null
@@ -1 +0,0 @@
-Shared-stream triggers now support a producer-side ack channel so
message-broker upstreams (Kafka, SQS, Pub/Sub, Service Bus) can commit, delete,
or ack on the broker handle after all subscribers have accepted an event and
the resulting trigger events have been persisted to the metadata database.
diff --git a/airflow-core/newsfragments/67586.significant.rst
b/airflow-core/newsfragments/67586.significant.rst
deleted file mode 100644
index 4a1c2afb999..00000000000
--- a/airflow-core/newsfragments/67586.significant.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-Add a new **Deadlines** page under the Browse menu.
-
-The page is accessible to any role that already has ``can_read`` and
-``menu_access`` on ``DAG Runs``.
diff --git a/airflow-core/newsfragments/67672.improvement.rst
b/airflow-core/newsfragments/67672.improvement.rst
deleted file mode 100644
index 16ba1fe0d88..00000000000
--- a/airflow-core/newsfragments/67672.improvement.rst
+++ /dev/null
@@ -1 +0,0 @@
-The scheduler no longer issues the trigger-rule upstream task-instance count
query once per downstream task. For tasks that share the same upstreams within
a scheduling pass, the count is computed once and reused, cutting database
round-trips for DAGs where a mapped upstream feeds many downstream tasks.
diff --git a/airflow-core/newsfragments/67684.bugfix.rst
b/airflow-core/newsfragments/67684.bugfix.rst
deleted file mode 100644
index 9cf4ce96c85..00000000000
--- a/airflow-core/newsfragments/67684.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fix ``ONE_FAILED``/``ONE_SUCCESS``/``ONE_DONE`` trigger rules inside a mapped
task group being evaluated against every upstream instance instead of the
upstream instance sharing the task's own map index, which wrongly triggered the
rule for every expanded instance when only one upstream had failed (or
succeeded).
diff --git a/airflow-core/newsfragments/67688.improvement.rst
b/airflow-core/newsfragments/67688.improvement.rst
deleted file mode 100644
index d2a641ac00c..00000000000
--- a/airflow-core/newsfragments/67688.improvement.rst
+++ /dev/null
@@ -1 +0,0 @@
-Further optimize ``TaskGroup.topological_sort`` for reverse-declared DAGs via
pass-number traversal; dramatically improves the O(N²) worst-case for
adversarial shapes (e.g., reverse-insertion chains).
diff --git a/airflow-core/newsfragments/67716.feature.rst
b/airflow-core/newsfragments/67716.feature.rst
deleted file mode 100644
index 63daeda113c..00000000000
--- a/airflow-core/newsfragments/67716.feature.rst
+++ /dev/null
@@ -1 +0,0 @@
-Add ``FixedKeyMapper`` and ``SegmentWindow`` for categorical asset-partition
rollup. ``FixedKeyMapper`` collapses any upstream partition key onto a single
fixed downstream key, and ``SegmentWindow`` enumerates a fixed categorical
segment set the scheduler waits for. Composing
``RollupMapper(FixedKeyMapper(...), SegmentWindow(...))`` expresses a
categorical rollup, mirroring the temporal rollup shape, and ``SegmentWindow``
also composes with ``FanOutMapper`` for categorical scatter. Both [...]
diff --git a/airflow-core/newsfragments/67765.bugfix.rst
b/airflow-core/newsfragments/67765.bugfix.rst
deleted file mode 100644
index 1838418be90..00000000000
--- a/airflow-core/newsfragments/67765.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-Add the ``run_type`` tag to the ``dagrun.duration.failed`` metric emitted when
a Dag run times out, making it consistent with the same metric emitted on
normal Dag run completion.
diff --git a/airflow-core/newsfragments/67868.bugfix.rst
b/airflow-core/newsfragments/67868.bugfix.rst
deleted file mode 100644
index 55535ed4b4f..00000000000
--- a/airflow-core/newsfragments/67868.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-The ``kwargs`` field of trigger objects returned by the REST API (for example
in the ``trigger`` of a task-instance response) no longer exposes the decrypted
trigger keyword arguments. Those kwargs can contain credentials a deferred
operator hands to its trigger (an API key, a token, …), so the field is now
always returned empty, as ``"{}"``. The field is retained in the response
schema for backwards compatibility — and is now marked ``deprecated`` there so
consumers are nudged off it — [...]
diff --git a/airflow-core/newsfragments/67873.bugfix.rst
b/airflow-core/newsfragments/67873.bugfix.rst
deleted file mode 100644
index 5d691367860..00000000000
--- a/airflow-core/newsfragments/67873.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fix ``none_failed_min_one_success`` trigger rule evaluation when no upstream
task succeeds, including mapped tasks whose upstream instances are all
``removed``.
diff --git a/airflow-core/newsfragments/68028.feature.rst
b/airflow-core/newsfragments/68028.feature.rst
deleted file mode 100644
index fa9db5b21d8..00000000000
--- a/airflow-core/newsfragments/68028.feature.rst
+++ /dev/null
@@ -1 +0,0 @@
-Human-in-the-loop tasks now wait in a new ``awaiting_input`` task state
managed by the scheduler instead of deferring onto the triggerer, so the
triggerer can scale to zero while tasks await a human response. Waiting tasks
resume directly on a response or on the scheduler's response-timeout sweep. On
Airflow versions before 3.3 the operator falls back to the previous
trigger-based path.
diff --git a/airflow-core/newsfragments/68266.bugfix.rst
b/airflow-core/newsfragments/68266.bugfix.rst
deleted file mode 100644
index 0d41b654186..00000000000
--- a/airflow-core/newsfragments/68266.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-Asset-triggered partitioned Dag runs now set ``partition_date`` when the
consumer's partition mapper is temporal (directly, or wrapped in
``RollupMapper`` / ``FanOutMapper`` / ``ChainMapper``). Non-temporal mappers
leave ``partition_date`` unset.
diff --git a/airflow-core/newsfragments/68518.bugfix.rst
b/airflow-core/newsfragments/68518.bugfix.rst
deleted file mode 100644
index db2792de216..00000000000
--- a/airflow-core/newsfragments/68518.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-Keep Dags from ZIP archives active when ``[core] dag_discovery_safe_mode`` is
``False``. Previously, Dags packaged in ZIP files whose source did not contain
the ``airflow``/``dag`` keywords were parsed and activated by the Dag file
processor but then immediately deactivated, because the scan that determines
which files still exist always applied the keyword heuristic regardless of the
configured ``dag_discovery_safe_mode``.
diff --git a/airflow-core/newsfragments/68749.bugfix.rst
b/airflow-core/newsfragments/68749.bugfix.rst
deleted file mode 100644
index 592b875b2f5..00000000000
--- a/airflow-core/newsfragments/68749.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-Asset-triggered Dags now honor ``catchup`` for historical asset events. With
``catchup`` off (the default), a newly added asset-triggered Dag no longer
consumes events recorded before it started scheduling on those assets; its
first run is bounded at the moment the schedule reference was created instead
of reprocessing the entire backlog. With ``catchup`` on, the backlog is still
replayed (#39456).
diff --git a/airflow-core/newsfragments/68888.feature.rst
b/airflow-core/newsfragments/68888.feature.rst
deleted file mode 100644
index 456f9907e9d..00000000000
--- a/airflow-core/newsfragments/68888.feature.rst
+++ /dev/null
@@ -1 +0,0 @@
-Add ``[triggerer] shared_stream_cohort_grace_period`` to delay the start of
polling after a shared-stream group is created
diff --git a/airflow-core/newsfragments/69143.bugfix.rst
b/airflow-core/newsfragments/69143.bugfix.rst
deleted file mode 100644
index f6a2b7880d9..00000000000
--- a/airflow-core/newsfragments/69143.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fix drifting, mis-aligned data intervals for monthly and yearly
(``relativedelta``) schedules when ``catchup`` is disabled. The first interval
is now anchored to the Dag's ``start_date`` instead of a fixed 30-day/365-day
grid, matching the boundaries produced with ``catchup=True``.
diff --git a/airflow-core/newsfragments/69377.bugfix.rst
b/airflow-core/newsfragments/69377.bugfix.rst
deleted file mode 100644
index bfbb5f560f6..00000000000
--- a/airflow-core/newsfragments/69377.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-A task with the ``none_failed_min_one_success`` trigger rule inside a
dynamically mapped task group is no longer skipped before the task group
expands. Previously such a task was evaluated on its not-yet-expanded summary
task instance, found no successful upstreams (because the upstream had already
expanded away from ``map_index -1``), and was wrongly skipped instead of
expanding and running.
diff --git a/airflow-core/newsfragments/69821.bugfix.rst
b/airflow-core/newsfragments/69821.bugfix.rst
deleted file mode 100644
index 9dca1eb7d0c..00000000000
--- a/airflow-core/newsfragments/69821.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-Deferrable tasks that fail via a trigger-emitted ``TaskFailedEvent`` now
respect retries: if the task has retries remaining it goes ``up_for_retry`` and
runs ``on_retry_callback``, instead of always failing terminally and running
``on_failure_callback``.
diff --git a/airflow-core/newsfragments/69874.bugfix.rst
b/airflow-core/newsfragments/69874.bugfix.rst
deleted file mode 100644
index ad0d87336aa..00000000000
--- a/airflow-core/newsfragments/69874.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-Listeners registered via ``on_task_instance_success`` /
``on_task_instance_failed`` are now called for non-teardown task instances that
were running when a Dag Run state is manually set to a terminal state (e.g. via
the API or UI).
diff --git a/airflow-core/newsfragments/69877.bugfix.rst
b/airflow-core/newsfragments/69877.bugfix.rst
deleted file mode 100644
index 7eef9afc990..00000000000
--- a/airflow-core/newsfragments/69877.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-Restore delivery of ``email_on_failure`` and ``email_on_retry`` task alerts
through a custom ``[email] email_backend``. These alerts were routed
unconditionally through ``SmtpNotifier``, so deployments using an Amazon SES,
SendGrid or org-internal backend stopped receiving them. The default remains
``SmtpNotifier``. Note that a configured ``email_backend`` which cannot be
imported now fails with a logged error instead of silently falling back to SMTP
-- check that ``[email] email_backend [...]
diff --git a/airflow-core/newsfragments/70240.bugfix.rst
b/airflow-core/newsfragments/70240.bugfix.rst
deleted file mode 100644
index 66f3608b20a..00000000000
--- a/airflow-core/newsfragments/70240.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fix ``airflow config update --option`` and ``--ignore-option`` never matching
any configuration option.
diff --git a/airflow-core/newsfragments/70708.bugfix.rst
b/airflow-core/newsfragments/70708.bugfix.rst
deleted file mode 100644
index 16aec527981..00000000000
--- a/airflow-core/newsfragments/70708.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-The ``@deadline_reference`` decorator can now be used without parentheses.
Previously, using it that way silently skipped registration and rebound the
decorated class to the decorator's inner function, which surfaced later as an
unrelated ``TypeError``.
diff --git a/airflow-core/newsfragments/70755.significant.rst
b/airflow-core/newsfragments/70755.significant.rst
deleted file mode 100644
index f953fa49f40..00000000000
--- a/airflow-core/newsfragments/70755.significant.rst
+++ /dev/null
@@ -1,29 +0,0 @@
-Team scoped values of options registered as sensitive are now hidden
-
-Configuration options are registered as sensitive under their base section, so
until now only the
-base spelling of an option was masked. A team scoped override -- set in a
``[<team>=<section>]``
-config file section, or through an ``AIRFLOW__<TEAM>___<SECTION>__<KEY>``
environment variable --
-was not recognised as the same option and was returned in full.
-
-Sensitivity is now decided after resolving the team scoped spelling back to
the base option, so a
-team scoped value is masked exactly as the base value already was.
-
-**Behaviour changes:**
-
-- ``AirflowConfigParser.as_dict(display_sensitive=False)``, ``GET /config``,
- ``GET /config/section/{section}/option/{option}`` and ``airflow config
list`` now return
- ``< hidden >`` for a team scoped value of an option registered as sensitive.
Deployments that
- read a team's real value through any of these will now receive the mask; use
- ``display_sensitive=True`` where a real value is required and appropriate.
-- Team scoped ``_cmd`` and ``_secret`` entries are replaced with ``< hidden
>`` in place, rather
- than being resolved into their value and removed as they are in a base
section. Resolving them
- is not supported for a team, so the command string or secret path is no
longer shown either.
-- Non team configuration is unaffected, and ``display_sensitive=True``
continues to return real
- values.
-
-**New public helpers on the shared configuration parser** (additive; no
signatures changed):
-
-- ``team_section_name(team_name, section)`` builds the team scoped config file
section name.
-- ``base_section_name(section)`` recovers the base section from a possibly
team scoped one.
-- ``AirflowConfigParser.is_sensitive_option(section, key)`` reports whether an
option is
- registered as sensitive under any of its spellings.
diff --git a/airflow-core/newsfragments/70923.bugfix.rst
b/airflow-core/newsfragments/70923.bugfix.rst
deleted file mode 100644
index b1545b7fb77..00000000000
--- a/airflow-core/newsfragments/70923.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fix ``airflow db clean`` never purging the ``callback`` table. The table was
renamed from ``callback_request`` in Airflow 3.2.0 but the cleanup
configuration kept the old name, and a configured table that does not exist is
skipped with only a warning, so the rows were never deleted and the table grew
without bound. Only callbacks that can no longer run are purged: a callback
still awaiting execution owns its ``deadline`` row through an ``ON DELETE
CASCADE`` foreign key, so deleting one w [...]
diff --git a/airflow-core/newsfragments/70977.bugfix.rst
b/airflow-core/newsfragments/70977.bugfix.rst
deleted file mode 100644
index 0a3f85b63c4..00000000000
--- a/airflow-core/newsfragments/70977.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fixed ``airflow config lint`` silently skipping removal rules that only apply
to a specific value.
diff --git a/airflow-core/newsfragments/71103.significant.rst
b/airflow-core/newsfragments/71103.significant.rst
deleted file mode 100644
index 9dd43544b0d..00000000000
--- a/airflow-core/newsfragments/71103.significant.rst
+++ /dev/null
@@ -1,33 +0,0 @@
-pandas 3 changes how DataFrame XComs are stored and read back
-
-pandas 3 exposes its public classes from the ``pandas`` namespace, so a
DataFrame is qualified as
-``pandas.DataFrame`` instead of ``pandas.core.frame.DataFrame``. XComs record
that name alongside the
-serialized value, so the name written into the metadata database depends on
the pandas version of the
-component that pushed the value. Airflow registers both names, and a DataFrame
written by either
-pandas version can be read by either — no configuration change is needed, and
existing XComs stay
-readable.
-
-What you should do:
-
-* **Roll this Airflow version out to every component before pandas 3 reaches
any of them** — workers
- in particular. A component that predates this change cannot read a DataFrame
XCom written under
- pandas 3, and fails the pull with:
-
- .. code-block:: text
-
- ImportError: pandas.DataFrame was not found in allow list for
deserialization imports.
- To allow it, add it to allowed_deserialization_classes in the
configuration
-
- The message points at configuration, but the allow list is not the cause and
changing it does not
- help. The rows are not corrupt: they become readable again as soon as the
reader is upgraded.
-
-* **Treat a downgrade as a one-way door for those XComs.** Rolling back to an
Airflow version without
- this change strands any DataFrame XCom written while on pandas 3, with the
same error, until you
- roll forward again.
-
-* **Review Dags that inspect the dtypes of a pulled DataFrame.** The pandas
version of the *reader*
- determines what a pulled DataFrame looks like, not the version that wrote
it. Under pandas 3, a
- column of strings comes back with the ``str`` dtype rather than ``object``,
and its missing values
- come back as ``nan`` rather than ``None``. Values are unchanged, but
downstream code that branches
- on ``dtype == "object"``, checks cells with ``is None``, or compares against
a reference frame with
- ``DataFrame.equals()`` can behave differently after the upgrade.
diff --git a/airflow-core/newsfragments/71113.significant.rst
b/airflow-core/newsfragments/71113.significant.rst
deleted file mode 100644
index 1770df4a8a2..00000000000
--- a/airflow-core/newsfragments/71113.significant.rst
+++ /dev/null
@@ -1,23 +0,0 @@
-Backfill endpoints no longer disclose which backfill ids exist across Dags
-
-The five routes that name a backfill in their path -- ``GET
/backfills/{backfill_id}``,
-``GET /backfills/{backfill_id}/dag_runs`` and the ``pause``, ``unpause`` and
``cancel``
-routes -- resolved the Dag they authorize against from the ``dag_id`` supplied
on the
-request whenever the path's id matched no row. An unknown id and a backfill on
a Dag the
-caller cannot see therefore answered differently, which enumerates backfill
ids across Dags.
-
-The backfill named in the path is now the only thing those routes authorize
against.
-
-**Behaviour changes:**
-
-- A backfill whose Dag the caller may not read returns ``404`` with detail
- ``Backfill not found``, the same answer an unknown id gets, where it
previously returned
- ``403``. A caller who may read the Dag still gets ``403`` for a write they
are not allowed.
-- A ``backfill_id`` in the path is never authorized against a ``dag_id`` in
the request body
- or query string. ``GET /backfills``, ``POST /backfills`` and ``POST
/backfills/dry_run``
- name no backfill in their path and keep authorizing off the request.
-- All five routes now answer an unknown id with the same detail, ``Backfill
not found``.
- ``GET /backfills/{backfill_id}/dag_runs`` previously answered
- ``Backfill with id {backfill_id} not found`` and the ``pause``, ``unpause``
and ``cancel``
- routes ``Could not find backfill with id {backfill_id}``. Clients matching
on ``detail``
- must be updated.
diff --git a/airflow-core/newsfragments/71704.bugfix.rst
b/airflow-core/newsfragments/71704.bugfix.rst
deleted file mode 100644
index 5cd2aed7ec0..00000000000
--- a/airflow-core/newsfragments/71704.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-The scheduler's Dag cache is now a bounded LRU of 512 versions, so scheduler
memory no longer grows with every Dag version the process has ever seen.
diff --git a/airflow-core/newsfragments/71767.bugfix.rst
b/airflow-core/newsfragments/71767.bugfix.rst
deleted file mode 100644
index 18c2de4a84a..00000000000
--- a/airflow-core/newsfragments/71767.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fix misleading deadline warnings when DagRun-based deadline references
evaluate to None because the referenced timestamp field is null.
diff --git a/airflow-core/newsfragments/71802.bugfix.rst
b/airflow-core/newsfragments/71802.bugfix.rst
deleted file mode 100644
index 0c173c40e4d..00000000000
--- a/airflow-core/newsfragments/71802.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fixed ``VariableInterval`` deadline intervals to allow zero and negative
offsets, matching the existing ``timedelta`` interval semantics.
``VariableInterval`` is now converted to the core-side
``SerializedVariableInterval`` representation during deadline deserialization
and resolved during deadline evaluation.
diff --git a/airflow-core/newsfragments/71814.bugfix.rst
b/airflow-core/newsfragments/71814.bugfix.rst
deleted file mode 100644
index 220e3141d3d..00000000000
--- a/airflow-core/newsfragments/71814.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-The API server now honors ``[api] dag_cache_ttl`` when ``dag_cache_size`` is
0, so cached serialized Dags can expire even when their count is not limited.
diff --git a/airflow-core/newsfragments/72042.bugfix.rst
b/airflow-core/newsfragments/72042.bugfix.rst
deleted file mode 100644
index 49651487d55..00000000000
--- a/airflow-core/newsfragments/72042.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-The write-conflict check performed when setting or updating a team-scoped
Variable now resolves against that team rather than the global scope, so a
secrets backend shadowing the key within the team is detected and a global-only
definition no longer warns about a conflict that would not shadow the read.
diff --git a/airflow-core/newsfragments/72225.significant.rst
b/airflow-core/newsfragments/72225.significant.rst
deleted file mode 100644
index f515ad0c703..00000000000
--- a/airflow-core/newsfragments/72225.significant.rst
+++ /dev/null
@@ -1,27 +0,0 @@
-An explicit credential now takes precedence over the session cookie
-
-``get_user()`` codes the precedence bearer, then OAuth2, then the session
cookie, but
-that block was unreachable whenever a cookie was present.
``JWTRefreshMiddleware`` runs
-first, resolves a user from the ``_token`` cookie alone and stamps it on
-``request.state``, and ``get_user()`` returned that cached user before looking
at either
-explicit credential. The effective order on every core-API route was cookie
over bearer.
-
-A request carrying both a session cookie and an explicit credential therefore
executed,
-and was recorded in the audit log, as the cookie's principal rather than the
identity the
-client presented. The cached user is now honoured only when the request
carries no
-explicit credential.
-
-**Behaviour changes:**
-
-- A request carrying **both** a ``_token`` cookie and an ``Authorization:
Bearer`` header
- is now resolved as the bearer token's principal, where it was previously
resolved as the
- cookie's. The same applies to a cookie combined with an OAuth2 token.
-- An **invalid or expired** explicit credential is now rejected with
``401``/``403`` even
- when a valid ``_token`` cookie accompanies it. Previously the cookie
silently took over
- and the request succeeded as the cookie's principal; the failure is now loud.
-- Requests carrying a single credential are unaffected. Cookie-only browser
sessions keep
- the token-refresh behaviour of ``JWTRefreshMiddleware`` unchanged.
-- Clients that relied on the cookie winning -- for example a browser-based
tool that sent a
- service account's bearer token while a user session cookie was present, and
expected the
- user's identity to apply -- will now act as the bearer token's principal.
Remove the
- header, or the cookie, to select the intended identity explicitly.
diff --git a/airflow-core/newsfragments/72327.bugfix.rst
b/airflow-core/newsfragments/72327.bugfix.rst
deleted file mode 100644
index 05a35cdce40..00000000000
--- a/airflow-core/newsfragments/72327.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fix asset-triggered tasks failing before they start for workers running Task
SDK 1.2.x (Airflow 3.2.x), which request execution API version ``2026-04-06``.
Those workers received a ``partition_key`` field on the Dag run's consumed
asset events that their models reject, raising an ``extra_forbidden``
validation error. The field is now gated behind version ``2026-06-30``, where
it was introduced; workers on ``2026-06-30`` or newer are unaffected.
diff --git a/airflow-core/newsfragments/72374.bugfix.rst
b/airflow-core/newsfragments/72374.bugfix.rst
deleted file mode 100644
index cf444e64b95..00000000000
--- a/airflow-core/newsfragments/72374.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-The UI now configures the generated API client's base URL from ``<base href>``
in a module with no application dependencies, so a request issued while the app
is still initializing -- the i18n version lookup that builds the translation
cache buster -- is resolved against the configured path prefix instead of being
sent to the origin root.
diff --git
a/airflow-core/newsfragments/continuous-optional-start-date.improvement.rst
b/airflow-core/newsfragments/continuous-optional-start-date.improvement.rst
deleted file mode 100644
index c001c620933..00000000000
--- a/airflow-core/newsfragments/continuous-optional-start-date.improvement.rst
+++ /dev/null
@@ -1 +0,0 @@
-The ``schedule="@continuous"`` parameter now works without requiring a
``start_date``, and any DAGs with this schedule will begin running immediately
when unpaused.
diff --git a/chart/newsfragments/66970.significant.rst
b/chart/newsfragments/66970.significant.rst
deleted file mode 100644
index e72b0d10220..00000000000
--- a/chart/newsfragments/66970.significant.rst
+++ /dev/null
@@ -1 +0,0 @@
-Minimum Helm version was updated to ``3.19.0``
diff --git a/providers/microsoft/azure/newsfragments/51944.bugfix.rst
b/providers/microsoft/azure/newsfragments/51944.bugfix.rst
deleted file mode 100644
index 5706bcc088e..00000000000
--- a/providers/microsoft/azure/newsfragments/51944.bugfix.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fix Azure Blob Storage authentication to check ``account_key`` field in
connection extra before falling back to ``DefaultAzureCredential``