Have a basic set of interactions that always work, that allow for changing any information.
Don't block editing because of invalidity.
Don't hide editable information.
Don't alter other information as a side effect.
Addition that would destroy other information comes in as a new entity on a stack.
Keep information in the form the user edited.
Information vs Implication.
Layer more complex forms of editing on top of elementary edits. Fix invalidity with complex edits.
Clear distinction between ephemeral, persistent, and consequential state.
Clear division between user editable information and derived data.
When the user and system co-own some information, the user's alterations come in the form of added constraints. The constraints persist while the system regenerates the data around them.