-r requirements.txt

# ML stack — versions current as of 2026-05-14 with Python 3.14 wheel coverage.

# torch + torchvision are NOT listed here: they are installed CPU-only from
# the PyTorch CPU index in Dockerfile. The default PyPI torch wheel bundles
# the NVIDIA CUDA runtime (a ~5.6GB image layer); this pipeline is CPU-only,
# so Dockerfile uses the +cpu wheels from
# https://download.pytorch.org/whl/cpu instead.
#
# torchvision declares requires_python "!=3.14.1" (0.27 through 0.29). The
# image's python:3.14-slim is past that patch, so it only bites a build pinned
# to exactly 3.14.1.
#
# No caps below: rule 154 wants a named breakage for one, and none of the
# `<N` caps these lines used to carry had one. opencv-python-headless and
# onnxruntime were dropped (#1451): listed since the 2026-05-14 scaffold,
# imported by nothing in backend/ — ONNX inference lives in the GPU agent.

transformers>=5.8
huggingface-hub>=1.14

# scikit-learn powers the tag-eval (#1130) head-vs-centroid comparison: logistic
# regression + cross-validated precision/recall/AP. Battle-tested metrics matter
# because that eval's whole purpose is producing trustworthy numbers. numpy is
# left to resolve transitively (torch/transformers/sklearn all pull it) to avoid
# pinning against their constraints.
scikit-learn>=1.7
