# Personal / runtime state — never public
.omc/
.omo/
.serena/
.superpowers/     # SDD plan workspaces (ledger, briefs, review packages)
.codegraph
.agents/*
!.agents/skills/
!.agents/skills/**
.claude/*
!.claude/skills/
!.claude/skills/**
.harness/
.heretek/
.heretek/*        # runtime hooks state dir (e.g. last_lookup.json)
.heretek/**
*.local.yml

# Python
__pycache__/
plugins/**/__pycache__/   # D15 hooks-plugin scope: explicitly exclude
*.pyc
.venv/
venv/

# Test coverage — local artifacts regenerated by pytest --cov
.coverage
coverage.xml

# uv — project uses pip (requirements.txt) for heretek's runtime deps; uv.lock
# is only present when the dev installs via uv and is local-only.
uv.lock

# Security scan reports — local artifacts, regenerated by the backfill
reports/

# Freshness cache — regenerated by the weekly cron and `python -m scripts.freshness_index --all`.
# Initial seed (`pyyaml.yaml`) is tracked; runtime artifacts are not.
#
# NOTE: `tests/freshness_eval/test_cache_inventory.py` asserts that additional
# entries under `catalog/freshness/` are present in the working tree. Those
# committed cache entries are force-added (they live in the same glob but are
# required by the regression test), so this rule ignores only untracked
# additions from `freshness_index` runs, not the committed fixtures.
catalog/freshness/*.yaml

# Benchmark results
terminal-bench-ab-results/

# Temporary / audit clone dir
review/

# Editor / OS
.DS_Store
*.swp
*.swo

node_modules/
**/node_modules/
.venv/
**/.venv/

.benchmarks/
results/
packages/heretek-swarm/swarm-dashboard/node_modules/
packages/heretek-swarm/node_modules/
