It's missing a critical one, which once seemed obvious: Distinguish between static information and controls.
Also, don't HIDE inapplicable controls; GREY THEM OUT. That way people learn
1. They exist 2. Where they reside 3. There's some condition to satisfy before they can be used
Related: Never, never rely on peek-a-boo UI that hides things unless the user accidentally rolls the cursor over them. I'm trying to get shit done, not explore an Advent calendar.