# Internal punch lists (kept local, never committed)
*_TASKS.md

# OS cruft
.DS_Store
Thumbs.db

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

# Node / Bun (any local UI or tooling working trees)
node_modules/
dist/
build/
.cache/
bun.lockb

# Logs
*.log
npm-debug.log*

# Env / secrets
.env
.env.*
!.env.example

# Recovered or stashed working trees (e.g. the removed ui/ Vite SPA
# from commit 8932961 — strategic removal; if anyone restores it locally,
# don't let it accidentally get re-added to the OSS repo)
/ui/

# transient mutants written by tests/meta/harness-verdict-probe.sh during a
# `selfcheck --full` / probe sweep. They are deleted on a clean exit; a killed run
# leaves them behind, and `git add -A` in the same tree would commit them (it did).
tests/.probe-*

# DIVE-2097: transient mutated build.sh written by
# tests/build_bundle_self_order_unit.sh. Can't live under tests/.probe-* above —
# build.sh does `cd "$(dirname "$0")"`, so the mutant must run from a path that
# still sees src/, i.e. the repo root — but it is the same "deleted on a clean
# exit, survives a kill, git add -A would commit it" shape as the probe mutants.
/.dive2097-mutant-build.sh

# DIVE-2091: the built bundle is generated at TAG time by release-cut.yml,
# never committed on main — a 47k-line generated file on main invalidates every
# open PR on every merge. install.sh fetches it from the tag's tree.
/5dive
/5dive.sha256

# DIVE-3911: python package build output
python/dist/
python/src/*.egg-info/
