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

# Virtual environments
.venv/
venv/
ENV/

# Testing / linting
.pytest_cache/
.ruff_cache/
.coverage
.coverage.*
htmlcov/
.tox/

# Local cache (tradewinds runtime cache lives in $HOME/.tradewinds/; this catches any test-time fixtures that leak)
.tradewinds-cache/

# Phase 4 CI-05 — drift watchdog populates tests/fixtures/drift/ from the
# weekly cron. The scripts + README are tracked; the captured parquets
# and the drift-report are not (rotation is the whole point — git history
# isn't the storage layer for drift fixtures).
tests/fixtures/drift/case_*.parquet
tests/fixtures/drift/drift-report.md

# uv — uv.lock IS committed for dev reproducibility across Lane F + Lane V (decision: lockfile-tracked for dev parity)

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

# OS
.DS_Store
Thumbs.db
.claude/scheduled_tasks.lock

# Planning artifacts — local GSD planning workspace; NOT for public consumption.
# Untracked since the repo went public (Phase 13 W0 cleanup commit, 2026-05-25).
# Operators keep these on disk for ongoing GSD workflow; nothing in `.planning/`
# should be required to build or run the SDK.
.planning/

# Dev-only TODO scratchpad (replaced by GSD TODOS in .planning/)
TODOS.md

# TypeScript / pnpm workspace (packages-ts/)
node_modules/
coverage/
.tsbuildinfo
packages-ts/*/dist/
packages-ts/*/coverage/
# Note: top-level `dist/` and `build/` already covered by Python section above.

# TS-W2 Plan 08 drift watchdog — output files are transient, not committed.
packages-ts/meta/tests/parity/drift/*.json
packages-ts/meta/tests/parity/drift-report.md
.claude/
