Hi your assumption is correct .
If a TTL is configured and a state value has expired, the stored value will be cleaned up on a best effort basis.
So the value might still be stored even if the TTL has passed , the state visibility configuration will control if the value will be returned or not .
StateTtlConfig.StateVisibility.NeverReturnExpired - expired value is never returned
StateTtlConfig.StateVisibility.ReturnExpiredIfNotCleanedUp - returned if still available
More info about state TTL