Skip to content

Release v7.62.0

Choose a tag to compare

@github-actions github-actions released this 16 Oct 14:50
d2d10ec

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 a CommandValidator<T> with the read model as a constructor parameter, and Handle() returns the events. Under Off, the default, a validator over a plain read is a hint. [ProtectedDecision] with DecisionRead<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>(), AppendConcurrently and ShouldHaveValidationErrorBecauseOf(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, ReadChanged handling, the race test and the negative case of a validator under Off (#731)
  • Validator guidance states that a caller sending X-Allowed-Severity: Error can remove validator Error results under Off and Measure unless the command declares [BlockOnValidationSeverity], and that from Arc 22.108.0 a command declared On blocks Error and Unknown whatever the caller sends (#731)