__pycache__/
*.py[cod]
.pytest_cache/
.ruff_cache/
*.egg-info/
build/
dist/
.venv/
.env
*.sqlite
*.sqlite3
*.db
.outrage/
.rage/
.DS_Store
.claude/settings.local.json
.claude/harness-canary/

# The SessionStart canary probes the client, not this project: it is
# registered in the untracked settings.local.json, its log above is ignored,
# and it ships nowhere. It stays on the machine that runs it.
.claude/hooks/sessionstart_canary.py
.claude/hooks/sessionstart-canary.sh
.claude/settings.json

# The Copilot CLI hook file is rendered output too, on the same rule as
# .claude/settings.json above: the template in src/ is the source of truth, and
# a canary belongs on the machine that runs it rather than in the repository.
# A project that is not outrage itself has every reason to commit this file.
.github/hooks/outrage.json
.outrage-*/
.rage-*/

# Sphinx build output
docs/_build/
