# --- Development harness (internal, never shared) ---
/_harness/
/CLAUDE.md
/.claude/

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

# --- Tooling caches ---
.pytest_cache/
.mypy_cache/
.ruff_cache/
.coverage
htmlcov/

# --- Editors / OS ---
.vscode/
.idea/
*.swp
Thumbs.db
.DS_Store

# --- Local experiment output ---
/output/
/temp/
*.log
/user_data/
.playwright-mcp/
# Screenshot leftovers. Every image this repo actually ships lives under
# docs/images/ or mrln/data/prompt/thumbs/ — NOTHING legitimate is written to
# the root, so anything that lands here is a stray from a UI-verification run.
# This used to be one bespoke line naming one leftover file, which is how
# mute.png got committed anyway. Anchored to the root with a leading slash, so
# it cannot swallow a real thumbnail deeper in the tree.
/*.png
/*.jpg
/*.jpeg
/*.webp
/*.gif
