fix: Windows update entrypoint locking and idempotent releases#73
Merged
fix: Windows update entrypoint locking and idempotent releases#73
Conversation
- Use Path.replace() instead of Path.rename() for Windows exe rename, fixing failures when .exe.old exists from a previous interrupted update - Also target ~/.local/bin/conductor.exe explicitly (the standard uv entrypoint location) in addition to shutil.which() result - Handle partial success: when uv installs the package but fails to copy the entrypoint due to file locking, report success with a restart note instead of a scary error - Make release workflow idempotent: if the release already exists, upload artifacts to it instead of failing - Upload constraints.txt to existing v0.1.6 release Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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.
Problem
Three issues with the v0.1.6 release:
Windows update fails with entrypoint error:
uv tool installcan't overwriteconductor.exebecause it's locked by the running process. Root cause:Path.rename()fails silently on Windows when.exe.oldalready exists from a previous interrupted update (Windowsrename()doesn't overwrite).Release workflow fails:
gh release createfails when the release already exists (e.g. created manually before CI runs).Missing constraints file: The v0.1.6 release had no
constraints.txtartifact because the workflow failed before uploading.Changes
src/conductor/cli/update.py_rename_windows_exes()helper that targets bothshutil.which()result AND~/.local/bin/conductor.exe(standard uv entrypoint location), deduplicating by resolved pathPath.replace()instead ofPath.rename()—replace()overwrites existing.oldfiles from previous interrupted updates.github/workflows/release.ymlgh release upload --clobberartifacts instead of failingRelease assets
constraints.txtandconstraints.txt.sha256to the existing v0.1.6 releaseTests
test_windows_entrypoint_failure_reports_success— verifies partial success handling