Replace asyncio.Lock with bounded PriorityQueue + dedicated consumer coroutine. Addresses Hamilton review findings: - Playback timeout: pw-play subprocess killed if it exceeds 2x expected duration + margin (prevents deadlock on PipeWire hang) - Bounded queue: max 20 items with backpressure rejection - Priority tiers: urgent messages jump ahead of normal items - Graceful shutdown: consumer cancelled, pending items drained, in-flight subprocess killed on lifespan teardown - Structured errors: all failure modes return dicts, not raw exceptions
Description
No description provided
Languages
Python
95.9%
Dockerfile
2%
Swift
1.4%
Makefile
0.7%