Your comments

As far as I have tested in my game I still don't found any side effect yet.

And would you mind checking my another forum? I think you may able to merge two change in one update.

Ah, thank you for the explanation. I now get that why TimelineChild implements that way.

At first, I bring out RewindableParticleSystemTimeline topic because I think ITimeline interface will help this too. But it's turned out to be my misunderstanding.

Oh, I see. I didn't notice that before.

You can cache timeline = GetComponentInParent<Timeline>(); as a makeshift to get any properties to avoid if-else.

But in this case, I agree with you that the interface is perfectly convenience.

P.S. In fact, I'm still curious what or when to use TimelineChild. In RewindableParticleSystemTimeline, it finds all particleSystems in children but use GetComponent<Timeline>.

I'm a user, not a Chronos developer or Community manager.

TL;DR: -1 means playback speed by normal speed

As my understanding, it works like Unity's Time.timeScale.

In each frame, Unity's Time.deltaTime return the time difference from the last frame. Meanwhile Time.timeScale is the scale at which the time is passing. Time.timeScale works like the multiplier to Time.deltaTime.

It's maybe something just like this in somewhere of the Unity Code.

Time.deltaTime = Time.timeScale * (Time.time - previousTime);

The default Time.timeScale value is 1.
If Time.timeScale > 1: The game speed 2xtime faster.
If Time.timeScale > 0 but < 1: The game speed will look like the slow motion.
If Time.timeScale = 0: The game will pause.

(More info here: Unity Time Scale)

Chronos' timeScale works the same way as Unity's timeScale.

But Unity's Time.timeScale can't be lower than 0, the Chronos' timeScale can.

When the timeScale is below 0, Chronos will switch mode to play record instead of playing update. If timeScale = -1 game will play record backward in normal speed.

timeScale can be found in the 'Timeline'. This is the value you can 'get'. To check which state of time flow of the current object use this.

localTimeScale can be found in the 'Clock'. This is the value you can 'set'. If you want to change the state of time flow use this.

Get back to your game, I don't have enough information about your game to describe much. But if you only want to reset, you can simply save position, rotation at 'Start' and set it back when reset.

But if you want is to rewind with a cool looking presentation. Chronos is your way.

Hope this can help.

Why not use TimelineEffector that is the parent of those 2 objects instead?