Skip to content

ci: gate publish on last-released engine, not in-run submodule delta - #32

Merged
ddehilster merged 1 commit into
mainfrom
ci/publish-gate-vs-last-release
Jun 17, 2026
Merged

ddehilster merged 1 commit into
mainfrom
ci/publish-gate-vs-last-release

Conversation

@ddehilster

Copy link
Copy Markdown
Member

Problem

update-nlp-engine.yml decided whether to release by whether its own git submodule update --remote moved the submodule SHA (before == after → changed=false → skip). When the submodule was already advanced by another path (a verification PR — #31), the in-run delta was empty, so the release was silently skipped.

That's exactly how nlp-engine 3.5.6 / #658 reached main but never got a PyPI release: #31 pre-bumped the submodule before the percolation repository_dispatch ran. (npm was unaffected — its submodule wasn't pre-bumped — so it published normally.)

Fix

Compare the engine the last release shipped (the nlp-engine gitlink at the latest v* tag) against current engine HEAD, and publish whenever they differ — regardless of how main got there. The commit step now tags the existing HEAD when the submodule is already current (nothing to commit), so the tag still fires publish.yml.

scenario old gate new gate
normal engine bump publishes publishes
submodule pre-bumped by a PR skips ❌ publishes ✅
nothing new since last release skips skips

Context

The one-off miss was already remediated by manually tagging v2.0.14 (NLPPlus on engine 3.5.6/#658). This PR prevents recurrence.

🤖 Generated with Claude Code

update-nlp-engine.yml decided whether to release by whether its own
`git submodule update --remote` moved the submodule SHA. If the submodule was
already advanced by another path (e.g. a verification PR), the in-run delta was
empty, so `changed=false` and the release was silently skipped -- which is how
nlp-engine 3.5.6/#658 reached `main` but never got a PyPI release (npm, whose
submodule wasn't pre-bumped, published fine).

Compare the engine the LAST RELEASE shipped (the `nlp-engine` gitlink at the
latest v* tag) against current engine HEAD instead. Publish whenever they
differ, regardless of how `main` got there. The commit step now tags the
existing HEAD when the submodule is already current (nothing to commit) so the
tag still fires publish.yml.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@ddehilster
ddehilster merged commit 29f865d into main Jun 17, 2026
7 checks passed
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