# Byte-compiled / cache
__pycache__/
*.py[cod]
*$py.class
*.so
.Python

# Virtual environments
.venv/
venv/
ENV/
env/

# Packaging / build
build/
dist/
*.egg-info/
.eggs/
*.egg

# Test / type / lint caches
.pytest_cache/
.mypy_cache/
.ruff_cache/
.coverage
htmlcov/
.tox/
.nox/

# uv / tooling
uv.lock.bak

# Editors / OS
.idea/
.vscode/
*.swp
*~
.DS_Store
Thumbs.db

# Local / secrets
.env
.env.*
!.env.example
*.pem
*.key
*.p12
*.pfx
id_rsa
id_ed25519
*_rsa
*_ed25519

# Vernier local store
.vernier/

# Local burn-in / corpus rebuild scratch (published study evidence stays tracked)
/_burnin_*/
/_burnin_control_agents/
burnin_run.log
burnin_control_run.log
corpus_build.log
corpus_verify.log

# KT-1 corpus raw records (large). Rebuild: scripts/build_corpus.py
testdata/corpus/runs/
testdata/corpus/_tmp_record/
testdata/corpus/_tmp_control_record/
testdata/corpus/_verify_staging/
testdata/corpus/_kt1_staging/
testdata/corpus/_burnin_staging/
testdata/corpus/_burnin_control/
testdata/corpus/kt1_results.csv

# Invalidated CP-9 corpus (scripted agents) — keep on disk, not in git
testdata/corpus-v0-invalid/runs/
testdata/corpus-v0-invalid/_*/
testdata/corpus-v0-invalid/kt1_results.csv

# KT-2 labelling scratch (queue/labels/sealed stay tracked)
testdata/labels/_staging/
testdata/labels/session.json
testdata/labels/blind/
