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``

Reply via email to