Repository navigation
Release v7.62.0
Summary
The corpus now teaches Arc read protection as the way a C# command's rule holds, and no longer presents the per-command [ProtectedDecision] opt-in as the only guard.
Changed
- Arc C# guidance starts new code with read protection
On(<CratisReadProtection>On</CratisReadProtection>): the state rule goes in aCommandValidator<T>with the read model as a constructor parameter, andHandle()returns the events. UnderOff, the default, a validator over a plain read is a hint.[ProtectedDecision]withDecisionRead<T>is described as the older per-command opt-in, not obsolete (#731) - The "choosing how a rule holds" reference is rewritten around the rule shapes (unique value, one entity, two entities with
[LookUpBy], per-stream read model, stream decision, aggregate, explicit scope, repair reactor and[Unprotected("why")]), with the refusals, the Measure rollout and how to test the race (#731) - C# specification guidance uses a plain
new CommandScenario<T>(),AppendConcurrentlyandShouldHaveValidationErrorBecauseOf(ValidationResultReason.ConcurrencyViolation);UseDecisionReads()is no longer taught (#731) - Reducer guidance states that unfiltered reducers without constructor dependencies are admitted by decision reads and read protection (#731)
- Evaluation cases cover the rule shapes, the Measure rollout,
ReadChangedhandling, the race test and the negative case of a validator underOff(#731) - Validator guidance states that a caller sending
X-Allowed-Severity: Errorcan remove validator Error results underOffandMeasureunless the command declares[BlockOnValidationSeverity], and that from Arc 22.108.0 a command declaredOnblocksErrorandUnknownwhatever the caller sends (#731)