fb9b69cd6a
Previously the cycle validator rejected any link whose source had a vector index >= target's, which silently killed legitimate connections between nodes added in the wrong drop order. Switch to a DFS over source_ids: an edge from->to creates a cycle iff `from` already (transitively) depends on `to`. topo_sort runs after each topology change so the vector ends up in a consistent order regardless of how nodes were inserted. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>