e6e7a42d90
The edge-trigger single-shot keyed conflicts by file basename only and re-armed solely when the conflict left a detection cycle. README is dirty for someone in the pod the whole session, so its key never re-armed: it alerted once (ram+karti at restart) and stayed muted even as the colliding pair changed to karti+Ramis Hasanli. Transient files (research, new files) churned out and back, so only those kept firing. - conflictKey now includes the sorted engineer pair, so a different pair on the same file re-alerts immediately. - activeConflicts is now Map<key, lastAlertedAt>; a persistent conflict re-alerts every CONFLICT_REALERT_MS (default 20s) instead of going silent forever, without spamming once-per-frame. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LuV8W8oNYRsDWKoqK8Mkqc