Skip to content

Upgrade to Arc 21 and Chronicle 16.19.2 #22

Description

@einari

Stage is on Cratis.Arc / Cratis.Arc.MongoDB 20.69.3 and Cratis.Chronicle.Contracts 16.13.4. Current lines are Arc 21.0.4 and Chronicle 16.19.2.

Breaking changes in Arc 21

  1. DateOnly and TimeOnly generate as the @cratis/fundamentals types rather than Date, because a calendar date parsed as a Date renders a day early west of UTC. Requires @cratis/fundamentals 7.17.0 or newer. Any consumer reading such a field needs .toDate() before date formatting, and anything constructing one needs DateOnly.fromDate(...).
  2. A validator message declared as a factory is no longer baked into the generated client validator. The rule still mirrors; the message is left to the server.
  3. ShouldHaveValidationErrors no longer passes when the command was rejected only because the pipeline could not resolve a dependency — specs that relied on the old, more permissive behavior will start failing.

Chronicle 16.19.2

Chronicle added Revise(EventSequenceNumber, object) to IEventSequence. Anything here implementing or decorating that interface must implement it. Worth knowing how this fails: it builds fine and only breaks once both assemblies load together, as TypeLoadException: Method 'Revise' ... does not have an implementation. That is what took out an entire downstream specification suite, so it is worth a deliberate check rather than trusting a green build.

Arc must also be on a version built against the matching Chronicle — 21.0.4 is built against 16.19.2. Verify with:

curl -sL https://api.nuget.org/v3-flatcontainer/cratis.arc.chronicle.testing/21.0.4/cratis.arc.chronicle.testing.21.0.4.nupkg -o a.nupkg
unzip -p a.nupkg '*.nuspec' | grep -i chronicle

Note for downstream

Studio pins Cratis.Stage / Cratis.Stage.Contracts, and 1.2.0 made Produces a required part of CommandDefinition. Screenplay models produces in full (conditions, property mappings, tags) and Stage can now receive it, but nothing translates between the two yet — Studio currently passes an empty list. Worth its own issue if that mapping is wanted.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions