# Python
__pycache__/
*.py[cod]
*.egg-info/
dist/
build/
.venv/
*.pkl
# Exception: HMM model artifacts (1.3 MB total) ship with the repo so WSL2
# self-hosting is turnkey: no retraining required on fresh checkouts.
!packages/hmm/data/hmm_cache/*.pkl
!packages/hmm/data/hmm_cache/*.keras

# Node
node_modules/
apps/web-next/.next/
apps/web-next/out/

# Environment
.env
.env.local
apps/api/.env
apps/web-next/.env.local
apps/web-next/.env*.local

# Data cache (multi-GB, never committed)
data/cache/
data/archive/intraday/

# Scoring V3 rollout backups: keep compact JSON evidence; ignore large caches
# and binary rollback pickles (*.pkl already ignored globally).
data/backups/scoring-v3-*/etf_batch_cache.json
data/backups/scoring-v3-*/fundamentals_index.pkl
data/backups/scoring-v3-*/income_scores_index.pkl

# Runtime results (written by nightly jobs, append-only files clobbered by git)
data/results/

# Runtime state on the Ubuntu host (user DB, alerts, snapshots, market cache)
state/
data/user_store.db
jobs/prescan/logs/

# OS
.DS_Store
Thumbs.db

# IDE
.vscode/
.idea/

# Agent-only scratch (audit/validation scripts, not shipped)
tmp/

# Logs
*.log
nohup.out

.vercel

# Generated internal OpenAPI (full BFF allowlist, not served on www)
apps/api/openapi-internal.json
.env*

# Research-chat overnight autoresearch (keep/discard log; do not commit)
apps/api/evals/research_chat/results.tsv
apps/api/evals/research_chat/baselines/scorecard_autoresearch.*
