chore(deps): #87 held-back bump wave — OpenIddict 7.6, OTel 1.17, System.Reactive 7, Marten 9.11/Wolverine 6.16#158
Merged
Conversation
Held-back OAuth-core bump from the #87 dependency report. 7.6.0 is a small release: an EF-store EntityState-restore fix (we use custom Marten stores, no EF), OpenIddict.Client.WebIntegration adds Vercel + ID Austria (we don't use WebIntegration), and third-party dependency refreshes. Nothing touches the server token pipeline, DPoP, or reference tokens. Gated locally: build clean, unit 1395/1395 + integration 517/517 green.
Held-back OTel bump from the #87 dependency report — the SDK line moved together: - OpenTelemetry.Extensions.Hosting 1.15.3 → 1.17.0 - OpenTelemetry.Instrumentation.AspNetCore 1.15.2 → 1.17.0 - OpenTelemetry.Instrumentation.Http 1.15.1 → 1.17.0 - OpenTelemetry.Instrumentation.Runtime 1.15.1 → 1.17.0 - OpenTelemetry.Exporter.OpenTelemetryProtocol 1.15.3 → 1.17.0 - OpenTelemetry.Exporter.Prometheus.AspNetCore 1.15.3-beta.1 → 1.17.0-beta.1 (the Prometheus AspNetCore exporter is still officially beta upstream) Npgsql.OpenTelemetry and Serilog.Sinks.OpenTelemetry are separate lines (tied to Npgsql / their own OTLP client) and are left untouched. Gated locally: build clean, unit 1395/1395 + integration 517/517 green. The test host disables the Prometheus + OTLP exporters, so those two packages were smoke-tested separately by booting the real app and scraping /connect-adjacent /metrics: HTTP 200, telemetry_sdk_version=1.17.0, 58 metric families rendered in Prometheus text format (aspnetcore/http_server/kestrel/dotnet instrumentation all emitting).
Held-back major from the #87 dependency report. Rx 7's only breaking change is the discontinuation of the facade packages (System.Reactive.Linq / .Core / .Interfaces / .PlatformServices) — everything now ships in the single System.Reactive package (no 7.x facade was published). The UI-framework split that drove the major bump (WPF/WinForms/UWP out of the compile-time API) does not touch us: our usage is core Rx only (ReplaySubject, Observable.*, Concat, SelectMany, Catch, Unit) in BuildingBlocks.Helper/ObservableExtensions.cs and BuildingBlocks.EventDispatcher/DataEventDispatcher.cs. Changes: - System.Reactive 6.1.0 → 7.0.0 - Drop the System.Reactive.Linq package version (no 7.x facade exists). - BuildingBlocks.EventDispatcher: reference System.Reactive instead of the removed System.Reactive.Linq facade (its namespaces — System.Reactive.Linq, System.Reactive.Subjects — are in System.Reactive). Gated locally: build clean, unit 1395/1395 + integration 517/517 green (the SignalR change-stream path that exercises DataEventDispatcher + DeferUntil is covered by the integration suite).
Partial Critter-Stack bump that stays BELOW the 9.12 regression. Marten 9.12 broke async-projection catch-up under MasterTableTenancy (which modgud uses) — the identity read-models (Person via the polymorphic ModgudPrincipalProjection, UserView) never materialize — introduced by the JasperFx.Events 2.18 "DI-projection partial-class dispatch" refactor. Verified still unfixed in 9.16.1 here (41/517 integration failures; SecurityAuditWave4 fails solo with a null inline Person). 9.11.0 is the highest known-good (AppTemplate pins it too, documented in its docs/dev-notes/backlog.md). WolverineFx.Marten 6.16 is the last 6.x pinning Marten 9.11 (6.17 jumps to 9.14, already past the regression). - Marten 9.8.0 → 9.11.0 - Marten.AspNetCore 9.8.0 → 9.11.0 - WolverineFx.Marten 6.9.0 → 6.16.0 - WolverineFx.RuntimeCompilation 6.9.0 → 6.16.0 Gated locally: build clean (no CS0101/CS0111 source-gen dup), unit 1395/1395 + integration 517/517 green, runtime back to ~6m45s (vs 14m33s of catch-up timeouts under 9.16). Do NOT lift Marten past 9.11 without running the integration suite — it is the gate that catches the regression.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Works through the held-back items from the #87 dependency report (the ones the
earlier risk-averse wave in #156 explicitly deferred to "their own careful PRs").
dotnet list package --vulnerablereports zero vulnerabilities across thegraph, so this is pure hygiene — no security-driven urgency.
Four bumps, one commit each, each gated locally by a full build + unit +
integration run, and the combined result re-gated as a whole.
OpenIddict 7.5.0 → 7.6.0
7.6.0 is a small release: an EF-store
EntityState-restore fix (we use customMarten stores, no EF),
OpenIddict.Client.WebIntegrationadds Vercel + IDAustria (we don't use WebIntegration), and dependency refreshes. Nothing touches
the server token pipeline, DPoP, or reference tokens.
OpenTelemetry SDK line 1.15 → 1.17
The whole SDK line moved together:
Extensions.Hosting,Instrumentation.AspNetCore/.Http/.Runtime, andExporter.OpenTelemetryProtocolto 1.17.0;Exporter.Prometheus.AspNetCoreto1.17.0-beta.1 (still officially beta upstream).
Npgsql.OpenTelemetryandSerilog.Sinks.OpenTelemetryare separate lines and are untouched.The test host disables the Prometheus + OTLP exporters, so those two packages
aren't covered by the suite. They were smoke-tested separately by booting the
real app and scraping
/metrics: HTTP 200,telemetry_sdk_version=1.17.0, 58metric families rendered in Prometheus text format, with the aspnetcore /
http_server / kestrel / dotnet instrumentation all emitting.
System.Reactive 6.1.0 → 7.0.0
Rx 7's only breaking change that reaches us is the discontinuation of the facade
packages —
System.Reactive.Linqhas no 7.x release; all operators now ship inthe single
System.Reactivepackage. SoBuildingBlocks.EventDispatchernowreferences
System.Reactive(itsSystem.Reactive.Linq/.Subjectsnamespaces live there), and the facade's package version is dropped.
The UI-framework split that actually drove the major (WPF/WinForms/UWP out of the
compile-time API) does not affect us: our usage is core Rx only —
ReplaySubject,Observable.*,Concat,SelectMany,Catch,Unit— inBuildingBlocks.Helper/ObservableExtensions.csandBuildingBlocks.EventDispatcher/DataEventDispatcher.cs.Marten 9.8 → 9.11, Wolverine 6.9 → 6.16 (partial — deliberately not 9.16)
A partial Critter-Stack bump that stays below the 9.12 regression.
Marten 9.12 broke async-projection catch-up under
MasterTableTenancy— whichmodgud uses (one physical DB per realm) — so identity read-models never
materialize. It came in with the JasperFx.Events 2.18 "DI-projection
partial-class dispatch" refactor. This is documented in the sibling AppTemplate
fork (bisected there: 9.11.0 green, 9.12.0 red, Wolverine-independent).
It is still unfixed in 9.16.1. Verified here before falling back: the full
bump to Marten 9.16.1 / Wolverine 6.20 puts the integration suite at 41
failures / 476 passed, with runtime ballooning from ~7 to 14m33s on
projection-catch-up timeouts. The failures are localized to the identity
read-models —
Person, produced by the polymorphicModgudPrincipalProjection(
Person : Principal, Inline), comes back null immediately after user creationand fails even in a solo run, while plain-document Inline projections (the OAuth
state projections) are unaffected.
SecurityAuditWave4is the clean canary: redunder 9.16, green under 9.11.
WolverineFx.Marten6.16 is the last 6.x that pins Marten 9.11 (6.17 alreadyjumps to 9.14, past the regression).
Not included, and why: Microsoft.OpenApi 2.7.5 → 3.x is blocked. .NET 10's
Microsoft.AspNetCore.OpenApirequires Microsoft.OpenApi 2.x; 3.x breaks thesource generator (
CS0200,IOpenApiMediaType.Exampleis read-only). Theexisting 2.7.5 transitive-CVE pin stays correct until a future ASP.NET Core.
Verification
Each bump was gated on its own branch, and the combined branch was re-gated:
CS0101/CS0111source-generator duplication)/metricslive smoke for the OTel exporters the suite doesn't coverFollow-up
Marten past 9.11 stays blocked. The regression is unfixed through 9.16.1 and, for
MasterTableTenancyspecifically, is not yet reported upstream — a minimalrepro + a JasperFx/marten issue is the way to unblock it for good. Until then:
re-run the integration suite on every new Marten release; it is the gate that
catches this.
🤖 Generated with Claude Code