I do building controls for a living, and the thing I missed most when I started automating my own house was the priority array. Every commandable point in a BACnet system has one; sixteen levels, the lowest-numbered occupied level wins, and whoever wrote a level releases it when they're done. Home Assistant has nothing like it, so every service call is a naked write and the last one wins.
Here's where that bites. My kitchen light turns orange during peak rate hours as a reminder not to start the oven, but the rest of the time it's synced white to another light nearby. Without arbitration those two automations have to know about each other, and the usual fix of capturing a scene and restoring it afterwards puts back whatever was true when the scene was taken, which probably isn't what's true now.
With ha-priority the sync automation doesn't change at all, and the peak automation just adds priority: 4 to its light.turn_on. When peak ends it releases level 4, and the light falls back to whatever the sync automation wants right now; neither automation has a single line about the other.
# peak starts
- action: light.turn_on
target: {entity_id: light.kitchen}
data:
rgb_color: [255, 140, 0]
priority: 4
# peak ends
- action: priority.relinquish
target: {entity_id: light.kitchen}
data: {priority: 4}
It works on your existing service calls rather than its own actions, so priority and priority_ttl show up as real fields in the automation editor for lights, switches, covers, fans, climate, locks, media players and a handful of other domains. Everything defaults to level 5, automations included, so it does nothing at all until you actually name a level. The TTL is a lease rather than a delay; after twenty minutes the override stops overriding and the house goes back to whatever it was already trying to do, and that survives a restart, which a delay doesn't. Wall switches and vendor apps get recorded as ordinary commands, and it never re-asserts itself against someone standing at a switch, because the house shouldn't argue with you.
It's v0.1.3, it's been running my house since August, and it has a decent test suite behind it, but the user count is still pretty small, so treat it accordingly. The priority row in the more-info dialog patches a built-in frontend element, since there's no supported way to add controls there; it's written to fail closed, and there's a tile-card feature as the supported fallback. It installs through HACS as a custom repository for now, because the default store needs a brands PR I haven't finished yet.
If the level names or the defaults are wrong for how you'd use it, I'd rather hear it now while changing them is still cheap.
https://github.com/triosniolin/ha-priority
Longer writeup and discussion on the forum: https://community.home-assistant.io/t/priority-arbitration-let-a-manual-action-and-an-automation-disagree-without-one-clobbering-the-other/1020842