Skip to content

[Master] Critter Stack 2026 #217

@jeremydmiller

Description

@jeremydmiller

Status: in-flight (JasperFx-side foundations largely shipped; per-product master plans picking them up)
Cross-repo umbrella for the Critter Stack 2026 release wave.
Reference: Critter Stack 2026 (jeremydmiller.com, 2026-04-29)

This issue is the north star for the 2026 wave. It does not track implementation work directly — it links to per-product master plans (each lives in its own repo) and to cross-cutting pillar plans (here in JasperFx). Those, in turn, link to concrete implementation issues.

The three pillars

  1. Cold-start performance. Make every Critter Stack product viable in serverless / cold-start scenarios — fewer dependencies on the hot path, faster first-request latency, smaller publish footprint. → [Pillar] Cold-start performance #212
  2. AOT compliance. All shipped libraries publish-AOT-clean (or trim-clean with explicit annotations). The Roslyn pipeline becomes dev-time-only for code-generation users; Wolverine's runtime codegen stays but is annotated. → [Pillar] AOT compliance #213
  3. Dedupe Marten ↔ Polecat. Consolidate shared infrastructure into Weasel.Core / JasperFx.Events / shared utilities so Polecat 4 and Marten 9 stop carrying parallel copies. → [Pillar] Dedupe Marten ↔ Polecat #214

Per-product master plans

Product Target version Master plan
JasperFx 2.0 #215
JasperFx.Events 2.0 #216
Weasel 9.0 JasperFx/weasel#263
Marten 9.0 JasperFx/marten#4349
Polecat 4.0 JasperFx/polecat#46
Wolverine 6.0 JasperFx/wolverine#2715
CritterWatch 1.0 JasperFx/CritterWatch#148 (Explorer + Event Modeling swim-lane + Projection Step-through)
Bobcat exploratory not committed

Cross-cutting decisions (apply to every product unless noted)

  • Drop net8.0. Add net11.0 when it ships. Targets are net9.0;net10.0 in the interim. ✅ done in JasperFx
  • Source generators replace runtime reflection where feasible. Exception: Wolverine stays on runtime codegen (per blog: "not remotely possible" to source-generate). Wolverine + Marten both lean on JasperFx's existing dotnet run -- codegen write for pre-generation.
  • Defaults flip toward "best-observed-perf" config — including settings previously gated as opt-in due to schema impact. AI-assisted migration tooling is the mitigation.
  • Obsolete APIs accumulated since the last major are removed in this wave.

Already shipped against this plan

Explicitly out of scope for 2026

  • Wolverine source-generator conversion
  • UI-driven event sourcing tooling (separate from CritterWatch operator UI)
  • Reqnroll integration commitment (left open as a maybe-later)
  • Bobcat firm release date

Sequencing notes

  1. JasperFx 2.0 + JasperFx.Events 2.0 are the foundation. Stable alphas before any downstream product cuts a release alpha.
  2. Weasel 9.0 ships as the database-manipulation substrate, but its stability is gated on Marten 9 consuming each migrated row.
  3. Marten 9 + Polecat 4 ship simultaneously. The dedupe pillar migration is iterative and bidirectional between the two.
  4. Wolverine 6 is independent of the dedupe pillar; ships against the JasperFx 2.0 foundation on its own schedule.
  5. CritterWatch 1.0 rides on top of the JasperFx-layer foundations from rows 1 + 9 of CritterWatch#148 (jasperfx#209, jasperfx#211), the Marten/Polecat explorer + projection-replay impls (rows 2/3 + 10/11), and the Wolverine saga diagnostics (row 4 — wolverine#2713). CritterWatch's own implementation rows (5–8 + 12) develop in parallel against submodule branches; promotion to NuGet packages follows the Phase A→D sequence documented in Make composite projections play well with multi-tenancy #148.

How to read this tree

[Master] Critter Stack 2026                       ← this issue (JasperFx)
├── [Pillar] Cold-start performance               ← JasperFx#212
├── [Pillar] AOT compliance                       ← JasperFx#213
├── [Pillar] Dedupe Marten ↔ Polecat              ← JasperFx#214
├── [Master] JasperFx 2.0                         ← JasperFx#215
├── [Master] JasperFx.Events 2.0                  ← JasperFx#216
├── [Master] Weasel 9.0                           ← weasel#263
├── [Master] Marten 9.0                           ← marten#4349
├── [Master] Polecat 4.0                          ← polecat#46
├── [Master] Wolverine 6.0                        ← wolverine#2715
└── [Master] CritterWatch 1.0                     ← CritterWatch#148

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions