This principle is probably formalized or named by someone, but got bitten again by it:

one should always make “no value” clearly separate from “zero/nil/empty/first enum value”. Specifically in C, enums should not use “0” as a valid value

I’d be able to implement a new feature in few minutes instead of 2 days, if I had (actually, it was the guy before me but still is my problem) followed my own rule 🤦‍♂️.