__pycache__/
*.pyc
.venv/
.pytest_cache/
*.egg-info/
dist/
.mypy_cache/
.ruff_cache/

# Claude Code worktrees (belay-worktrees skill)
.claude/worktrees/

# SDD subagent scratch (briefs, reports, ledger)
.superpowers/

# Engine artifacts — traces, restored state, and corpus cases are the user's own
# data and never belong in the repo (see CLAUDE.md: no raw-data egress).
/traces/
/runs/
/_sandbox/
# The compose service's state mount. `docker compose run` creates it on the host
# the first time it runs, and everything under it — traces, snapshots, whatever
# the agent wrote — is run data by construction.
/workspace/
# The WHOLE corpus dir, not just `local/`. It was `/corpus/local/`, which silently stopped
# covering anything the moment a run used a different corpus dir — and one did:
# `phase0-reverify-banked` writes its cases to `corpus/reverify-YYYYMMDD/`, whose prestate
# trees are cloned git workspaces. A `git add -A` swept 42 of those files into a commit
# (caught before push, and reset). A guardrail that depends on every future caller picking
# the one blessed subdirectory is not a guardrail.
/corpus/

# Pre-installed MCP servers for the eval mint. Installed OUTSIDE the sandbox by a
# documented `npm install` (see eval/README.md) and invoked by absolute `node` path:
# `npx -y` cannot be used behind the gated proxy, which denies both network and
# writes to ~/.npm by design. Third-party JS, pinned but never vendored.
/eval/servers/

# Cached bare clones per repo for the eval mint's per-instance worktrees — the user's
# run data, never committed (no-egress guardrail).
/eval/clones/

# The batch driver's mint output (per-instance workspaces/traces/snapshots + the bridged
# batch dir + the resume checkpoint) — the user's run data, never committed.
/eval/mint/

# Dashboard
node_modules/
.next/
/eval/.mint_key
/eval/resume_mint.sh

# The containment spike's probe output (eval/linux_probe/probe.py). Generated,
# re-derivable, and platform-specific: a committed probe_result.json could be
# cited by the decision as if it were the pinned-image CI measurement, which is
# exactly the stale-artifact failure the probe's env record exists to prevent.
# The decision cites the CI artifact (actions/upload-artifact), never a local run.
/probe_result.json

# demo drive scratch: a drive is disposable; only a PROMOTED run belongs in the repo
demo/.capture-runs/

# graphify's generated knowledge graph (`graphify-out/graph.json` + dated runs).
# Derived entirely from the checkout, rebuilt by `/graphify`, and machine-local:
# committing it would put a stale index of the tree in the tree.
/graphify-out/
