Skip to content

Adopt JasperFx 2.39.1 and compliance wave 4 - #410

Merged
jeremydmiller merged 1 commit into
mainfrom
compliance/wave-4-portable
Aug 4, 2026
Merged

Adopt JasperFx 2.39.1 and compliance wave 4#410
jeremydmiller merged 1 commit into
mainfrom
compliance/wave-4-portable

Conversation

@jeremydmiller

@jeremydmiller jeremydmiller commented Aug 4, 2026

Copy link
Copy Markdown
Member

Bumps JasperFx 2.38.0 → 2.39.1 and enrolls the four compliance suites that shipped in it (JasperFx/jasperfx#620).

Suite Tests
fetch_for_writing_compliance 13
stream_read_compliance 11
event_metadata_compliance 9
live_aggregation_compliance 7

Polecat's compliance coverage goes 65 → 105 tests, zero capability gates.

Verified

Against the published 2.39.1 packages, net9.0:

  • 105/105 compliance
  • 1703/0/3 for the full Polecat.Tests suite

The suites were authored against a Polecat working copy from the start (via the ComplianceSourceDir dev loop this repo already supports), so they were passing here before the upstream PR was opened — not ported blind and fixed afterwards.

The one code change

PolecatComplianceFixture resolves the new ComplianceStoreConfig.EnableHeaders flag onto Events.EnableHeaders, alongside the existing correlation wiring. That flag exists only because the two products spell it differently (Marten uses Events.MetadataConfig.HeadersEnabled); stamping the headers themselves needed nothing new, because IEvent.SetHeader is already on the shared event interface.

Nothing else in Polecat changed. Everything the four suites exercise — FetchForWriting, WriteToAggregate, AppendOptimistic/AppendExclusive, FetchStreamAsync with its version/timestamp bounds, FetchStreamStateAsync, the IEvent envelope, AggregateStreamAsync / AggregateStreamToLastKnownAsync — was already reachable through the shared JasperFx surfaces.

Note on live aggregation

LiveAggregationCompliance deliberately folds an unregistered aggregate type rather than calling config.LiveAggregation<T>(), because Polecat derives live aggregators automatically and sets SupportsLiveAggregationRegistration => false. Folding an unregistered type is the common ground between the two stores, so the suite needs no capability gate here.

Marten's matching adoption is JasperFx/marten#5176.

🤖 Generated with Claude Code

https://claude.ai/code/session_01VpDCvJcBDZerieJB4JEHde

Bumps JasperFx, JasperFx.Events, JasperFx.Events.ComplianceTests and both
source generators 2.38.0 -> 2.39.1, and enrolls the four new shared suites that
shipped in it (JasperFx/jasperfx#620):

- fetch_for_writing_compliance (13)
- stream_read_compliance (11)
- event_metadata_compliance (9)
- live_aggregation_compliance (7)

Polecat's compliance coverage goes from 65 to 105 tests with zero capability
gates.

PolecatComplianceFixture resolves the new ComplianceStoreConfig.EnableHeaders
flag onto Events.EnableHeaders, alongside the existing correlation wiring. The
flag exists because the two products spell it differently -- stamping the
headers themselves needed nothing new, since IEvent.SetHeader is already shared.

Verified on net9.0: 105/105 compliance and 1703/0/3 for the full Polecat.Tests
suite against the published 2.39.1 packages.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VpDCvJcBDZerieJB4JEHde
@jeremydmiller
jeremydmiller merged commit 682bf58 into main Aug 4, 2026
7 checks passed
@jeremydmiller
jeremydmiller deleted the compliance/wave-4-portable branch August 4, 2026 14:05
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