This is an automated email from the ASF dual-hosted git repository.

shahar1 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new 84e520ac6d7 Add changelog-entry quality rules to provider-doc release 
skill (#70258)
84e520ac6d7 is described below

commit 84e520ac6d7ed64801262a3b041c196af68844fd
Author: Shahar Epstein <[email protected]>
AuthorDate: Thu Jul 23 08:53:00 2026 +0300

    Add changelog-entry quality rules to provider-doc release skill (#70258)
    
    Three defects slipped through a real provider-release wave and were caught 
only in review: an add-then-rename feature split across two PRs in the same 
wave was listed as two disconnected changelog entries (with no reference to the 
introducing PR), entries that kept a contributor's lowercase subject, and no-PR 
release-tooling commits surfaced as user-facing changelog lines. Encode the 
fixes as Phase 4b entry rules plus a Phase 5 scan so future waves render a 
changelog that reads as wha [...]
---
 .../prepare-providers-documentation/SKILL.md       | 41 +++++++++++++++++++++-
 1 file changed, 40 insertions(+), 1 deletion(-)

diff --git a/.agents/skills/prepare-providers-documentation/SKILL.md 
b/.agents/skills/prepare-providers-documentation/SKILL.md
index b2e8a20c40d..62c9819392c 100644
--- a/.agents/skills/prepare-providers-documentation/SKILL.md
+++ b/.agents/skills/prepare-providers-documentation/SKILL.md
@@ -511,6 +511,27 @@ Rules:
   indent, double backticks).
 - Subjects must be the original commit subject with backticks replaced by
   single quotes (matches `message_without_backticks`). Don't paraphrase.
+- **Exception — collapse within-wave "add then rename/rework" chains into one
+  net entry.** When several pending commits are steps toward *one* net change —
+  a feature added in one PR and renamed or reworked in a later PR, both since
+  the last release (the released-only situation from Phase 3) — do **not** list
+  the intermediate steps as separate entries. A reader who never saw the
+  released intermediate form gets no context from ``Add X listener (#a)`` under
+  Features plus ``Rename X to Y (#b)`` under Misc. Write a **single** entry 
that
+  describes the **net user-facing change** and references **all** related PRs,
+  placed in the section of the most-impactful step. Real example: #68082 added
+  a Kafka listener and #70014 renamed it to the Kafka Event Producer in the 
same
+  wave → ``Add Kafka Event Producer publishing DagRun and TaskInstance
+  state-change events (#68082, #70014)`` under Features (and *no* separate Misc
+  "Rename …" line). This is the changelog counterpart of the unreleased-feature
+  classification rule: classify the rename as non-breaking (Phase 3) **and**
+  describe only what shipped, naming every PR involved.
+- **Capitalize the first letter of every entry**, not only after stripping a
+  Conventional Commit prefix. Contributors sometimes write a lowercase subject
+  (`derive keycloak oauth redirect_uri …`) or a pseudo-scope
+  (`cncf-kubernetes: fix …`); the changelog convention is a leading capital, so
+  render them as ``Derive keycloak oauth redirect_uri …`` /
+  ``Cncf-kubernetes: fix …``.
 - **Strip Conventional Commit prefixes** before writing to the changelog.
   If the subject starts with a prefix like `feat:`, `fix:`, `chore:`,
   `docs:`, `refactor:`, `ci:`, `test:`, `perf:`, `build:`, or `style:`
@@ -519,7 +540,17 @@ Rules:
   Example: `refactor: Fix _is_http_client_closed ...` →
   `Fix _is_http_client_closed ...`. Airflow does not use Conventional
   Commits and these prefixes should not appear in changelogs.
-- Always keep the `(#NNNN)` PR suffix.
+- **Send no-PR release-tooling commits to the excluded block**, even when the
+  Phase 1 deterministic classifier labeled them `documentation`. Subjects like
+  ``Prepare … providers release/documentation …`` and ``Hide non-user-facing
+  entries from ad-hoc provider release notes`` (often with no `(#NNNN)` suffix
+  because they were committed directly) are release plumbing, not user-facing
+  changes — a `(#NNNN)`-less line in a visible section reads as a mistake. Put
+  them under the `.. Below changes are excluded …` block. breeze's 
deterministic
+  classification can even be inconsistent for the same commit across providers,
+  so normalize to excluded.
+- Always keep the `(#NNNN)` PR suffix (or, for a collapsed chain, the
+  comma-separated list of all involved PRs).
 
 #### 4c. Regenerate templates with breeze
 
@@ -616,6 +647,14 @@ provider-by-provider:
   *"Provider dependency version bumps detected that should only be performed
   by Release Managers!"*. `git diff` the changed `pyproject.toml` files for
   `apache-airflow-providers-*` `>=` changes and list them for the RM.
+- **Scan the new changelog sections for three entry defects** — grep the lines
+  you added: (1) a bullet whose text starts with a lowercase letter → 
capitalize
+  it (Phase 4b); (2) a bullet in a *visible* section (Features / Bug Fixes /
+  Misc / Doc-only) with no `(#NNNN)` suffix → usually no-PR release-tooling 
that
+  belongs in the excluded block (Phase 4b); (3) an "add then rename" pair for
+  the same feature left as two separate entries → collapse into one net entry
+  naming both PRs (Phase 4b). Reviewers reliably catch all three, so fix them
+  before handing off.
 - Flag anything where Phase 3.5 had to escalate, so the RM can double-check.
 
 Stop here. Do not commit, do not push — the release manager opens the PR

Reply via email to