SIGN IN SIGN UP

perf: index non-code paths by dir in compute-batches (O(dirs·N) → O(N))

`buildNonCodeBatches` re-materialized `[...byPath.keys()]` seven times and,
for Group A (Dockerfile clusters) and Group D (SQL migrations), re-filtered
the full path list once per directory — O(dirs·N). On a many-service
monorepo (one Dockerfile per service) that was the dominant cost.

Hoist the path list once and build a dir→paths index once; Group A/D lookups
become O(1). Output is byte-for-byte identical (the path ordering, sorts and
group boundaries are all preserved).

Verified [executed]: byte-identical to the previous implementation on the
`scan-result-non-code.json` fixture and over 300 fuzzed non-code repos
(0 mismatches); 17–31× faster on 300–600-service synthetic monorepos
(e.g. 4250 files: 105ms → 3.4ms).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
D
DashBot-0001 committed
94346d736bd52be5c9ae8a30d7ef42d86b08b428
Parent: a781a61