* fix: map diff hunks to symbol line ranges in detect_changes
The detect_changes tool previously used `git diff --name-only` and
picked the first 20 arbitrary symbols from each changed file. This
produced false positives (unchanged symbols reported as modified) and
false negatives (actually changed symbols dropped by the LIMIT).
Now uses `git diff -U0` to get unified diff with hunk headers, parses
the @@ line ranges, and queries for symbols whose [startLine, endLine]
range overlaps the diff hunks. Only truly touched symbols are reported.
Also fixed the CONTAINS path match to ENDS WITH to prevent cross-file
false positives from substring matching.
Fixes#758
* fix: address review feedback - variable shadowing, batch queries, tests
- Rename `params` to `queryParams` in detectChanges hunk-mapping loop
to avoid shadowing the outer method parameter
- Replace N+1 per-symbol process lookup with a single batched query
using WHERE n.id IN $ids (same pattern as impact BFS traversal)
- Add unit tests for parseDiffHunks covering single/multi file,
single/multi hunk, omitted count, pure-deletion, and empty input
* style: fix prettier formatting in parse-diff-hunks test