Mode is not state, it’s too limited for that. True state will require multiple variables. Mode is sort of an aggregate of various states. But not a very convenient one. To make it a true aggregate, you’d have to have a limitless combination of things like away-day, away-night, etc. I’ve seen people do it and I don’t wanna go down that path.
Therefore, I prefer to have only a few modes that are easy to reason about - Night is when it’s dark so the lights need to turn on, etc., Away is when everybody’s gone, Home is when it’s light out and at least one person is home. The rest of the transitions are not based on mode and are implemented by Actions and Apps. They take the actual (albeit implied) state into account (time, sensor readings, etc.)
But you’re right, there’s more than one way to skin the cat. That’s just what I prefer.