/.claude/
/.import_linter_cache/
/.requirements/
/.serena/
/.hypothesis/
/.venv/
/debug/
/.codex
/build/
/dist/
*.egg-info/
*.whl
*.tar.gz
/.research/
/CLAUDE.md
/.references/
*.pyc
**/__pycache__/
src/kitty/__pycache__
.idea
uv.lock

# Written into the checkout root by .github/workflows/claude-code-review.yml.
# Ignored so that a local run of the review scripts — and the reviewer's own
# working copy on the runner — cannot leave them as untracked noise, or worse,
# be committed. `conversation-full.md` reaches 160 kB on a long pull request and
# carries the whole discussion; `review_prompt.md` carries it again alongside
# the specification. Neither belongs in git.
/conversation.md
/conversation-full.md
/changed_files.txt
/review_prompt.md
/artifacts/

# mutmut's generated tree: a full copy of the source plus generated
# trampolines, plus per-mutant result state. Generated by `mutmut run`
# (T-H1, KBR-88); never committed.
/mutants/
# Regenerated by scripts/regenerate_step_index.py (KBR-278) after every
# step-file change; never committed.
/.system_design/INDEX.md
