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-steward.git
The following commit(s) were added to refs/heads/main by this push:
new 9dff5d73 docs(release-management): sync family README to reflect
release-announce-draft shipped (#565)
9dff5d73 is described below
commit 9dff5d735fb40b8e57674fff2a4337894d5124e3
Author: Justin Mclean <[email protected]>
AuthorDate: Sat Jun 27 06:10:50 2026 +1000
docs(release-management): sync family README to reflect
release-announce-draft shipped (#565)
`release-announce-draft` (Step 11, [ANNOUNCE] email + site-bump PR)
landed as experimental in #512, but docs/release-management/README.md
still said "No release-* skill code exists in the framework today."
- Promote Status from "Proposed" to "Experimental (1 of 10 skills
shipped)"; add a direct link to the skill file.
- Add a Status column to the Skills table so per-skill maturity is
visible at a glance; nine skills remain proposed, release-
announce-draft is now experimental.
- Update the Mode mapping paragraph ("each marked proposed") to
acknowledge that release-announce-draft is now experimental.
Generated-by: Claude (Opus 4.7)
---
docs/release-management/README.md | 43 ++++++++++++----------
.../.pr-body-release-management-docs-sync.md | 16 ++++++++
2 files changed, 40 insertions(+), 19 deletions(-)
diff --git a/docs/release-management/README.md
b/docs/release-management/README.md
index e601ff98..cc3d004b 100644
--- a/docs/release-management/README.md
+++ b/docs/release-management/README.md
@@ -66,16 +66,20 @@ for the full backend table and per-step mapping.
## Status
-**Proposed.** No `release-*` skill code exists in the framework
-today. This family lands as docs first (this README, the 14-step
+**Experimental (1 of 10 skills shipped).**
+[`release-announce-draft`](../../skills/release-announce-draft/SKILL.md)
+(Step 11, `[ANNOUNCE]` email draft + site-bump PR) landed as
+`experimental` in #512. The remaining nine skills follow in
+subsequent PRs, each flagged `experimental` and tracked in
+[`docs/modes.md`](../modes.md).
+
+The family landed as docs first (this README, the 14-step
[`process.md`](process.md), the per-skill [`spec.md`](spec.md), and
the adopter scaffold
[`projects/_template/release-management-config.md`](../../projects/_template/release-management-config.md))
so the lifecycle, the state-change boundaries, and the adopter
contract are reviewable independently from runtime behaviour.
-The skills follow in subsequent PRs, each shipped flagged
-`experimental` and tracked in [`docs/modes.md`](../modes.md). This
-pattern matches [Mentoring](../mentoring/README.md).
+This pattern matches [Mentoring](../mentoring/README.md).
Promotion of any skill in this family from `experimental` to
default-on, or from Drafting to a state-changing lane, requires
@@ -97,18 +101,18 @@ the lifecycle step(s) it owns. Read [`spec.md`](spec.md)
for the
per-skill state-change boundary; read [`process.md`](process.md)
for the step it executes against.
-| Skill | Mode | Steps owned | Purpose |
-|---|---|---|---|
-| `release-prepare` | Drafting | 1, 2, 14 | Open the planning issue, draft the
version-bump + changelog + NOTICE/LICENSE PR, then draft the post-release
`-SNAPSHOT` bump. |
-| `release-keys-sync` | Drafting | 3 | Draft the `KEYS` diff for a Release
Manager cutting their first release for the project. Agent never holds the
private key. |
-| `release-rc-cut` | Drafting | 4, 5 | Emit the paste-ready command sequence,
signed tag, build, detached signatures, checksums, `svn` import to
`dist/dev/<project>/`. Agent never signs and never imports. |
-| `release-verify-rc` | Triage / Pairing | 6 | Read-only pre-flight:
signatures against the project's `KEYS`, checksums, license headers (Apache
RAT), NOTICE/LICENSE presence, no prohibited binaries, version-string
consistency. Voters can run it in their own dev loop before posting `+1`. |
-| `release-vote-draft` | Drafting | 7 | Draft the `[VOTE]` email body to
`dev@<project>`. Agent never sends. |
-| `release-vote-tally` | Triage | 9 | Parse the vote thread, classify each
reply (+1 / 0 / -1) binding vs non-binding against the PMC roster, propose
`[RESULT] [VOTE]`. Conservative on ambiguous votes, refuses to count, flags
`AMBIGUOUS, needs RM call`. |
-| `release-promote` | Drafting | 10 | Emit the paste-ready `svn mv dist/dev →
dist/release` command set plus commit message. Agent never moves; the human
commit is the act of release. |
-| `release-announce-draft` | Drafting | 11 | Draft the `[ANNOUNCE]` email body
to `[email protected]` and the site-bump PR (download page, release notes,
version banner). Agent never sends mail and never merges the site PR. |
-| `release-archive-sweep` | Triage | 12 | Scan `dist/release/<project>/`,
identify releases past retention, propose the `svn mv` sequence to
`archive.apache.org`. Agent never moves. |
-| `release-audit-report` | Triage (dashboard) | 13 | Read-only structured
report per release, RM, voters with binding flags, artefacts with sigs and
checksums, promotion revision, `[ANNOUNCE]` archive URL. Output appended to the
project's audit log. |
+| Skill | Mode | Steps owned | Status | Purpose |
+|---|---|---|---|---|
+| `release-prepare` | Drafting | 1, 2, 14 | proposed | Open the planning
issue, draft the version-bump + changelog + NOTICE/LICENSE PR, then draft the
post-release `-SNAPSHOT` bump. |
+| `release-keys-sync` | Drafting | 3 | proposed | Draft the `KEYS` diff for a
Release Manager cutting their first release for the project. Agent never holds
the private key. |
+| `release-rc-cut` | Drafting | 4, 5 | proposed | Emit the paste-ready command
sequence, signed tag, build, detached signatures, checksums, `svn` import to
`dist/dev/<project>/`. Agent never signs and never imports. |
+| `release-verify-rc` | Triage / Pairing | 6 | proposed | Read-only
pre-flight: signatures against the project's `KEYS`, checksums, license headers
(Apache RAT), NOTICE/LICENSE presence, no prohibited binaries, version-string
consistency. Voters can run it in their own dev loop before posting `+1`. |
+| `release-vote-draft` | Drafting | 7 | proposed | Draft the `[VOTE]` email
body to `dev@<project>`. Agent never sends. |
+| `release-vote-tally` | Triage | 9 | proposed | Parse the vote thread,
classify each reply (+1 / 0 / -1) binding vs non-binding against the PMC
roster, propose `[RESULT] [VOTE]`. Conservative on ambiguous votes, refuses to
count, flags `AMBIGUOUS, needs RM call`. |
+| `release-promote` | Drafting | 10 | proposed | Emit the paste-ready `svn mv
dist/dev → dist/release` command set plus commit message. Agent never moves;
the human commit is the act of release. |
+| [`release-announce-draft`](../../skills/release-announce-draft/SKILL.md) |
Drafting | 11 | **experimental** | Draft the `[ANNOUNCE]` email body to
`[email protected]` and the site-bump PR (download page, release notes,
version banner). Agent never sends mail and never merges the site PR. |
+| `release-archive-sweep` | Triage | 12 | proposed | Scan
`dist/release/<project>/`, identify releases past retention, propose the `svn
mv` sequence to `archive.apache.org`. Agent never moves. |
+| `release-audit-report` | Triage (dashboard) | 13 | proposed | Read-only
structured report per release, RM, voters with binding flags, artefacts with
sigs and checksums, promotion revision, `[ANNOUNCE]` archive URL. Output
appended to the project's audit log. |
Two non-negotiable boundaries cross every Drafting skill above:
@@ -173,8 +177,9 @@ file-by-file index. Required at minimum:
Release-management is a **family**, not a mode. The lifecycle
spans the existing Triage and Drafting modes; no new mode is
introduced. See [`docs/modes.md`](../modes.md) for the
-family-by-mode breakdown, `release-*` skills appear under the
-**Triage** and **Drafting** subsections, each marked `proposed`.
+family-by-mode breakdown; `release-*` skills appear under the
+**Triage** and **Drafting** subsections (`release-announce-draft`
+is now `experimental`; the remaining nine remain `proposed`).
The family's read-only dashboard skill
(`release-audit-report`)
diff --git a/tools/spec-loop/.pr-body-release-management-docs-sync.md
b/tools/spec-loop/.pr-body-release-management-docs-sync.md
new file mode 100644
index 00000000..a0aab10b
--- /dev/null
+++ b/tools/spec-loop/.pr-body-release-management-docs-sync.md
@@ -0,0 +1,16 @@
+## Summary
+
+- `docs/release-management/README.md` Status section still said "No
`release-*` skill code exists in the framework today" despite
`release-announce-draft` shipping as experimental in #512.
+- Promote Status from **Proposed** to **Experimental (1 of 10 skills
shipped)** with a direct link to the skill file.
+- Add a Status column to the Skills table so per-skill maturity is visible at
a glance; mark nine skills `proposed` and `release-announce-draft`
**experimental**.
+- Update the Mode mapping paragraph which said "each marked `proposed`" to
reflect that `release-announce-draft` is now `experimental`.
+
+## Test plan
+
+- [ ] `test -f docs/release-management/spec.md` passes
+- [ ] `test -f docs/release-management/process.md` passes
+- [ ] `test -f projects/_template/release-management-config.md` passes
+- [ ] `uv run --project tools/skill-and-tool-validator
skill-and-tool-validate` produces no hard errors (86 pre-existing SOFT
ASF-coupling advisories only)
+- [ ] Link `../../skills/release-announce-draft/SKILL.md` resolves (skill
shipped in #512)
+
+🤖 Generated with [Claude Code](https://claude.com/claude-code)