# ── Secrets ───────────────────────────────────────────────────────────────
.env
.env.*
!.env.example

# ── Python ────────────────────────────────────────────────────────────────
__pycache__/
*.py[cod]
.venv/
venv/
.pytest_cache/
.ruff_cache/
.mypy_cache/
*.egg-info/
dist/
build/

# ── Node / Next.js ────────────────────────────────────────────────────────
node_modules/
.next/
out/
.turbo/
*.tsbuildinfo

# ── Foundry ───────────────────────────────────────────────────────────────
cache/
broadcast/
# NOTE: contracts/out is intentionally NOT ignored — Lane A publishes ABIs from
# there and every other lane consumes them (master plan §10 Lane A).

# ── Local runtime state ───────────────────────────────────────────────────
*.log
.anvil-state.json
scratch/
# Lane B: persisted mandates and AgentAction journals (agent/config.py state_dir)
.agent-state/
# Wave 0: e2e runs against an isolated AGENT_STATE_DIR so they never share a
# journal with a running agent — two writers corrupt line-count-derived ids.
.agent-state-*/

# ── OS / editor ───────────────────────────────────────────────────────────
.DS_Store
Thumbs.db
.idea/
.vscode/*
!.vscode/extensions.json
