# Binaries
/cmd/ac/ac
/bin/
*.exe
*.dll
*.so
*.dylib

# Test artifacts
*.test
*.out
coverage.txt

# Local config
.env
.env.*
!.env.example
loomcycle.local.yaml

# Data
*.db
*.db-wal
*.db-shm
/data/

# Editor
.idea/
.vscode/
*.swp
.DS_Store

# Per-user Claude Code state (permission grants, plans)
.claude/

# Internal docs (planning notes, decision logs, RFCs) live in a separate
# repository at ~/work/loomcycle-internal/doc-internal/ — historically
# they shipped inside this repo under doc-internal/ (gitignored), but
# v0.8.15 migrated them out so the operator can sync them independently
# without touching this tree.

# Adapter build output
adapters/ts/dist/
adapters/ts/node_modules/
adapters/python/dist/
adapters/python/*.egg-info/
adapters/python/.venv/
adapters/python/.pytest_cache/
__pycache__/
*.pyc
.pytest_cache/

# goreleaser snapshot + release output. `goreleaser release --snapshot`
# writes here for local smoke-testing; CI's release workflow also
# uses this directory before uploading to the GitHub release.
/dist/

# v0.7.3 web UI build artefacts. The .gitkeep placeholder is the only
# committed file under internal/webui/dist/ — `make build-ui` replaces
# it with index.html + assets/, which we don't commit (CI runs the
# build before `go build`).
web/node_modules/
web/dist/
# tsc-emitted .js / build cache (Vite handles compilation; package.json
# uses `tsc --noEmit` for typecheck only, but accidental `tsc -b` runs
# produce these in-tree).
web/**/*.js
!web/vite.config.ts
web/tsconfig.tsbuildinfo
internal/webui/dist/*
!internal/webui/dist/.gitkeep

# lc-bench sweep outputs (matrix.md + traces) — regenerated on every
# run; large + dated. The case YAMLs + agent prompts under bench/ ARE
# committed.
bench/results/

# Playwright MCP session logs (per-snapshot YAML + per-page console
# logs). Created when an agent drives a headless browser via the
# playwright MCP tool; transient, large, and never useful in git.
.playwright-mcp/
