The issue was discovered only after recent changes, but roots back to much older changes. What was happening is scene's ID recalc flags where never cleared, which caused ensure_view_layer() to always run copy-on-write on the scene. This resulted in certain runtime data being cleared, without proper flag stored in the dependency graph. This was caused by ID recalc clear function checking whether any ID was tagged for recalc in that graph or not. This was happening due to all areas using DEG_id_type_tag() which can only set flags on the graph from viewport scenes, and could not inform render dependency graph. Now ID tyoe tagging is happening on per-graph level, which avoids possibility of flags running out of sync. In a bit longer term we also need to get rid of two functions which are clearing flags: DEG_id_type_tag() and deg_graph_clear_tags().