As I mentioned last night, it seems that a MySQL bug of all things was the source of the consistently inconsistent ratings problem. This was a big surprise to me, because my first thought when something like this happens is that I screwed up somehow, but it seems that for once it wasn't actually my fault.
I've put up a workaround. Hopefully the workout itself does not fall prey to this bug too; let me know if ratings work any better.