Bump JasperFx to 2.38.0 and Weasel to 9.23.2, adopt compliance wave 3 - #5135
Merged
Merged
Conversation
JasperFx 2.38.0 brings #616 (the ProjectionScenario test harness lifted into JasperFx.Events.TestSupport) and #617 (marten#5095 -- scoped and transient projections reachable from AggregatorFor, and validated). Weasel 9.23.2 carries weasel#424 (Sqlite/MySql non-generic ICommandBuilder) plus its own move to JasperFx 2.38.0, so the two lines stay coherent instead of resolving transitively. Not a pure version bump: 2.38.0 also carries JasperFx compliance wave 3 (#613), which adds two shared suites and the seam members they need. Adopting them here: - MartenComplianceFixture implements CorrelationIdFor / CausationIdFor / SetCorrelationId. Session-scoped correlation is shared behavior that no shared interface declares; in Marten the pair hangs off IQuerySession. - BuildStoreAsync honors the two new ComplianceStoreConfig knobs -- StreamIdentity (the string identity suite needs AsString, otherwise the store rejects a string-keyed aggregate against Guid stream identity) and EnableCorrelationTracking (mapped to MetadataConfig.CorrelationIdEnabled / CausationIdEnabled so the metadata is actually persisted). - New ComplianceStringPartyProjectionBase global alias, the same per-consumer alias mechanism already used for ComplianceQuerySession and friends: the suite declares its projection at file scope and cannot reach its own generics, so each product supplies its SingleStreamProjection<TDoc, TId> base by alias. - The two suites enrolled in marten_event_store_compliance. Shared compliance tests go 55 -> 65, all passing. net9.0: EventSourcingTests 1624/1624, DocumentDbTests 1089/1089, compliance 65/65, full Marten.slnx builds clean. CoreTests shows 4 failures, which is one FEWER than the 5 on an unbumped master baseline in the same environment (Bug_4185, Bug_4187, rolling_range host-startup, assembly-reuse-warning) -- pre-existing and not attributable to this bump. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This was referenced Aug 3, 2026
This was referenced Aug 4, 2026
29 tasks
This was referenced Aug 5, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Moves both dependency lines forward together and adopts the compliance suites that came with them.
The bumps
JasperFx 2.38.0 (all five packages) brings #616 — the
ProjectionScenariotest harness lifted intoJasperFx.Events.TestSupport(#5127) — and #617 — the #5095 fix making Scoped/Transient projections reachable fromAggregatorForand validating the projection a scoped wrapper wraps.Weasel 9.23.2 (all three packages) carries weasel#424, the non-generic
Weasel.Core.ICommandBuilderon Sqlite and MySql, plus Weasel's own move to JasperFx 2.38.0 — so the two lines stay coherent here rather than resolving transitively.This is not a pure version bump
2.38.0 also carries JasperFx compliance wave 3 (#613), which adds two shared suites and the seam members they need. Without adopting them the solution does not compile, so that work is in this PR:
MartenComplianceFixtureimplementsCorrelationIdFor/CausationIdFor/SetCorrelationId. Session-scoped correlation is shared behavior no shared interface declares; in Marten the pair hangs offIQuerySession.BuildStoreAsynchonors the two newComplianceStoreConfigknobs.StreamIdentity— the string-identity suite needsAsString, or the store rejects a string-keyed aggregate against Guid stream identity.EnableCorrelationTracking— mapped ontoMetadataConfig.CorrelationIdEnabled/CausationIdEnabledso the metadata is actually persisted.ComplianceStringPartyProjectionBaseglobal alias, using the same per-consumer alias mechanism already there forComplianceQuerySessionand friends: the suite declares its projection at file scope and cannot reach its own generics, so each product supplies itsSingleStreamProjection<TDoc, TId>base by alias.marten_event_store_compliance.Shared compliance tests go 55 → 65, all passing. Catching this mattered: enrolling the suites without honoring the config knobs compiled fine but failed 7 of the 10 new tests.
Verification (net9.0)
Marten.slnxbuildCoreTestsshows 4 failures — one fewer than the 5 an unbumpedmasterbaseline produces in the same environment (Bug_4185,Bug_4187,rolling_rangehost-startup, assembly-reuse-warning). I ran that baseline specifically to check attribution: these are pre-existing and environmental, not from this bump.🤖 Generated with Claude Code