# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg

# Virtual environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# uv
.uv/

# IDE
.vscode/
.idea/
*.swp
*.swo
*~
.DS_Store

# Testing
.pytest_cache/
.coverage
.coverage.*
coverage.xml
htmlcov/
*.cover
.hypothesis/
*.prof

# VibeSOP state
.vibe/state/
.vibe/sessions/
.vibe/session/
.vibe/preferences.json

# VibeSOP observability runtime data (spans.jsonl, triage logs).
# Per-project, generated at runtime, can grow large.
.vibe/observability/
# Tool-sequence capture log + cursor + liveness marker (P3 telemetry).
.vibe/tool_sequences*
# User-installed skills (mattpocock, superpowers, etc.) are environment-local.
# Cross-cutting workflow definitions are project-shared and tracked.
.vibe/skills/*
!.vibe/skills/cross-cutting/
.vibe/instincts/
.vibe/instincts.jsonl
.vibe/instincts.jsonl.lock
.vibe/instincts.jsonl.bak
.vibe/sequences.jsonl
.vibe/sequences.jsonl.lock
.vibe/sequences.jsonl.bak
.vibe/clear_epoch
.vibe/snapshots/
.vibe/cache/
.vibe/dist/
.vibe/experiments/
.vibe/memory/
.vibe/checkpoints/
.vibe/workflows/

# VibeSOP runtime artifacts (one-off reports, plans, backups)
.vibe/routing_counter.json
.vibe/miss_counter.json
.vibe/miss_salt
# Routing runtime caches/state (triage cache, last route, skill embeddings)
.vibe/triage_cache.json
.vibe/triage_cache.lock
.vibe/last_route.json
.vibe/skill_embeddings.json
.vibe/skill_embeddings.lock
.vibe/skill-index.json.lock
.vibe/*.bak*
.vibe/*.backup
.vibe/*-report.md
.vibe/*-complete.md
.vibe/deep-code-review.md
.vibe/findings.md
.vibe/progress.md
.vibe/task_plan.md
.vibe/experiment.yaml
.vibe/execution_plans.jsonl
.vibe/execution_plans.jsonl.lock

# Autonomous-experiment worktree + metadata (never commit experiment artifacts)
.experiment/

# VibeSOP Loop System (v8.0) — autonomous scheduled tasks
# spec.json 是用户可编辑的定义，可版本控制；state.json 是自动生成的运行历史，含
# 路由决策与可能的 LLM 输出片段，不应提交。
.vibe/loops/*/state.json
# tick.log 已被上面 *.log 模式覆盖，这里仅显式标注方便阅读：
# .vibe/loops/tick.log  (covered by *.log)

# Type checking
.mypy_cache/
.pyright_cache/
ruff.toml
.pytype/

# Logs
*.log

# Distribution
*.whl
*.tar.gz
.alma-snapshots
.vibe/.vibe/

# Runtime generated directories
.vibe/core/
.vibe/rules/
.vibe/conversations/
.vibe/*.jsonl
.worktrees/

# VibeSOP session-generated routing fan-out prompts (not curated)
.vibe/prompts/

# OMX ephemeral (gate/experiment scratch).
#
# `.omx/` itself is deliberately NOT ignored here. Shared ignore must not
# hide `.omx/artifacts/`: an artifact cited by a tracked Markdown document
# must itself be tracked, and `scripts/check_artifact_links.py` enforces
# that contract even when a developer-local `.git/info/exclude` hides the
# file from ordinary `git status`.
#
# Local-only historical/research artifacts may be retained on one machine
# via `.git/info/exclude` (not this file). Do not cite those from tracked
# docs unless they are also tracked.
#
# Only the short-lived directories below are ignored in this shared file.
# Do not add `.omx/` or `.omx/artifacts/` to this file.
.omx/tmp/
.omx/scratch/
.omx/cache/
.omx/runtime/
.omx/logs/
.omx/state/

# Claude Code local state (sessions, memory, worktrees)
.claude/

# Pi CLI / skills runtime symlinks (environment-local)
.pi/skills/

# Audit reports: generated locally; commit explicitly if they should be shared.
/audit-report-*

# Settled experiment runs are kept in a checksummed local cold archive.
# These ignored compatibility symlinks preserve local report/replay paths.
/docs/experiments/multi-expert-calibration/runs
/docs/experiments/multi-expert-formal/runs
/docs/experiments/multi-expert-sensitivity/runs
