# Scratch notes (local idea capture)
scratch/

# NFS temporary files
.nfs*

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
/build/
develop-eggs/
/dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg

# PyInstaller
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage*
.cache
nosetests.xml
coverage.xml
coverage.json
*.cover
.hypothesis/

# CI diagnostics drop (per-worker event logs, stack dumps, container logs).
# Written by tests/ci_diagnostics.py and .github/actions/capture-ci-diagnostics
# whenever OSPREY_CI_DIAG_DIR is set; uploaded as an artifact, never committed.
/ci-diag/
.pytest_cache/

# Jupyter Notebook
.ipynb_checkpoints

# Environment directories
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# IDE specific files
.idea/
.vscode/
*.swp
*.swo

# OS specific files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

# Data, models, and results
!data/.gitkeep
# models/ - Removed this to allow tracking model_config.py
!models/.gitkeep
results/
!results/.gitkeep
# Any source dir named results/ is SOURCE, not ML output — the broad unanchored
# results/ ignore above must not swallow it (this negation is deliberately
# path-independent: pinning it to one package broke when the bluesky panels
# moved services/ -> interfaces/, silently dropping the panel from the move).
!src/**/results/
# Benchmark model-matrix run exhaust (#259) — regenerable from scripts/benchmark/.
# All generated artifacts (dashboard.html, results_box/, live_updater.log) live
# under one output dir co-located with the tooling, keeping the repo root clean.
scripts/benchmark/_out/
*.h5
*.pkl
*.pt
*.pth
*.onnx
*.mlmodel

# Logs
logs/
*.log
!tests/deployment/fixtures/*.log
tensorboard/

# Temporary files
tmp/
temp/

venv*

*.jpg
*.gif
*.bmp
*.tiff
*.ico

# Credentials
.env

delete_me*
valves.json
*.code-workspace

# Agent data directories
_agent_data/*
.agents/

# Local coding-agent guidance (kept out of git; see /CLAUDE.md below)
AGENTS.md

# Sample logbook data (large JSONL files)
logbook_*.jsonl

# Auto-generated documentation
_autosummary/
docs/build/

# PID files
*.pid

# Development services and applications (keep locally but not in git)
/.claude
_issues
/CLAUDE.md
.mcp.json

# Git worktrees
.worktrees/

# Generated benchmark databases (regenerate: uv run python scripts/generate_benchmark_suite.py)
data/benchmarks/cross_paradigm/tier*/

# OSPREY workspace (runtime data, not tracked — now covered by _agent_data/* above)

# Vendor assets (fetched at build time via `osprey vendor fetch`)
src/osprey/interfaces/artifacts/static/js/vendor/
src/osprey/interfaces/artifacts/static/css/vendor/
src/osprey/interfaces/web_terminal/static/vendor/
src/osprey/interfaces/tuning/static/vendor/
src/osprey/interfaces/lattice_dashboard/static/vendor/
tests/e2e/claude_code/benchmark_results/

# Benchmark results accidentally produced inside the packaged template tree
# (running the channel-finder benchmark from the template dir writes here;
# the wheel packages all of src/osprey, so results must never land in git
# or the build — see also the hatch exclude in pyproject.toml)
src/osprey/templates/apps/control_assistant/data/benchmarks/results/

# Playwright MCP browser-session cache (page snapshots, console logs)
.playwright-mcp/

# Node.js (dev-only JS toolchain; not part of the Python wheel)
node_modules/

# Working directory gitlab-ci-local writes when the deploy goldens are checked
# against a real pipeline parser. Created wherever the check is run from.
.gitlab-ci-local/

# Version stamp written by the hatch-vcs build hook. Committing it would recreate
# the stale-literal problem the git-derived version exists to remove. It is still
# packaged into the wheel and sdist — the hook registers it as a build artifact.
src/osprey/_version.py

# feature-scaffolding logs (not committed)
.claude/.logs/.state/
.claude/.logs/*.jsonl

# Process scaffolding — never committed (specs/plans live here uncommitted)
docs/superpowers/
