Commit 4ea4457
fix(sentinel): hash-pin the image's Python dependencies
The base image is already pinned by digest; the Python layer on top was not.
requirements.txt is all floating >= constraints, so two builds of the same
Dockerfile could install different code, and this is an image people build and
run from the README's docker-compose rather than something CI produces once.
requirements.txt stays as the statement of intent. requirements.lock.txt is the
resolved, hash-pinned form and is what gets installed, so a rebuild fetches the
same bytes. The compile command is in the Dockerfile next to the COPY.
Verified with pip install --dry-run --require-hashes against the lock: resolves
clean, 44 packages, and picks up cryptography 50.0.1, above the floor the
org-wide advisory work set.
This is the only unpinned install in the repo that is neither a local path nor
a deliberate published-artifact fetch. The other Scorecard pipCommand findings
here are one or the other, and are being dismissed with reasons rather than
"fixed" into something they should not be.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XbDBXDWWvMFa7c2jGgyq9t1 parent a068f08 commit 4ea4457
2 files changed
Lines changed: 1314 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
5 | | - | |
6 | | - | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
7 | 13 | | |
8 | 14 | | |
9 | 15 | | |
| |||
0 commit comments