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

# Secrets / env files — broad match so backups (.env.bak, .env.production.bak_*)
# and any variant are ignored, never packaged. Only *.example templates are kept.
# (2026-05-08 incident: violawake 0.2.4 sdist leaked a live Stripe key via
# unignored codex debris; .env.production.bak_* was a second, still-unignored
# leak surface. See tests/unit/test_sdist_hygiene.py.)
.env
.env.*
!.env.example
!.env.*.example

# Virtual environments — match any .venv* / venv* variant, not just .venv
.venv
.venv*
env/
venv/
venv*/
ENV/

# IDE
.vscode/
.idea/
*.swp
*.swo
*~

# Testing
.pytest_cache/
.coverage
htmlcov/
.tox/
.nox/
coverage.xml
*.cover
*.coverage.*
nosetests.xml
test-results/
junit*.xml

# Type checking
.mypy_cache/
.dmypy.json
dmypy.json
.pytype/

# Distribution
*.tar.gz
*.whl
CHANGELOG.md.bak

# WASM SDK
wasm/node_modules/
!wasm/dist/
!wasm/dist/**

# Generated API docs
docs/api/html/

# Models (too large for git — use DVC or release artifacts)
*.onnx
*.pt
*.bin
models/

# Training data and corpus (large — not in git)
data/
corpus/
_training_corpus/
*.wav
*.mp3
*.flac
*.npy
*.npz

# Jupyter
.ipynb_checkpoints
*.ipynb

# OS
.DS_Store
Thumbs.db
desktop.ini

# Secrets
.env.local
.env.*.local
*.key
secrets.json

# Benchmarks
benchmark-results/
*.benchmark.json

# Logs
*.log
logs/
.codex_log.txt

# Codex investigation/dispatch logs (session artifacts, not source)
.codex_*.txt
.codex_inv*.txt
.codex_log_*.txt
.codex_prompt_*.txt

# Ruff
.ruff_cache/

# Console
node_modules/
console/backend/data/
console/frontend/dist/
**/screenshots/
*.db
*.db-journal
*.db-wal

# Temp files
tmp*/
nul
.codex_tmp/
.codex_prompt.txt
experiments/embedding_cache.npz.bak_round*

# Test artifacts
test_model.config.json
tests/live/.smoke_last_output.txt
.openapi_live.json
# WASM browser SDK shipped to violawake.com via Cloudflare Pages
!console/frontend/public/wasm/dist/
!console/frontend/public/wasm/dist/**
!console/frontend/public/wasm/models/
!console/frontend/public/wasm/models/**
.wrangler/

# Friction-enforcement hook runtime state (per-session, never committed)
.viola/agents/question_budget_markers/
.viola/agents/proof_claim_markers/
