Fluxzero 2.0.0-RC2 — Sharper Models, Reliable Dev Startup
Pre-releaseFluxzero 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
latestimages, 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 |