The incremental branch of flow tracing and community detection matches changed_files entries against nodes.file_path, but build_or_update_graph passes repo-relative paths while nodes.file_path holds absolute paths. normalize_file_path only normalises separators, so the comparison never matches and the incremental branch is a no-op.
Observable effect: graphs maintained purely by incremental updates end up with flows, communities and flow_memberships empty, so orient_tool, get_affected_flows_tool, list_communities_tool and get_community_tool answer with nothing while the graph itself is complete and current. A full postprocess repopulates them, which is what makes the mismatch easy to miss.
Either normalise changed_files to absolute before the comparison, or compare on the repo-relative form on both sides.
The incremental branch of flow tracing and community detection matches
changed_filesentries againstnodes.file_path, butbuild_or_update_graphpasses repo-relative paths whilenodes.file_pathholds absolute paths.normalize_file_pathonly normalises separators, so the comparison never matches and the incremental branch is a no-op.Observable effect: graphs maintained purely by incremental updates end up with
flows,communitiesandflow_membershipsempty, soorient_tool,get_affected_flows_tool,list_communities_toolandget_community_toolanswer with nothing while the graph itself is complete and current. A fullpostprocessrepopulates them, which is what makes the mismatch easy to miss.Either normalise
changed_filesto absolute before the comparison, or compare on the repo-relative form on both sides.