# Python
__pycache__/
*.py[cod]
*.egg-info/
.eggs/
dist/
dist-release/
build/
.venv/
venv/
.pytest_cache/
.ruff_cache/
.mypy_cache/
.coverage
.coverage.*
htmlcov/

# Node (MCP / TS port)
node_modules/
*.tsbuildinfo

# Env / secrets
.env
.env.*
!.env.example

# OS
.DS_Store

# DeonticBench: scenarios are regenerated deterministically from code; the eval
# split must never be committed (or casually inspected — contamination protocol)
bench/deonticbench/generated/

# scorekeeper runtime artifacts (the committed scoreboard is intentionally NOT ignored;
# only local/generated indices are)
.scorekeeper/index.sqlite
.scorekeeper/*.tmp

# DeonticBench raw run outputs are large and judge-noisy: EVERYTHING under
# run-*/ is local by default (catch-all, so new artifact types can't leak in
# via `git add -A`). Promotion to the repo is deliberate, in one move:
#   1. the artifact is cited as a rollout record / evidence from a *-REPORT.md
#      or *-PROGRESS.md write-up (Rollout Cards, SPEC addendum A.4), and
#   2. it is force-added: git add -f bench/results/run-<stamp>/<file>
# Already-tracked files stay tracked regardless of these patterns.
bench/results/run-*/
bench/results/*.log

# local-only working drafts (launch copy, private notes)
drafts/
.superpowers/
