Skip to content

[Feature]: don't erase weaker-confidence evidence when edges or paths merge #4881

Closed

Description

@SyedFahad7

Repro for all (graphify 0.9.97, v8 @ 0a8cd4e), Report.cs:

public interface IReport { string Build(); }
public class PdfReport : IReport { public string Build() { return "pdf"; } }
public class CsvReport : IReport { public string Build() { return "csv"; } }
public class Exporter {
  private readonly IReport _report;
  public Exporter(IReport report) { _report = report; }
  public string Run() { return _report.Build(); }
}

graphify update .

Today: a same-relation edge collision keeps the higher-confidence edge (#3711, graphify/build.py:1910–1911), so an AMBIGUOUS/INFERRED duplicate disappears. Paths are single shortest paths, so two routes to the same symbol are never compared.
Expected: on collision, keep the winner but record the other provenance (e.g. also_seen: [{confidence, source_location}]), and when reporting multiple paths to one target, surface the weakest path confidence instead of the best. Display already unions tags for parallel edges (serve.py:2144–2145, [EXTRACTED/INFERRED]); this would make the stored graph match.
Refs: graphify/build.py:191, 1910–1911; graphify/serve.py:2144–2145.

Activity

  1. github-actions commented on Oct 30, 2026

    @github-actions

    Thanks for opening this issue, @SyedFahad7. A maintainer will take a look soon.

    If you would like to discuss it in real time, come say hi on our Discord server. For longer-form questions and ideas there is also GitHub Discussions.

    To help us triage, please make sure the report includes what you expected, what actually happened, and the steps (and a small sample) to reproduce it.

  2. safishamsi commented on Oct 30, 2026

    @safishamsi
    Member

    The second half shipped in v0.9.99: graphify path / shortest_path now report the weakest of several equal-length routes instead of an arbitrary one, so the confidence never overstates the connection. Both halves of this issue are now resolved (first half, also_seen, shipped in 0.9.98 via #4891).

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions