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

# Virtual environments
.venv/
venv/

# Environment / secrets
.env
.env.*
*.pem
*.key
.kiln/

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

# Development tooling
tools/
.DS_Store
node_modules/
.astro/
CLAUDE.md
AGENTS.md
.claude/
.mcp.json
.pre-commit-config.yaml

# Deployment / infrastructure (operator-private)
fly.toml
deploy.sh
Dockerfile.api
# scripts/ is operator-private by default — ignore contents, but allow
# the directory itself to exist so surgical exceptions below can
# re-include named files.  `scripts/*` (not `scripts/`) is the right
# form: ignoring the directory rules-out re-including children.
scripts/*
# …with a surgical exception for the marketing site's CI-relevant
# build helpers, which need to be tracked so .github/workflows can
# run them and contributors can read what they do.
!docs/site/scripts/
!docs/site/scripts/**
# …and for the wheel-inventory release gate, which runs in
# publish.yml before SBOM/sign/upload to assert the wheel ships the
# catalogs, OpenSCAD libraries, and printer g-code files that runtime
# code depends on — prevents `package-data` glob regressions.
!scripts/audit_wheel_inventory.py

# Internal working docs (backed up via iCloud)
.dev

# Internal task tracking
task.md

# Lessons learned / session notes (private by convention across all repos)
lessons_learned.md
LESSONS_LEARNED.md
*lessons_learned*.md
tasks.md

# Session summaries, work notes, scratch markdown — never commit these.
# These are ephemeral working-memory artifacts, not repo artifacts.
# See CLAUDE.md "Files Never to Commit" section.
*SUMMARY.md
*_SUMMARY.md
*_NOTES.md
WORK_LOG.md
SESSION_*.md
OVERNIGHT_*.md
NOTES.md

# Circle recovery files
.circle-recovery.txt
recovery.dat

# Print working files (photos, heightmaps, STLs, gcode — personal/private)
prints/

# Marketing drafts
docs/marketing/
.vercel
.env*.local

# Brand-casing policy — private internal doc, not part of public Kiln
# surface.  Lives at docs/BRAND.md; see Adam directly for the current
# version.  See CLAUDE.md "Files Never to Commit" for the principle.
docs/BRAND.md
