# ============================================================================
# Python - Generated Files
# ============================================================================
__pycache__/
*.py[cod]
*$py.class
*.so

# ============================================================================
# Python - C Extensions
# ============================================================================
*.pyc
*.pyo

# ============================================================================
# Python - Distribution / Packaging
# ============================================================================
build/
develop-eggs/
dist/
downloads/
eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
pip-wheel-metadata/
*.egg-info
installed.cfg
*.egg
MANIFEST
*.spec
*.whl

# ============================================================================
# Python - Unit Test / Coverage Reports
# ============================================================================
htmlcov/
tox/
.nox/
.coverage
coverage
coverage.*
.coverage*
# pytest-cov parallel-mode data files (.coverage.<host>.pid<n>.<hash>)
*.pid*
nosetests.xml
coverage.xml
coverage.json
.oneiric_cache/
*.cover
*.py,cover
.hypothesis/
.pytest_cache/

# ============================================================================
# Translations
# ============================================================================
*.mo
*.pot

# ============================================================================
# Python - Environments
# ============================================================================
.env
.venv
venv/
env/
venv/
ENV/
ENV/
env.bak/
venv.bak/

# ============================================================================
# Python - Type Checking & Linting
# ============================================================================
.mypy_cache/
.dmypy.json
dmypy.json
.ruff_cache/
.pyre/
.pytype/
.pytype/

# ============================================================================
# Python - Package Management
# ============================================================================
.pdm-python/
.pdm.toml
.pyscn/
.uv/
.uv-cache/

# ============================================================================
# IDEs
# ============================================================================
.idea/
.vscode/
*.swp
*.swo
*~

# ============================================================================
# Logs
# ============================================================================
*.log
logs/

# ============================================================================
# OS
# ============================================================================
.DS_Store
Thumbs.db

# ============================================================================
# Local Configuration
# ============================================================================
settings/local.yaml
settings/repos.yaml
settings/ecosystem.yaml
.envrc.local

# ============================================================================
# Node.js - Wave-11 mermaid CI guard
# ============================================================================
# jsdom is the dev dep for the wave-11 mermaid CI guard (see
# mahavishnu/tools/mermaid_validator/validate_mermaid.mjs). The package.json +
# package-lock.json ARE committed; only the resolved artifacts are excluded.
node_modules/
# Allow the empty placeholder so a fresh clone gets a usable `npm install`.
!node_modules/.gitkeep

# ============================================================================
# Sensitive Configuration Files
# ============================================================================
config.yaml
oneiric.yaml

# ============================================================================
# Crackerjack
# ============================================================================
.crackerjack/

# ============================================================================
# Archived Files
# ============================================================================
.archive/
tests/archived/
# Exception: docs/followups/.archive/ is intentionally version-controlled.
# Resolved follow-up notes are archived there (never deleted) and must
# survive a clean checkout. See docs/followups/README.md for the lifecycle.
!docs/followups/.archive/
!docs/followups/.archive/**

# ============================================================================
# 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/**

# ============================================================================
# Project-Specific
# ============================================================================
# Archived test/debug scripts
tests/archived/

# ============================================================================
# Claude Code Project-Specific Data
# ============================================================================
# Track canonical config (agents, skills, commands, CLAUDE.md, mcp-hooks.json,
# settings.local.json, CLAUDE.md); ignore runtime-only and secret-adjacent dirs.
.claude/settings.json
!.claude/settings.json
.claude/hooks/scripts/
.claude/skills/*/.archive/
.claude/backups/
# Session handoff reports (runtime, machine-local)
.claude/handoff/


# ============================================================================
# External Projects (installed as dependencies, not embedded)
# ============================================================================
mcp-common/
oneiric/

# ============================================================================
# Nanobot / OpenCode AI Agent (auto-regenerated by gateway process)
# ============================================================================
.opencode/
SOUL.md
USER.md
HEARTBEAT.md
HANDOFF.md
TOOLS.md
memory/

# ============================================================================
# Runtime Data & Backups
# ============================================================================
backups/
.backups/
data/
!.claude/commands/tools/development/data/
!.claude/commands/tools/development/data/**

# ============================================================================
# XDG Base Directory Compliance
# ============================================================================
# XDG-compliant data directories (platformdirs)
# See: https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html

# Local data directory (writable data, state, plugins)
.local/
.local/share/mahavishnu/
.local/state/mahavishnu/

# Config directory (user configuration)
.config/mahavishnu/

# Cache directory (non-essential, can be deleted)
.cache/
.cache/mahavishnu/


# Session logs (may contain API tokens)
sessions/
mahavishnu/sessions/

# Production secrets (never commit)
secrets/
*.txt
.archives/
.backup/
*.bak
*.bak2
*.bak3
*.orig
*.tmp
data/health.db
ingested/

# Git worktrees
.worktrees/

# Claude Code worktrees (runtime isolated sessions)
.claude/worktrees/
.claude/worktree-snapshots/

# Tool caches (ephemeral, always regenerated)
.lycheecache

# DuckDB databases (runtime data, regenerated on ingest)
*.duckdb

# Cron runtime state (mutable timestamps/history, not config)
cron/jobs.json

# Backup Files (added by gitignore audit)
# ============================================================================
*.backup
# Backup-artifact suffixes produced by tool file modifiers
# (e.g. session-buddy checkpoint, file_modifier writes `foo.md.backup.json`
# next to every edit). `*.backup` alone misses `.backup.json` because
# the filename ends in `.json`; these two rules cover all observed variants.
*.backup.*
*.backup.json

# ============================================================================
# Superpowers Skill Artifacts (local-only, per-project runtime)
# ============================================================================
# Plan/spec/review artifacts produced by superpowers skills live under
# `.superpowers/`. Most are intentionally committed (plans, specs, final
# reviews) so future contributors see the design history. Only the
# scratch and merge-conflict-resolution subdirs are local-only.
.superpowers/sdd/preserve/
.superpowers/sdd/*.diff
.superpowers/sdd/progress.md

.superprofits/

# Test artifacts: coverage JSONs from local pytest runs trip
# check-added-large-files on the crackerjack fast hook. The historical
# committed snapshot in docs/archive/test-artifacts/coverage__*.json
# was an accidental inclusion in a version bump commit; future
# coverage JSONs should never be tracked.
docs/archive/test-artifacts/coverage*.json

# ============================================================================
# Bodai-wide gitignore patterns (added 2026-09-07; cross-repo cleanup sweep)
# ============================================================================
# Editor / pre-edit backups (foo.py.backup, foo.py.backup.json)
*.backup
*.backup.*
*.bak
*.tmpl
# XDG mistake dirs (env var expansion failed; literal names)
~
[{]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/


# >>> 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/
# <<< bodai-shared-gitignore <<<
