chore(deps): upgrade marten 8->9 and wolverine 5->6 (critter stack)#125
Conversation
Coordinated major upgrade of the full Critter Stack, consolidating the four dependabot PRs (#119 Marten, #120 WolverineFx, #121 WolverineFx.EntityFrameworkCore, #122 WolverineFx.Marten) that each failed in isolation because the five packages are interdependent and must move together. Packages (backend/Directory.Packages.props): - Marten / Marten.EntityFrameworkCore 8.37.1 -> 9.2.1 - WolverineFx / .EntityFrameworkCore / .Marten 5.39.3 -> 6.1.0 - WolverineFx.RuntimeCompilation 6.1.0 (new) Breaking-change fixes (Marten 9 / Wolverine 6 / JasperFx 2.0): - [Identity] attribute moved Marten.Schema -> JasperFx (IdempotencyMarker) - TenancyStyle -> JasperFx.MultiTenancy, TrackLevel -> JasperFx.OpenTelemetry - DocumentAlreadyExistsException moved Marten.Exceptions -> JasperFx (Program.cs OnException registration + WolverineErrorRoutingTests) - convention-method projections (OnboardingProjection, PlanProjection) must now be partial so the compile-time JasperFx.Events source generator emits the aggregate dispatcher; the runtime reflection fallback was removed - Wolverine 6 extracted runtime Roslyn codegen into WolverineFx.RuntimeCompilation, required for the Development/test host (TypeLoadMode.Auto); production stays Static and never invokes it Verified locally: dotnet build clean (0 warnings), full suite 1124/1124 passing on Testcontainers Postgres (Solo async daemon + ApplyAllDatabaseChangesOnStartup boot clean; upcaster and idempotency error-routing tests green). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Warning Review limit reached
More reviews will be available in 40 minutes and 37 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (8)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Dependency ReviewThe following issues were found:
License Issuesbackend/src/RunCoach.Api/RunCoach.Api.csproj
OpenSSF ScorecardScorecard details
Scanned Files
|
…ap (#126) * docs: record marten 9 / wolverine 6 upgrade in decision log and roadmap - DEC-071: the Critter Stack 2026 upgrade (Marten 9.2.1 / Wolverine 6.1.0 on JasperFx 2.0) — rationale for keeping EventAppendMode.Rich over the new QuickAppend default, the WolverineFx.RuntimeCompilation dev/test requirement, and the partial-projection source-generator change. Builds on DEC-048/049/067. - ROADMAP: marked the stale "Marten 9 upgrade" deferred item as shipped (PR #125) and folded in the two deferred levers — QuickAppend adoption and Marten.PgVector for the LLM/coaching layer. - Research artifact R-076 (batch-27a-critter-stack-9-6-migration.md): consolidated, source-cited migration map (breaking changes, default flips, value unlocked), registered in the research queue. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * docs: scope wolverine 6.2.x fixes as future-patch in batch-27a artifact Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Summary
Coordinated major upgrade of the full Critter Stack — Marten 8 → 9 and Wolverine 5 → 6 (JasperFx 2.0). This consolidates the four dependabot PRs that each failed CI in isolation because the five packages are interdependent and must move together:
Package changes (
backend/Directory.Packages.props)NuGet resolves JasperFx 2.2.0 / JasperFx.Events / Weasel 9.0 transitively; all five packages target
net10.0. EF Core floors already satisfied (≥ 10.0.2).Breaking-change fixes (Marten 9 / Wolverine 6 / JasperFx 2.0)
Verified against the restored 9.2.1 / 6.1.0 assemblies (reflection) and the migration guide:
[Identity]attribute relocatedMarten.Schema→JasperFx—IdempotencyMarker.cs(Marten no longer defines its own; it honors the shared JasperFx attribute).TenancyStyle→JasperFx.MultiTenancy,TrackLevel→JasperFx.OpenTelemetry(MartenConfiguration.csusings).DocumentAlreadyExistsException→JasperFx(out ofMarten.Exceptions; the two stream-collision exceptions stayed) —Program.csOnExceptionregistration +WolverineErrorRoutingTests.cs.SingleStreamProjectionsubclasses (OnboardingProjection,PlanProjection) must now bepartialso the compile-timeJasperFx.Eventssource generator (shipped in the Marten analyzer asset) emits the aggregate dispatcher; the runtime reflection fallback was removed.UserProfileFromOnboardingProjectionuses an explicitApplyEventoverride, so it is unaffected.WolverineFx.RuntimeCompilation. Required for the Development / integration-test host, which boots withCodeGeneration.TypeLoadMode.Auto; without it the host throwsNo IAssemblyGenerator is registered. Production usesTypeLoadMode.Staticand never invokes it.The reflection-based per-event schema-version helper (
MapEventTypeWithSchemaVersion/EventStoreOptionsExtensions) is unchanged — verified the assembly-root type and method signature are byte-identical in 9.2.1.Verification
dotnet build RunCoach.slnx— clean, 0 warnings (SonarAnalyzer 10.27 + StyleCop pass underTreatWarningsAsErrors).dotnet test --solution RunCoach.slnx) on Testcontainers Postgres, including: Solo async daemon +ApplyAllDatabaseChangesOnStartupclean boot, the legacy-event upcaster synthetic-row regression test, and the idempotency Wolverine error-routing tests.🤖 Generated with Claude Code