# Session-logger artifact (not part of the project)
LAST_SESSION.md

# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# Virtual environments
venv/
ENV/
env/
.venv/

# IDE
.vscode/
.idea/
*.swp
*.swo
*~

# Testing
.pytest_cache/
.coverage
htmlcov/
.tox/

# MyPy
.mypy_cache/
.dmypy.json
dmypy.json

# Storage (don't commit test indexes)
.code-index/
.ab_bench_idx/

# Claude Code local settings (may contain credentials from allowed commands)
.claude/

# Local working notes (may contain sensitive info)
prompt.md
todo.md

CLAUDE.md
.vbw-planning

.vbw-planning/
.mcpregistry_github_token
.mcpregistry_registry_token
.hypothesis/

# Server-side infrastructure (deployed separately)
index.php

# Git worktrees (isolated feature workspaces)
.worktrees/
.claudeignore

# Local docs notes
# ⚠ `docs/*` and NOT `docs/`: git cannot re-include a file whose PARENT
# DIRECTORY is excluded, so the negation below is silently inert under the
# directory form. Verified with `git check-ignore -v`.
docs/*
# The one exception: CLAUDE.md binds a live rule to this spec (the
# PARSER_GENERATION comment cites it as the thing that ends the manual-bump
# obligation), so a contributor bound by that rule has to be able to read it.
!docs/prd-extraction-fingerprint.md
# ...except a spec CLAUDE.md binds a live rule to. `prd-extraction-fingerprint`
# is cited by the PARSER_GENERATION comment as the thing that ends the
# manual-bump obligation, so a contributor who is bound by that rule has to be
# able to read it. The rest of docs/ stays local notes.
!docs/prd-extraction-fingerprint.md

# macOS
.DS_Store
**/.DS_Store
# Dead-code eval oracle: ~2 MB, machine-specific, regenerated by the pytest
# --cov run documented in benchmarks/deadcode_eval/README.md.
benchmarks/deadcode_eval/coverage.json

# Generated by mcpb/build.py from pyproject.toml + server.json
mcpb/manifest.json

# Codex arm harness: isolated CODEX_HOME holds a LIVE auth token, and results
# hold raw transcripts. Neither is ever committed.
benchmarks/codex_surface/.codexhome/
benchmarks/codex_surface/results/

# Rust fidelity oracle build output (see benchmarks/rust_fidelity/README.md)
benchmarks/rust_fidelity/oracle/target/
benchmarks/rust_fidelity/oracle/Cargo.lock

# Scratch logs. ⚠ Defense in depth ONLY -- hatchling honours the root
# .gitignore, so this keeps a stray *.log out of the sdist. It protects the
# spelling someone remembered and nothing else; ALLOWED_ROOT_FILES in
# tests/test_sdist_exclusions.py is the guard that catches the class.
# ⚠⚠ `suite.log` was caught SHIPPING by that guard on 2026-08-28, minutes
# after `relnotes.md` did ship in 1.108.304. Write scratch outside the repo.
*.log
