.venv/
__pycache__/
*.db
*.db-wal
*.db-shm
# Retag/migration snapshots: `*.db` does not match a .bak-retag-<stamp>
# suffix, so an 8MB copy of the database was one `git add .` from the
# history it can never be removed from.
*.db.bak*
.ruff_cache/
.pytest_cache/
.env
# Credential-bearing env files (neon.env holds a live Postgres password and S3
# secret keys). `.env` alone does not match `neon.env` or `*.env`.
*.env

# Local demo recordings: a 5.5MB .webm plus stills, never committed. Kept out
# of the repo so a clone stays small -- a binary that large is permanent
# history once added. Host it externally and link from the README if it needs to
# be shared. demos/*/record.sh and record.py write here by default.
demo/

# demos/: recording scripts are committed, their .cast/.gif/.webm output and
# the scratch databases seed_*_db.py builds are not (same reasoning as
# demo/ above -- regenerable, and a real .cast is a transcript that can
# carry whatever path ran it). demos/ lives at the repo root, not under
# examples/, on purpose -- see CLAUDE.md's Golden paths note.
demos/**/*.cast
demos/**/*.gif
demos/**/*.webm
demos/**/*.db

# Build artifacts: `uv build` / CI wheel smoke test write here.
dist/
build/
.mutate-backup/

# `mkdocs build` output. Built, not deployed; CI's `docs` job uploads it as
# an artifact instead of committing it. Anchored to the root: `docs/site/`
# holds a committed, generated page (the design-records index) and must not
# be swept up by an unanchored `site/`.
/site/

# Process logs from the superpowers plugin (design/plan transcripts) and a uv
# cache left by a run with HOME pointed at a fake path: both sat untracked-but-
# unignored, one `git add .` from becoming permanent history.
.superpowers/
nonexistent-home/
