We are writing our own runtime and noticed a mismatched behavior with the spinosaurus example between ours and Spine when previewing the animation. Looking into it more, we see the same behavior as ours in the JS runtime and the gdx runtime as implemented in SkeletonViewer. Specifically, in Spine itself when looping the animation, the Play/Settings/Quit images reset to the setup pose at the loop boundary. In all other runtimes, Settings and Quit stay in their final position through the start of the next loop until they hit their translate transforms later in the animation (Play has an additional translate operator at time 0 which makes it work). Is this a byproduct of Spine going through time 0 and forcing the setup pose whereas runtimes never actually go back to time 0? The behavior difference is a little misleading...
Attached is the same example with a large sized atlas that can be loaded directly into SkeletonViewer (the background won't show in the viewer of course).