> Sandboxes drift from production in both metadata and data. Refreshes change record ids.
I find it odd you would expect sandboxes to not drift and record ids to not change on refreshes. People are working on sandboxes so they will naturally diverge from production, same for record ids.
Refreshes mean that data will be wiped out so you have to preserve the data you want first, then restore it after the refresh. Isn't that the same with any other database where you dump a copy of production on an instance?
I don't see a difference between custom objects in SF and any plain SQL database table that needs to be changed to accommodate a new requirement.
Dependencies between components break deployments - isn't that universally true?
What are other platforms where such things don't happen?