Visible to the public Using Run-Time Checking to Provide Safety and Progress for Distributed Cyber-Physical Systems