This is an automated email from the ASF dual-hosted git repository.
potiuk 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 fb6752829ad Clarify when to add a newsfragment (#74589)
fb6752829ad is described below
commit fb6752829ad29aacf197deae79e0b698247d45ef
Author: Andrew Chang <[email protected]>
AuthorDate: Mon Oct 19 00:21:00 2026 +0800
Clarify when to add a newsfragment (#74589)
* Clarify when to add a newsfragment
The contribution guide, AGENTS.md and the PR drafting skill each had
their own newsfragment rule, and they disagreed: the guide encouraged
adding one of six types, AGENTS.md said "major or breaking" but also
asked for one on any user-facing change. The dev@ thread "[DISCUSS]
Newsfragments: when to add one" proposed significant-only fragments
for airflow-core, no fragment for an ordinary bug fix, feature or doc
change, and one rule written once with AGENTS.md pointing at it.
* Tighten the newsfragment criteria after review
task-sdk has no release notes of its own, its changes are listed in
the Airflow release notes, which is why its newsfragments go to
airflow-core. A change that is neither a behaviour change nor needs
migration steps does not need a newsfragment, and listing every
towncrier type invited using the ones the rule excludes.
---
.agents/skills/airflow-pr-draft-summary/SKILL.md | 6 +--
AGENTS.md | 2 +-
contributing-docs/18_contribution_workflow.rst | 59 ++++++++++++++++--------
dev/skill-evals/last-eval-hash.txt | 2 +-
4 files changed, 43 insertions(+), 26 deletions(-)
diff --git a/.agents/skills/airflow-pr-draft-summary/SKILL.md
b/.agents/skills/airflow-pr-draft-summary/SKILL.md
index 780f6c82b96..4435ea18859 100644
--- a/.agents/skills/airflow-pr-draft-summary/SKILL.md
+++ b/.agents/skills/airflow-pr-draft-summary/SKILL.md
@@ -55,10 +55,8 @@ The commit message **body** should describe **why** the
change is made — the m
context — and **never what** the change is. The diff already shows what
changed; restating it in
prose adds noise.
-For `airflow-core` (and `chart/`, `dev/mypy/`) **user-facing** changes, add a
newsfragment in that distribution's `newsfragments/` directory. **Golden rule:
only add a newsfragment when you are certain the change is visible to users;
when in doubt, do not add one** — a maintainer will request one in review if it
is needed. Build/release tooling, CI, packaging, internal refactors, and
dev-only scripts are not user-facing and must not get a newsfragment:
-`echo "Brief description" >
airflow-core/newsfragments/{PR_NUMBER}.{bugfix|feature|improvement|doc|misc|significant}.rst`
-
-**Do not add newsfragments for `providers/` or `airflow-ctl/`** — their
release managers regenerate the changelog from `git log` and do not consume
newsfragments. Update the changelog directly when needed:
`providers/<provider>/docs/changelog.rst` (see `providers/AGENTS.md`) or
`airflow-ctl/RELEASE_NOTES.rst`. Changes to `task-sdk/` use
`airflow-core/newsfragments/` since task-sdk ships in airflow-core.
+Follow the newsfragment rules in root `AGENTS.md` (full text in
`contributing-docs/18_contribution_workflow.rst`). When an `airflow-core`
change does need one:
+`echo "Brief description" >
airflow-core/newsfragments/{PR_NUMBER}.significant.rst`
- NEVER add Co-Authored-By with yourself as co-author of the commit. Agents
cannot be authors, humans can be, Agents are assistants.
diff --git a/AGENTS.md b/AGENTS.md
index 7685fb036af..fd8b64b293b 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -153,7 +153,7 @@ reported as such are described in "What is NOT considered a
security vulnerabili
- Name functions and methods with action verbs: `get_`, `extract_`, `find_`,
`compute_`, `build_`, etc. Avoid noun-only names like `_serialize_keys` or
`_base_names` — they read as attributes, not callables. Predicates (`is_`,
`has_`) are the one exception.
- Apache License header on all new files (prek enforces this).
- **Keep selective-checks behaviour and its documentation in sync.** The CI
optimisation logic lives in
`dev/breeze/src/airflow_breeze/utils/selective_checks.py` (run-mode decisions,
file-group matching, test-type selection, prek-hook skipping). Whenever you
change a rule there — add/rename a file group, change what forces
`full_tests_needed`/`all_versions`, alter how providers or test types are
selected, or change which prek hooks are skipped — update
[`dev/breeze/doc/ci/04_selective_ch [...]
-- Newsfragments are only used by distributions whose release process consumes
them via towncrier — currently `airflow-core/newsfragments/`,
`chart/newsfragments/`, and `dev/mypy/newsfragments/` — and only for major or
breaking changes. **Golden rule: never create a newsfragment unless you are
certain the change is user-facing.** If you are not sure the change is visible
to users — build/release tooling, CI, packaging, internal refactors with no
behavior change, dev-only scripts, and test [...]
+- Newsfragments: the full rules are in
[`contributing-docs/18_contribution_workflow.rst`](contributing-docs/18_contribution_workflow.rst#newsfragments).
Do not add one by default. In `airflow-core/` use only `significant`
newsfragments, and only for a change users must read before upgrading: a
behavior change, a removal or a new default, or migration steps. `task-sdk/`
has no release notes of its own (its changes are listed in the Airflow release
notes), so its newsfragments go in `airfl [...]
## Testing Standards
diff --git a/contributing-docs/18_contribution_workflow.rst
b/contributing-docs/18_contribution_workflow.rst
index 86181a11043..b96f4f16238 100644
--- a/contributing-docs/18_contribution_workflow.rst
+++ b/contributing-docs/18_contribution_workflow.rst
@@ -187,26 +187,10 @@ Step 4: Prepare PR
* Run the appropriate tests as described in `Testing documentation
<09_testing.rst>`__.
- * Consider adding a newsfragment to your PR so you can add an entry in the
release notes.
- The following newsfragment types are supported:
-
- * `significant`
- * `feature`
- * `improvement`
- * `bugfix`
- * `doc`
- * `misc`
-
- To add a newsfragment, create an ``rst`` file named
``{pr_number}.{type}.rst`` (e.g. ``1234.bugfix.rst``)
- and place in either `airflow-core/newsfragments
</airflow-core/newsfragments>`__ for core newsfragments,
- or `chart/newsfragments </chart/newsfragments>`__ for helm chart
newsfragments.
-
- In general newsfragments must be one line. For newsfragment type
``significant``, you may include summary and body separated by a blank line,
similar to ``git`` commit messages.
- One thing to note here is that a ``significant`` newsfragment doesn't
have to be a breaking change, it can be something that is notable but not
breaking.
-
- A CI check validates that newsfragment filenames use the correct PR
number. If you need to skip
- this check (e.g. when cherry-picking a newsfragment from another PR), add
the
- ``skip newsfragment check`` label to your PR.
+ * Check whether your PR needs a newsfragment. Most PRs do not: the release
notes for ordinary bug fixes,
+ features and doc changes are built from the commit title. Add one only
for a change users must read
+ before upgrading, such as a behaviour change, a removal, a new default or
migration steps. A maintainer
+ will ask if your PR needs one. See `Newsfragments`_ below for the details.
2. Rebase your fork, squash commits, and resolve all conflicts. See `How to
rebase PR <10_working_with_git.rst#how-to-rebase-pr>`_
if you need help with rebasing your change. Remember to rebase often if
your PR takes a lot of time to
@@ -244,6 +228,41 @@ Step 4: Prepare PR
they want to get it reviewed and merged.
+Newsfragments
+~~~~~~~~~~~~~
+
+Newsfragments are only consumed by ``airflow-core/``, ``chart/`` and
``dev/mypy/``. Do not add one by default.
+
+For ``airflow-core/``, use only ``significant`` newsfragments, and only for a
change users must read before
+upgrading:
+
+* a behaviour change, a removal or a new default,
+* a change that needs migration steps.
+
+``task-sdk/`` has no release notes of its own. Its changes are listed in the
Airflow release notes, so put
+newsfragments for ``task-sdk/`` changes in ``airflow-core/newsfragments/``.
+
+A ``significant`` newsfragment does not have to be a breaking change. Do not
add a newsfragment for an
+ordinary bug fix, feature, improvement or documentation change, or for
internal refactors, CI, tooling and
+tests. For ``chart/``, add a newsfragment only for major or breaking changes.
+
+If you are unsure, leave it out. A maintainer will ask for one during review
if it is needed.
+
+Never add newsfragments for ``providers/`` or ``airflow-ctl/``: their release
managers regenerate the
+changelog from the commit history. For a user-visible note, edit the changelog
directly: the provider's
+``docs/changelog.rst`` (see `providers/AGENTS.md
</providers/AGENTS.md#changelog--never-use-newsfragments>`__)
+or ``airflow-ctl/RELEASE_NOTES.rst``.
+
+To add a newsfragment, create an ``rst`` file named
``{pr_number}.significant.rst`` (e.g. ``1234.significant.rst``)
+and place it in `airflow-core/newsfragments </airflow-core/newsfragments>`__
for core newsfragments, or
+`chart/newsfragments </chart/newsfragments>`__ for helm chart newsfragments.
It can be a single line, or a
+summary and a body separated by a blank line, similar to ``git`` commit
messages.
+
+A CI check validates that newsfragment filenames use the correct PR number. If
you need to skip this check
+(e.g. when cherry-picking a newsfragment from another PR), add the ``skip
newsfragment check`` label to
+your PR.
+
+
Step 5: Pass PR Review
----------------------
diff --git a/dev/skill-evals/last-eval-hash.txt
b/dev/skill-evals/last-eval-hash.txt
index 451e4d1e3d4..75a3c2c4d54 100644
--- a/dev/skill-evals/last-eval-hash.txt
+++ b/dev/skill-evals/last-eval-hash.txt
@@ -1,3 +1,3 @@
# Generated by dev/skill-evals/eval.py — do not edit or resolve conflicts by
hand.
# Run `prek run run-skill-eval --hook-stage manual --all-files` to regenerate.
-d0e8ed3ebe9973449495c65634f02bfe2fb1a41e38bb4a09aa7d0199502b3f72
+6a82b68ab3d4179b148c7a545206c4e37e7611f85e9b830d89186a8713c8b272