Thank you very much for the clarification, that makes sense.
Yes, grouping events by stream on the client side is definitely an easy workaround.
That said, I am still wondering whether there is any chance that interleaving patterns like the ABA case you mentioned could be supported in the future, and whether this would be particularly difficult to implement.
In my use case, preserving the global ordering of events across streams can be very valuable, especially to make cause–effect chains explicit. It helps both with reasoning about complex flows and with debugging advanced scenarios.
From this point of view, allowing interleaving would be quite powerful.
I understand that, since all these events are committed as part of a single atomic operation, they logically “happen together”, so one could argue that the lobal order is less important. However, in practice, preserving the original order can still matter, for example:
In these cases, reordering events by stream before appending may alter the perceived causality between events.
If interleaving is fundamentally problematic, is there any recommended mechanism to explicitly record such cross-stream dependencies or causal relationships?
Additionally, I tested the 25.1.1 Docker image (i wans’t able to find the 25.1.2 at the moment of writing) and I am still seeing the same exception, even with a simple AA pattern:
Status(StatusCode="Aborted", Detail="Stream 'A' is already part of this append session. Appending to the same stream multiple times is currently not supported.)
This made me wonder whether the adjacent-append behavior is already available in 25.1.1 or if it is planned for a later patch.