From 700c4f50097fa8ccec15ba89e1f7cf6f349f557d Mon Sep 17 00:00:00 2001 From: Dmitry Yuhanov Date: Sun, 11 Oct 2026 23:20:46 +0300 Subject: [PATCH] fix: update canonical helper for first releases --- .github/scripts/product_release.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/scripts/product_release.py b/.github/scripts/product_release.py index 76cce49..d85ac87 100644 --- a/.github/scripts/product_release.py +++ b/.github/scripts/product_release.py @@ -109,15 +109,16 @@ def plan_release(repo, config, sha, event, api): break parent = git(repo, 'rev-parse', '--verify', f'{candidate}^1', optional=True) previous = top_version(repo, parent, config) if parent else None - # Installing version metadata into an old product must not publish a release. - if previous is None: - return None - if previous == version: + # A first release needs provenance; never reuse an older version tag. + if previous in (None, version) and existing and existing != candidate: continue if not provenance(repo, candidate, config, version, api): + if previous == version: + continue return None candidate_entry = entry(repo, candidate, config) - if tuple(map(int, version.split('.'))) <= tuple(map(int, previous.split('.'))): + if (previous not in (None, version) + and tuple(map(int, version.split('.'))) <= tuple(map(int, previous.split('.')))): raise ValueError(f'Release {version} must be newer than stable version {previous}') tags = git(repo, 'tag', '--merged', candidate).splitlines() versions = [tuple(map(int, tag.split('.'))) for tag in tags