fix(deps): restore uv.lock so hydra images are reproducible - #15703
Merged
Conversation
a2ce699 ("feat(argus): add always-on replay log and replay-only client") removed uv.lock along with its other changes. Nothing broke loudly, because docker/env/build_n_push.sh runs `uv lock` immediately before `docker build`, so the lock the Dockerfile consumes via `ADD uv.lock .` + `uv sync --frozen` is regenerated on every build. That is precisely the problem: with no committed lock, `--frozen` is frozen against a file resolved seconds earlier, so two builds of the same commit can resolve different transitive versions. On a branch whose whole purpose is performance measurement, the toolchain underneath the numbers should not drift silently between images. Restored from a2ce699^ and re-resolved against the current pyproject.toml. The only content changes are five pins that moved in the meantime — pyzmq, questionary, requests, rich and scylla-driver — each already declared in pyproject.toml, so the lock now simply agrees with it. Verified with `uv lock --check` and a real `uv sync --frozen`. Confirmed byte-identical to what the CI runner's own `uv lock` produces: the build_image run on scylladb#15694 (which had this lock committed) committed only docker/env/version, leaving the lock untouched.
Contributor
I would restore it on all branches, if it was deleted in this commit, it seems accidental and that PR/commit for sure shouldnt have touched this |
pehala
approved these changes
Aug 6, 2026
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.
Split out of #15694, which no longer depends on it.
Problem
uv.lockwas removed from this branch bya2ce6998c9"feat(argus): add always-on replay log and replay-only client", alongside that commit's other changes.Nothing broke loudly, because
docker/env/build_n_push.shregenerates it:so the lock that the root
Dockerfileconsumes —— exists by the time
ADDruns.That is precisely the problem. With no committed lock,
--frozenis frozen against a file resolved seconds earlier, which makes it a no-op: two builds of the same commit can resolve different transitive versions. On a branch whose entire purpose is performance measurement, the toolchain underneath the numbers should not drift silently from one hydra image to the next.mastercommits itsuv.lockfor the same reason, and this branch did too until July.What changed
uv.lockrestored froma2ce6998c9^and re-resolved against the currentpyproject.toml. The only content changes are five pins that moved in the meantime —pyzmq26.2.0→27.1.0,questionary2.1.0→2.1.1,requests2.32.4→2.33.0,rich14.3.2→14.2.0,scylla-driver3.29.5→3.29.9 — and each is already declared inpyproject.tomlat exactly that version (lines 62-66), so the lock is not choosing anything new, it is catching up to what the manifest already says.Verification
uv lock --check— clean, 244 packages.uv sync --frozen— completes, i.e. the exact step the Dockerfile runs.New Hydra Versionbuild ran green; the resulting bot commitd57bc6ae53"chore(hydra): create image 1.108-PR15694-82b64e2" touched onlydocker/env/version— the runner's ownuv lockfound nothing to change. The published imagescylladb/hydra:v1.108-PR15694-82b64e2was then confirmed to carry the expected interpreter and packages.No behaviour change on its own;
build_n_push.shkeeps working either way, and from here on it has a committed lock to reproduce rather than a fresh resolution to invent.