# Reproducibility — WP-AI-0001 ```bash cd ia/wp-ai-0001 python3 -m pip install -e ".[dev]" # or: uv pip install -e ".[dev]" python3 -m pytest tests -q # unit + causal-sanity tests (CPU, < 30 s) python3 scripts/audit_environment.py # writes docs/ENVIRONMENT_AUDIT.json (add --cluster to probe nodes) python3 scripts/run_pilot.py --quick --device cpu --seeds 0 1 --n-boot 200 # CPU smoke test, ≈ 25 s python3 scripts/run_pilot.py --seeds 0 1 2 --steps 3000 # Tier-0 pilot (MPS ≈ 5 min) python3 scripts/train_models.py # 17-model matrix (≈ 13 min MPS) python3 scripts/run_transplant.py # exploratory transplant run (≈ 3 min) python3 scripts/run_transplant.py --tag confirmatory --seed-base 90000 # confirmatory run (prereg v1.0) python3 scripts/eval_persistent.py --run --seed-base 95000 # saved adapter in a fresh process python3 scripts/confirmatory_analysis.py --run # pre-declared contrasts + Holm python3 scripts/run_tier1.py [--quick] [--split dev|confirmatory] [--pairs a:b ...] # open-weight models (MLX) python3 scripts/build_figures.py --run ; python3 scripts/build_tables.py --graft ... ; scripts/build_paper.sh ``` - Every run writes `experiments/manifests/.json` (git commit, config hash, data hashes, seeds, libraries, hardware, status history), appends to `experiments/registry/runs.jsonl`, and stores results in `experiments/summaries//` (`results.json`, `SUMMARY.md`). Per-item predictions are in `artifacts/runs//` (git-ignored), models in `artifacts/models//`. - Run IDs are deterministic functions of the experiment id and config hash; re-running with the same config reuses trained models from `artifacts/models//` (delete to retrain). - Determinism: PyTorch on MPS was verified bitwise-repeatable for this model (`noop.deterministic_repeat`); localization sweeps repeated twice differ by 0.0. Training determinism across devices is *not* claimed (CPU vs MPS kernels differ); seeds reproduce training on the same device/library versions. - Data are synthetic and regenerated from seeds; the split hashes recorded in manifests must match. - Secrets: none required. No tokens are read; paths are relative to the project root.