Bug Report: T66946: NLA strip unexpectedly auto-switching from Hold to Hold Forward
Problem: For the Action Track (non pushed action), extrapolation None and Hold is respected but Hold_Forward is not. It's a source of confusion.
Solution: Originally proposed by angavrilov. We treat extrapolation Hold_Forward as bounded on the left and infinite on the right.
FModifiers note: It's important to note that the Action Track does not evaluate the same as normal strips which is intentional. FModifiers will affect the track's boundaries so keyframes don't necessarily define the Action Track's evaluation bounds. So adding a default cyclic modifier to channels effectively makes the Action Track's evaluation bounds infinite. Even extrapolation None in this case appears to not work properly. This behavior is still intentional even though it appears broken. The user-side solution is to restrict the modifier's frame range.