# Node
node_modules/
dist/
dist-py/
coverage/
.turbo/

# Python
.venv/
__pycache__/
*.egg-info/
.pytest_cache/
.ruff_cache/
.mypy_cache/
build/
*.pyc

# Lockfiles are COMMITTED — never add pnpm-lock.yaml or uv.lock here.

# Env & OS
.env
.env.local
.DS_Store

# pglite data dirs
pgdata/
*.pglite/
.pglite-data/

# Harness / report outputs (keep directory via .gitkeep)
reports/*.html
reports/*.json
!reports/.gitkeep

# scenario-local artifact hand-off dirs (rebuilt on every run)
examples/scenarios/*/out/

# demo-report/ is GENERATED by `make demo` but deliberately NOT ignored:
# one generated copy is committed so the repo ships with the judge dashboard.
# Rerun `make demo` to refresh it in place.

# Internal planning artifacts (build roadmap/cost/staffing + build-process report).
# Kept tracked in this working repo, but exclude from any public/submission mirror:
# docs/internal/  <- uncomment to exclude from public mirror
*.py.bak
.stryker-tmp/
