Repository navigation
2.0.0 – Sep 24, 2026
2.0.0 (2026-09-24)
Fluxzero 2.0 removes a fundamental constraint that has shaped every Fluxzero application until now. Aggregates tied four concerns to one tree: what belongs together, what changes together, what is stored together and what is loaded together. Small operations could require large roots, while rules crossing those roots lost atomic consistency. Once history accumulated, changing that structure became difficult.
Fluxzero 2.0 separates these concerns by shifting the consistency boundary from the Aggregate being changed to the change itself. Related Models can keep their own identity, history and storage, while an operation changes them together atomically. Commands, applies, assertions and tests remain familiar.
See the 2.0 overview for the motivation and headline features, or the deep dive for examples and contracts.
Features
modeling: introduce independent Models (
7f4f3fc)Introduce independent @Model state with its own identity, history, persistence and lifecycle.
modeling: connect Models through durable parent relationships (
c6cd5c7)Connect Models through @Parent, including recursive hierarchies and polymorphic parents.
modeling: navigate Graphs lazily and inject related Models (
ec526aa)Navigate related Models lazily through typed Graphs and inject Models, ancestors and Graph collections into handlers.
modeling: handle Model commands automatically (
d750664)Handle commands automatically through Model @Apply methods, with consumer routing and explicit handling controls.
modeling: compose payload and Model behavior (
516a938)Compose payload and Model handlers with @InterceptApply, @AssertLegal and @Apply.
modeling: validate and commit multi-Model operations atomically (
c7dee87)Validate and commit changes across independent Models atomically, including read dependencies and configurable conflict handling.
modeling: apply commands directly through the Model pipeline (
51dc3fd)Apply commands directly with assertAndApply and explicitly flush staged Model changes.
modeling: commit Graphs and Model collections with revision checks (
8d2923c)Commit Graphs and Model collections directly with revision checks.
modeling: reconstruct historical Graphs and their before-state (
7163537)Load historical Graphs, inspect exact before-state with previous(), and explicitly request current views.
modeling: handle changes to a complete Graph (
9fe87a7)Handle published changes to a complete Graph through one event handler.
modeling: configure persistence independently of search (
f64eb70)Choose event sourcing, document persistence or both independently from public document search.
modeling: provide stable Model names and flexible identifiers (
9c81eb6)Keep logical Model names independent of Java packages and resolve Models through aliases and functional IDs.
modeling: maintain composed Graph documents automatically (
304756a)Compose current Graph views and maintain materialized Graph documents without a hand-written projection.
search: query Models by relationships and related content (
c879e6c)Search Models through relation identities and related content, and return typed live or materialized Graphs.
tracking: consume materialized Graph documents (
7db444a)Consume materialized Graph documents with @HandleDocument.
web: compose and filter Graph responses (
51a3527)Return composed Graph responses with derived fields and content filtering, including Graph-backed JSON request contracts.
web: describe composed Graph responses in OpenAPI (
de88f14)Describe Model Graph responses and selected paths in OpenAPI, with composable API documentation.
serialization: evolve schemas independently within stored Graphs (
9bfe2a5)Preserve per-node schema revisions and migrate materialized Graph documents.
scheduling: bind scheduled work to Model lifetimes (
9ae3f34)Bind scheduled work to Model parent lifetimes.
modeling: cascade deletion through owned relationships (
40fec0c)Cascade logical deletion through owned relationships and expose deletion tombstones.
modeling: plan and execute physical Model erasure (
70566fc)Preview physical erasure with a deletion plan and erase selected Models and their retained data.
modeling: migrate existing Aggregates into Models (
481b358)Migrate Aggregate data into Models using staged document adoption or published-event replay, with explicit cutover.
testing: test Model migrations and owned schedules (
6c06cf8)Exercise Model migrations and owned schedules with TestFixture.
serialization: negotiate document encodings and retain LZ4 reads (
2996167)Use ZSTD for document serialization and negotiate readable encodings with Runtime while retaining safe LZ4 reads.
Performance Improvements
modeling: batch Model commits with a compact protocol (
795e1c1)Batch independent Model commits and use a compact commit protocol to reduce transport overhead.
modeling: specialize compiled applies and single-Model commits (
6183d8a)Execute compiled direct applies and specialize single-Model commits.
modeling: prefetch bounded pages during reconstruction (
e57d624)Prefetch bounded event pages during Model reconstruction.
Breaking Changes
- java: require Java 25; use JDK 25.0.3 or newer.
- authentication: require custom User implementations to provide id() explicitly.
- platform: require a compatible 2.x Runtime for Model/Graph operations and document encoding negotiation.
Existing Aggregate applications remain supported. Upgrading the SDK and migrating stored Aggregates are separate steps; see the upgrade guide and Aggregate migration.