Skip to content

fix(dx_evidence_graph): coalesce node identity to pod→service→IP (don't collapse empty-pod peers)#70

Open
entlein wants to merge 1 commit into
entlein/dx-evidence-graph-vizfrom
fix/dx-evidence-graph-ip-fallback
Open

fix(dx_evidence_graph): coalesce node identity to pod→service→IP (don't collapse empty-pod peers)#70
entlein wants to merge 1 commit into
entlein/dx-evidence-graph-vizfrom
fix/dx-evidence-graph-ip-fallback

Conversation

@entlein

@entlein entlein commented Jun 22, 2026

Copy link
Copy Markdown

The dx_evidence_graph Graph widget keys nodes on requestor_pod/responder_pod. Edges whose peer is not a pod — the k8s API server (responder_service), external/IP endpoints, the new consulted-socket edges (responder_ip) — have an empty *_pod, so they ALL collapse into a single bogus "" node, merging unrelated peers.

Fix: coalesce node identity to pod → service → IP (the same idiom net_flow_graph uses, px.select(src==, src_ip, src)), and point adjacencyList.fromColumn/toColumn at the coalesced requestor/responder columns. Raw *_pod/*_service/*_ip are still returned for hover.

Validated live (px run against forensic_db): control-plane → k8s-apiserver; the 5 consulted sockets resolve to 5 distinct IPs (10.43.143.34, 10.42.0.1, ::1, 127.0.0.1, 10.42.0.43) instead of one merged node.

Pairs with entlein/dx#87 (the consulted-evidence edges, which is what surfaced the empty-pod collapse).

🤖 Generated with Claude Code

…peers don't collapse

Edges whose peer is not a pod (k8s API server, external/IP endpoints, consulted
sockets) carry an empty requestor_pod/responder_pod. The Graph widget keyed on
*_pod alone, so EVERY such edge collapsed into one bogus "" node — visually
merging unrelated peers (the API server, every distinct remote IP) into one.

Coalesce node identity to pod, else service, else IP (the same idiom
net_flow_graph uses: px.select(src=='', src_ip, src)) and point the adjacencyList
from/to at the coalesced columns. Now each distinct peer is its own node.

Validated live (px run, forensic_db): control-plane → k8s-apiserver; the 5
consulted sockets → 5 distinct IPs (10.43.143.34, 10.42.0.1, ::1, 127.0.0.1,
10.42.0.43) instead of one merged node.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 22, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: a3acdd10-e42d-496b-addf-1c7b8ae2d625

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/dx-evidence-graph-ip-fallback

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant