Pin all dependencies with hashes and add a CVE audit

Only the direct dependencies were pinned. Werkzeug, Jinja2, MarkupSafe,
itsdangerous and the other transitive packages were resolved at build
time, so builds of the same commit could differ, and pip did not verify
the downloaded files. There was also no vulnerability scan.

- requirements.in / requirements-dev.in list the direct dependencies.
  requirements.txt / requirements-dev.txt are lockfiles generated by
  pip-compile with exact versions and hashes for every package. The dev
  lockfile is constrained by the production one.
- Makefile targets: lock-deps, update-deps, sync-deps and audit
  (pip-audit against requirements.txt).
- The locked production versions match the previously installed ones.
  The first audit found no known vulnerabilities.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
finnandClaude Opus 5.5 committed 2026-10-21 18:30:08 +00:00
1 parent 2fb357ae77
commit 53081dd553
6 files changed
+861 -7

No files matched your search

+5
View File
@@ -0,0 +1,5 @@
# Direct dependencies of MAX. Pinned versions with hashes are in requirements.txt,
# generated by `make lock-deps` (see README).
Flask>=3.1,<4
gunicorn>=26,<27
psycopg2>=2.9,<3