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

# Tooling
.pytest_cache/
.ruff_cache/
.mypy_cache/

# IDE
.idea/
.vscode/

# OS
.DS_Store

# Sidegraph local store (the committed sidecar lives in the target repo, not here)
sidegraph.db
*.db-journal

# Graphify engine output — read-only input, regenerated by `graphify update` (invariant #1)
graphify-out/

# sidegraph-viz output — generated artifact, regenerated by `sidegraph-viz`
sidegraph-graph.html
sidegraph-graph.json

# Corpus leak-gate secondary token denylist (never committed — holds sensitive markers)
/.corpus-leak-denylist

# promote-fixtures displaces originals here while copying; removed on every controlled path,
# but a hard kill (SIGKILL) can leave one behind
tests/fixtures/.promote-fixtures-trash-*

# The private sidegraph-sandbox testbed is never nested inside this OSS repo
/sidegraph-sandbox/

# Corpus working copies must never live inside this tree (spec §3). The guard test is the
# mechanism; this entry is the backstop that stops an accidental nesting being committed
# before the guard runs.
sandboxes/

# Machine-local host/tool configs and flow scratch — never repo state. .mcp.json points at
# a localhost MCP port that dies with the IDE session; .codex/ is the Codex CLI's local
# config; .superpowers/ is the flow's working scratch (briefs/diffs/tokens) whose durable
# outputs are distilled into design/superpowers/ and the store.
#
# Anchored to the repo root (leading "/"): these patterns exist only to ignore the developer's
# OWN root-level scratch files/dirs, never a project file that happens to share the basename.
# Unanchored, they matched (and silently untracked-from-`git add -A`) tracked, force-added
# project content at any depth — plugin/sidegraph/.mcp.json (the Claude plugin's MCP manifest)
# and three Codex bootstrap fixtures under tests/fixtures/ — which is exactly how the first
# real public release's commit shipped missing those four files (design/testing intact on
# disk, dropped from the commit because the public checkout's `git add -A` obeys .gitignore).
/.mcp.json
/.codex/
/.superpowers/
/.worktrees/
