Skip to content

Make the release smoke retry loop actually retry - #2

Merged
jaykomarraju merged 1 commit into
mainfrom
fix/release-smoke-retry
Aug 12, 2026
Merged

Make the release smoke retry loop actually retry#2
jaykomarraju merged 1 commit into
mainfrom
fix/release-smoke-retry

Conversation

@jaykomarraju

Copy link
Copy Markdown
Contributor

0.2.0 published correctly to both registries and the smoke job still went red, for a reason that had nothing to do with the packages.

What happened

PyPI had not propagated tx402==0.2.0 when attempt 1 ran — exactly the race the retry loop exists for. But uv venv had already created .venv before uv pip install failed, so attempts 2 through 5 died at uv venv:

error: Failed to create virtual environment
  Caused by: A virtual environment already exists at: .venv

The && chain short-circuited there, so the install was never retried even once. A loop written to survive propagation lag could not survive its own first failure.

The fix

uv venv --clear recreates the environment each round, so a retry is actually a retry.

Both loops also ran off the end when every attempt failed, leaving the next command to report the problem. That is why the log's headline was Failed to spawn: tx402 — No such file or directory rather than "the package never appeared", which is what actually happened. Each loop now fails explicitly and names the registry and the version.

Verification

Reproduced directly:

Result
second plain uv venv already exists — the failure
uv venv --clear succeeds
uv venv && uv pip install tx402==0.2.0 today succeeds first try, now that PyPI has propagated

The 0.2.0 artifacts themselves were verified by hand from the registries: all 12 entry points load, both CLIs report 0.2.0, and npm carries a SLSA provenance v1 attestation. tx402/durable-object and tx402/gateway/worker import cloudflare:workers and so load only under the Workers runtime — by design, and confirmed against the published tarball with that specifier stubbed.

CI-only change. No package, source or documentation is touched.

…y retry

0.2.0 published correctly to both registries and the smoke job still failed, for
a reason that had nothing to do with the packages.

PyPI had not propagated `tx402==0.2.0` when attempt 1 ran — exactly the race the
retry loop exists for. But `uv venv` had already created `.venv` before
`uv pip install` failed, so attempts 2 through 5 died at `uv venv` with
"a virtual environment already exists", and the `&&` chain short-circuited before
the install was ever retried. A loop written to survive propagation lag could not
survive its own first failure. `uv venv --clear` recreates the environment each
round, so a retry is actually a retry.

Both loops also ran off the end when every attempt failed, leaving the next
command to report the problem. That is why the log's headline was
`Failed to spawn: tx402 — No such file or directory` rather than "the package
never appeared", which is what actually happened. Each loop now fails explicitly
and names the registry and version.

Verified by reproducing it: a second plain `uv venv` reports "already exists",
and `uv venv --clear` succeeds.
@jaykomarraju
jaykomarraju merged commit e25fad3 into main Aug 12, 2026
14 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