Skip to content

Bump JasperFx to 2.38.0 and Weasel to 9.23.2, adopt compliance wave 3 - #5135

Merged
jeremydmiller merged 1 commit into
masterfrom
chore/bump-jasperfx-2.38.0-weasel-9.23.2
Aug 3, 2026
Merged

Bump JasperFx to 2.38.0 and Weasel to 9.23.2, adopt compliance wave 3#5135
jeremydmiller merged 1 commit into
masterfrom
chore/bump-jasperfx-2.38.0-weasel-9.23.2

Conversation

@jeremydmiller

Copy link
Copy Markdown
Member

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 ProjectionScenario test harness lifted into JasperFx.Events.TestSupport (#5127) — and #617 — the #5095 fix making Scoped/Transient projections reachable from AggregatorFor and validating the projection a scoped wrapper wraps.

Weasel 9.23.2 (all three packages) carries weasel#424, the non-generic Weasel.Core.ICommandBuilder on 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:

  • MartenComplianceFixture implements CorrelationIdFor / CausationIdFor / SetCorrelationId. Session-scoped correlation is shared behavior 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, or the store rejects a string-keyed aggregate against Guid stream identity. EnableCorrelationTracking — mapped onto MetadataConfig.CorrelationIdEnabled / CausationIdEnabled so the metadata is actually persisted.
  • New ComplianceStringPartyProjectionBase global alias, using the same per-consumer alias mechanism already there 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.
  • Both suites enrolled in 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)

Suite Result
Compliance (incl. wave 3) 65 / 65
EventSourcingTests 1624 / 1624
DocumentDbTests 1089 / 1089
Marten.slnx build clean

CoreTests shows 4 failures — one fewer than the 5 an unbumped master baseline produces in the same environment (Bug_4185, Bug_4187, rolling_range host-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

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>
@jeremydmiller
jeremydmiller merged commit 0bf9f1e into master Aug 3, 2026
10 checks passed
@jeremydmiller
jeremydmiller deleted the chore/bump-jasperfx-2.38.0-weasel-9.23.2 branch August 3, 2026 13:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant