# Python
__pycache__/
*.py[cod]
*.egg-info/
dist/
build/
*.egg

# MkDocs rendered output (built in CI by .gitea/workflows/docs.yml)
site/

# Virtual environments
.venv/
venv/

# Testing
.coverage
htmlcov/
.pytest_cache/

# IDE
.idea/
.vscode/
*.swp

# Tools
.ruff_cache/
.mypy_cache/

# Environment
.env

# MCP server config -- committed at repo root, MCP-aware clients
# auto-load it. It previously carried a hardcoded private LAN IP
# (EMBEDDING_BASE_URL) that leaked internal addressing and shipped a
# contributor's embeddings -- user text and memory content -- to an
# address on THEIR LAN belonging to some other machine. Every
# developer keeps a working local copy; only .mcp.json.example is
# tracked. See PR #79 pre-merge review MEDIUM 4.
.mcp.json

# Generated docs
docs/api/

# Agent memory: per-developer cache is gitignored,
# but the shared team-memory markdown artifacts (decisions,
# conventions, infrastructure, plans, api-contracts, issues,
# recipes, session logs) under `.agent/team/` are tracked
# per CLAUDE.md governance. JSON plan artifacts and the
# memory DB stay per-developer.
.agent/*
!.agent/team/
.agent/team/*
!.agent/team/**/
!.agent/team/**.md
.agent/team/**/*.json
# Orchestration: per-run artifacts (reviewer output, findings, transcripts) stay
# per-developer, but the routing + build-gate policy is shared -- it decides how
# tasks route and what `mcm orch preflight` enforces, so a build is not
# reproducible without it. The directory must be re-included before excluding its
# contents: git never descends into an excluded DIRECTORY, so a negation on a file
# inside one silently does nothing.
!.agent/orch/
.agent/orch/*
!.agent/orch/tools.yaml

# Claude workspace: per-developer scratch (build worktrees, temp files, tool
# state) is local noise, but the DESIGN CORPUS and the plan ledgers are the
# shared written record -- design docs are referenced by PRs and by later
# sessions, and a routed plan is not reproducible by anyone else without its
# ledger. Same shape as .agent/ above: exclude the contents, re-include what
# is governed. The directory is re-included first because git never descends
# into an excluded DIRECTORY.
!.claude/
.claude/*
!.claude/docs/
!.claude/plans/
**/__pycache__/
.DS_Store

# Local tooling / dev artifacts (must never be packaged)
.antigravitycli/
.tui_chroma_db/
.tui_graph_db.json
user_profile.json

# Node deps (simulator, scaffolded webapps built locally)
node_modules/
