# ============================================================================
# CI / GitHub Actions
# ============================================================================
# Akosha CI is intentionally disabled (see lesleslie/akosha#workflows).
# Gitignoring the directory keeps any future workflow file out of version
# control until the team re-enables CI by design.
.github/workflows/

# ============================================================================
# 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.py
coverage.*
nosetests.xml
coverage.xml
coverage.json
*.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

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

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

# ============================================================================
# Archived Files
# ============================================================================
.archive/
tests/archived/

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

# XDG - Cache directories
.pytest_cache/
.ruff_cache/
.mypy_cache/
.oneiric_cache/
.complexipy_cache/
.cache/
.lycheecache
.lycheecache/

# XDG - State directories
# `.claude/*` excludes top-level entries only — directory itself stays
# accessible, so the per-subdir negation rules below can re-include nested
# content. Per `man gitignore`: "It is not possible to re-include a file
# if a parent directory of that file is excluded."
.claude/*
# Shared team content (whitelisted — decisions, agents, workflows, skills).
# Directory entries MUST come before the `**` recursive entries so git's
# pattern matching re-includes the directory before evaluating the recursive
# pattern. Pattern matches mahavishnu's allowlist style. Per
# oneiric/docs/adr/0001-deployability-discipline.md.
!.claude/decisions/
!.claude/decisions/**
!.claude/agents/
!.claude/agents/**
!.claude/workflows/
!.claude/workflows/**
!.claude/skills/
!.claude/skills/**
# PR-1c: SessionEnd hook + settings.json are part of the cross-repo
# merge-workflow infra (mahavishnu/.claude/hooks/agent-merge-on-end.py
# + .claude/settings.json). Track them so fresh clones ship the hook.
!.claude/hooks/
!.claude/hooks/**
!.claude/settings.json
.session-buddy/
.crackerjack/

# Git Worktrees
.worktrees/

# XDG - DELETE candidates
.obsidian/

.archives/
.backup/
.backups/

.coverage
.coverage*

# Backup Files (added by gitignore audit)
# ============================================================================
*.backup
*.bak
*.backup.json

# ============================================================================
# Node.js - Wave-11 mermaid CI guard
# ============================================================================
# jsdom is the dev dep for the wave-11 mermaid CI guard (see
# akosha/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


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


# Superpowers Skill Artifacts (local-only, per-project runtime)
# ============================================================================
# All `.superpowers/` content is scratch: SDD controller workspace
# (briefs, reports, ledger, review packages) keyed by plan-basename, and
# the brainstorm visual-companion's mockup HTML + server-state JSON.
# Plans and specs live at `docs/plans/` and `docs/specs/` instead — they
# are committed under their canonical paths, never under `.superpowers/`.
.superpowers/

!docs/plans/.archive/
!docs/plans/.archive/**
!docs/specs/.archive/
!docs/specs/.archive/**


# >>> 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.

# Local configuration overlay (per-machine / per-developer; never commit)
# Patterns mirror mahavishnu/.gitignore §Local Configuration so all Bodai
# repos ignore the same overlay set. The four files are: developer-local
# overrides (`local.yaml`), the legacy repo catalog (`repos.yaml`),
# the orchestrator-managed catalog (`ecosystem.yaml`), and the per-machine
# fleet registry overlay (`registry_metadata.local.yaml`, sibling of the
# tracked `registry_metadata.yaml`).
settings/local.yaml
settings/repos.yaml
settings/ecosystem.yaml
settings/registry_metadata.local.yaml

# Editor / pre-edit backups (foo.py.backup, foo.py.backup.json)
*.backup
*.backup.*
*.bak
# `.bak.` infix (e.g. `.gitignore.bak.20261004T104858Z`,
# `foo.py.bak.20261004T104858Z`) — `*.bak` only matches a SUFFIX and silently
# misses timestamped backups where `.bak` is followed by `.` + suffix.
# Added 2026-10-05 after a session-buddy tool modifier wrote
# `.gitignore.bak.20261004T104858Z` to the working tree and the existing
# `*.bak` pattern failed to catch it on the next `git add`.
*.bak.*
.gitignore.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/
# Superpowers skill artifacts (local-only, per-project runtime).
# All `.superpowers/` content is scratch: SDD controller workspace
# (briefs, reports, ledger, review packages) and the brainstorm
# visual-companion's mockup HTML+server-state. Plans and specs live
# at docs/plans/ and docs/specs/ — committed under their canonical
# paths, never under .superpowers/.
.superpowers/

# === Bodai `.claude/` policy ===
# Default-deny the entire .claude/ tree, then narrow allowlist for the
# canonical durable subtrees. Settings.local.json + runtime artifacts
# stay untracked. Converges the fleet on a single shape (was divergent:
# oneiric/mcp-common used blanket+allowlist, mahavishnu used targeted
# blocks, akosha/session-buddy/crackerjack used .claude/* + allowlist).
#
# After `crackerjack gitignore sync` runs fleet-wide, per-repo cleanup
# is still required for files already tracked that this block would
# un-track (most notably mahavishnu's .claude/settings.local.json) —
# gitignore changes don't un-track existing entries. Those require
# `git rm --cached <path>` per file per repo.
.claude/*
!.claude/CLAUDE.md
!.claude/settings.json
# Canonical durable subtrees — track everywhere (empty dirs allowed
# so future content lands without a gitignore edit):
!.claude/decisions/
!.claude/decisions/**
!.claude/agents/
!.claude/agents/**
!.claude/commands/
!.claude/commands/**
!.claude/hooks/
!.claude/hooks/**
!.claude/skills/
!.claude/skills/**
!.claude/workflows/
!.claude/workflows/**
# Runtime artifacts — never track. Surface as first-class rules so
# every contributor sees the policy at a glance:
.claude/settings.local.json
.claude/agents/.a2a_enrollment/
.claude/agents/.archive/
.claude/skills/*/.archive/
.claude/workflows/.archive/
.claude/backups/
.claude/handoff/
.claude/worktrees/
.claude/worktree-snapshots/
.claude/__pycache__/
.claude/**/__pycache__/
.claude/**/*~.tmp
.claude/**/test_hook_*.txt
.claude/**/hook_test_marker.txt
# <<< bodai-shared-gitignore <<<
