Re-lock after the release PR bumps the version - #9
Conversation
pyproject.toml is the single version source, but uv.lock keeps its own copy of it in the `cadent` entry, and nothing re-locked after the bump. The two had drifted two releases apart — the lock said 0.2.0 against a 0.4.0 project — so every `uv sync` regenerated that entry and left a dirty uv.lock in the tree, which is easy to mistake for churn and revert. Harmless only by luck: no workflow passes `--locked` or `--frozen` today, and the first one that does would fail on a clean checkout. `scripts/release.py prepare` now runs `uv lock` straight after writing the version, so the fix holds whether the release PR or a human drives it. uv keeps every version it can, so a bump rewrites that one field and nothing else — verified here: regenerating the committed lock changed exactly one version line and moved the `cadent` block, with no dependency upgrades and the same total line count. A missing `uv` is a hard failure rather than a skip, because a release that quietly leaves the lock behind is how this accumulated. uv.lock is regenerated in this commit to close the existing 0.2.0 -> 0.4.0 gap. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Warning Review limit reached
Next review available in: 23 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (2)
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. Comment |
cec7056 to
3927346
Compare
pyproject.tomlis the single version source, butuv.lockkeeps its own copy of it in thecadententry — and nothing re-locked after the bump. The two had drifted two releases apart:So every
uv syncregenerated that entry and left a dirtyuv.lockin the working tree. That's easy to mistake for unrelated churn and revert — which is exactly what I did twice while working on #7 before stopping to look at why it kept coming back.It is harmless only by luck. No workflow passes
--lockedor--frozentoday; the first one that does would fail on a clean checkout.The fix
scripts/release.py preparenow runsuv lockimmediately after writing the version, so this holds whether the release PR drives it or a human does. A missinguvis a hard failure rather than a skip — a release that quietly leaves the lock behind is precisely how this accumulated.uv.lockis regenerated in this commit to close the existing gap.Why this doesn't drag in dependency updates
uv lockre-resolves but keeps every version it can, so a version bump rewrites one field. Verified rather than assumed — regenerating the committed lock reported:and the diff contains exactly one changed version line, one moved
cadentblock, no other package touched, and the same total line count:relock()is also idempotent — running it against the regenerated lock leaves the bytes unchanged.Testing
uv run ruff check scripts/release.pyclean;scripts/release.py next-versionstill reports correctly (0.5.0, from the pending fragment on main).Fragment is
chore— release tooling, nothing user-facing, so it never renders into the changelog.🤖 Generated with Claude Code