The follow-up report found three gaps in the value migration:
* applyToAllNodes only walked the root graph, so loader nodes inside
subgraphs kept their backslash values. It now recurses through
node.subgraph (Subgraph extends LGraph, so .nodes works at every level).
Promoted combo widgets share the interior widget's store-backed value,
so migrating the interior widget fixes the subgraph boundary too.
* Pasted nodes never hit the graph-level configure hook. A per-node
onConfigure wrapper now runs the same sanitize + migrate pass after
widget values restore.
* The corrected value kept its stale "value not in list" flag. The
migration now fires the node's onWidgetChanged hook, which the
frontend's error-clearing chain uses to drop value_not_in_list errors.