Skip to content

Make the SCM 1.0 release path idempotent#8

Merged
saishshinde15 merged 1 commit into
mainfrom
codex/v1-release-idempotency
Jul 13, 2026
Merged

Make the SCM 1.0 release path idempotent#8
saishshinde15 merged 1 commit into
mainfrom
codex/v1-release-idempotency

Conversation

@saishshinde15

Copy link
Copy Markdown
Contributor

Summary

  • check PyPI before attempting an immutable version upload
  • skip only the upload when that exact version already exists
  • preserve trusted publishing for every new version
  • widen the macOS cold-process test deadline while retaining exit-code and cleanup assertions

Verification

  • actionlint passes for the release workflow
  • production suite: 52 passed, 4 skipped
  • git diff checks pass

This enables a one-time project-token upload for 1.0.0 without causing the tag workflow or GitHub release asset job to fail.

Copilot AI review requested due to automatic review settings July 13, 2026 02:11

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR makes the SCM 1.0 release workflow idempotent by detecting when a specific version is already present on PyPI and skipping only the immutable upload step, while keeping trusted publishing for new versions. It also adjusts production concurrency tests to allow a longer deadline for multi-process coordination (notably on macOS cold starts) and documents the new release behavior.

Changes:

  • Add a PyPI “version exists” check and conditionally skip the PyPI publish step when the exact version is already published.
  • Widen multi-process test timeouts via a shared constant while keeping exit-code and cleanup assertions.
  • Update publishing documentation to reflect the idempotent release behavior.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

File Description
tests/production/test_concurrency.py Replaces hardcoded 30s waits/joins with a shared 60s process timeout constant for improved stability.
docs/PUBLISH.md Documents the new “check PyPI first; skip only upload if version exists” release behavior.
.github/workflows/release.yml Adds a PyPI version existence probe and gates the publish step on it; minor path/glob consistency tweaks.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread docs/PUBLISH.md
Comment on lines +55 to +57
Release reruns first check whether the exact package version already exists on
PyPI. An existing version skips only the immutable upload; new versions still
require the configured trusted publisher.
@saishshinde15
saishshinde15 merged commit 33da62e into main Jul 13, 2026
8 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.

2 participants