Why accidental mutation becomes expensive
When the same object reference is shared across flows, one hidden write can change behavior far away.
Mutation is not always wrong, but it becomes risky when multiple parts of the app assume they are reading stable state.
Once state changes happen implicitly, tracing where a bug came from becomes much harder.