{{ message }}
UN-3479 [FIX] release workflow: validate before tag/publish + lint cleanup - #17
Merged
chandrasekharan-zipstack merged 2 commits intoMay 27, 2026
Merged
Conversation
…eanup Fixes the issues exposed when the v1.3/v1.4 dispatches blew up: - 10 E501 line-too-long violations in src/unstract/clone/ (caused the lint failure in release run 26506031574) - Release workflow did commit-bump + push-to-main + tag + GH release BEFORE running lint/tests/build, so a lint failure left main with a phantom version bump and an orphan release. Lint/tests/build now run against the bumped __init__.py in-place, and only on success does the workflow commit, tag, release, and PyPI-publish. - Add ruff to the PR gate (test.yml) so lint regressions block at PR time instead of release time. - Revert __version__ from 1.4.0 to 1.2.1 so the next manual trigger produces the intended v1.3.0 cleanly. Orphan v1.4.0 tag + GitHub release have been deleted out-of-band. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Contributor
… guards Address greptile P1 + P2: - P1: uv publish now runs before commit/tag/release. PyPI is the only irreversible step, so if a later git/release call fails the artifact is the source of truth and the metadata can be retried. - P2: workflow only triggers on workflow_dispatch (see top-level `on:`), so the per-step `if: github.event_name == 'workflow_dispatch'` guards were redundant and inconsistent (only on bookends, not lint/test/build). Removed them — any future trigger addition should be a deliberate per-step decision. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
jaseemjaskp
approved these changes
May 27, 2026
chandrasekharan-zipstack
deleted the
fix/release-workflow-lint-and-ordering
branch
May 27, 2026 10:55
2 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
Three tightly-coupled fixes prompted by the broken
v1.3/v1.4release dispatches today.1. Lint failures in
src/unstract/clone/Run 26506031574 failed with 10
E501(line-too-long > 88) violations across the newclonesubpackage. These were not caught at PR time because the PR-gate workflow (test.yml) only ranpytest. Reworded the offending lines (no behavioral change) and addedruff check src/totest.ymlso lint regressions block at PR time.2. Release workflow ordering
main.ymlperformedversion bump → commit to main → push tag → create GH releasebefore runninglint/tests/build. So a lint failure leftmainwith a phantom version bump and an orphaned GitHub release (v1.4.0, deleted out-of-band as part of this work).New ordering — verification first, side-effects second:
__init__.pylocally (no commit)ruff check src/)pytest)uv build)main, tag, push tag, create GH releaseuv publishto PyPI3. Version revert:
1.4.0 → 1.2.1Run #1 (failed at tag step but succeeded at commit-push) and run #2 (created
v1.4.0then failed at lint) leftmainat1.4.0with no corresponding published artifact. Reverted so the next manual trigger produces the intendedv1.3.0.Test plan
uv run ruff check src/passes locallyuv run pytest tests/— 167 passed locallygh release delete v1.4.0+git push --delete origin v1.4.0done out-of-bandLint (ruff)step ontest.ymlruns greenmain.ymlmanually withminorbump → expect cleanv1.3.0release end-to-end🤖 Generated with Claude Code