# Python
__pycache__/
*.py[cod]
.venv/
venv/
dist/
build/
*.egg-info/
.pytest_cache/
.ruff_cache/
.mypy_cache/

# Node
node_modules/
frontend/dist/
.vite/
# Built frontend (built at release time, not committed) — but keep the
# directory itself: pyproject force-includes it, and hatchling errors out
# on a fresh clone if the path does not exist.
modelmri/static/app/*
!modelmri/static/app/.gitkeep

# ModelMRI runtime data
*.mri
activations/
*.zarr/
sessions.sqlite*

# Models & weights — never commit
*.safetensors
*.gguf
*.ckpt
*.pt
*.pth

# OS / editor
.DS_Store
Thumbs.db
.idea/
.vscode/
*.log

# Secrets
.env
.env.*
*.token

# built docs (published by the Pages workflow, not committed)
/site/

# Scratch files from verification runs and audit agents. One of these
# (nanhead.py, a two-layer net used to reproduce a nan) reached a release
# commit because nothing here excluded it.
/scratch/
/scratchpad/
/nanhead.py
/rep[0-9]*.py
/refute*.py

# Traces the recorder could not deliver. They contain full prompts and tool
# output, and they land in whatever directory the host app was started from —
# including this one, when the shipped demo runs with no viewer listening.
modelmri-traces/

# Built by `scripts/build_frontend.py --viewer`; deployed by the Pages workflow.
viewer-dist/
tests/fixtures/parity.mri
