Part of #5110. Blocked by P3.1a/b/c proving the seam in Marten (and ideally P3.2a so the shared sources can use the generic registry forms). Target repo: JasperFx/jasperfx for the package; a Marten PR switches consumption.
Move Marten.Testing/Compliance/ (seam types + abstract suites + shared aggregate/event fixture types) to the jasperfx repo, packaged as a source-only NuGet: contentFiles C# sources, no compiled assembly.
Why source-only is forced, not preferred:
JasperFx.Events.SourceGenerator emits aggregate dispatchers per consuming assembly and binds each product's own session type (param matching by type-name suffix) — aggregates in a compiled DLL cannot dispatch correctly for both stores.
- Compiling in the consumer also sidesteps JasperFx/Weasel version skew between the repos and the LangVersion/ImplicitUsings differences (sources are authored to the C#13 / explicit-usings floor).
Package requirements:
- Declares compile-time expectations (JasperFx.Events, xunit.v3.extensibility.core) as documentation/dependency floor, not binary refs
- No
Main, no xunit.runner.json, no runner packages — runner/parallelization config stays repo-owned
- Greenfield in jasperfx: every existing test project there is IsPackable=false; this becomes the repo's first packable test asset
- Versioned like the other JasperFx packages so consumers pin and roll forward deliberately
Marten side: EventSourcingTests drops the local Compile-links and references the package; the concrete Marten fixture and subclasses stay in the Marten repo. Verify the full ES suite is unchanged before/after the switch.
🤖 Generated with Claude Code
Part of #5110. Blocked by P3.1a/b/c proving the seam in Marten (and ideally P3.2a so the shared sources can use the generic registry forms). Target repo: JasperFx/jasperfx for the package; a Marten PR switches consumption.
Move
Marten.Testing/Compliance/(seam types + abstract suites + shared aggregate/event fixture types) to the jasperfx repo, packaged as a source-only NuGet:contentFilesC# sources, no compiled assembly.Why source-only is forced, not preferred:
JasperFx.Events.SourceGeneratoremits aggregate dispatchers per consuming assembly and binds each product's own session type (param matching by type-name suffix) — aggregates in a compiled DLL cannot dispatch correctly for both stores.Package requirements:
Main, no xunit.runner.json, no runner packages — runner/parallelization config stays repo-ownedMarten side: EventSourcingTests drops the local Compile-links and references the package; the concrete Marten fixture and subclasses stay in the Marten repo. Verify the full ES suite is unchanged before/after the switch.
🤖 Generated with Claude Code