Skip to content

Resolve graph edges by symbol identity instead of folded name #4569

Description

@Widthdom

Summary

Persist and query resolved target symbol identity so common names do not merge unrelated methods, languages, classes, and test/source files.

Current v1.38.0 evidence / reproduction

  • impact Run --exact-name --max-hops 2 --with-paths --limit 3 --json mixes C# methods with a Python run and misattributes path roots.
  • callers Run --exact-name --json reports false self/mutual recursion and false cycles between unrelated Run methods.
  • deps --path src/CodeIndex/BoundedFile.cs --limit 10 --json creates unrelated source/test dependencies through common names such as Dispose, Seek, and ReadWrite.

Impact

Impact analysis, dependency boundaries, cycle detection, and refactoring decisions can be fundamentally incorrect.

Suggested direction / acceptance criteria

  • Persist a resolved target symbol ID/key on reference edges where resolution is unambiguous.
  • Include container, qualified name, signature, language, project, and file scope in resolution.
  • Preserve ambiguous edges as explicitly unresolved candidates instead of silently merging them.
  • Add cross-language and same-name regression fixtures for dependencies, impact, callers, and recursion.

Dogfooding candidate IDs: Q016, Q017, R002. Verified against cdidx v1.38.0 at commit 2919bfc9b1b83cfa7ae1d964845d0f9ffca002d1.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions