Skip to content

Bump JasperFx to 2.0.0-alpha.7 + dedup CascadeAction onto Weasel.Core (#47)#61

Merged
jeremydmiller merged 1 commit into
mainfrom
feature/cascadeaction-dedup-and-alpha.7
May 12, 2026
Merged

Bump JasperFx to 2.0.0-alpha.7 + dedup CascadeAction onto Weasel.Core (#47)#61
jeremydmiller merged 1 commit into
mainfrom
feature/cascadeaction-dedup-and-alpha.7

Conversation

@jeremydmiller
Copy link
Copy Markdown
Member

Summary

  • Bump JasperFx pins straight to the current published alphas:
    • JasperFx 2.0.0-alpha.4 → 2.0.0-alpha.7
    • JasperFx.Events 2.0.0-alpha.2 → 2.0.0-alpha.3
    • JasperFx.Events.SourceGenerator 2.0.0-alpha.1 → 2.0.0-alpha.2
  • Closes Dedup audit: migrate Polecat to Weasel.Core.CascadeAction #47 (dedup audit, db-manipulation slice Row 2): drop the local `Polecat.Storage.CascadeAction` enum; `DocumentForeignKey` and its test import `Weasel.Core.CascadeAction` instead.

Supersedes #60 (its alpha.4→alpha.6 bump rolled into this further-reaching alpha.7 bump). Will close #60 after this one merges.

What's in JasperFx since alpha.4

  • jasperfx#229 (closes #226) — RecentlyUsedCache thread-safety
  • jasperfx#230 (closes marten#4354) — StaticTypeLoader codegen-write fallback
  • jasperfx#234 (closes #231) — RecentlyUsedCache deterministic LRU
  • jasperfx#235 (closes #188) — AssemblyGenerator tolerates missing references (Oracle EF Core satellites)
  • jasperfx#236 (closes #203) — OptionsDescription Children + Sets as properties
  • jasperfx#238 (closes #228) — ScopedContainerCreation: gate `await using` on `AsyncMode.AsyncTask`
  • jasperfx#239 (closes #227) — Codegen CLI enforces ServiceLocationPolicy per file
  • jasperfx#240 (closes Row 1 + 2 + companion of jasperfx#224 multi-tenancy slice) — `UnknownTenantIdException.TenantId` exposed as a property

JasperFx.Events alpha.3

  • jasperfx#202 (closes #201) — `IJasperFxAggregateGrouper.Group` parameter promoted to `IReadOnlyList`. Verified zero Polecat call-site impact via `grep -rn "IAggregateGrouper|IJasperFxAggregateGrouper|CustomGrouping|IEnumerable" src/` — no grouper implementations or callers in Polecat.

Why this CascadeAction migration is safe

Per the audit at jasperfx#218, `Weasel.Core.CascadeAction` has been the canonical enum all along; Marten was already using it. Polecat is the last consumer to catch up. Other Polecat files (`EventsTable`, `NaturalKeyTable`, `EventTagTable`) reference `CascadeAction` via `using Weasel.SqlServer;` — those resolve to Weasel.SqlServer's deprecated copy (already wrapped in a `#pragma warning disable CS0618`) and are out of scope for this row.

Test plan

  • `dotnet build polecat.slnx -c Debug` — 0 errors
  • `grep -rn "CascadeAction" src/` — `DocumentForeignKey` + its test now resolve to `Weasel.Core.CascadeAction`; the three Weasel.SqlServer.Tables.ForeignKey usages are untouched (their deprecation is tracked separately)

🤖 Generated with Claude Code

…#47)

Pin bumps:
- JasperFx 2.0.0-alpha.4 → 2.0.0-alpha.7
- JasperFx.Events 2.0.0-alpha.2 → 2.0.0-alpha.3
- JasperFx.Events.SourceGenerator 2.0.0-alpha.1 → 2.0.0-alpha.2

What's in JasperFx since alpha.4:
- jasperfx#229 (closes #226) RecentlyUsedCache thread-safety
- jasperfx#230 (closes marten#4354) StaticTypeLoader codegen-write fallback
- jasperfx#234 (closes #231) RecentlyUsedCache deterministic LRU
- jasperfx#235 (closes #188) AssemblyGenerator tolerates missing references
- jasperfx#236 (closes #203) OptionsDescription Children + Sets as properties
- jasperfx#238 (closes #228) ScopedContainerCreation: gate await-using
- jasperfx#239 (closes #227) Codegen CLI enforces ServiceLocationPolicy
- jasperfx#240 (closes part of #224) UnknownTenantIdException.TenantId property

JasperFx.Events alpha.3:
- jasperfx#202 (closes #201) IJasperFxAggregateGrouper.Group takes IReadOnlyList<IEvent>
  — verified zero Polecat impact via grep (no grouper implementations or
  CustomGrouping callers).

Closes polecat#47 (dedup audit, db-manipulation slice Row 2):
- Drop the local `Polecat.Storage.CascadeAction` enum.
- DocumentForeignKey + its test now import `Weasel.Core.CascadeAction`.
- Other Polecat files (EventsTable, NaturalKeyTable, EventTagTable) reference
  `CascadeAction` via `using Weasel.SqlServer;` already — those resolve to
  Weasel.SqlServer's deprecated copy and are out of scope for this row
  (separate `#pragma warning disable CS0618` already documents that path).

Per the audit at jasperfx#218, Weasel.Core had the canonical `CascadeAction`
all along; Marten was already using it. Polecat is the last consumer to
catch up.

Supersedes the older alpha.4→alpha.6 bump PR #60 (which I'll close in
favor of this one since this lands further in one shot).

polecat.slnx builds clean.
@jeremydmiller jeremydmiller merged commit 641f4d9 into main May 12, 2026
6 checks passed
@jeremydmiller jeremydmiller deleted the feature/cascadeaction-dedup-and-alpha.7 branch May 12, 2026 14:06
jeremydmiller added a commit that referenced this pull request May 12, 2026
Closes #51. Bookkeeping tracker for the Polecat 4 migration narrative,
filed as part of the Critter Stack 2026 release wave.

## What's covered

- **Foundation pin bumps** — the JasperFx 1.x → 2.0 / JasperFx.Events
  1.x → 2.0 / Weasel 8.x → 9.0 transitive bumps, with a before/after
  table.
- **Dedup audit relocations** (jasperfx#218 / #224):
  - `Polecat.BulkInsertMode` → `Weasel.Core.BulkInsertMode`
    (PR #50, weasel#264)
  - `Polecat.Storage.CascadeAction` → `Weasel.Core.CascadeAction`
    (PR #47 / #61)
  - `Polecat.Metadata.ITenanted` now extends
    `JasperFx.MultiTenancy.IHasTenantId` (silent during Polecat 4 dev;
    documented for third-party consumers)
  - `Polecat.Exceptions.UnknownTenantException` →
    `JasperFx.MultiTenancy.UnknownTenantIdException` (with the new
    `TenantId` property surfaced)
- **Event-sourcing API changes** — `IInlineProjection.ApplyAsync`
  widening to `IEnumerable<StreamAction>` (jasperfx-events#4306),
  plus the `IJasperFxAggregateGrouper.Group` `IReadOnlyList<IEvent>`
  tightening (jasperfx#201) flagged for the rare case a Polecat
  application implements a custom grouper.
- **New behavior** — `BulkInsertWithVersionAsync` (#48 / #62, the
  optimistic-concurrency bulk-insert path), and the FlatTableProjection
  case-sensitivity fix (#49 / Weasel-side).
- **AOT/codegen posture** — Polecat 4 is `PublishAot`-supported;
  `IsAotCompatible=true` lands with the per-project AOT audit
  (jasperfx#213).
- **Dependency lockstep** — explicit pairing table; mixing major
  versions across products in this wave is unsupported.
- **No obsolete API removals** — verified via grep; the audit row in
  #51 is closed as a no-op.

## Sidebar wiring

Added a top-level "Migration Guide" entry under the existing sections
in `docs/.vitepress/config.mts`, matching the same style other top-level
docs use (Diagnostics, Schema). The page is reachable from any page
in the sidebar tree.
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.

Dedup audit: migrate Polecat to Weasel.Core.CascadeAction

1 participant