Performance
- Merge 8 sequential O(E) lookup passes into 2, reducing serial overhead
- Wrap symbol_table in Arc to avoid deep-cloning 621K-entry HashMap
- Walk AST once per file instead of once per entity in scope resolver
- Skip non-code file types (JSON, YAML, etc.) in bag-of-words resolution
Benchmarks (10-core M-series Mac)
| Repo | Before | After | Improvement |
|---|---|---|---|
| cli/cli (10K entities) | 2.1s | 1.5s | -29% |
| terraform (37K entities) | 9.3s | 6.4s | -31% |
| grafana (596K entities) | 382s CPU | 337s CPU | -12% |