# Python cache and bytecode
__pycache__/
*.py[cod]
*$py.class

# Tool caches
.mypy_cache/
.pytest_cache/
.ruff_cache/

# Virtual environments
.venv/
venv/
env/

# Build / packaging
build/
dist/
*.egg-info/
*.egg
packaging/out/

# Coverage
.coverage
.coverage.*
htmlcov/
coverage.xml

# IDE / editor
.vscode/
.idea/

# Test run artifacts
test-results/
playwright-report/
pytestdebug.log
# Visual-regression failure dumps (baseline.png + candidate.png + diff.png
# written when ``pytest -m visual`` finds a mismatch). The ``baselines/``
# directory next to it IS tracked — only the per-failure dumps are ignored.
tests/visual/_failures/

# Python tooling extras
.tox/
.nox/
.hypothesis/
.pyre/
.pytype/
.cache/
dmypy.json

# OS files
.DS_Store
Thumbs.db
Desktop.ini

# MemScope outputs
reports/
diagnostics*.zip
memscope*.json
memscope*.html
memscope*.csv

# License/trial/EULA cache files (normally live under ~/.memscope/ but
# may end up in the repo if a developer points the MEMSCOPE_*_PATH env
# vars at the repo root for ad-hoc testing).
license_cache.json
trial_state.json
eula_state.json
install_id
.memscope/
LICENSE_AI

# Personal AI-prompt scaffolds / scratchpads (kept local to each developer).
PROMPT*.md
HOW_TO_BUILD*.md

# Private legal-drafting reasoning notes — explain WHY each LICENSE
# clause is written the way it is, including jurisdiction tradeoffs and
# litigation-strategy hypotheticals. Useful for the operator (Adrian) and
# for legal counsel reviewing the draft, but NEVER for public eyes
# (would tell sophisticated adversaries exactly which clauses are weakest).
DRAFTING_NOTES*.md
LICENSE_NOTES*.md
LEGAL_NOTES*.md

# Per-user Claude Code permission overrides — never commit.
.claude/settings.local.json

# Demo firmware artifacts and personal config — kept locally for testing
# but never tracked. Move public-facing samples to test_projects/ instead.
/demo/
*.stackdump
