# Pinned versions for the CPU analysis.
#
# NOTE ON FOLD DETERMINISM: sklearn's GroupKFold assigns folds via np.argsort over
# group sizes. Our group sizes are almost entirely tied (1193/1200 CtrlPairs items have
# exactly 3 rows; every RAGTruth item is a singleton), so the split is decided by
# argsort tie-breaking, which changed at numpy 2.3. Estimates that depend on the split
# therefore move by up to ~0.01 AUROC across numpy versions. scripts/cr_*.py use an
# explicitly seeded group splitter and report mean+-sd over seeds; see the appendix.
#
# --- analysis (CPU; reproduces the paper's numbers from cached features) ---
numpy==2.1.3
scipy==1.15.3
scikit-learn==1.8.0
matplotlib==3.10.0
pyyaml>=6.0
tqdm>=4.66
nltk>=3.8            # sentence splitting for the SummaC-style NLI baseline
# --- extraction (GPU node; regenerates runs/*/features.npz from scratch) ---
# the GPU run used torch 2.11 / transformers 5.12 / datasets 5.0; these lower
# bounds are compatible with the cached-feature analysis above.
torch>=2.10
transformers>=5.5
datasets>=5.0
accelerate>=0.30
safetensors>=0.4
sentencepiece>=0.2
protobuf>=4.0
