A by-name input edge to another named node (ref :id). The general form —
nestable inside compose. The flat depends_on: [:a, :b] schema key is sugar
that lowers to one %Ref{} per id.
gate: names an attestation requirement: the edge then consumes the target
THROUGH its attested view — an interposed cell admitting only rows whose
attestation currently applies (ReactiveDag.Attestation). Signing is a
property of the EDGE, not of the data: an ungated edge to the same target
still sees everything, which is what keeps denominators honest.
mode: (with gate:) picks how a not-yet-signed row projects: :require
(default) withholds it; :annotate lets it FLOW as best effort, written
with the requirement's unsigned status so it stays distinguishable from
signed. A rejection bites in both modes.