derivedSymbolData guidPaths reference the post-swap tree structure
(e.g., heart Vector inside a swapped home slot), but resolution was
running before overrides modified the tree. After repopulateInstance,
the old children are deleted and replaced with new ones from the
swapped component, making pre-resolved targets stale.
Changes:
- Move DSD resolution to after all overrides (symbolOverrides,
transitive sync, componentProperties) so guidPaths can reach
the swapped-in children
- Pre-compute componentId root map while all internal page nodes
are alive — instance swaps delete intermediate clones, breaking
componentId chains used by findNodeByComponentId
- Use preComputedRoot in findNodeByComponentId to match across
clone levels even when intermediate nodes are deleted
- Propagate DSD changes through clone chains via BFS