Eventuate supports replication networks that will never
reach stability as it supports filtered connections
, i.e. one could build a network A -> B where only events emitted at A are replicated to B, but events emitted at B are not replicated to A. As soon as B emits one event no new
causal stability can be reached. Lets assume someone builds a network like this A <-> B -> C <-> D and has a pair of CRDTs running on A and B and another pair on C and D. In that case the first pair would care about causal stability of A and B while the second pair would care about causal stability of C and D, right? What I want to indicate is that given the freedom Eventuate currently offers for replication networks causal stability seems to be an application concern. So to me it seems to make sense to make the CRDTs maintain the RTM they need internally and let them decide about their causal stability. They could be configured in form of a priori knowledge about the locations they should consider so that no initialization through additional messages is required. In case new locations are added (which is possible in Eventuate even if not always practical) the configuration has to be extended accordingly. Does that make sense?