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

# Dev environment
.venv/
.ruff_cache/
.pytest_cache/

# Raw captures and runtime outputs are a PII trap — ignore by an unambiguous,
# distinct name/location so a safe fixture and an unsafe raw capture can never
# collide under one glob (see plan §4).
scratch/
*.raw.ndjson
profiles/
*.json
*.ndjson

# Un-ignore the committed, synthetic-by-construction fixtures — enumerated
# explicitly, NOT a wildcard. A wildcard un-ignore (`!tests/fixtures/*.ndjson`)
# would re-include ANY new .ndjson dropped into this directory, not just
# these known-synthetic ones — defeating the whole point of the blanket
# ignore above. Adding a new fixture means adding its name here too.
!tests/fixtures/basic_status_post.ndjson
!tests/fixtures/comment_preview_and_universal_marker.ndjson
!tests/fixtures/media_and_links.ndjson
!tests/fixtures/pinned_decoy_and_missing_date.ndjson
!tests/fixtures/shared_post.ndjson
!tests/fixtures/split_defer_merge.ndjson
!tests/fixtures/truncated_post.ndjson

# E2E harness runs capture full session transcripts, which contain whatever the
# run scraped — real names, comment text, profile URLs. `.jsonl` is NOT covered
# by the *.json rule above, so it needs its own entry (learned the hard way).
.claude/.e2e-runs/
*.jsonl

# Scratch space for vendored reference material and sibling working copies —
# 355MB / 3400+ files at the time of writing. Never part of this package.
.tmp/

.DS_Store
