A token name is an API. Somebody in another team has written it into a component you have never seen, and it will break quietly when you decide that surface-2 should have been called surface-raised.
I version tokens the way I version a package, and I keep the old name as an alias for a full release with a console warning in development.
It is dull work and it is the reason a design system is still in use two years on.
All notes