Contact IDs and User IDs are used interchangeably in the code.
There are cases where this is causing overlap. I belive https://forum.itflow.org/d/1909-ticket-watcher-issue/9 is also a resualt of this.
// Get ticket replies
$sql_ticket_replies = mysqli_query($mysqli, "SELECT * FROM ticket_replies
LEFT JOIN users ON ticket_reply_by = user_id
LEFT JOIN contacts ON ticket_reply_by = contact_id
WHERE ticket_reply_ticket_id = $ticket_id
AND ticket_reply_archived_at IS NULL
ORDER BY ticket_reply_id DESC"
);