# Python
__pycache__/
*.py[cod]
*$py.class
*.egg-info/
dist/
build/
.eggs/

# Virtual environment
.venv/
venv/

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

# OS
.DS_Store
Thumbs.db

# Credentials / local env — never commit (see .pre-commit-config.yaml for gitleaks)
.env
.env.*
!.env.example

# Project specific
# Run outputs are never tracked. Slice measurements are reproduced by running on
# FABRIC (notebooks fabric/01-05); the loopback sweeps by sweep.py / plots.py /
# decoy_sweep.py. Previously recorded evidence lives in git history, not the tree.
results/
qne-sequence/results/
secrets/
*.json
!p4/**/*.json
*.pcap

# Personal session tracking — never ship in the artifact
cc-usage-log.md

# Agent notes — contains bastion/account details for the live slice, keep local
CLAUDE.md

# Paper drafts + generated figures — kept local, regenerated via paper/make_figures.py
paper/

# Internal review notes — keep local, don't ship
REVIEW_*.md
!REVIEW_2026-09-21.md

# Intern-facing handouts — private, keep local
ASSIGNMENT_*.md
EXPLORATION.md

# Every notebook is a slice notebook now and is tracked; only scratch copies
# and checkpoints stay out.
notebooks/**/*_local.ipynb

# P4 build artifacts
p4/bmv2/*.json
p4/bmv2/**/*.json
p4/tna/build/

# Jupyter
.ipynb_checkpoints/

# Tool caches
.pytest_cache/
.ruff_cache/

# BMv2 logs
*.log

# Vagrant
.vagrant/
.venv-*/
