openai/
claude/
.claude/
plan/

# Paper draft — kept local until priority decision (preprint vs PyPI release).
paper/

# Secrets — never commit
.env
.env.local
.env.*.local
.envrc
!.env.example

# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
dist/
*.egg-info/
*.egg
.eggs/
.pytest_cache/
.mypy_cache/
.ruff_cache/
.coverage
.coverage.*
htmlcov/
.tox/

# Venvs
.venv/
venv/
env/

# Editors / OS
.idea/
.vscode/
.DS_Store

# Project runtime artifacts
.cache/
*.db
*.sqlite
*.sqlite3

# NB: *.provenance.json is intentionally NOT ignored — provenance sidecars
# are user-facing artifacts.
.mcp.json

# Spike raw artifacts (smoke runs against real services produce large
# raw dumps used only for FINDINGS.md authoring; FINDINGS.md + smoke.py
# are committed, the runtime captures are not).
spikes/**/output.txt
spikes/**/sample.json
spikes/**/dataset_sample.json

# T-CMEMS-GET-INDEX-000: local index corpus (development only, never shipped)
.local-indices/
spikes/T-CMEMS-GET-INDEX-000-discovery/local-indices/
spikes/T-CMEMS-GET-INDEX-000-discovery/probe_result.jsonl
