Changelog — page 8
New features, improvements, and fixes in the Fluxzero SDK.
Sep 23, 2026 · 1.292.0
Section titled “Sep 23, 2026 · 1.292.0”GitHub
Sep 23, 2026 · 1.292.0
Section titled “Sep 23, 2026 · 1.292.0”Sep 22, 2026 · 2.0.0-rc.19
Section titled “Sep 22, 2026 · 2.0.0-rc.19”GitHub
Sep 22, 2026 · 2.0.0-rc.19
Section titled “Sep 22, 2026 · 2.0.0-rc.19”Fluxzero 2.0.0-rc.19
This candidate hardens Model concurrency, current Graph reads and polymorphic IDs.
Model concurrency and command results
- A rejected command no longer closes its enclosing message batch or fails unrelated in-flight Model results.
- Overlapping asynchronous Model commits coordinate within the tracking batch while independent scopes remain parallel.
- Commands that read provisional state reevaluate after their predecessors settle, including after a predecessor is rejected. Each command receives its own validation or commit outcome.
- Ordinary handlers still wait for successful persistence before publishing results derived from provisional state. Genuine batch aborts remain terminal.
Graph reads and aliases
- Missing aliased companion Models remain absent instead of resolving to an unrelated parent with the same functional ID.
- Fresh current DOCUMENT-backed Graph reads resolve identity and value coherently during concurrent creation, replacement and deletion, with bounded retries.
- Historical, already pinned and transactional Graphs retain their read boundary. An explicitly current DOCUMENT root captures its value when the view is created.
- Simple DOCUMENT mutations acquire an additional transactional read boundary lazily when needed, avoiding an unconditional extra lookup for ordinary writes.
Polymorphic IDs
Ambiguous ID properties such as Id<?> now retain their concrete identity through serialization. Model IDs use
{"name":"logical-model-name","id":"functional-id"}; other ID types use @class and id.
Parent allowlists and declared type constraints remain enforced. Concrete ID properties keep their scalar representation,
and explicit Jackson contracts remain supported.
Custom ID subtype deserializers retain their property context; OpenAPI describes polymorphic ID arrays and containers
with the same wire shape as individual IDs.
Upgrade readers before writers start emitting the new polymorphic representation. Historical scalar values on an ambiguous polymorphic property cannot be inferred safely; provide an application upcaster where needed.
The candidate includes expanded concurrency, serialization, Graph and transport regression coverage, with matching Java/Kotlin documentation. This is a prerelease, not the final 2.0 release.
Sep 22, 2026 · 1.291.0
Section titled “Sep 22, 2026 · 1.291.0”GitHub
Sep 22, 2026 · 1.291.0
Section titled “Sep 22, 2026 · 1.291.0”Sep 21, 2026 · 2.0.0-rc.18
Section titled “Sep 21, 2026 · 2.0.0-rc.18”GitHub
Sep 21, 2026 · 2.0.0-rc.18
Section titled “Sep 21, 2026 · 2.0.0-rc.18”Context isolation, HTTP correctness and lower proxy memory use
- Restore the physical message context after nested local handling, preventing later dispatches on the same worker from inheriting stale correlation data.
- Decode path parameters once after route matching, preserving literal plus signs, raw-path routing and safe static-resource resolution.
- Decompress gzip web responses before typed deserialization and upcasting.
- Read streamed web responses as raw body bytes, including asynchronous static-file fixtures and JSON streams. Preserve stream ownership during gzip conversion and avoid decompressing empty HEAD responses.
- Start proxy response headers with an 8 KiB buffer while retaining the separate maximum header size. Add explicit direct/heap output-buffer configuration.
- Expand guidance on domain structure, local integration commands, auditable outbound HTTP and event transitions versus document reconciliation.
- Stabilize cache cleanup regression tests and incorporate dependency updates.
Known boundaries
HTTP/1.1 response-header growth retains the documented Jetty persistence limitation; see the buffer guidance.
This is a release candidate, not 2.0 GA. Java 25 or newer is required.
Sep 21, 2026 · 1.290.0
Section titled “Sep 21, 2026 · 1.290.0”GitHub
Sep 21, 2026 · 1.290.0
Section titled “Sep 21, 2026 · 1.290.0”Sep 21, 2026 · 1.289.0
Section titled “Sep 21, 2026 · 1.289.0”GitHub
Sep 21, 2026 · 1.289.0
Section titled “Sep 21, 2026 · 1.289.0”Sep 21, 2026 · 1.288.0
Section titled “Sep 21, 2026 · 1.288.0”GitHub
Sep 21, 2026 · 1.288.0
Section titled “Sep 21, 2026 · 1.288.0”Sep 21, 2026 · 1.287.0
Section titled “Sep 21, 2026 · 1.287.0”GitHub
Sep 21, 2026 · 1.287.0
Section titled “Sep 21, 2026 · 1.287.0”Sep 18, 2026 · 1.286.0
Section titled “Sep 18, 2026 · 1.286.0”GitHub
Sep 18, 2026 · 1.286.0
Section titled “Sep 18, 2026 · 1.286.0”Sep 18, 2026 · 1.285.0
Section titled “Sep 18, 2026 · 1.285.0”GitHub
Sep 18, 2026 · 1.285.0
Section titled “Sep 18, 2026 · 1.285.0”Sep 17, 2026 · 2.0.0-rc.17
Section titled “Sep 17, 2026 · 2.0.0-rc.17”GitHub
Sep 17, 2026 · 2.0.0-rc.17
Section titled “Sep 17, 2026 · 2.0.0-rc.17”Model correctness and embedded members
- Embedded
@Memberhandlers now participate in their owning Model's atomic update, assertions, dependency tracking and replay. Concrete handlers on open member subtypes are supported when the owner is explicitly addressed. - Physical deletion plans retain grandchildren and deeper descendants after a logical cascade, without including previously detached or moved Models.
- In-memory document updates remain available to consumers that register later. TestFixture tracks pending document revisions independently.
- Accepted first creations can seed the Model cache while a tracked update page is still processing, avoiding redundant replay reads without weakening fences against later updates or deletion.
- Expanded storage, publication, lifecycle, member and concurrency contract tests, with updated Java/Kotlin guidance and dependency updates from main.
Existing candidate data
Previously stored events follow the corrected member behavior during replay. If an old snapshot was built while member handlers were skipped, reconstruct the affected state from event history rather than trusting that snapshot. Previously incomplete deletion-lineage metadata is not automatically repaired; verify the selected deletion plan before erasing retained candidate data.
This is a prerelease. Java 25 or newer is required.
Sep 17, 2026 · 1.284.0
Section titled “Sep 17, 2026 · 1.284.0”GitHub
Sep 17, 2026 · 1.284.0
Section titled “Sep 17, 2026 · 1.284.0”Sep 17, 2026 · 1.283.0
Section titled “Sep 17, 2026 · 1.283.0”GitHub
Sep 17, 2026 · 1.283.0
Section titled “Sep 17, 2026 · 1.283.0”Sep 16, 2026 · 2.0.0-rc.16
Section titled “Sep 16, 2026 · 2.0.0-rc.16”GitHub
Sep 16, 2026 · 2.0.0-rc.16
Section titled “Sep 16, 2026 · 2.0.0-rc.16”Sep 16, 2026 · 2.0.0-rc.15
Section titled “Sep 16, 2026 · 2.0.0-rc.15”GitHub
Sep 16, 2026 · 2.0.0-rc.15
Section titled “Sep 16, 2026 · 2.0.0-rc.15”Fluxzero SDK 2.0.0-rc.15
This release candidate fixes command validation and conflict recovery for Models.
- Targeted Graph updates keep command safeguards.
graph.assertAndApply(command)now runs applicable assertions on the effective command even when they read another Model. Their dependencies participate in conflict detection, while writes remain limited to the selected Model. - RETRY is the default for both updates and creations. Without an explicit override, changed dependencies trigger a fresh evaluation regardless of
fluxzero.defaults.version. Explicit policies retain their precedence. - Create-only remains create-only. A factory cannot overwrite a Model created by another writer while the command was being evaluated.
- Staged Graph updates recover correctly from conflicts. Retry reevaluates update functions against a fresh snapshot and preserves the original absence condition, including chained updates, multiple targets and previously deleted Models.
Java and Kotlin guidance and public API documentation have been aligned with these contracts.
This is a prerelease, not the 2.0 GA release.
Known issue: in synchronous local handling, a Model conflict retry can complete after TestFixture checks its result,
causing an intermittent test timeout. A correction has been merged into next/2.0 but is not included in this immutable
release.
Sep 16, 2026 · 2.0.0-rc.14
Section titled “Sep 16, 2026 · 2.0.0-rc.14”GitHub
Sep 16, 2026 · 2.0.0-rc.14
Section titled “Sep 16, 2026 · 2.0.0-rc.14”Fluxzero SDK 2.0.0-rc.14
This release candidate hardens Model and Graph reads, mutations and replay.
- Manual Graph reads inside Model assertions and applies now retain their transaction dependencies, including consumed alias bindings and nested validation references.
- New detached Graph views observe completed relationship changes regardless of whether the root value, presence or children are read first. Historical views retain their event boundary.
- Direct Graph creation distinguishes an absent Model head from the Graph snapshot. Concurrent creation and update protection remain intact.
- Cold replay preserves explicitly selected Model identities and compatible concrete types without collapsing distinct read dependencies or widening explicitly typed parameters.
- Historical ancestor navigation retains the relationship boundary before deletion or reparenting.
- Cache reuse keeps ownership and validity checks; ordinary successful cached mutations do not acquire an unconditional freshness request.
- Java and Kotlin documentation clarify ordered atomic updates and the exact previous-state boundary of cascaded deletions.
- Embedded test-server interface binding and proxy listener isolation improve concurrent local test execution.
The changes include deterministic regression coverage for creation, cold replay, historical relationships, cache freshness, conflict handling and rollback, plus complete downstream application qualification.
This is a prerelease, not the 2.0 GA release.
Sep 16, 2026 · 1.282.0
Section titled “Sep 16, 2026 · 1.282.0”GitHub
Sep 16, 2026 · 1.282.0
Section titled “Sep 16, 2026 · 1.282.0”Sep 16, 2026 · 1.281.0
Section titled “Sep 16, 2026 · 1.281.0”GitHub
Sep 16, 2026 · 1.281.0
Section titled “Sep 16, 2026 · 1.281.0”Sep 16, 2026 · 1.280.0
Section titled “Sep 16, 2026 · 1.280.0”GitHub
Sep 16, 2026 · 1.280.0
Section titled “Sep 16, 2026 · 1.280.0”Sep 15, 2026 · 1.279.0
Section titled “Sep 15, 2026 · 1.279.0”GitHub
Sep 15, 2026 · 1.279.0
Section titled “Sep 15, 2026 · 1.279.0”© 2026 Fluxzero