Yeah, this is rather tricky... I believe you and I agree that when you run an animation in reverse, the animation should be the reverse of what it was forward. The place where it breaks down is "what is the state before the first keyframe?" In my use cases the state of the attachment before the first keyframe is always what it was in the setup pose, but I get that going to the setup pose won't work for everybody.
There's another problem that's somewhat related. In ColorTimeline#apply there's the line "if (time < frames[0]) return;" which makes it so when playing an animation in reverse, the color doesn't end up on exactly what it was at frames[0]. This is particularly noticeable for alpha tweens.
Ok, I think I figured out a disconnect we were having. Having a frame at time 0 for attachments didn't solve my problem because of this oddity:
If you play an animation forwards, in order to hit frame 0 correctly you need to do: from: < 0, to: > 0
If you play an animation backwards, in order to hit frame 0 you need to do: from > 0, to: == 0