Check if a message is a chain participant (excludes progress).
bool isChainParticipant(Map<String, dynamic> message) { return message['type'] != 'progress'; }