Skip to content

Fluxzero 2.0.0-RC2 — Sharper Models, Reliable Dev Startup

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 31 Aug 09:32
· 88 commits to main since this release
bfc7987

Fluxzero 2.0.0-RC2 — Sharper Models, Reliable Dev Startup

Fluxzero 2.0 is about modeling independent domain lifecycles directly: every independently living object is a @Model, durable @Parent relationships connect those Models, and Graph<T> restores coherent context only where an application needs it.

RC2 keeps that Model/Graph foundation intact and makes the release considerably easier to adopt. The embedded Dev Server can now retain a wider startup window for brand-new consumers, while the human guides, public Javadocs and Java/Kotlin agent manuals have been brought onto the same current API and design language.

Model the lifecycle, then choose storage

The central 2.0 rule is now expressed consistently throughout the documentation:

@Model(materializeGraph = true)
record Project(
        @EntityId ProjectId projectId,
        ProjectDetails details) {
}

@Model
record Task(
        @EntityId TaskId taskId,
        @Parent(pathInParent = "tasks") ProjectId projectId,
        TaskDetails details) {
}

Task is independent because it has its own identity and lifecycle—not because it is large, searchable or awkward to embed. It can have its own history, retention, deletion and concurrency while still appearing naturally below a Project:

Graph<Project> project = Fluxzero.loadGraph(projectId);
List<Task> tasks = project.childModels("tasks", Task.class);

List<Graph<Project>> activeProjects = Fluxzero.searchGraph(Project.class)
        .whereDescendant(Task.class, MatchConstraint.match(false, "completed"))
        .fetchAll();

The revised guides cover the complete current contract: typed Model and Graph search, lazy and historical Graph loading, pinned state boundaries, polymorphic and recursive relationships, Graph context and derived properties, direct Model search versus Graph materialization, event publication, event sourcing and the forward-only Aggregate-to-Model migration path.

The bundled Java and Kotlin project files now teach exactly the same capabilities and use the same public type catalogue as the human documentation.

Reliable startup commands in the Dev Server

An embedded Test Server previously started a new consumer one second before the current end of its log. That default is safe and remains unchanged, but it was too narrow for development tools that may publish startup commands before application handlers finish registering.

Embedded owners can now choose the initial look-back explicitly:

Server server = TestServer.startServer(0, Duration.ofSeconds(10));

The duration applies only when a consumer has no stored or client-controlled position. Existing durable positions are never moved backwards, and every existing startServer(port) and local-client entry point retains the one-second default. Embedded tooling can also observe typed consumer readiness instead of confusing an open connection with a registered message handler.

Compatibility and RC status

  • RC2 introduces no new Model persisted or wire format compared with RC1.
  • Existing Aggregate, messaging, search, scheduling and web applications remain supported.
  • Runtime 2.0 remains compatible with 1.x SDK clients.
  • SDK 2.0 can use a 1.x Runtime for existing non-Model capabilities; new Model persistence requires Runtime 2.0.
  • RC2 artefacts are immutable prereleases. Stable latest images, stable Javadocs and stable site signals remain untouched.
Component Release
Maven BOM io.fluxzero:fluxzero-bom:2.0.0-RC2
Test Server image ghcr.io/fluxzero-io/fluxzero-sdk-java/fluxzero-test:2.0.0-RC2
Proxy image ghcr.io/fluxzero-io/fluxzero-sdk-java/fluxzero-proxy:2.0.0-RC2
Javadocs 2.0.0-RC2

Explore the current 2.0 API