왜 overlap 못 함
chat 과 heartbeat 가 OAuth credential 과 ChromaDB access 공유. parallel 실행은 rate-limit 충돌 + ChromaDB lock 경합 위험.
가벼운 상호 배제
- stream counter 가 live chat stream 추적.
- heartbeat flag 가 background tick 추적.
- chat 이 heartbeat flag clear 기다린 후 시작.
- heartbeat 가 chat stream active 시 tick skip.
- 둘 다 진행 *전* check, 동안 X — lock 경합 없음.
왜 asyncio.Lock 보다 단순
단일 user 시스템. 경합이 항상 '아빠가 지금 active?' — boolean 질문. lock 이 contested concurrency 함의, 여기 일어나는 일 아님.