Found by drawing one frame
Every shadow was a frame stale.
The scene read shadow maps that the same command buffer was still writing. In play it looked right — last frame's maps were there — and nothing said otherwise.
Drawing a single frame into a file showed it: the first frame came out different every run. Two barriers later, four runs of that frame are the same bytes, and the frame is a check.