Only need to nuke violation cache for x: z/zp are recomputed at every iteration
Simplify descent step loop