# Secrets
.env

# Local Dolt data — issue data NEVER goes to GitHub
.dolt-data/

# Beads working copy / exports — no issue data on GitHub
*.jsonl
backup/

# OS / tooling cruft
.DS_Store

# Python / bh build + tooling
.venv/
__pycache__/
*.egg-info/
dist/
build/
.ruff_cache/
.pytest_cache/

# Beads / Dolt files (added by bd init)
.dolt/
*.db
.beads-credential-key
.beads/proxieddb/
# bd takes this lock in the HIVE ROOT, not under .beads/, so it dirties the main clone — and
# `bh work merge` refuses to merge a dirty main clone. Untracked, that makes every merge in
# this hive fail on a lock file the merge itself just created. Regenerable; never commit it.
.beads.gate.lock

# bd agent-integration artifacts (regenerable via `bd setup`; local-only)
.agents/
.codex/

# .claude: only shared settings.json is tracked. Agents and skills are vended via the bh
# plugin (beadhive/claude-plugin) — no agent files or skills symlinks are committed here.
# Local overrides (.claude/agents/<seat>.md) remain untracked and outrank the plugin.
.claude/**/*.local.json
.claude/agents/
.claude/skills
AGENTS.md
CLAUDE.md

# bv (beads viewer) local config and caches
.bv/

# Planning-plane scratch: molecule specs (bh plan file) + design notes that feed epics
.planning/

# generated .mcp.json — churn here was retriggering the codebase-memory watcher
# into a reindex storm (index workers pinning CPU). .repowise/ is ignored globally.
.mcp.json

# tokensave MCP server local cache
.tokensave/

# headroom hook local marker
.claude/.headroom_wrap_marker.json

# coverage artifacts (just cov)
.coverage
.coverage.*
htmlcov/
coverage.xml

# generated SBOM (just sbom) — regenerated from uv.lock on every license-check
bom.json

# nix build's default output symlink (flake.nix / bh-q160.12). Points into /nix/store, so it is
# machine-local and meaningless anywhere else. `nix build` recreates it on demand.
/result
/result-*
