node_modules/
.loop/log.jsonl
*.log
bun.lockb

# Python (engine/ harness)
__pycache__/
*.py[cod]
.venv/
venv/
*.egg-info/
.pytest_cache/
.ruff_cache/
.mypy_cache/
build/
dist/

# Engine runtime state (.loop/)
.loop/*.out
.loop/*.jsonl
.loop/checkpoint.json
.loop/STOP
.loop/answer.json
.loop/progress.md
.loop/devserver.out
.loop/reprodev.out

# Example + seeded loops produce their own state dir + caches
examples/**/.loop/
examples/**/.pytest_cache/
orrery/loops/**/.loop/
orrery/loops/**/.pytest_cache/

# QA loop browser profiles / auth state — session tokens, never commit
orrery/loops/**/.auth/

# Handoff notes may contain credentials — keep local
orrery/loops/**/HANDOFF.md

# Stray engine state dir at repo root (accidental in-repo loop runs)
/.loop/

# Environment files — secrets never get committed
.env*

# Local screenshot dumps from the orrery UI harness
orrery/shots-*/
orrery/timelapse-*/

# Local BMAD method scaffolding + artifacts (dogfood runs drive THIS repo with
# loop-bmad; the driver commits with `git add -A`, so run-local files must be
# ignored or they'd land in story PRs)
/_bmad/
/_bmad-output/
/.claude/
orrery/loops/self/

# Playwright (orrery e2e) artifacts
test-results/
playwright-report/
playwright/.cache/
