The call to `attribute_try_get_for_output` does some cache invalidation internally. Under some circumstances the call to `position_evaluator.evaluate()` recomputed the caches (e.g. when the Normal node was used, the evaluated handle positions cache on curves were updated). After the positions have been updated in the Set Position node, the cache was not invalidated again., leading to incorrect rendering. The proper solution will be to do the cache invalidation in `OutputAttribute.save()` again. That is a bit more involved though. For now just reorder the code a bit to do the cache invalidation after the field has been computed. There is a follow up task: T92509.