*.so
*.pyc
*.dhara
.venv/
venv/
dist
htmlcov/

# Oneiric runtime cache (should not be tracked)
.oneiric_cache/
~/.oneiric_cache/

# XDG - Cache directories
.pytest_cache/
.ruff_cache/
.mypy_cache/
.oneiric_cache/
.complexipy_cache/
.cache/
# No trailing slash so this matches both files (lychee cache files) and
# directories regardless of how the tool wrote the cache.
.lycheecache
.pyscn/

# XDG - State directories
.claude/
.session-buddy/
.crackerjack/

# XDG - DELETE candidates
.obsidian/


# Archive directories
.archive/
.archives/
.backup/
.backups/
# Editor / pre-edit backups (e.g. ``foo.py.backup``, ``foo.py.backup.json``)
*.backup
*.backup.*
dhara.egg-info/

.hypothesis/
.coverage
.coverage*
coverage.json
build/

# Backup Files (added by gitignore audit)
# ============================================================================
*.bak
.worktrees/

# Benchmark baseline scratch (executor-only; see cache-adapter consolidation plan Phase 0)
benchmarks-baseline.txt

# `.superprofits` was a typo for `.superpowers` (renamed 2026-07-11 in commit 355d996).
# Kept here as a guard so any orphan doesn't reappear in `git status`.
.superprofits/

# ============================================================================
# Node.js - Wave-11 mermaid CI guard
# ============================================================================
# jsdom is the dev dep for the wave-11 mermaid CI guard (mirrored from
# crackerjack wave-9). The package.json + package-lock.json ARE committed;
# only the resolved artifacts are excluded.
node_modules/
!node_modules/.gitkeep


# Archived test artifacts - emit to /tmp instead of git
docs/archive/test-artifacts/
# Belt-and-suspenders: any coverage*.json dump regardless of location
coverage*.json


# >>> bodai-shared-gitignore >>>
# Source of truth: crackerjack/templates/GITIGNORE_BODAI.md
# Enforced by: crackerjack check `gitignore-conformance`
# Fleet list: /Users/les/Projects/mahavishnu/BODAI_REPO_REGISTRY.md
# Do NOT remove the marker line above — `crackerjack gitignore sync` uses it
# to detect already-applied state.

# Editor / pre-edit backups (foo.py.backup, foo.py.backup.json)
*.backup
*.backup.*
*.bak
*.tmpl
# XDG mistake dirs (env var expansion failed; literal names)
# Note: both `{` and `}` are escaped (`{` -> `[{]`, `}` -> `[}]`)
# because gitignore parsers interpret `${...}` as a brace-expansion
# alternate group; escaping only the open brace leaves a stray `}`.
~
[{]HOME[}]
[{]XDG_DATA_HOME:-$HOME[}]
# pytest-benchmark autosave cache (sibling of the tracked `benchmarks/` test suite)
.benchmarks/
# Vitest config timestamp cache
vitest.config.js.timestamp-*.mjs
# Playwright output cruft
playwright-junit.xml
playwright-report/
playwright-results.json
test-results/

# ============================================================================
# Documentation — image assets
# ============================================================================
# Tracked images live under docs/assets/images/. Session scratch outputs
# (named like "*-v4.png", "*-window.png", or anything dropped in
# .scratch/) are local-only and must not be committed. The dot-prefix on
# `.scratch` is load-bearing — the gitignore rule only matches with it.
docs/assets/images/.scratch/
docs/assets/images/.scratch/**
# <<< bodai-shared-gitignore <<<
