Previously, _get_promoted_widget_context_cache_key included widgets_values
from context nodes, so changing a widget inside a promoted subgraph
invalidated the entire cache snapshot even when promotion topology and
other nodes were unchanged.
This makes promoted-context snapshots key off node structure and
topology only, while individual nodes are still reanalyzed when their
widgets_values actually change.