I suggest the following changes to the process of adding and symbologizing a geotiff layer:
- Currently, the user enters min/max when loading a geotiff. Instead, calculate it at load-time.
 
- Right now, 
source.parameters.urls: Array<{url, min, max}>. Change the urls array to just url string. We don't use multiple urls in one source. 
- Save min/max to 
source.metadata.statistics.band[number].min|max at data load-time. (Or source.metadata.band[number].statistics.min|max?) 
- When the user is setting up symbology, and they click "Use actual range", it will get its min/max values from the metadata stored in the shared document.