## Why
Submodule worktree scans can execute clean filters selected by task-writable Git configuration.
## What changed
Pass `--ignore-submodules=dirty` to `git status` in `get_has_changes_in_repo` to skip uncommitted submodule contents while retaining gitlink changes.
## Testing
Add a regression test that configures a submodule clean filter and verifies the repository change check does not execute it. The test also confirms that `git status` without the option executes the filter.
GitOrigin-RevId: 5330402f0354c3bf9613358575f8bedc9f312886
## What changed
- Share an in-flight `git status --porcelain` invocation among concurrent workspace metadata requests for the same canonical repository root.
- Keep scans for different repositories independent, and start a fresh scan after an in-flight request completes or loses all consumers.
- Pass the known repository root into dirty-worktree detection so requests from sibling directories and symlink aliases use the same key.
## Testing
- Add coverage for request coalescing, repository and symlink keying, completed scans, and consumer cancellation.
GitOrigin-RevId: 4c197c1d5bb94ca83c02979be34b17f24aefde08