From 01323c127ed54fea3a2aeb15d78c7d4707492fd2 Mon Sep 17 00:00:00 2001 From: Sebastian Mendel Date: Sat, 11 Jul 2026 03:59:25 +0200 Subject: [PATCH 1/2] docs: pre-tag issue gate + TYPO3 14 hidden version surfaces MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - release-process: a Phase-1 step-0 issue gate — never tag over an untriaged known issue from the current work stream; unclear severity is the user's call, a task order incl. 'release' does not delegate it. - ecosystem-detection: composer.json extra.typo3/cms.version is a SEPARATE surface from top-level version (TYPO3 14 deprecation #108345, guarded by VersionConsistencyTest); guides.xml release= attr; Documentation/Changelog.rst; CHANGELOG.md footer compare links. Signed-off-by: Sebastian Mendel --- .../references/ecosystem-detection.md | 21 +++++++++++++++++-- .../references/release-process.md | 18 ++++++++++++++++ 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/skills/github-release/references/ecosystem-detection.md b/skills/github-release/references/ecosystem-detection.md index abf70f8..c4ec101 100644 --- a/skills/github-release/references/ecosystem-detection.md +++ b/skills/github-release/references/ecosystem-detection.md @@ -20,11 +20,28 @@ Identify which version files need updating based on the project's ecosystem. A p |------|--------------|---------| | `ext_emconf.php` | `'version' => 'X.Y.Z'` | `'version' => '13.8.1'` | | `composer.json` | `"version": "X.Y.Z"` | `"version": "13.8.1"` | -| `Documentation/guides.xml` | `` or `version` attribute | `version="13.8.1"` | +| `composer.json` | `extra.typo3/cms.version` (separate from `"version"`) | `"extra": {"typo3/cms": {"version": "13.8.1"}}` | +| `Documentation/guides.xml` | `version=` **and** `release=` attributes | `version="13.8.1" release="13.8.1"` | +| `Documentation/Changelog.rst` | rendered changelog page — add a `Version X.Y.Z (date)` section | `Version 13.8.1 (2026-...)` | +| `CHANGELOG.md` | stamp `[Unreleased]` → `[X.Y.Z] - date` **and** the footer compare links | `[13.8.1]: .../compare/v13.8.0...v13.8.1` | | `Documentation/**/*.rst` | `.. versionadded:: X.Y.Z` | `.. versionadded:: 13.8.0` | | `Documentation/**/*.rst` | `.. versionchanged:: X.Y.Z` | `.. versionchanged:: 13.8.1` | -Note: RST `versionadded`/`versionchanged` directives should only be updated when they reference the **current release being prepared**, not historical entries. +Notes: + +- **`composer.json` has TWO independent version surfaces.** Besides the + top-level `"version"`, TYPO3 14's deprecation #108345 (drop the `ext_emconf.php` + version in favour of composer metadata) means extensions also carry + `extra.typo3/cms.version` (+ `providesPackages`). It is a *different* field from + `"version"` and is easy to miss — a mismatch fails the extension's own + `VersionConsistencyTest` in CI. Bump both. +- **`Documentation/guides.xml`** carries both `version` and `release` attributes; + update both. This file drifts silently (it renders docs.typo3.org) and is a + frequent miss. +- **`CHANGELOG.md`** needs the footer compare-link block updated too, not just the + section stamp — the `[Unreleased]` link and a new `[X.Y.Z]` link. +- RST `versionadded`/`versionchanged` directives should only be updated when they + reference the **current release being prepared**, not historical entries. ### PHP / Composer diff --git a/skills/github-release/references/release-process.md b/skills/github-release/references/release-process.md index e40bf98..4fc825a 100644 --- a/skills/github-release/references/release-process.md +++ b/skills/github-release/references/release-process.md @@ -20,6 +20,7 @@ The hooks in this repository block `gh release create` and `gh release delete` t ### Phase 1: Preparation ``` +0. Triage open issues from the current work stream (see "Issue gate" below) 1. Detect ecosystem (see ecosystem-detection.md) 2. Determine next version number: - From conventional commits (feat → minor, fix → patch, BREAKING CHANGE → major) @@ -38,6 +39,23 @@ The hooks in this repository block `gh release create` and `gh release delete` t 7. Push branch and open PR ``` +**Issue gate (step 0) — never tag over an untriaged known issue.** Before +tagging, list open issues (`gh issue list --state open`), and for each issue +**created or touched during the current work stream**, classify it: + +- *regression introduced by this release* → must be fixed before tagging; +- *pre-existing latent* → usually not a blocker, but say so explicitly to the + user before tagging; +- *test-only / infra* → not a blocker. + +Anything of **unclear severity** — including an issue you filed yourself whose +text hypothesises "production bug" — is decided by the user, not silently +shipped. A user's task order that includes "release" does **not** delegate that +judgment away. Surface the open issues with a one-line severity read and get an +explicit go, or fix first. Shipping a release with a known open bug from the +same stream, then being asked "why did you release with known bugs?", is the +failure this gate prevents. + ### Phase 2: Review and Merge ``` From 17b7b6b80791b46c7e8a1e4f76918450d53def49 Mon Sep 17 00:00:00 2001 From: Sebastian Mendel Date: Sat, 11 Jul 2026 08:48:13 +0200 Subject: [PATCH 2/2] =?UTF-8?q?docs:=20address=20review=20=E2=80=94=20h4?= =?UTF-8?q?=20issue-gate=20header,=20bold=20RST-directives=20list=20item?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Sebastian Mendel --- skills/github-release/references/ecosystem-detection.md | 2 +- skills/github-release/references/release-process.md | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/skills/github-release/references/ecosystem-detection.md b/skills/github-release/references/ecosystem-detection.md index c4ec101..ea369a0 100644 --- a/skills/github-release/references/ecosystem-detection.md +++ b/skills/github-release/references/ecosystem-detection.md @@ -40,7 +40,7 @@ Notes: frequent miss. - **`CHANGELOG.md`** needs the footer compare-link block updated too, not just the section stamp — the `[Unreleased]` link and a new `[X.Y.Z]` link. -- RST `versionadded`/`versionchanged` directives should only be updated when they +- **RST `versionadded`/`versionchanged` directives** should only be updated when they reference the **current release being prepared**, not historical entries. ### PHP / Composer diff --git a/skills/github-release/references/release-process.md b/skills/github-release/references/release-process.md index 4fc825a..96f827d 100644 --- a/skills/github-release/references/release-process.md +++ b/skills/github-release/references/release-process.md @@ -39,7 +39,9 @@ The hooks in this repository block `gh release create` and `gh release delete` t 7. Push branch and open PR ``` -**Issue gate (step 0) — never tag over an untriaged known issue.** Before +#### Issue Gate (Step 0) — Never tag over an untriaged known issue + +Before tagging, list open issues (`gh issue list --state open`), and for each issue **created or touched during the current work stream**, classify it: