Tidied up & reduced the noise. Still fails periodically because:

On run A:
Node 4 thinks that node 2 thinks that node 1 thinks that node 4 is at 30

On run B:
Node 3 thinks that node 4 thinks that node 1 thinks that node 4 is at 26

Result - lowest common clock on run B is earlier for node 4 than lowest common clock on run A, so A showed data B cannot show.