# Python-generated files
__pycache__/
*.py[oc]
build/
# desktop/build is electron-builder's buildResources. Neither icon.icns nor
# icon.ico is tracked: both are build OUTPUTS, derived at package time from
# web/public/nh-mark-512.png by packaging/derive-icons.mjs — see that file's
# header comment for why the binaries stopped being committed.
!desktop/build/
desktop/build/*
dist/
wheels/
*.egg-info

# Virtual environments
.venv

# Secrets & local state — never commit
.env
*.key
*.pem
.no_human/
secrets/
*.db
*.db-wal
*.db-shm
# ...except the memory-triage runbook's committed test fixture: a tracked
# INPUT (synthetic, neutral content -- see EXPORT_CLASSIFICATION.txt).
!testdata/memory_triage_fixture.db

# Test scratch
/tmp_e2e/
# pytest's node-id cache stores collected test names verbatim, so it carries
# whatever the test bodies spell. It was NOT ignored — only `__pycache__/` and
# `*.py[oc]` were — so a `git add -A` after a test run could have tracked it.
.pytest_cache/

# IDE-generated (skills, local settings)
.claude/
.windsurf/

# web build
web/node_modules/

# north-star bench: the raw built corpus is verbatim operator conversation
# content (personal + enterprise) — never committed. Curated specs live one
# level up and ARE tracked.
eval/northstar_tasks/generated/
# Machine-local translation from vendor-neutral spec paths to real checkouts.
# Holds real repo names by definition — never committed.
eval/repo_map.yaml
eval/results/northstar/

# desktop shell
desktop/node_modules/
# also match a SYMLINK: a trailing slash only matches a directory, so a
# symlinked node_modules slipped past and got committed as an absolute path.
desktop/node_modules
web/node_modules
desktop/dist/

# The adoption harness writes its report here on every run.
e2e/adoption/out/
