Release v22.8.0
Summary
The causation chain named the command that produced an event but said nothing about what that command was asked to do, so two purchase orders raised by the same command were indistinguishable on it. A command's property values are now recorded alongside its name.
Because the causation is written into the event log and the event log is immutable, a value recorded there stays there for as long as the events do. Values that must not travel that way are withheld: personal data through Chronicle's existing [PII] marking, and secrets through a new [NotAudited]. A new analyzer reports a command property whose name reads like a secret and is not marked. (#2625)
Added
- Command property values are recorded on the causation of every event the command appends, keyed by camel-cased property name, so an event says what the command was asked to do and not only which command it was (#2625)
[NotAudited]keeps a value off the causation chain — on a property, on a positional parameter, or on the command itself to exclude every property at once (#2625)ARCCHR0009reports a command property whose name reads like a secret (Password,Token,ApiKey,Credential,Pin,Cvvand the like) and which is not marked[NotAudited]or[PII](#2625)CommandCausation.PropertiesFor(Type, object)builds the causation properties for a command instance; the existingPropertiesFor(Type)is unchanged (#2625)
Changed
- Values Chronicle treats as personal data are withheld from the causation chain, honoring
[PII]on the property, the declaring type, the positional parameter, and the concept — so a concept marked once carries the marking to every command that uses it (#2625) - A recorded value is truncated at 1024 characters and marked where it was cut, since the causation travels on every event the command appends (#2625)