# Rust
/target/
# Detached zkVM crate builds into its own target dir (RISC Zero toolchain output)
crates/agent-receipts-zkvm/target/
**/*.rs.bk

# Python
__pycache__/
*.py[cod]
*.egg-info/
.eggs/
dist/
build/
# A virtualenv was committed to this repository once: `.venv-h2h`, 7,473 files
# and 1.57 million lines, 99.6% of everything the history purge removed. The
# patterns below cover the names one actually gets called, because `venv/`
# matched `venv` and not `venv312`.
.venv/
.venv*/
venv/
venv*/
env/
ENV/
.virtualenv/
.virtualenvs/
pyvenv.cfg
.python-version
.pytest_cache/
.mypy_cache/
.ruff_cache/

# Coverage
.coverage
.coverage.*
coverage.json
coverage.xml
htmlcov/
lcov.info
target/llvm-cov/
dashboard/coverage/

# Backend identity service
backend/.venv/
backend/.venv-test/
backend/agents.db
backend/audit.jsonl
backend/.env

# Node / dashboard
node_modules/
dashboard/node_modules/
dashboard/dist/

# Local dev
.env
*.db
*.sqlite
.audit/
/receipts/
*.redacted.json
config/partner.yaml
certs/*.pem
certs/*.json
!certs/.gitkeep

# IDE / misc
.idea/
.vscode/
*.swp
*.log
.DS_Store

# Cursor: ignore local MCP/config; keep the skill so a clone has the deploy path.
.cursor/*
!.cursor/skills/
!.cursor/skills/clayseal/
!.cursor/skills/clayseal/SKILL.md

# Local experiment outputs (Devin red-team runs, gate JSON, clones)
artifacts/

# Proving artifacts and generated key caches (large)
/proofs/
/keys/*.bin
/keys/**/*.bin
/keys/*.sha256
/keys/**/*.sha256
!/keys/.gitkeep

# Generated compliance scratch fixtures
/compliance/fixtures/*.generated.json
/compliance/fixtures/*.tmp.json

# Local caches
.cache/
.vendor/

# External benchmark corpora (fetched by benchmarks/fetch_corpora.sh)
.benchmark-corpus/

# Signing private keys — never commit
keys/signing/
*.key
**/keys/*.pem
**/.agentauth/keys/
*.ed25519.pem
*_private.pem

# Claude Code session/tooling. Contents ignored; the skill is the exception so
# a clone has the deploy path without running `clayseal skill --write`.
.claude/*
!.claude/skills/
!.claude/skills/clayseal/
!.claude/skills/clayseal/SKILL.md
SECURITY_AUDIT.md
docs/*.aux
docs/*.log
docs/*.out

# Throwaway probe scripts written while chasing a specific finding. They are
# working notes, not results; the finding they produced belongs in
# benchmarks/results/ and the mechanism in the library.
scratchpad/

# Demo run output. `demo/cli.py` writes here by default (IVISOR_RUN_ROOT) and
# the demo tests use tmp_path, so nothing reads the committed copy. 47 files of
# generated workspaces, ticket corpora and guest scratch were checked in.
.demo-runs/

# Local lab, not the product. gitignoring it so `ruff check .` (the CI command)
# does not fail on a machine that has the directory.
demo/xp-power-demand-lab/

# LaTeX build products
paper/*.pdf
paper/*.aux
paper/*.log
paper/*.out
paper/*.bbl
paper/*.blg

# Not part of the open-source distribution. Kept locally, simply not tracked.
#
# paper/    a double-blind submission whose named build carries the authors, and
#           the venue's policy covers linked material including code, so shipping
#           it beside the system it describes defeats scripts/anonymize.sh.
# notes/    internal roadmap and competitive thinking, not user documentation.
# The iVisor demo APPLICATION integrates a separate unpublished project that is
# not ours to release; anonymize.sh already drops it for the same reason. Its
# captured sample traces ARE tracked, because benchmarks/syscall_tier.py replays
# them and run_all.sh calls it.
paper/
notes/
demo/clayseal-ivisor/*
!demo/clayseal-ivisor/sample_traces/
!demo/clayseal-ivisor/sample_traces/**
docs/ivisor_integration.md
docs/sota_trajectory_control.md
scripts/.anonymize-identity
