Skip to content

fix(release): refuse a tag that names a version the package does not carry - #633

Merged
beyondnetPeru merged 1 commit into
developfrom
fix/release-tag-version-agreement
Aug 21, 2026
Merged

fix(release): refuse a tag that names a version the package does not carry#633
beyondnetPeru merged 1 commit into
developfrom
fix/release-tag-version-agreement

Conversation

@beyondnetPeru

Copy link
Copy Markdown
Contributor

Closes the "Release Pipeline Failed" class. Seven issues are open; five of them are one bug.

The bug

The pipeline reads the release version from two places and never compared them.

When the tag and the package disagree, publish "succeeds" by skipping and the smoke test dies on npm error code ETARGET / No matching version found.

Every recent tag disagreed:

Tag src/sdk/cli/package.json Issue
v1.3.3 1.3.1 #599
v1.3.4 1.3.1 #603
v1.3.5 1.3.1 #606
v1.3.6 1.3.2
v1.3.7 1.3.2 #627

That is why npm carries the CLI only up to 1.3.2 while five tags above it exist. Nothing was ever wrong with the build — the tag named a version that was never built, so no re-run could have fixed it, and each run spent a full build, three binary packagings and three platform smoke tests before finding out.

The fix

The question moves into release-gate, before anything is built or published. If the tag and the package disagree the run stops immediately, naming both numbers and writing a step summary that says which of the two to change: bump the package, or delete the tag and push the one that matches.

release-gate gains the checkout it needs to read the file — it had none, since until now it only parsed GITHUB_REF.

Verification

The assertion logic, run against this tree (package at 1.3.2):

v1.3.7 → refused (package carries 1.3.2, tag asks 1.3.7)
v1.3.2 → accepted (both 1.3.2)

Workflow parses as YAML.

Not in scope

#492, #552 and #553 are the older three, and #569 already fixed their cause — a re-run over an already-published version. They are stale and will be closed with that explanation rather than carried.

🤖 Generated with Claude Code

…carry

Five consecutive tags failed, each one filing a "Release Pipeline Failed" issue,
and all five had the same cause:

  v1.3.3 -> cli 1.3.1   (#599)
  v1.3.4 -> cli 1.3.1   (#603)
  v1.3.5 -> cli 1.3.1   (#606)
  v1.3.6 -> cli 1.3.2
  v1.3.7 -> cli 1.3.2   (#627)

The pipeline reads the version from two places and never compared them.
`publish-npm` reads `package.json` -- correctly -- and since #569 it asks the
registry first, so an already-published version is skipped as a non-failure.
`smoke-test-functional` then installs `@beyondnet/evolith-cli@${tag#v}`.

When the two disagree, publish "succeeds" by skipping and the smoke test dies on
`npm error code ETARGET / No matching version found`. Nothing was ever wrong with
the build: the tag named a version that was never built. No re-run could fix it,
and the run spent a full build, three binary packagings and three platform smoke
tests before finding out.

The question now lives in `release-gate`, before anything is built or published:
if the tag and `src/sdk/cli/package.json` disagree, the run stops with both
numbers named and a step summary saying which of the two to change. `release-gate`
gains the checkout it needs to read the file.

Verified: the assertion logic run against this tree rejects `v1.3.7` (package
carries 1.3.2) and accepts `v1.3.2`. Workflow parses as YAML.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: aarroyo <beyondnet.peru@gmail.com>
@beyondnetPeru
beyondnetPeru requested a review from a team as a code owner August 21, 2026 17:53
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@github-actions

Copy link
Copy Markdown

📊 Bilingual Coverage Impact

PR Changes

  • Paired EN/ES files modified: 12
  • New EN files needing ES translation: 0

Repository Coverage

Metric Value
Total EN files 525
Total ES files 495
Paired files 0
Coverage 0%

Good: All EN changes have ES counterparts.


Generated by GitHub Actions

@beyondnetPeru
beyondnetPeru merged commit 6e2710d into develop Aug 21, 2026
45 checks passed
@beyondnetPeru
beyondnetPeru deleted the fix/release-tag-version-agreement branch August 21, 2026 18:11
beyondnetPeru added a commit that referenced this pull request Aug 21, 2026
…carry (#633)

Five consecutive tags failed, each one filing a "Release Pipeline Failed" issue,
and all five had the same cause:

  v1.3.3 -> cli 1.3.1   (#599)
  v1.3.4 -> cli 1.3.1   (#603)
  v1.3.5 -> cli 1.3.1   (#606)
  v1.3.6 -> cli 1.3.2
  v1.3.7 -> cli 1.3.2   (#627)

The pipeline reads the version from two places and never compared them.
`publish-npm` reads `package.json` -- correctly -- and since #569 it asks the
registry first, so an already-published version is skipped as a non-failure.
`smoke-test-functional` then installs `@beyondnet/evolith-cli@${tag#v}`.

When the two disagree, publish "succeeds" by skipping and the smoke test dies on
`npm error code ETARGET / No matching version found`. Nothing was ever wrong with
the build: the tag named a version that was never built. No re-run could fix it,
and the run spent a full build, three binary packagings and three platform smoke
tests before finding out.

The question now lives in `release-gate`, before anything is built or published:
if the tag and `src/sdk/cli/package.json` disagree, the run stops with both
numbers named and a step summary saying which of the two to change. `release-gate`
gains the checkout it needs to read the file.

Verified: the assertion logic run against this tree rejects `v1.3.7` (package
carries 1.3.2) and accepts `v1.3.2`. Workflow parses as YAML.

Signed-off-by: aarroyo <beyondnet.peru@gmail.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant