/docs/*
!/docs/specs/
!/docs/evals/

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

# Editors / OS
.DS_Store
.idea/
.vscode/

# Local smoke-test artefacts
.smoke-api.log

# Generated per-run backlog ledger (./BACKLOG.md) — a local artifact of `sdlc
# feature` runs, never committed to this repo.
/BACKLOG.md

# Claude Code session lockfiles
.claude/

# Secrets / local credentials (live integration testing)
.env
.env.*
!.env.example
*.pem

# Minimal infra compose written by `orchestrator up` on pip-only installs
.orchestrator-compose.yml

# Local-only validation artefacts from live-proving against private target repos —
# findings/reports/extracts must NEVER be committed. Clones live in /tmp. Note
# docs/specs/ and docs/evals/ ARE tracked now, so the old "anything under docs/ is
# ignored" no longer holds — the *.local.md catch-all below is what guards them:
/.local/
*.local.md
*.local.json
*.local.txt

# Disk-backed artifact store written by `orchestrator up` (fs mode)
.orchestrator-artifacts/

# MCP client config — machine-specific paths, and the file people paste tokens into.
# The tracked `.mcp.json` is the OTHER direction (how Claude Code launches Spine).
mcp.json

# Build documents — permanent, per-ticket, and deliberately not ingested.
.spine/

# Machine-specific MCP server config (internal hostnames, tokens) — never commit.
mcp_server.json

# Working spec files — per-ticket scratch, not repo content.
/spec.json
