class Rigor::ModuleGraph::Edge

A single dependency edge between two constants.

Carries the dependency itself (+from+, +to+, +kind+, +confidence+), the source position it was extracted from (+path+, +line+, +column+), and the raw source slice (+raw+) when the resolution went through a fallback path. Edge is a +Data+ subclass — every instance is immutable.

== Two serialisation shapes

+to_message_payload+:: What the plugin embeds in a diagnostic’s +message+ field. The collector reconstructs an Edge from this payload plus the diagnostic’s own +path+/+line+/+column+, so the payload omits position to keep the message compact. +to_h+:: What the JSONL writer dumps to disk. Full row, with +path+/+line+/+column+ included.

== Dedup key

+dedup_key+ ignores +path+ and +line+ so the same logical edge declared in two files (or surfaced by two re-runs of +rigor check+) collapses to one row. The +dedup_key+ member at the end is internal: it’s the cached +“\x00”+-joined key string the renderers’ dedup loops use for Hash lookups. Storing it on the value pays for itself once a few hundred edges flow through any rendering / IO path.