# Python
__pycache__/
*.py[cod]
*.pyo
*.pyd
.Python
*.egg
*.egg-info/
dist/
build/
.eggs/
*.whl
.venv/
venv/
env/
.env
.python-version

# uv
.uv/
uv.lock

# pytest
.pytest_cache/
.cache/

# State directory (instance data — never committed in the framework repo)
state/
*.state/

# Editor
.DS_Store
.idea/
.vscode/
*.swp
*.swo

# Instance secrets / dotfiles
.secrets
*.secret
.keyring/

# Local-only maintenance aids (private ~/vault path structure — not for the public repo)
doctrine/drift-watch.md

# Worktrees
.worktrees/

# Stray local dirs / OS cruft (not part of the OSS repo)
tasks/
.DS_Store
**/.DS_Store

# This repo's own local architecture map (adopter projects still scaffold + track
# their own architecture.md via `rv init` — this ignore is anchored to the repo root only)
/architecture.md

# This repo's own private dev log (PR-C2: untracked from the public repo — a real
# working log, not a shipped artifact; adopter projects still scaffold + track their
# own DEVLOG.md via `rv init`/`rv project new` — this ignore is anchored to the repo
# root only, not project-scoped DEVLOG.md files under notes/)
/DEVLOG.md

# Operator-private design specs (the same path the leak scanner guards): an empty
# shadow of this tree can appear here from tooling — ignore it so a stray `git add .`
# can never stage the operator's private specs. The real specs live outside this repo.
/docs/superpowers/
