wip/
/target/
# Ignore all target directories (including in examples and subdirectories)
**/target/

# Cargo.lock is committed: this workspace ships binaries (cloacina-server,
# cloacinactl, cloacina-compiler). Library consumers ignore our lockfile
# anyway, so committing it just gives our own builds + Docker --locked the
# reproducibility they need.
# https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html

# Each example/fixture/tutorial crate declares its own [workspace] and
# therefore gets its own Cargo.lock when built. These are transient
# build artifacts — committing them clutters PRs with churn whenever an
# example is rebuilt locally. The root Cargo.lock (above) still applies
# to the actual shipping workspace.
examples/**/Cargo.lock

# These are backup files generated by rustfmt
**/*.rs.bk

# MSVC Windows builds of rustc generate these, which store debugging information
*.pdb

# IDE files
.idea/
.vscode/
*.swp
*.swo

# Mac OS files
.DS_Store

# Exclude working-docs directory
/working-docs/

# Hugo documentation
/docs/public/
/docs/.hugo_build.lock
/docs/static/api/

# Python files
*.pyc
__pycache__/

# Python egg-info directories (generated during development installs)
*.egg-info/
# Python build directories
build/
dist/
.cursorignore

# SQLite database files created by tests and tutorials
*.db
*.db-shm
*.db-wal
*.db\?*

# Packaged workflow files
*.cloacina
test-quick/
.claude/*
.claude_handovers/
diataxis/
run_demos.sh
docs/content/api-reference/_nav.yml

# Transient test output (don't commit)
integration-test.log
.metis/*.log
# Auto-generated Metis code index — regenerated on every edit by the indexer,
# so it churns constantly and shouldn't be tracked.
.metis/code-index.md
.metis/code-index-hashes.json
.metis/code-index-symbols.json
.metis/.index-dirty
node_modules/
clients/python/.venv/
clients/python/dist/
