I've seen a lot of solvable problems with the puppet tool the in the past, but this one isn't making any sense, and I can't seem to find anyone with the same problem. I've applied three puppet pins to three separate light fixtures that are shape layers. I added a simple two-keyframe animation to them to make them swing then added the following expression:

loopOut(type = "pingpong", numKeyframes = 0)

The result was good at first, but then it started acting weird. "Glitching out" is the only way I can describe it. Here is a link to what I'm seeing: Puppet Glitch - YouTube

I've tried adjusting the mesh expansion and triangles but it only seemed to make the problem worse. Every time I do something additional to the animation it either turns off all together or throws in random frames.

Puppet and shape layers don't mix well. shape layer are always turned on for continuously rasterize and this means that transform is applied before the effect instead of after. so it's as if you are moving a layer within a mesh that was set in the initial state. first you transform, then the effect is applied. get it? the effect is fixed, but the layer is moving from within it. then it breaks really.

if you want to use puppet effect on a layer, you should make sure it's not continously rasterized (or collapsed) basically make sure the sunburst switch is off: