Skip to content

fix(callflow): load graph directed — caller/callee columns are swapped on 43% of edges - #2508

Closed
Tomaskobel wants to merge 2 commits into
Graphify-Labs:v8from
Tomaskobel:fix/callflow-edge-direction
Closed

fix(callflow): load graph directed — caller/callee columns are swapped on 43% of edges#2508
Tomaskobel wants to merge 2 commits into
Graphify-Labs:v8from
Tomaskobel:fix/callflow-edge-direction

fix(callflow): compute the Caller column from the whole graph

545423a
Select commit
Loading
Failed to load commit list.
Graphify Labs / Graphify succeeded Aug 6, 2026 in 0s

Graphify — looks good

Looks safe to merge — no coupling regressions and no blocking issues, checked against the code graph (not a self-assessment).

Details

Graphify reviewed this change.

Looks safe to merge — no coupling regressions and no blocking issues, checked against the code graph (not a self-assessment).


Graphify review — findings

This PR modifies how callflow_html.py loads the graph and builds the call table. In the node-link loading path it now forces directed/multigraph to True when parsing graph.json (which is stored as undirected), and it extends generate_call_table_rows to accept optional full-graph all_edges/all_nodes parameters so the Caller/Callee columns can be computed against the whole graph rather than only section-local edges. The call site in write_callflow_html is updated to pass the full edges/nodes. The PR also adds two tests covering preserved edge direction after loading and the Caller column correctly recognizing callers from other sections.

No blocking issues surfaced. 2 lower-confidence candidates did not survive cross-model review.

Analysis details — impact, health, verification

Impact & health

Graphify review

Impact — 371 functions depend on the 151 functions this change touches.

Health — this change adds coupling hotspots:

  • worse: load_graph() — 5 callers, 7 callees
  • worse: generate_call_table_rows() — 3 callers, 6 callees

Verification — 371 functions in the blast radius were not formally verified this run (proofs are advisory here).

Gate & verification

graphify gate

PASS — objectively clean (no health regressions, tests not run — proofs not run this pass (advisory)). Grounded, not self-assessed.

Advisory (not blocking):

  • verification_scope: 241 function(s) in the blast radius were not formally verified this run