With more than one directional light in the scene, ResolvedView.DirectionalLightColor and ResolvedView.DirectionalLightDirection can report the wrong light, or black and a zero vector, while a directional light is still lighting the scene normally. This was hit in a day/night cycle that swaps between a sun and a moon light. Materials that read these values break during the swap.
Both values come from FScene::SimpleDirectionalLight. It is set to the first directional light added to the scene and ignores the rest, whatever their intensity or ForwardShadingPriority. When that light is removed, which includes hiding it, the pointer is set to null and never re-picked from the directional lights still in the scene. So the result depends on the order the lights were added, not on which light is actually lighting the scene.
Expected: the values follow the same directional light the renderer already selects every frame (by ForwardShadingPriority, then intensity) for forward shading, translucency and volumetric fog, and that the Forward Selected Directional Light material node reads. The height fog and volumetric fog fallbacks read the same pointer and have the same problem. Present in 5.6 through current mainline.
Steps 4, 5 and 8 are the failures. Steps 6 and 7 are correct only by accident of the order the lights were added. The attached project automates all of this and writes a pixel readback per step.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-399013 in the post.