Call graph: prune workspace-member walks and share canonical probes per build
Faster cold call-graph builds: fewer filesystem walks while finding Rust workspace members.
- Workspace-member discovery skips branches that the manifest's literal member prefixes prove can't contain a member. Ignored vendor members that match stay visible, and existing excluded names and wildcard semantics are unchanged. Concurrent cold misses share one member walk per root.
- Canonical path probes are bounded and shared across a build's files. Explicit identity requests, source and watcher normalization, and symlink revalidation are unchanged.
Measured on 5,552 tracked AFT source files (linux,12c, instrumented unoptimized test profile): workspace directory visits 5,934 to 80, directory reads 13,905 to 8,051, store canonicalize calls 5,365,469 to 5,158,734. All 224,754 stored edge rows are byte-identical (cmp, sha256 090e8552…). Wall-time differences in that profile aren't claimed as a production speedup.
Build server (current main): 503 call-graph and related lib tests passed, plus formatting and the Windows check. The one failure, subc::health::tests::disabled_callgraph_store_reports_disabled_despite_lingering_build_receiver, is a known scheduler-contention flake that only appears on the build server, and it doesn't touch this change.
![View with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v3-3x.png)
![Autofix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png)
Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Faster cold call-graph builds by pruning workspace-member walks and sharing canonical path probes within a single build. Member discovery now skips branches that the manifest's literal member prefixes prove can't contain a member, while ignored vendor members that match remain visible. Concurrent cold misses share one member walk per root, and canonical probe identities are bounded and shared across a build's files; explicit identity requests, source and watcher normalization, and symlink revalidation stay live. On 5,552 tracked AFT source files, workspace directory visits drop from 5,934 to 80, directory reads from 13,905 to 8,051, and canonicalize calls from 5,365,469 to 5,158,734, with all 224,754 stored edge rows byte-identical.