Summary
In a non-git directory, arbor appears to honor no exclusion mechanism, so dependency and
vendored trees (e.g. venv/, node_modules/, site-packages/, decompiled/vendored code) get fully
indexed and dominate the graph — inflating index size, status, and centrality ranking.
What I observed (sandbox, arbor 2.2.0 and re-checked on 2.6.0)
Indexing a plain (non-git) directory, verified by reading .arbor/graph.json:
| mechanism |
excluded? |
| built-in excludes (venv/node_modules/site-packages) |
no |
.gitignore (dir is not a git repo) |
no |
.arborignore |
no |
ignore list in .arbor/config.json |
no |
git init + .gitignore |
yes |
| moving files out of the tree (symlink back) |
yes (symlinks not followed by default) |
Concretely, a venv/ with ~27k files ended up in the graph, producing a multi-GB graph.json, while
the real first-party code was a few thousand files.
Repro
mkdir demo && cd demo (do not git init)
- add
src/main.py plus a venv/lib/.../pkg/mod.py and a .gitignore containing venv/
arbor index .
- inspect
.arbor/graph.json → the venv symbols are present
Expected
Outside a git repo, honor .gitignore (root + nested) and/or the ignore list in .arbor/config.json,
so users can exclude dependencies without needing git init.
Workarounds today
git init + .gitignore (arbor then honors it), or
- relocate the heavy trees out of the indexed directory and symlink them back.
Either would be nicer as native config. Happy to help repro further. Thanks for arbor!
Summary
In a non-git directory,
arborappears to honor no exclusion mechanism, so dependency andvendored trees (e.g.
venv/,node_modules/,site-packages/, decompiled/vendored code) get fullyindexed and dominate the graph — inflating index size,
status, and centrality ranking.What I observed (sandbox, arbor 2.2.0 and re-checked on 2.6.0)
Indexing a plain (non-git) directory, verified by reading
.arbor/graph.json:.gitignore(dir is not a git repo).arborignoreignorelist in.arbor/config.jsongit init+.gitignoreConcretely, a
venv/with ~27k files ended up in the graph, producing a multi-GBgraph.json, whilethe real first-party code was a few thousand files.
Repro
mkdir demo && cd demo(do notgit init)src/main.pyplus avenv/lib/.../pkg/mod.pyand a.gitignorecontainingvenv/arbor index ..arbor/graph.json→ thevenvsymbols are presentExpected
Outside a git repo, honor
.gitignore(root + nested) and/or theignorelist in.arbor/config.json,so users can exclude dependencies without needing
git init.Workarounds today
git init+.gitignore(arbor then honors it), orEither would be nicer as native config. Happy to help repro further. Thanks for arbor!