lint-staged 16.4.0 walks the whole worktree several times before any
linter runs. On a cold stat cache that made small commits take over a
minute. Extend the existing lint-staged patch:
- getDeletedFiles: replace the serial `ls-files --deleted` with
`diff-files -D` (parallel preload, fsmonitor bypassed) plus
assume-unchanged entries, filtered by the same lstat rule, so the
deleted-file contract is unchanged.
- getUnstagedFiles: `status --untracked-files=no`; the `??` lines were
already discarded.
- config discovery: list tracked config files only. A nested config
must be tracked or staged to apply; untracked configs at the repo
root are still found.
Run lint-staged directly from the hook; husky already puts
node_modules/.bin on PATH, so `pnpm exec` only added startup time.