# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
dist/
*.egg-info/
.eggs/
develop-eggs/
.installed.cfg
*.egg

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

# uv
uv.lock.bak

# Testing / coverage
.pytest_cache/
.coverage
.coverage.*
coverage.xml
htmlcov/
.mypy_cache/
.ruff_cache/
.hypothesis/

# Run artifacts (generated reports)
runs/
calib/

# Example outputs (generated by examples/*; never committed)
provael.mlbom.json
eval_results.yaml
/*.sarif
/scorecard.md
asr_by_family.png

# MkDocs build output
site/

# Optional demo recording (regenerated by scripts/record_demo.sh when asciinema+agg
# are installed); the committed deterministic asset is docs/assets/demo.svg.
docs/assets/*.gif

# OS / editor
.DS_Store
.idea/
.vscode/
*.swp
*~

# Jupyter
.ipynb_checkpoints/

# private strategy/market docs — never publish
/vla-redteam-*.md

# Signing keys. The repo signs the public leaderboard and per-checkpoint regression
# attestations with Ed25519; the PRIVATE key belongs in a secret store
# (secrets.PROVAEL_SIGNING_KEY), never in git. Public keys are published deliberately
# and are added with an explicit negation below.
*.pem
*.key
!leaderboard/results/leaderboard.pub
