node_modules/
.env
.env.local
.env.*
!.env.example
.DS_Store
Thumbs.db
.idea/
.vscode/
*.swp
*.swo
*~
*.log

# Claude Code runtime state (session orchestrator)
.claude/STATE.md
.claude/wave-scope.json
.claude/metrics/
.claude/worktrees/
.claude/*.lock

# Codex CLI runtime state (session orchestrator)
.codex/STATE.md
.codex/wave-scope.json

# Cursor IDE runtime state (session orchestrator)
.cursor/STATE.md
.cursor/wave-scope.json

# Per-project session metrics (local-only observability data)
.orchestrator/metrics/*.jsonl
.orchestrator/metrics/*.jsonl.bak-*
.orchestrator/metrics/*.jsonl.bak.*
.orchestrator/metrics/*.jsonl.archive-*
.orchestrator/metrics/repo-audit-*.json
.orchestrator/metrics/sweep.log

# Vitest coverage artifacts (#263)
coverage/

# Per-session runtime state (machine-specific, never committable)
.orchestrator/host.json
.orchestrator/current-session.json
# Issue #330: distributed session-lock
.orchestrator/session.lock

# Per-session audit drafts and historical audit dumps (local artefacts of
# /repo-audit and /discovery; never committed to plugin source)
.orchestrator/audits/
.orchestrator/drafts/

# Per-session scratch (W5 narratives, drafts) and test-run artifacts
# (from /test command runs); never committed to plugin source
.orchestrator/scratch/
.orchestrator/metrics/test-runs/

# Internal design specs (kept locally, not for public repo)
docs/specs/
.orchestrator/session-notes/

# Nested vault-sync lockfile (CI runs `npm install` in skills/vault-sync/
# fresh each run; no value pinning a lockfile for the sub-package)
skills/vault-sync/package-lock.json

# pnpm lockfile artifact: this repo uses npm (package-lock.json), but some test
# fixtures or contributor environments may generate pnpm-lock.yaml as a side-effect.
# Never commit it — it would diverge from the canonical npm lockfile.
pnpm-lock.yaml

# Environment
.env.production
.env.*.local
