# Environment variables
.env
.env.local
.env.*.local

# Data cache
data_cache/
data_cache/*.json

# Ignore JSON files except in frontend
*.json
!frontend/*.json
!frontend/**/*.json
# Committed test goldens (the frozen MCP tool surface the ChatGPT and
# Claude app directories rescan). A golden git refuses to store is not a
# golden — tests/test_mcp_tool_surface_frozen.py fails without it.
!tests/golden/*.json
# The four plugin manifests the directory packages are built from — a clean
# export without them cannot run integrations/check.py (release review R-16).
# tests/test_integrations_manifests_tracked.py pins that git tracks them.
!integrations/**/*.json

# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

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

# IDEs
.vscode/
.idea/
*.swp
*.swo
*~
.DS_Store

# Logs
*.log
logs/

# Testing
.pytest_cache/
.coverage
htmlcov/

# Jupyter Notebook
.ipynb_checkpoints
friday_options_income/*.db
*.db

# Python cache
__pycache__/
*.py[cod]
*$py.class

# Local Claude Code state + real trade exports — never track (secrets/PII)
claude_config/
COMBINED_*_TRADES.csv

# Agent scratch space. A scratchpad directory sometimes lands at the repo root
# (a relative path resolved against cwd instead of the session temp dir); it is
# never part of the tree.
scratchpad/
