# --- Base ignores (stack-agnostic) ---

# Secrets / local env — never commit real ones (see .env.example)
.env
.env.*
!.env.example
*.local

# Editor / OS cruft
.vscode/*
!.vscode/extensions.json
!.vscode/launch.json
.idea/
.DS_Store
Thumbs.db
*.log

# Generic build / cache output
dist/
build/
out/
coverage/
.cache/
tmp/
*.tmp

# --- Python ---
.venv/
venv/
__pycache__/
*.py[cod]
*$py.class
*.egg-info/
.eggs/
.pytest_cache/
.ruff_cache/
.mypy_cache/
.hypothesis/
.coverage
.coverage.*
htmlcov/

# --- Crucible: run artifacts & model/dataset caches ---
# Experiment run records are reproducible from config; keep them out of git by
# default. Commit a specific run dir explicitly with `git add -f` if it's a result.
runs/
# HuggingFace datasets / model caches if pointed inside the repo
.hf_cache/
*.ckpt
*.safetensors

# Agent/session working files. These are kept out of the repo on purpose: CLAUDE.md is a
# local standing brief, not a shipped doc. Listed here (not only in a machine-local global
# gitignore) so a clone on any other machine ignores them too.
.claude/
CLAUDE.md
