Uh oh!
There was an error while loading. Please reload this page.
deps: lock the test dependencies with hashes - #40
Conversation
requirements-test.txt specified only floors, so CI resolved a different tree on every run and a compromised upstream release would have been installed on the next one with nothing to review. Splits it the way #10 proposes: requirements-test.in hand-edited floors requirements-test.txt generated, 24 packages pinned exactly with hashes CI installs with --require-hashes, so a re-uploaded or tampered-with wheel fails the install instead of running. This is the cheap half of #10 — the issue suggests it explicitly as the way to establish the pattern, because the test set has no torch in it. requirements.txt still can't be locked mechanically: torch is installed separately from the cu130 index and deliberately isn't listed, so the lock must not drag a PyPI torch in over the cu130 wheel. Noted in requirements.txt so the asymmetry reads as pending work rather than an oversight; #10 stays open for it. Verified with a clean venv: `pip install --require-hashes -r requirements-test.txt` succeeds and the full protocol suite passes against it. requirements-test.in is added to the workflow's path filters so editing the source re-runs the suite.
Compiled on 3.12, the resolution pinned numpy 2.5.1, which requires >=3.12 — so the 3.11 job in the matrix couldn't install it at all: ERROR: Could not find a version that satisfies the requirement numpy==2.5.1 Recompiled with --python-version 3.11 (the oldest version server.yml tests), so the universal resolution emits both behind markers: numpy 2.4.6 below 3.12, 2.5.1 at or above. Documented in requirements-test.in, since the flag is easy to leave off and the failure only shows on the oldest matrix entry.
z33b0t
commented
Jul 29, 2026
@z33b0t ready to merge. All 9 checks green — including That job failed on the first push and caught a real bug: I'd compiled the lock on 3.12, which pinned This deliberately does not close #10. It locks the test deps only. Verified with a clean venv: hash-checked install succeeds and the full suite passes against it. |
z33b0t
commented
Jul 29, 2026
@z33b0t Green and ready, but I can't merge this one — my Either merge it yourself, or grant the scope and I'll finish: (Oddly, #30 and #37 modified workflows and merged fine before this started refusing — so the restriction isn't applying consistently. Worth knowing in case you see it again.) |
z33b0t
commented
Jul 29, 2026
yes, exclude torch (and its CUDA deps) from the compile |
z33b0t
commented
Jul 29, 2026
@z33b0t Thanks — done, in #49. Excluded from the lock: Kept in deliberately: One thing worth knowing that fell out of doing it: torch still has to be pinned in Verified by building and running the image on the GPU box: builds under This PR (#40) is still blocked on the
|
The cheap half of #10, which the issue itself suggests as the way in:
requirements-test.in— hand-edited floors, unchanged contentrequirements-test.txt— generated, 24 packages pinned exactly with hashes--require-hashesDeliberately does not close#10
requirements.txtstill carries floors. Locking it is not a mechanical repeat: torch is installed separately from the cu130 index and deliberately isn't listed, so a naive compile would resolve a PyPI torch that clobbers the cu130 wheel — and--generate-hashesneeds every dependency to have artifacts on PyPI, which thegitinstall in the Dockerfile hints isn't universally true here.That needs a decision I'd rather you make than guess at:
I lean toward the first: it matches how the image already installs, and the cu130 wheel is already pinned exactly (
torch==2.12.1). Tell me which and I'll do it. I've left a note inrequirements.txtso the gap reads as pending rather than missed.Verification
Fresh venv, hash-checked install, full suite:
requirements-test.inis added toserver.yml's path filters so editing the source still triggers the suite.Note for #8 / #33
This unblocks the
piphalf of the Dependabot config — worth adding in whichever of these lands second.Refs #10