It's not really opaque as much as it is application-specific. But then how do you fix that? If you give applications the ability to tag things then one mail program uses a tag called "unread mail" and another uses a tag called "message read" with the opposite value and another uses a tag called "mail flags" with a bitmask where one of the bits is whether the message has been read or not etc. Smells like Windows registry.
Either you somehow enforce a high degree of uniformity, which implies a pretty serious lack of flexibility, or everybody gets to make their own decisions and then everybody makes different ones. And the second one seems better as long as the individualized thing they're doing is sufficiently well documented.
Either you somehow enforce a high degree of uniformity, which implies a pretty serious lack of flexibility, or everybody gets to make their own decisions and then everybody makes different ones. And the second one seems better as long as the individualized thing they're doing is sufficiently well documented.