Skip to content

ci(release): widen the lock-sync retry window for PyPI propagation - #2716

Open
goldmedal wants to merge 1 commit into
mainfrom
ci/sync-lock-retry-window
Open

ci(release): widen the lock-sync retry window for PyPI propagation#2716
goldmedal wants to merge 1 commit into
mainfrom
ci/sync-lock-retry-window

Conversation

@goldmedal

@goldmedal goldmedal commented Aug 31, 2026

Copy link
Copy Markdown
Collaborator

Problem

wren-core-py 0.7.6 published to PyPI successfully, but the follow-up sync-wren-core-py-lock / sync-lock job failed, so no chore(wren): bump wren-core-py to 0.7.6 PR was opened and core/wren still pins 0.7.5.

All five uv add attempts hit the same resolution error:

× No solution found when resolving dependencies for split (markers:
  python_full_version >= '3.14' and sys_platform == 'win32'):
╰─▶ Because only wren-core-py<=0.7.5 is available and your project depends
    on wren-core-py>=0.7.6, we can conclude that your project's requirements
    are unsatisfiable.

The published files are fine — 0.7.6 ships the same wheel set as 0.7.5 (cp311-abi3 for macOS x86_64/arm64, manylinux, win_amd64, plus an sdist, all requires-python >=3.11). The marker split in the message is just where the resolver gave up first; the real cause is that the new version was not yet visible in the index uv reads. The existing retry loop (5 attempts, 20s apart) only covered about 80 seconds, and the whole job finished 1m35s after publish.

Change

Widen the window in the Bump floor and relock core/wren against published wren-core-py step:

  • 5 attempts → 10, 20s → 60s between them, so it waits up to ~9 minutes rather than ~80 seconds.
  • Attempt count and delay become attempts / delay variables instead of literals repeated in three places, and the retry log now reads attempt 3/10 failed; retrying in 60s with the count in the final error too.
  • The comment records the failure that motivated the size, so the number is not a bare magic constant next time someone reads it.

Behaviour is otherwise unchanged: success still exits on the first passing attempt, and exhausting all attempts still fails the job.

Verification

  • YAML parses; extracted run script passes bash -n.
  • actionlint clean.
  • Loop dry-run with attempts=3, delay=0 prints 1/3, 2/3, then errors out after the third — success and exhaustion paths both behave.

Note

This only prevents future occurrences. The 0.7.6 sync still needs a manual workflow_dispatch run of sync-wren-core-py-lock; 0.7.6 resolves fine now, so it will pass on the first attempt.

Summary by CodeRabbit

  • Chores
    • Improved dependency synchronization reliability by retrying updates up to 10 times with longer delays.
    • Enhanced retry and failure messages with clearer context about attempts and package availability.

The 0.7.6 release published fine but the follow-up lock sync failed: all
five uv add attempts (~80s total) still resolved against an index that only
listed 0.7.5. Wait up to 10 minutes instead so a slow index update no longer
turns a good release into a red job needing a manual re-run.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added the ci label Aug 31, 2026
@coderabbitai

coderabbitai Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 39031577-d20a-4848-a718-153d50a5b639

📥 Commits

Reviewing files that changed from the base of the PR and between cedc15b and 3a1005e.

📒 Files selected for processing (1)
  • .github/workflows/sync-wren-core-py-lock.yml

Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review.


Walkthrough

The lock-sync workflow now retries uv add 10 times with 60-second delays. Retry logs and the final error report the configured attempt count and PyPI propagation context.

Changes

Lock Sync Workflow

Layer / File(s) Summary
Configure uv add retries
.github/workflows/sync-wren-core-py-lock.yml
The workflow changes retries from five attempts with 20-second delays to 10 attempts with 60-second delays. Logs and the final error include the configured attempt count.

Estimated code review effort: 2 (Simple) | ~5 minutes

Merge Risk: ⚪ Minimal · up to 3a100

The workflow now retries PyPI synchronization for a longer bounded window while preserving existing success and failure behavior; no actionable merge-blocking risk remains after normal checks and review.

Poem

A rabbit counts retries in rows
Ten hops wait while PyPI flows
Sixty seconds, then one more try
Clear logs tell the reason why
The lock file lands when clouds pass by

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly describes the main change: extending the CI lock-sync retry window to account for PyPI propagation delays.
Description check ✅ Passed The description explains the failure, the code change, unchanged behavior, verification steps, and required manual follow-up. It uses alternative headings and does not include the template's Duplicate…
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description explains the failure, the code change, unchanged behavior, verification steps, and required manual follow-up. It uses alternative headings and does not include the template's Duplicate check section, but the required information is mostly complete.

Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (1 skipped: 1 unsupported.)

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ci/sync-lock-retry-window

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant