ci: gate on lockfile drift and regenerate uv.lock for 1.10.1 - #129
Merged
Conversation
uv.lock's root package version had drifted behind pyproject.toml (1.10.0 vs 1.10.1), and no workflow ever asserted the lockfile against pyproject.toml, so drift shipped silently. Add --locked to the existing uv sync steps in ci.yml and release.yml so a stale lock fails the build, and document the uv lock regeneration step in the release process.
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.
Intent
uv.lock's root package version had drifted behindpyproject.toml(1.10.0 vs the current 1.10.1), and this has happened twice in the last four releases (also v1.9.0 vs a v1.8.2 lock)pyproject.toml—ci.ymlandrelease.ymlall run plainuv sync, which silently regenerates the lock in the runner and continues greenpyproject.toml, notuv.lock. The risk is to contributors runninguv sync --locked, who get rejected against a drifted checkout--lockedto the existinguv syncsteps inci.yml(lint + test jobs) andrelease.yml(gate job), rather than adding a separateuv lock --checkstep or a parallel job — it reuses the sync call every job already makes instead of growing new CI machineryuv.lockviauv lockso the root package reads 1.10.1uv lockregeneration step in AGENTS.md's Release Process section, alongside the existing version-bump instructionsTested the gate: reverted
uv.lock's root package version to1.10.0locally and ranuv sync --locked— it failed witherror: The lockfile at uv.lock needs to be updated, but --locked was provided.Restored the correct lock and reran; it passed cleanly.