Thanks
Thanks for your responses, everyone.
No washer or spacer in the cassette, so it seems that the most likely cause is a failure to adequately tighten the lockring. I cleaned, inspected and greased the threads and tightened the lockring with a torque wrench, so hopefully I won't have this problem again.
I'm also going to try to remember to inspect the lockring whenever the wheel is off the bike and whenever I notice a missed shift. (A missed shift a mile before I overshifted off of the cassette was the only sign that the lockring had come loose.)