Release v20.69.1
Summary
concurrency: true on a command declared a guarantee that has never been in force.
Fixed
- A command scoped with
concurrency: truenow actually participates in the concurrency check. The scope carries an expected sequence number resolved by the configured concurrency strategy, instead of a hardcodedEventSequenceNumber.Unavailablethat the kernel skipped. - Declaring
concurrency: trueno longer leaves a command with weaker protection than declaring nothing. The scope it built was notNotSet, so it displaced the strategy the event sequence would otherwise have applied. - The scope is bound to the event source being appended to. A null event source id made the kernel compute the tail across every event source sharing the type.
- A command appending across streams gets a concurrency scope per target event source, instead of one scope carrying a single stream's expected tail applied to all of them.