Skip to content

Compliance wave 8: enroll conjoined event tenancy and subscriptions - #5205

Merged
jeremydmiller merged 1 commit into
masterfrom
compliance/wave-8
Aug 8, 2026
Merged

Compliance wave 8: enroll conjoined event tenancy and subscriptions#5205
jeremydmiller merged 1 commit into
masterfrom
compliance/wave-8

Conversation

@jeremydmiller

Copy link
Copy Markdown
Member

Adopts JasperFx 2.45.0 (jasperfx#642) and enrolls the last two suites in the event sourcing compliance backlog. The shared library goes to 28 suites / 230 tests, both stores, still zero capability gates — and with these two, the ES backlog filed under #5118 is empty.

The two suites

ConjoinedEventTenancyCompliance (#5148) — the issue priced this as needing a tenant-scoped session seam. It didn't. OpenSession(IEventDatabase, tenantId) is already on the shared generic IEventStore<,>, and TenancyStyle is already a shared JasperFx.MultiTenancy enum. The only seam addition is the ComplianceStoreConfig.ConjoinedEventTenancy switch, which MartenComplianceFixture maps onto Events.TenancyStyle.

SubscriptionCompliance (#5151) — the one suite an empty subclass cannot close by itself. Both products declare ISubscription with an identical member, but ProcessEventsAsync returns a per-product IChangeListener, so that signature cannot be written once upstream. The shared ComplianceSubscription is therefore a partial class that each consumer completes; Marten's half is ComplianceSubscription.Marten.cs.

That file lives in Marten.Testing beside MartenComplianceFixture rather than in EventSourcingTests on purpose: both assemblies reference the source-only compliance package, so both compile the library's half of the partial, and both need the completing half to satisfy it.

Verification

Run against the published 2.45.0 package, not the -p:ComplianceSourceDir= dev loop.

  • 230/230 compliance tests, zero skips (was 216 at wave 7)
  • All 28 library suites confirmed enrolled — diffed the package's suite files against the subclass declarations rather than trusting the test count. A bump that satisfies a new registrar member is not evidence the suite runs: that is exactly how StrongTypedIdentityCompliance shipped 11 tests unrun in wave 6 (Enrol StrongTypedIdentityCompliance (#5144) #5198).
  • Full EventSourcingTests: 1796 passed / 0 failed / 7 skipped on net9.0 — the 7 skips are the pre-existing baseline, unchanged.

Notes for the reviewer

  • The library changes in 2.45.0 are compliance sources only, so the bump is behaviourally inert for the shipping Marten libraries. The full ES run above is the regression check on that claim.
  • Polecat is a wave behind again (polecat#427 merged wave 7 earlier today, leaving it at 216/26). Its wave-8 catch-up is separate work in that repo.

Closes #5148
Closes #5151

🤖 Generated with Claude Code

https://claude.ai/code/session_01RrQZYcL13PEek7FErj9PGx

Adopts JasperFx 2.45.0 and enrolls the last two suites in the event sourcing
compliance backlog. The library goes to 28 suites / 230 tests, both stores,
still zero capability gates -- and with these two the backlog is empty.

ConjoinedEventTenancyCompliance (#5148) turned out to need no tenant-scoped
session seam after all. OpenSession(IEventDatabase, tenantId) is already on the
shared generic IEventStore<,>, and TenancyStyle is already a shared
JasperFx.MultiTenancy enum, so the only addition is the
ComplianceStoreConfig.ConjoinedEventTenancy switch that MartenComplianceFixture
maps onto Events.TenancyStyle.

SubscriptionCompliance (#5151) is the one suite an empty subclass cannot close
on its own. Both products declare ISubscription with an identical member, but
ProcessEventsAsync returns a per-product IChangeListener, so the shared
ComplianceSubscription is a partial class and each consumer completes it. The
Marten half lives in Marten.Testing beside MartenComplianceFixture rather than
in EventSourcingTests, because both assemblies reference the source-only
compliance package and therefore both compile the library's half of the partial.

Verified against the published 2.45.0 package, not the ComplianceSourceDir dev
loop: 230/230 compliance, zero skips, and all 28 library suites confirmed
enrolled by diffing the package's suite files against the subclass declarations
-- a bump satisfying a new registrar member is not by itself evidence a suite
runs, which is how StrongTypedIdentityCompliance shipped unrun in wave 6. Full
EventSourcingTests 1796/0/7 on net9.0.

Closes #5148
Closes #5151

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RrQZYcL13PEek7FErj9PGx
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.

Compliance suite: subscriptions Compliance suite: conjoined event tenancy — needs a tenant-scoped session seam

1 participant