Skip to content

chore: Bump Marten and 3 others#287

Closed
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/nuget/Nexus.Application/multi-2f5844eea2
Closed

chore: Bump Marten and 3 others#287
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/nuget/Nexus.Application/multi-2f5844eea2

Conversation

@dependabot
Copy link
Copy Markdown
Contributor

@dependabot dependabot Bot commented on behalf of github Jun 2, 2026

Updated Marten from 8.37.1 to 9.2.0.

Release notes

Sourced from Marten's releases.

9.2.0

Marten 9.2.0

Features & changes

  • Override IEventStore.AllDatabases() on DocumentStore (#​4570, #​4571). Implements the store-agnostic database accessor added to JasperFx.Events.IEventStore. Delegates straight to ITenancy (mirroring IMartenStorage.AllDatabases()) and projects to IEventDatabase, so store-neutral monitoring/tooling can reach every database to call the read abstractions (AllProjectionProgress, FetchDeadLetterCountsAsync / CountDeadLetterEventsAsync) even when only IEventStore is registered in DI.

Dependencies

  • Upgraded all JasperFx.* packages to 2.2.0 (JasperFx, JasperFx.Events, JasperFx.Events.SourceGenerator, JasperFx.SourceGenerator).

Full Changelog: JasperFx/marten@V9.0.2...V9.2.0

9.0.2

Marten 9.0.2

A patch release that fixes #​4557 — self-aggregating projections failing for consumers that reference only the Marten package.

Fixes

  • #​4557 — Self-aggregating projections now work out of the box. Marten 9 dispatches conventional Apply/Create/ShouldDelete projection methods through the compile-time JasperFx.Events.SourceGenerator and has no runtime fallback, but the generator shipped as a DevelopmentDependency and never flowed to a consumer that only referenced the Marten package — surfacing as InvalidProjectionException: No source-generated dispatcher found ... at DocumentStore.For(...). Marten now bundles the analyzer in its own NuGet package, so a plain <PackageReference Include="Marten" /> runs the generator automatically. (#​4558)

  • Self-aggregating record aggregates work without a Snapshot<T> call site and without partial. Bumped JasperFx.Events / JasperFx.Events.SourceGenerator to 2.1.1 (JasperFx/jasperfx#​367): the generator now emits a self-aggregating evolver for a record from its own declaration (parity with classes), which also fixes the cross-assembly case where the aggregate type is defined in a different assembly than its registration.

  • Docs. Corrected the migration guide's projection section, which incorrectly stated Marten falls back to a runtime evolver lookup for non-partial convention projections; documented that self-aggregating Snapshot<T> types do not need to be partial (only projection subclasses do).

Dependency bumps

  • JasperFx.Events 2.1.0 → 2.1.1
  • JasperFx.Events.SourceGenerator 2.1.0 → 2.1.1

No public API changes from 9.0.1.

9.0.1

Marten 9.0.1

A patch release on the Critter Stack 2026 foundation, rolling up the latest JasperFx 2.0.1 / JasperFx.Events 2.1.0 / Weasel 9.0.1 dependencies along with several source-generator and reliability fixes.

Foundation bumps

  • JasperFx 2.0.0 → 2.0.1
  • JasperFx.Events / JasperFx.Events.SourceGenerator → 2.1.0
  • JasperFx.SourceGeneration → JasperFx.SourceGenerator 2.0.1 (package renamed; #​4555)
  • Weasel.Postgresql / Weasel.EntityFrameworkCore 9.0.0 → 9.0.1

Fixes

  • Self-aggregating source-generator fixes (via JasperFx.Events 2.1.0, consumed in #​4547):
    • #​4542required members on self-aggregating snapshot types no longer break generated evolver construction; default! is emitted only when a public parameterless constructor exists, otherwise RuntimeHelpers.GetUninitializedObject is used.
    • #​4543 — nullable [ReadAggregate] aggregate parameters generate correctly.
  • #​4546IEventDatabase dead-letter count reads (CountDeadLetterEventsAsync / FetchDeadLetterCountsAsync) are implemented on MartenDatabase via LINQ over the DeadLetterEvent document.
  • #​4540 — opt-in System.Text.Json source-generation context support (SystemTextJsonSerializer.UseTypeInfoResolver) for AOT/trimming-friendly metadata.
  • #​4552 — intermittent CI flakes fixed: feature_flag_positive advisory-lock contention (distinct ApplyChangesLockId, #​4553) and the conjoined multi-tenant query_before_saving XX000: tuple concurrently updated migration-DDL race (resolved upstream in Weasel 9.0.1 / weasel#​293).

No public API breaking changes from 9.0.0. RestoreV8Defaults() continues to revert the 9.0 default flips.

9.0.0

Marten 9.0.0 — Critter Stack 2026

The headline release of the Critter Stack 2026 wave, on the final JasperFx 2.0 + Weasel 9.0 foundation.

Highlights

  • Foundation: JasperFx 2.0.0 / JasperFx.Events 2.0.0 / Weasel 9.0.0 (final). Targets net9.0;net10.0.
  • No runtime code generation. Roslyn is gone — JasperFx.RuntimeCompiler is no longer a dependency. Document/event storage is hand-written closed-shape; compiled queries use Marten.SourceGenerator. No codegen write step for Marten.
  • Cold-start + AOT: AOT-publishable in Static mode; lazy document-mapping materialization; per-query handler-factory caching.
  • Dedupe pillar (jasperfx#​214): IStorageOperation rebased on Weasel.Core; async-daemon distributor concretes consumed from JasperFx.Events.Daemon; OperationRole / BulkInsertMode relocated to Weasel.Core.
  • Defaults flipped to best-perf: QuickWithServerTimestamps append mode, advanced async tracking, bigint events, lightweight default sessions, System.Text.Json default — all revertable via RestoreV8Defaults().
  • Versioning: IRevisioned.Version stays int (V8-compatible); new ILongVersioned (long) for MultiStreamProjection documents.
  • DCB: optional HSTORE tag storage; FetchForWritingByTags<T> for identity-less boundary aggregates.

See the migration guide (docs/migration-guide.md). Master plan: marten#​4349. Ships in lockstep with Polecat 4.0.

Commits viewable in compare view.

Updated WolverineFx.Http from 5.39.3 to 6.3.2.

Release notes

Sourced from WolverineFx.Http's releases.

6.3.2

What's Changed

Full Changelog: JasperFx/wolverine@V6.3.0...V6.3.2

6.3.0

The top line change here was a lot of work to make Wolverine able to pre-generate code as F# in addition to the existing C# model.

What's Changed

Full Changelog: JasperFx/wolverine@V6.2.2...V6.3.0

6.2.2

Patch release on top of 6.2.1.

🐛 Bug Fixes / Codegen

#​2963 (closes #​2958): EF Core transaction middleware + post-save cascade flush

The HTTP-handler codegen path under the EF Core transaction middleware + outbox cascade (GH-536) no longer fails handler compilation. Two related codegen issues addressed in this PR:

  • CS0128 duplicate var messageContext declaration in the generated handler. Cherry-picked from #​2959, originally authored by @​kentcooper — credit preserved on commit 9df45bfde. Root cause: MessageBusSource was returning a fresh CreateMessageContextWithMaybeTenantFrame per call; once cached + always returning the concrete MessageContext, the duplicate goes away.
  • CS1061 'IMessageContext' does not contain a definition for EnqueueCascadingAsync — surfaced after the cache fix because once the source produced a concrete MessageContext Variable, the downstream CaptureCascadingMessages frame still declared its MethodCall target as typeof(IMessageContext) and emitted a bad ((IMessageContext)messageContext).EnqueueCascadingAsync(…) cast. Fixed by re-targeting CaptureCascadingMessages to the concrete MessageContext type — mirrors the existing FlushOutgoingMessages pattern. Latent in src/Wolverine/Runtime/Handlers/CaptureCascadingMessages.cs since 020e79013e (2022-09-16); the variable-cache fix is what flipped it from masked to visible.

📦 Dependency bumps

  • JasperFx + JasperFx.Events + JasperFx.Events.SourceGenerator + JasperFx.SourceGenerator 2.2.1 → 2.2.3
  • JasperFx.RuntimeCompiler unchanged (own 5.x line, stays at 5.0.0)
  • Marten / Polecat unchanged (9.2.0 / 4.2.1)

Upstream JasperFx 2.2.2 release: https://github.com/JasperFx/jasperfx/releases/tag/V2.2.2 (Fix source-created codegen variable reuse, #​392). 2.2.3 was a same-day version-bump-only re-roll.

📖 Documentation

  • #​2960 (@​outofrange-consulting): clarify the JasperFx command-line integration link in the diagnostics docs.
  • #​2964 (closes #​2962): re-align the dead-letter REST API reference with the current DeadLetterEnvelopeGetRequest / DeadLetterEnvelopeResults / DeadLetterEnvelopeIdsRequest signatures — the docs still described the pre-5 cursor-based pagination (StartId/NextId) and the legacy DeadLetterEnvelopesFoundResponse wrapper. Updated for offset-based PageNumber pagination, the multi-store IReadOnlyList<DeadLetterEnvelopeResults> response shape, and tenant-aware Ids request bodies.

🧪 Known issues

  • #​2965: SharedMemory transport does not serialize envelopes on cross-host send. Surfaces as a MartenTests.Distribution.with_ancillary_stores.spread_out_over_multiple_hosts failure where AssignAgent system commands arrive at the destination node with empty Data/MessageType and the receive pipeline can't deserialize them. Long-standing — the marten CI workflow has been red on this test through V6.2.0 and V6.2.1, predates this release line entirely. Unblocked the V6.2.2 cycle by adding [Fact(Skip = "…")] referencing #​2965; the underlying serialization bug is tracked separately and is out of scope for a JasperFx pin-bump patch release.

Full changelog: JasperFx/wolverine@V6.2.1...V6.2.2

6.2.1

Patch release picking up upstream JasperFx 2.2.1 fixes. No Wolverine code changes — pure dependency bump.

Bumped pins

Package From To
JasperFx 2.2.0 2.2.1
JasperFx.Events 2.2.0 2.2.1
JasperFx.Events.SourceGenerator 2.2.0 2.2.1
JasperFx.SourceGenerator 2.2.0 2.2.1

Unchanged

Package Version Reason
JasperFx.RuntimeCompiler 5.0.0 Own 5.x line — the Roslyn runtime-compiler package was decoupled from the JasperFx 2.x family in #​2876.
Marten family 9.2.0 Latest.
Polecat 4.2.1 Latest (bumped in 6.2.0 via #​2947).

Related links

6.2.0

Bug-fix + feature release on top of 6.1.0 — 13 PRs.

✨ New features

Custom Result<T> Support — #​2952 (refs #​2221)

First three phases of native Result<T>-style handler return-value support: ResultPolicy registry, handler-side unwrapping seams, and caller-side InvokeAsync<T> unwrap. Lays the groundwork for integrating with libraries like ErrorOr, OneOf, FluentResults, etc.

DbContext Abstractions for EF Core Transaction Middleware — #​2919, #​2954

The EF Core transaction middleware now binds correctly when handler parameters are declared as interface or abstract base abstractions over a concrete DbContext. Multiple abstractions to the same DbContext are supported in a single handler — the runtime resolves them all to the same scoped instance, and the transaction still auto-applies.

📖 DbContext Abstractions docs

🚀 Performance

Outgoing Envelope Pooling — #​2956 (closes #​2955)

MessageRouter.RouteForPublish now acquires from the runtime envelope pool (originally introduced in #​2741 for the Executor sites in 6.1.0) when the route's sender is an InlineSendingAgent or BufferedSendingAgent. Measured −504 B/op (−90 %) on the transport-bound publish/send paths in the CritterStackScalability harness, with ~10× fewer Gen0 collections per 1k ops. DurableSendingAgent, local-queue agents, and ISenderRequiresCallback senders are explicitly excluded — different lifecycle plumbing required, tracked as follow-ups.

🐛 Bug fixes

Marten / Polecat

  • #​2943 Fix scheduled-cascade loss from [ReadAggregate] / [DocumentExists] handlers (closes #​2941).
  • #​2948 Pre-populate chain.AncillaryStoreType in Phase A so the inbox-routing map sees [MartenStore] (closes #​2944).
  • #​2947 Bump Polecat 4.1.1 → 4.2.1 and unskip the three Polecat scheduled-cascade tests.

Persistence (Postgres / MySQL)

  • #​2945 Route PostgresqlQueue identifiers through Weasel's PostgresqlIdentifier.Shorten() so long queue names don't overflow Postgres's 63-byte identifier limit (closes #​2942).
  • #​2946 Emit PersistNodeRecord SQL with unquoted schema (MySQL, closes #​2940).

Pulsar

  • #​2950 Fix KeyNotFoundException acking batch messages on partitioned topics (supersedes #​2883).

Distributed agents

  • #​2951 Bump remote-node agent InvokeAsync<T> reply timeout 10 s → 30 s (closes #​2949).

Quality

  • #​2894 Dispose more resources (@​dmytro-pryvedeniuk).

📖 Documentation

  • #​2953 AOT callout for FluentValidation in the HTTP validation guide (addresses #​2910). 📖 HTTP validation docs
  • #​2954 Extended docs + scenario tests for the new EF Core DbContext abstractions (above).

📦 Dependency bumps

  • Polecat 4.1.1 → 4.2.1 (#​2947).

Full changelog: JasperFx/wolverine@V6.1.0...V6.2.0
... (truncated)

6.1.0

Wolverine 6.1.0

Minor release. Critter Stack dependency refresh, plus the rollup of the entire post-6.0.0 6.0.x line — most significantly the AOT runtime-scanning-elimination work and a new command-line handler-discovery diagnostic.

ℹ️ There was no standalone 6.0.1 tag/GitHub release (it shipped as a NuGet version only), so the changelog below covers every PR merged since 6.0.0 — which includes everything released as 6.0.1 through 6.0.3.

Dependencies

  • Marten / Marten.AspNetCore / Marten.Newtonsoft: 9.0.19.2.0
  • JasperFx.* (non-RuntimeCompiler): 2.1.32.2.0 (#​2938)
  • Polecat: 4.1.1 (unchanged — already latest)
  • JasperFx.RuntimeCompiler: 5.0.0 (unchanged — own 5.x line)

Marten 9.2.0 now bundles JasperFx.Events.SourceGenerator as an analyzer, so projects referencing Wolverine.Marten receive it transitively. The previously-explicit analyzer references were dropped from the 8 Marten-referencing projects to avoid running the generator twice, which produced duplicate Evolve/*Evolver build errors (#​2939). PolecatTests retains its explicit reference because Polecat does not bundle the generator.

New & Noteworthy

AOT: eliminate runtime assembly scanningAOT Publishing. Static-mode apps no longer scan assemblies at startup; discovery now flows through source-generated manifests:

  • Handlers + message types — #​2906 / #​2928
  • HTTP endpoints — #​2925 / #​2929
  • gRPC services (incl. the direct-mapped mode) — #​2926 / #​2930 / #​2934
  • [WolverineHandlerModule] assemblies, with no filesystem probe — #​2905 / #​2935
  • Extension discovery manifest — #​2902 / #​2918
  • Remaining ad-hoc discovery scans routed through JasperFx TypeQuery — #​2909 / #​2932
  • Generated HTTP/gRPC types attached by full name instead of a GetTypes() scan — #​2908 / #​2936

Command-line handler-discovery diagnosticCommand Line Integration · Command Line Diagnostics tutorial. New dotnet run -- wolverine-diagnostics describe-handlers <Type> runs DescribeHandlerMatch from the CLI so you can troubleshoot handler discovery without editing your bootstrapping code — #​2921 / #​2923

Build-time OpenAPI generationCommand Line Integration. dotnet run -- openapi generates the OpenAPI document without starting the host (no database/broker required) — #​2903 / #​2911

SQS fair queues on standard queues — support MessageGroupId on standard Amazon SQS queues — #​2886 / #​2889

SignalR ClaimsPrincipal — the connection's ClaimsPrincipal is now exposed on SignalREnvelope — #​2927 / #​2937

EF Core transactional outbox timing fix — the EF Core transaction and outbox flush now complete before the HTTP response is written — #​2917 / #​2920

Mixed-lifetime IEnumerable<T> support; Lamar removed — handlers depending on a mixed singleton/scoped IEnumerable<T> now resolve every element correctly; Lamar is no longer used or supported, and the built-in ServiceProvider is the container — #​2896 / #​2914

Aggregate handler naming clarity — clarified and guarded the *AggregateHandler naming convention vs. [ReadAggregate] — #​2924

Production code-generation guidanceCode Generation. How to drop Roslyn from production images, with a linked CqrsMinimalApi sample — #​2900 / #​2912

Bug fixes

  • Ancillary store outbox schema for projection side effects — #​2887 / #​2888
  • NRE from null-Sender routes built during description mode — #​2897 / #​2899

What's Changed

6.0.0

Wolverine 6.0.0 — Critter Stack 2026

The messaging/orchestration release completing the Critter Stack 2026 wave, on the final foundation (JasperFx 2.0 / Weasel 9.0 / Marten 9.0 / Polecat 4.0).

Highlights

  • Foundation (final): JasperFx 2.0.0 / JasperFx.RuntimeCompiler 5.0.0 / Marten 9.0.0 / Polecat 4.0.0 / Weasel 9.0.0. Targets net9.0;net10.0.
  • Runtime codegen decoupled from core (BREAKING): WolverineFx no longer ships Roslyn. Apps in the default TypeLoadMode.Dynamic must add WolverineFx.RuntimeCompilation, or pre-generate via codegen write + TypeLoadMode.Static (the trimmer then drops Roslyn). See the migration guide.
  • ServiceLocationPolicy.NotAllowed is the default (BREAKING) — restructure registrations, allow-list per type, or call opts.RestoreV5Defaults() to revert.
  • AOT-clean (pillar #​213): every packaged library carries IsAotCompatible=true (except the intentional WolverineFx.RuntimeCompilation); Static-mode publish drops Roslyn.
  • Cold-start (pillar #​212): Tier-1 pre-generated static handler registry skips handler-discovery scanning in Static mode.
  • Newtonsoft extracted to WolverineFx.Newtonsoft / WolverineFx.Http.Newtonsoft; IForwardsTo<T> discovery now explicit; removed [Obsolete] APIs (EventForwardingToWolverine, RedisTransport.BuildRedisStreamUri, PulsarEndpoint.UriFor).

Migration guide: https://wolverinefx.net/guide/migration.html (or docs/guide/migration.md). Master plan: wolverine#​2715. Remaining release-cut comms items tracked in #​2745.

Commits viewable in compare view.

Updated WolverineFx.Http.Marten from 5.39.3 to 6.3.2.

Release notes

Sourced from WolverineFx.Http.Marten's releases.

6.3.2

What's Changed

Full Changelog: JasperFx/wolverine@V6.3.0...V6.3.2

6.3.0

The top line change here was a lot of work to make Wolverine able to pre-generate code as F# in addition to the existing C# model.

What's Changed

Full Changelog: JasperFx/wolverine@V6.2.2...V6.3.0

6.2.2

Patch release on top of 6.2.1.

🐛 Bug Fixes / Codegen

#​2963 (closes #​2958): EF Core transaction middleware + post-save cascade flush

The HTTP-handler codegen path under the EF Core transaction middleware + outbox cascade (GH-536) no longer fails handler compilation. Two related codegen issues addressed in this PR:

  • CS0128 duplicate var messageContext declaration in the generated handler. Cherry-picked from #​2959, originally authored by @​kentcooper — credit preserved on commit 9df45bfde. Root cause: MessageBusSource was returning a fresh CreateMessageContextWithMaybeTenantFrame per call; once cached + always returning the concrete MessageContext, the duplicate goes away.
  • CS1061 'IMessageContext' does not contain a definition for EnqueueCascadingAsync — surfaced after the cache fix because once the source produced a concrete MessageContext Variable, the downstream CaptureCascadingMessages frame still declared its MethodCall target as typeof(IMessageContext) and emitted a bad ((IMessageContext)messageContext).EnqueueCascadingAsync(…) cast. Fixed by re-targeting CaptureCascadingMessages to the concrete MessageContext type — mirrors the existing FlushOutgoingMessages pattern. Latent in src/Wolverine/Runtime/Handlers/CaptureCascadingMessages.cs since 020e79013e (2022-09-16); the variable-cache fix is what flipped it from masked to visible.

📦 Dependency bumps

  • JasperFx + JasperFx.Events + JasperFx.Events.SourceGenerator + JasperFx.SourceGenerator 2.2.1 → 2.2.3
  • JasperFx.RuntimeCompiler unchanged (own 5.x line, stays at 5.0.0)
  • Marten / Polecat unchanged (9.2.0 / 4.2.1)

Upstream JasperFx 2.2.2 release: https://github.com/JasperFx/jasperfx/releases/tag/V2.2.2 (Fix source-created codegen variable reuse, #​392). 2.2.3 was a same-day version-bump-only re-roll.

📖 Documentation

  • #​2960 (@​outofrange-consulting): clarify the JasperFx command-line integration link in the diagnostics docs.
  • #​2964 (closes #​2962): re-align the dead-letter REST API reference with the current DeadLetterEnvelopeGetRequest / DeadLetterEnvelopeResults / DeadLetterEnvelopeIdsRequest signatures — the docs still described the pre-5 cursor-based pagination (StartId/NextId) and the legacy DeadLetterEnvelopesFoundResponse wrapper. Updated for offset-based PageNumber pagination, the multi-store IReadOnlyList<DeadLetterEnvelopeResults> response shape, and tenant-aware Ids request bodies.

🧪 Known issues

  • #​2965: SharedMemory transport does not serialize envelopes on cross-host send. Surfaces as a MartenTests.Distribution.with_ancillary_stores.spread_out_over_multiple_hosts failure where AssignAgent system commands arrive at the destination node with empty Data/MessageType and the receive pipeline can't deserialize them. Long-standing — the marten CI workflow has been red on this test through V6.2.0 and V6.2.1, predates this release line entirely. Unblocked the V6.2.2 cycle by adding [Fact(Skip = "…")] referencing #​2965; the underlying serialization bug is tracked separately and is out of scope for a JasperFx pin-bump patch release.

Full changelog: JasperFx/wolverine@V6.2.1...V6.2.2

6.2.1

Patch release picking up upstream JasperFx 2.2.1 fixes. No Wolverine code changes — pure dependency bump.

Bumped pins

Package From To
JasperFx 2.2.0 2.2.1
JasperFx.Events 2.2.0 2.2.1
JasperFx.Events.SourceGenerator 2.2.0 2.2.1
JasperFx.SourceGenerator 2.2.0 2.2.1

Unchanged

Package Version Reason
JasperFx.RuntimeCompiler 5.0.0 Own 5.x line — the Roslyn runtime-compiler package was decoupled from the JasperFx 2.x family in #​2876.
Marten family 9.2.0 Latest.
Polecat 4.2.1 Latest (bumped in 6.2.0 via #​2947).

Related links

6.2.0

Bug-fix + feature release on top of 6.1.0 — 13 PRs.

✨ New features

Custom Result<T> Support — #​2952 (refs #​2221)

First three phases of native Result<T>-style handler return-value support: ResultPolicy registry, handler-side unwrapping seams, and caller-side InvokeAsync<T> unwrap. Lays the groundwork for integrating with libraries like ErrorOr, OneOf, FluentResults, etc.

DbContext Abstractions for EF Core Transaction Middleware — #​2919, #​2954

The EF Core transaction middleware now binds correctly when handler parameters are declared as interface or abstract base abstractions over a concrete DbContext. Multiple abstractions to the same DbContext are supported in a single handler — the runtime resolves them all to the same scoped instance, and the transaction still auto-applies.

📖 DbContext Abstractions docs

🚀 Performance

Outgoing Envelope Pooling — #​2956 (closes #​2955)

MessageRouter.RouteForPublish now acquires from the runtime envelope pool (originally introduced in #​2741 for the Executor sites in 6.1.0) when the route's sender is an InlineSendingAgent or BufferedSendingAgent. Measured −504 B/op (−90 %) on the transport-bound publish/send paths in the CritterStackScalability harness, with ~10× fewer Gen0 collections per 1k ops. DurableSendingAgent, local-queue agents, and ISenderRequiresCallback senders are explicitly excluded — different lifecycle plumbing required, tracked as follow-ups.

🐛 Bug fixes

Marten / Polecat

  • #​2943 Fix scheduled-cascade loss from [ReadAggregate] / [DocumentExists] handlers (closes #​2941).
  • #​2948 Pre-populate chain.AncillaryStoreType in Phase A so the inbox-routing map sees [MartenStore] (closes #​2944).
  • #​2947 Bump Polecat 4.1.1 → 4.2.1 and unskip the three Polecat scheduled-cascade tests.

Persistence (Postgres / MySQL)

  • #​2945 Route PostgresqlQueue identifiers through Weasel's PostgresqlIdentifier.Shorten() so long queue names don't overflow Postgres's 63-byte identifier limit (closes #​2942).
  • #​2946 Emit PersistNodeRecord SQL with unquoted schema (MySQL, closes #​2940).

Pulsar

  • #​2950 Fix KeyNotFoundException acking batch messages on partitioned topics (supersedes #​2883).

Distributed agents

  • #​2951 Bump remote-node agent InvokeAsync<T> reply timeout 10 s → 30 s (closes #​2949).

Quality

  • #​2894 Dispose more resources (@​dmytro-pryvedeniuk).

📖 Documentation

  • #​2953 AOT callout for FluentValidation in the HTTP validation guide (addresses #​2910). 📖 HTTP validation docs
  • #​2954 Extended docs + scenario tests for the new EF Core DbContext abstractions (above).

📦 Dependency bumps

  • Polecat 4.1.1 → 4.2.1 (#​2947).

Full changelog: JasperFx/wolverine@V6.1.0...V6.2.0
... (truncated)

6.1.0

Wolverine 6.1.0

Minor release. Critter Stack dependency refresh, plus the rollup of the entire post-6.0.0 6.0.x line — most significantly the AOT runtime-scanning-elimination work and a new command-line handler-discovery diagnostic.

ℹ️ There was no standalone 6.0.1 tag/GitHub release (it shipped as a NuGet version only), so the changelog below covers every PR merged since 6.0.0 — which includes everything released as 6.0.1 through 6.0.3.

Dependencies

  • Marten / Marten.AspNetCore / Marten.Newtonsoft: 9.0.19.2.0
  • JasperFx.* (non-RuntimeCompiler): 2.1.32.2.0 (#​2938)
  • Polecat: 4.1.1 (unchanged — already latest)
  • JasperFx.RuntimeCompiler: 5.0.0 (unchanged — own 5.x line)

Marten 9.2.0 now bundles JasperFx.Events.SourceGenerator as an analyzer, so projects referencing Wolverine.Marten receive it transitively. The previously-explicit analyzer references were dropped from the 8 Marten-referencing projects to avoid running the generator twice, which produced duplicate Evolve/*Evolver build errors (#​2939). PolecatTests retains its explicit reference because Polecat does not bundle the generator.

New & Noteworthy

AOT: eliminate runtime assembly scanningAOT Publishing. Static-mode apps no longer scan assemblies at startup; discovery now flows through source-generated manifests:

  • Handlers + message types — #​2906 / #​2928
  • HTTP endpoints — #​2925 / #​2929
  • gRPC services (incl. the direct-mapped mode) — #​2926 / #​2930 / #​2934
  • [WolverineHandlerModule] assemblies, with no filesystem probe — #​2905 / #​2935
  • Extension discovery manifest — #​2902 / #​2918
  • Remaining ad-hoc discovery scans routed through JasperFx TypeQuery — #​2909 / #​2932
  • Generated HTTP/gRPC types attached by full name instead of a GetTypes() scan — #​2908 / #​2936

Command-line handler-discovery diagnosticCommand Line Integration · Command Line Diagnostics tutorial. New dotnet run -- wolverine-diagnostics describe-handlers <Type> runs DescribeHandlerMatch from the CLI so you can troubleshoot handler discovery without editing your bootstrapping code — #​2921 / #​2923

Build-time OpenAPI generationCommand Line Integration. dotnet run -- openapi generates the OpenAPI document without starting the host (no database/broker required) — #​2903 / #​2911

SQS fair queues on standard queues — support MessageGroupId on standard Amazon SQS queues — #​2886 / #​2889

SignalR ClaimsPrincipal — the connection's ClaimsPrincipal is now exposed on SignalREnvelope — #​2927 / #​2937

EF Core transactional outbox timing fix — the EF Core transaction and outbox flush now complete before the HTTP response is written — #​2917 / #​2920

Mixed-lifetime IEnumerable<T> support; Lamar removed — handlers depending on a mixed singleton/scoped IEnumerable<T> now resolve every element correctly; Lamar is no longer used or supported, and the built-in ServiceProvider is the container — #​2896 / #​2914

Aggregate handler naming clarity — clarified and guarded the *AggregateHandler naming convention vs. [ReadAggregate] — #​2924

Production code-generation guidanceCode Generation. How to drop Roslyn from production images, with a linked CqrsMinimalApi sample — #​2900 / #​2912

Bug fixes

  • Ancillary store outbox schema for projection side effects — #​2887 / #​2888
  • NRE from null-Sender routes built during description mode — #​2897 / #​2899

What's Changed

6.0.0

Wolverine 6.0.0 — Critter Stack 2026

The messaging/orchestration release completing the Critter Stack 2026 wave, on the final foundation (JasperFx 2.0 / Weasel 9.0 / Marten 9.0 / Polecat 4.0).

Highlights

  • Foundation (final): JasperFx 2.0.0 / JasperFx.RuntimeCompiler 5.0.0 / Marten 9.0.0 / Polecat 4.0.0 / Weasel 9.0.0. Targets net9.0;net10.0.
  • Runtime codegen decoupled from core (BREAKING): WolverineFx no longer ships Roslyn. Apps in the default TypeLoadMode.Dynamic must add WolverineFx.RuntimeCompilation, or pre-generate via codegen write + TypeLoadMode.Static (the trimmer then drops Roslyn). See the migration guide.
  • ServiceLocationPolicy.NotAllowed is the default (BREAKING) — restructure registrations, allow-list per type, or call opts.RestoreV5Defaults() to revert.
  • AOT-clean (pillar #​213): every packaged library carries IsAotCompatible=true (except the intentional WolverineFx.RuntimeCompilation); Static-mode publish drops Roslyn.
  • Cold-start (pillar #​212): Tier-1 pre-generated static handler registry skips handler-discovery scanning in Static mode.
  • Newtonsoft extracted to WolverineFx.Newtonsoft / WolverineFx.Http.Newtonsoft; IForwardsTo<T> discovery now explicit; removed [Obsolete] APIs (EventForwardingToWolverine, RedisTransport.BuildRedisStreamUri, PulsarEndpoint.UriFor).

Migration guide: https://wolverinefx.net/guide/migration.html (or docs/guide/migration.md). Master plan: wolverine#​2715. Remaining release-cut comms items tracked in #​2745.

Commits viewable in compare view.

Updated WolverineFx.Marten from 5.39.3 to 6.3.2.

Release notes

Sourced from WolverineFx.Marten's releases.

6.3.2

What's Changed

Full Changelog: JasperFx/wolverine@V6.3.0...V6.3.2

6.3.0

The top line change here was a lot of work to make Wolverine able to pre-generate code as F# in addition to the existing C# model.

What's Changed

Full Changelog: JasperFx/wolverine@V6.2.2...V6.3.0

6.2.2

Patch release on top of 6.2.1.

🐛 Bug Fixes / Codegen

#​2963 (closes #​2958): EF Core transaction middleware + post-save cascade flush

The HTTP-handler codegen path under the EF Core transaction middleware + outbox cascade (GH-536) no longer fails handler compilation. Two related codegen issues addressed in this PR:

  • CS0128 duplicate var messageContext declaration in the generated handler. Cherry-picked from #​2959, originally authored by @​kentcooper — credit preserved on commit 9df45bfde. Root cause: MessageBusSource was returning a fresh CreateMessageContextWithMaybeTenantFrame per call; once cached + always returning the concrete MessageContext, the duplicate goes away.
  • CS1061 'IMessageContext' does not contain a definition for EnqueueCascadingAsync — surfaced after the cache fix because once the source produced a concrete MessageContext Variable, the downstream CaptureCascadingMessages frame still declared its MethodCall target as typeof(IMessageContext) and emitted a bad ((IMessageContext)messageContext).EnqueueCascadingAsync(…) cast. Fixed by re-targeting CaptureCascadingMessages to the concrete MessageContext type — mirrors the existing FlushOutgoingMessages pattern. Latent in src/Wolverine/Runtime/Handlers/CaptureCascadingMessages.cs since 020e79013e (2022-09-16); the variable-cache fix is what flipped it from masked to visible.

📦 Dependency bumps

  • JasperFx + JasperFx.Events + JasperFx.Events.SourceGenerator + JasperFx.SourceGenerator 2.2.1 → 2.2.3
  • JasperFx.RuntimeCompiler unchanged (own 5.x line, stays at 5.0.0)
  • Marten / Polecat unchanged (9.2.0 / 4.2.1)

Upstream JasperFx 2.2.2 release: https://github.com/JasperFx/jasperfx/releases/tag/V2.2.2 (Fix source-created codegen variable reuse, #​392). 2.2.3 was a same-day version-bump-only re-roll.

📖 Documentation

  • #​2960 (@​outofrange-consulting): clarify the JasperFx command-line integration link in the diagnostics docs.
  • #​2964 (closes #​2962): re-align the dead-letter REST API reference with the current DeadLetterEnvelopeGetRequest / DeadLetterEnvelopeResults / DeadLetterEnvelopeIdsRequest signatures — the docs still described the pre-5 cursor-based pagination (StartId/NextId) and the legacy DeadLetterEnvelopesFoundResponse wrapper. Updated for offset-based PageNumber pagination, the multi-store IReadOnlyList<DeadLetterEnvelopeResults> response shape, and tenant-aware Ids request bodies.

🧪 Known issues

  • #​2965: SharedMemory transport does not serialize envelopes on cross-host send. Surfaces as a MartenTests.Distribution.with_ancillary_stores.spread_out_over_multiple_hosts failure where AssignAgent system commands arrive at the destination node with empty Data/MessageType and the receive pipeline can't deserialize them. Long-standing — the marten CI workflow has been red on this test through V6.2.0 and V6.2.1, predates this release line entirely. Unblocked the V6.2.2 cycle by adding [Fact(Skip = "…")] referencing #​2965; the underlying serialization bug is tracked separately and is out of scope for a JasperFx pin-bump patch release.

Full changelog: JasperFx/wolverine@V6.2.1...V6.2.2

6.2.1

Patch release picking up upstream JasperFx 2.2.1 fixes. No Wolverine code changes — pure dependency bump.

Bumped pins

Package From To
JasperFx 2.2.0 2.2.1
JasperFx.Events 2.2.0 2.2.1
JasperFx.Events.SourceGenerator 2.2.0 2.2.1
JasperFx.SourceGenerator 2.2.0 2.2.1

Unchanged

Package Version Reason
JasperFx.RuntimeCompiler 5.0.0 Own 5.x line — the Roslyn runtime-compiler package was decoupled from the JasperFx 2.x family in #​2876.
Marten family 9.2.0 Latest.
Polecat 4.2.1 Latest (bumped in 6.2.0 via #​2947).

Related links

6.2.0

Bug-fix + feature release on top of 6.1.0 — 13 PRs.

✨ New features

Custom Result<T> Support — #​2952 (refs #​2221)

First three phases of native Result<T>-style handler return-value support: ResultPolicy registry, handler-side unwrapping seams, and caller-side InvokeAsync<T> unwrap. Lays the groundwork for integrating with libraries like ErrorOr, OneOf, FluentResults, etc.

DbContext Abstractions for EF Core Transaction Middleware — #​2919, #​2954

The EF Core transaction middleware now binds correctly when handler parameters are declared as interface or abstract base abstractions over a concrete DbContext. Multiple abstractions to the same DbContext are supported in a single handler — the runtime resolves them all to the same scoped instance, and the transaction still auto-applies.

📖 DbContext Abstractions docs

🚀 Performance

Outgoing Envelope Pooling — #​2956 (closes #​2955)

MessageRouter.RouteForPublish now acquires from the runtime envelope pool (originally introduced in #​2741 for the Executor sites in 6.1.0) when the route's sender is an InlineSendingAgent or BufferedSendingAgent. Measured −504 B/op (−90 %) on the transport-bound publish/send paths in the CritterStackScalability harness, with ~10× fewer Gen0 collections per 1k ops. DurableSendingAgent, local-queue agents, and ISenderRequiresCallback senders are explicitly excluded — different lifecycle plumbing required, tracked as follow-ups.

🐛 Bug fixes

Marten / Polecat

  • #​2943 Fix scheduled-cascade loss from [ReadAggregate] / [DocumentExists] handlers (closes #​2941).
  • #​2948 Pre-populate chain.AncillaryStoreType in Phase A so the inbox-routing map sees [MartenStore] (closes #​2944).
  • #​2947 Bump Polecat 4.1.1 → 4.2.1 and unskip the three Polecat scheduled-cascade tests.

Persistence (Postgres / MySQL)

  • #​2945 Route PostgresqlQueue identifiers through Weasel's PostgresqlIdentifier.Shorten() so long queue names don't overflow Postgres's 63-byte identifier limit (closes #​2942).
  • #​2946 Emit PersistNodeRecord SQL with unquoted schema (MySQL, closes #​2940).

Pulsar

  • #​2950 Fix KeyNotFoundException acking batch messages on partitioned topics (supersedes #​2883).

Distributed agents

  • #​2951 Bump remote-node agent InvokeAsync<T> reply timeout 10 s → 30 s (closes #​2949).

Quality

  • #​2894 Dispose more resources (@​dmytro-pryvedeniuk).

📖 Documentation

  • #​2953 AOT callout for FluentValidation in the HTTP validation guide (addresses #​2910). 📖 HTTP validation docs
  • #​2954 Extended docs + scenario tests for the new EF Core DbContext abstractions (above).

📦 Dependency bumps

  • Polecat 4.1.1 → 4.2.1 (#​2947).

Full changelog: JasperFx/wolverine@V6.1.0...V6.2.0
... (truncated)

6.1.0

Wolverine 6.1.0

Minor release. Critter Stack dependency refresh, plus the rollup of the entire post-6.0.0 6.0.x line — most significantly the AOT runtime-scanning-elimination work and a new command-line handler-discovery diagnostic.

ℹ️ There was no standalone 6.0.1 tag/GitHub release (it shipped as a NuGet version only), so the changelog below covers every PR merged since 6.0.0 — which includes everything released as 6.0.1 through 6.0.3.

Dependencies

  • Marten / Marten.AspNetCore / Marten.Newtonsoft: 9.0.19.2.0
  • JasperFx.* (non-RuntimeCompiler): 2.1.32.2.0 (#​2938)
  • Polecat: 4.1.1 (unchanged — already latest)
  • JasperFx.RuntimeCompiler: 5.0.0 (unchanged — own 5.x line)

Marten 9.2.0 now bundles JasperFx.Events.SourceGenerator as an analyzer, so projects referencing Wolverine.Marten receive it transitively. The previously-explicit analyzer references were dropped from the 8 Marten-referencing projects to avoid running the generator twice, which produced duplicate Evolve/*Evolver build errors (#​2939). PolecatTests retains its explicit reference because Polecat does not bundle the generator.

New & Noteworthy

AOT: eliminate runtime assembly scanningAOT Publishing. Static-mode apps no longer scan assemblies at startup; discovery now flows through source-generated manifests:

  • Handlers + message types — #​2906 / #​2928
  • HTTP endpoints — #​2925 / #​2929
  • gRPC services (incl. the direct-mapped mode) — #​2926 / #​2930 / #​2934
  • [WolverineHandlerModule] assemblies, with no filesystem probe — #​2905 / #​2935
  • Extension discovery manifest — #​2902 / #​2918
  • Remaining ad-hoc discovery scans routed through JasperFx TypeQuery — #​2909 / #​2932
  • Generated HTTP/gRPC types attached by full name instead of a GetTypes() scan — #​2908 / #​2936

Command-line handler-discovery diagnosticCommand Line Integration · Command Line Diagnostics tutorial. New dotnet run -- wolverine-diagnostics describe-handlers <Type> runs DescribeHandlerMatch from the CLI so you can troubleshoot handler discovery without editing your bootstrapping code — #​2921 / #​2923

Build-time OpenAPI generationCommand Line Integration. dotnet run -- openapi generates the OpenAPI document without starting the host (no database/broker required) — #​2903 / #​2911

SQS fair queues on standard queues — support MessageGroupId on standard Amazon SQS queues — #​2886 / #​2889

SignalR ClaimsPrincipal — the connection's ClaimsPrincipal is now exposed on SignalREnvelope — #​2927 / #​2937

EF Core transactional outbox timing fix — the EF Core transaction and outbox flush now complete before the HTTP response is written — #​2917 / #​2920

Mixed-lifetime IEnumerable<T> support; Lamar removed — handlers depending on a mixed singleton/scoped IEnumerable<T> now resolve every element correctly; Lamar is no longer used or supported, and the built-in ServiceProvider is the container — #​2896 / #​2914

Aggregate handler naming clarity — clarified and guarded the *AggregateHandler naming convention vs. [ReadAggregate] — #​2924

Production code-generation guidanceCode Generation. How to drop Roslyn from production images, with a linked CqrsMinimalApi sample — #​2900 / #​2912

Bug fixes

  • Ancillary store outbox schema for projection side effects — #​2887 / #​2888
  • NRE from null-Sender routes built during description mode — #​2897 / #​2899

What's Changed

6.0.0

Wolverine 6.0.0 — Critter Stack 2026

The messaging/orchestration release completing the Critter Stack 2026 wave, on the final foundation (JasperFx 2.0 / Weasel 9.0 / Marten 9.0 / Polecat 4.0).

Highlights

  • Foundation (final): JasperFx 2.0.0 / JasperFx.RuntimeCompiler 5.0.0 / Marten 9.0.0 / Polecat 4.0.0 / Weasel 9.0.0. Targets net9.0;net10.0.
  • Runtime codegen decoupled from core (BREAKING): WolverineFx no longer ships Roslyn. Apps in the default TypeLoadMode.Dynamic must add WolverineFx.RuntimeCompilation, or pre-generate via codegen write + TypeLoadMode.Static (the trimmer then drops Roslyn). See the migration guide.
  • ServiceLocationPolicy.NotAllowed is the default (BREAKING) — restructure registrations, allow-list per type, or call opts.RestoreV5Defaults() to revert.
  • AOT-clean (pillar #​213): every packaged library carries IsAotCompatible=true (except the intentional WolverineFx.RuntimeCompilation); Static-mode publish drops Roslyn.
  • Cold-start (pillar #​212): Tier-1 pre-generated static handler registry skips handler-discovery scanning in Static mode.
  • Newtonsoft extracted to WolverineFx.Newtonsoft / WolverineFx.Http.Newtonsoft; IForwardsTo<T> discovery now explicit; removed [Obsolete] APIs (EventForwardingToWolverine, RedisTransport.BuildRedisStreamUri, PulsarEndpoint.UriFor).

Migration guide: https://wolverinefx.net/guide/migration.html (or docs/guide/migration.md). Master plan: wolverine#​2715. Remaining release-cut comms items tracked in #​2745.

Commits viewable in compare view.

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps Marten from 8.37.1 to 9.2.0
Bumps WolverineFx.Http from 5.39.3 to 6.3.2
Bumps WolverineFx.Http.Marten from 5.39.3 to 6.3.2
Bumps WolverineFx.Marten from 5.39.3 to 6.3.2

---
updated-dependencies:
- dependency-name: Marten
  dependency-version: 9.2.0
  dependency-type: direct:production
  update-type: version-update:semver-major
- dependency-name: WolverineFx.Http
  dependency-version: 6.3.2
  dependency-type: direct:production
  update-type: version-update:semver-major
- dependency-name: WolverineFx.Http.Marten
  dependency-version: 6.3.2
  dependency-type: direct:production
  update-type: version-update:semver-major
- dependency-name: WolverineFx.Marten
  dependency-version: 6.3.2
  dependency-type: direct:production
  update-type: version-update:semver-major
- dependency-name: WolverineFx.Http
  dependency-version: 6.3.2
  dependency-type: direct:production
  update-type: version-update:semver-major
- dependency-name: WolverineFx.Http.Marten
  dependency-version: 6.3.2
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot @github
Copy link
Copy Markdown
Contributor Author

dependabot Bot commented on behalf of github Jun 3, 2026

Looks like these dependencies are updatable in another way, so this is no longer needed.

@dependabot dependabot Bot closed this Jun 3, 2026
@dependabot dependabot Bot deleted the dependabot/nuget/Nexus.Application/multi-2f5844eea2 branch June 3, 2026 23:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

No source-generated dispatcher found for Marten.Events.Aggregation.SingleStreamProjection<MyType, System.Guid>

0 participants