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

# Runtime
.ordel/

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

# OS
.DS_Store
Thumbs.db

# Environment
.env
.env.*
!.env.example
!.env.prod.example

# Terraform
**/.terraform/*
*.tfstate
*.tfstate.*
*.tfvars
!*.tfvars.example
tfplan
*.tfplan
crash.log
crash.*.log

# Stray root-level node_modules (e.g. an npm install run from the repo root,
# or the rrweb-dom-stream poc pulling deps up) — never committed.
/node_modules/
# Local trace-capture scratch (Langfuse/OTel dumps) — throwaway.
/scratchpad_traces/

# Node (web/)
web/node_modules/
web/.next/
# Stale build caches moved aside during repairs (e.g. the Kestrel→Ordel
# rename Turbopack fix). Local-only, safe to delete.
web/.next.*/
web/out/
web/.pnp
web/.pnp.*
# TypeScript incremental build cache — local-only, regenerates on each build.
web/tsconfig.tsbuildinfo

# Node runner (node-runner/) — local Playwright run output
node-runner/runs/
node-runner/node_modules/

# Testing
.coverage
htmlcov/
.pytest_cache/
.ruff_cache/
.mypy_cache/
test-results/
web/test-results/
web/playwright-report/
backend/test-results/

# Playwright
.playwright-cli/
.playwright-mcp/
.playwright/

# storageState files — contain live auth tokens; regenerated each run
web/tests/.auth/
web/**/.auth/

# Worktrees
.worktrees/

# Brainstorm sessions
.superpowers/

# Claude Code config
.claude.json
.claude/worktrees/
*.debug

# Backups (local only)
backups/

# Local dev notes (credentials, scratch)
draft-keep.txt

# Binary artifacts
*.docx

# Test artifacts (manual playtest screenshots + recorder session captures)
# Live snapshots end up next to whatever directory the tester ran from;
# pin specific names rather than a blanket *.png so legit UI assets in
# web/public/ + docs/ don't get caught.
/*.png
/web/*.png
/backend/*.png
/qa-suite/modules/_session-*.spec.ts
/backend/bugs.md

# Backend runtime artifact storage (POM persist / local-FS dev mirror)
/backend/storage/

# Archived docs (historical plans, sessions, completed milestones — not for review)
docs/archive/

# =============================================================
# Reference / experimental code (kept locally, not in repo)
# =============================================================

# Performance testing reference implementation (Phase 2)
Perf_Flow/
Perf_Flow.zip

# Archived v1 components (replaced by v2)
web/components/scripts/archived/

# Unused shared components (experimental)
web/components/shared/approval-batch.tsx
web/components/shared/coverage-ring.tsx
web/components/shared/inline-approval.tsx
web/components/shared/onboarding-tour.tsx

# Unused studio components (experimental)
web/components/studio/ArtifactCard.tsx
web/components/studio/BrowserPreview.tsx
web/components/studio/NewSessionModal.tsx

# Unused layout components (replaced)
web/components/layout/app-sidebar.tsx
web/components/layout/header.tsx
.claude/scheduled_tasks.lock

# =============================================================
# Per-developer tool output (regenerable, don't commit)
# =============================================================

# Antigravity CLI: home-dir symlinks to ~/.gemini/config/projects/*
.antigravitycli/

# Understand-Anything: knowledge graph cache (regenerate with /understand)
# Keep the .understandignore input config so all devs share the same graph scope.
.understand-anything/*
!.understand-anything/.understandignore

# Local install / runtime logs (uvicorn, npm, pip, alembic, bootstrap, etc.)
*.log
*.err
backend/.secrets/
*.pem
.secrets/

# Workflow/agent scratch scripts (throwaway)
.wf-*
backend/.wf-*

# Stale: web/e2e was renamed to web/tests long ago — keep the leftover out
web/e2e/
docs/conference/demo-video/
scratchpad-video/
.overmind.env
