# Build artifacts
/target

# OS / editor / agent runtime junk
.DS_Store
.idea/
.vscode/
.claude/

# Python
__pycache__/
*.pyc
# PyO3 binding build artifacts (maturin builds in python/, separate target dir)
/python/target
/python/dist
*.so
*.pyd
*.pdb
.venv/
build/
*.egg-info/

# Benchmark run artifacts (regeneratable): the whole output directory is ignored,
# with named exceptions below for the datasets a fresh HEAD cannot reproduce. The
# figures the README renders are committed under docs/figures, not here. Note the
# `/*` form: ignoring the *directory* would make the `!` exceptions below dead,
# because git never descends into an excluded directory.
benches/bench_out/*

# Exception: the pre-BCGS2 (v0.11 MGS) block-GMRES reference is *not* regeneratable
# from HEAD (it needs the old binary), so it is committed as a frozen baseline the
# block_gmres_plot overlays against the current build.
!benches/bench_out/block_gmres_mgs_ref.jsonl

# Exception: the release-history head-to-head needs one bench binary per release
# tag, so it is not regeneratable from HEAD either (benches/run_accel_history.sh
# rebuilds the tags; the aggregate is committed so the figures stay reproducible).
!benches/bench_out/accel_history.jsonl

# Exception: the iterative-layer study data is committed so the report figures are
# reproducible and the headline numbers are inspectable without re-running the benches.
!benches/bench_out/recycle_study.jsonl
!benches/bench_out/deflation_study.jsonl
!benches/bench_out/fgmres_accounting.jsonl
!benches/bench_out/adaptive_restart.jsonl

# Local calibration cache (the `tuning` feature also writes this to the OS temp dir)
rslab-calib/
rla-calib/

# Local backups + regenerated tuner parity fixture (opt-in test)
*.bak
src/tuner_parity*.json
