Fluxzero 2.0.0-RC8
Pre-release2.0.0-RC8 (2026-09-10)
Features
publishing: add fail-closed local dispatch (
00d253f)Introduce @LocalOnly for commands and queries so absent or ambiguous local request handlers cannot fall through to the Runtime. Preserve ordinary location-transparent dispatch and require custom registries to explicitly support exact selection.
eventsourcing: bound aggregate history pages (
8b712bb)Add an optional mixed-version-safe payload-byte limit alongside the existing event-count bound. Preserve exact paging progress for short and oversized pages, resolve configuration per application, and align the TestServer contract.
eventsourcing: bound aggregate history pages (
d37c65d)Add an optional mixed-version-safe payload-byte limit alongside the existing event-count bound. Preserve exact paging progress for short and oversized pages, resolve configuration per application, and align the TestServer contract.
publishing: add fail-closed local dispatch (
be647ef)Introduce @LocalOnly for commands and queries so absent or ambiguous local request handlers cannot fall through to the Runtime. Preserve ordinary location-transparent dispatch and require custom registries to explicitly support exact selection.
modeling: add safe retry defaults and canonical model routing (
32e71df)Separate apply dependencies from assertion-only reads for ACCEPT while retaining complete RETRY validation and strict implicit creation. Infer routing only for unambiguous Model targets, preserve explicit routing, and gate the new defaults per application.
serialization: resolve registered wire type names (
c18b95b)Accept unique registered simple and partial type identifiers across message envelopes, nested JSON and fixtures while preserving alias and upcaster ordering and direct FQN resolution. Document shared ApplicationProperties resources and leave custom uber-JAR resource merging to applications.
serialization: support package type aliases (
8d63a58)Resolve multiple exact and package-prefix aliases deterministically after revision upcasting. Expose builder, property, and fixture configuration while keeping the unconfigured deserialization path allocation-free.
serialization: support untyped JSON sequences (
c2e432e)Load root arrays and newline-delimited resources element by element so fixture setup can preserve order, per-record type resolution, revision metadata, and user context.
Bug Fixes
modeling: protect Model events while integrating main (
f3a3719)Preserve v2 dispatch paths while incorporating deferred local data protection and current main fixes. Redact restored and replaced Model updates at the durable boundary, retain erasure provenance, and restore available private values for replay without hiding vault failures.
Keep serialized extensions intact and fail closed for unsupported private-data mappings or unstable representations. Unprotected updates retain their serialized-data fast path.
dataprotection: avoid KV round trips for local messages (
9fa7ef7)Protected values for locally handled messages no longer need a Runtime KV round trip. Defer externalization until external fallback or SDK-managed logMessage publication, while preserving incoming-reference and custom-registry behavior.
keyvalue: redact values from write failures (
9549b18)Failed key-value writes should retain their diagnostic key and cause without rendering the value into exception text. This prevents protected or otherwise sensitive payloads from leaking through exception logs and avoids value rendering from masking the original failure.
modeling: validate recursive Model assertions (
f493ad7)Traverse returned validation objects and annotated fields without losing phase, invocation context or pinned Model dependencies. Preserve direct assertions and keep validation out of ACCEPT rebase and replay.
web: merge OpenAPI resources deterministically (
714aaf2)Applications may expose generated or maintained specifications from several modules. Discover every visible resource, combine compatible definitions, and reject ambiguous contracts before serving the endpoint.
websocket: cap reconnect backoff at sixteen seconds (
55a9094)Keep equal-jitter reconnects responsive during medium outages by limiting the exponential ceiling to sixteen seconds. This retains fleet desynchronization while reducing the worst-case delay after Runtime recovery.
websocket: bound recovery work during outages (
d7a0f5c)Keep opt-in transport diagnostics single-flight and timeboxed on a dedicated lifecycle worker. Add a versioned, explicitly overridable capped equal-jitter reconnect policy so existing compatibility defaults remain stable.
web: close generated OpenAPI request contracts (
07e2910)Mark required request bodies explicitly and retain supported map type-use constraints across runtime and compile-time generation. Keep OpenAPI 3.0 output valid while expressing map-key validation in 3.1 and preserving Jackson deduction semantics.
websocket: cap reconnect backoff at sixteen seconds (
e96e177)Keep equal-jitter reconnects responsive during medium outages by limiting the exponential ceiling to sixteen seconds. This retains fleet desynchronization while reducing the worst-case delay after Runtime recovery.
web: merge OpenAPI resources deterministically (
5c07a35)Applications may expose generated or maintained specifications from several modules. Discover every visible resource, combine compatible definitions, and reject ambiguous contracts before serving the endpoint.
web: close generated OpenAPI request contracts (
fa5e1ae)Mark required request bodies explicitly and retain supported map type-use constraints across runtime and compile-time generation. Keep OpenAPI 3.0 output valid while expressing map-key validation in 3.1 and preserving Jackson deduction semantics.
websocket: bound recovery work during outages (
94dff9a)Keep opt-in transport diagnostics single-flight and timeboxed on a dedicated lifecycle worker. Add a versioned, explicitly overridable capped equal-jitter reconnect policy so existing compatibility defaults remain stable.
web: preserve compiled Model graph types during enrichment (
83fff46)Combine generated Model type evidence with the application registry so partially initialized applications can serve selected graph schemas. Keep schema bindings, per-document isolation and invalid-path validation intact.
modeling: preserve context through commit retries (
d795028)Keep the captured application context active during rebase preparation and delayed admission submission, including custom serialization and dispatch interception. Restore the completion thread context after each continuation.
modeling: release completed admission dependencies (
8287a35)Discard predecessor references once admission is granted so sustained overlap cannot retain an unbounded completed chain. Preserve visibility of progress and transport state across completion threads.
- serialization: expose alias-aware JSON input (
9315e44) serialization: apply aliases across JSON type metadata (
bd0a53b)Preserve historical type names through revision upcasting, then resolve aliases for nested polymorphic JSON, typed message metadata, and unrevisioned fixture roots. Keep raw metadata and unmatched deserialization on their existing representation.
web: align OpenAPI object constraints (
5e3c960)Expose closed unions and explicit unknown-property policies in generated schemas, while mapping size validation to the matching schema shape.
Performance Improvements
publishing: cache local-only scope decisions (
ad845a5)Keep immutable positive and negative annotation decisions in the central type metadata cache. Preserve dynamic handler selection and checks of both original and interceptor-replaced payloads.
publishing: cache local-only payload scope decisions (
afb58f9)Resolve immutable annotation scope once through central type metadata, including negative decisions. Keep handler selection and interceptor replacement dynamic across applications.
Documentation
modeling: define intercepted assertion semantics (
aeb1fc3)Document which AssertLegal methods apply when InterceptApply retains, suppresses, replaces, or splits an update. Lock the existing sequence with focused state-aware regression tests without adding a noisy runtime diagnostic.
packages: align setup, policies, and checksum publishing (#340) (
5a58d05)* docs(packages): align installation and policies with public repository
* chore(packages): refine policies and checksum publishing
Keep public-package disclosures concise while preserving processing, retention, transfer, and license information. Configure Maven publishing to include SHA-256 and SHA-512 alongside the existing checksum formats.
modeling: define intercepted assertion semantics (
eb2e298)Document which AssertLegal methods apply when InterceptApply retains, suppresses, replaces, or splits an update. Lock the existing sequence with focused state-aware regression tests without adding a noisy runtime diagnostic.
serialization: prioritize property-based alias setup (
03802e4)Lead with application properties and conventional environment variables across human and agent guidance, while retaining builder methods as explicit programmatic overrides. Require all future configuration features to use the shared ApplicationProperties infrastructure instead of feature-specific property resolution.
serialization: cover type aliases for humans and agents (
3ce3c51)Explain when aliases replace or complement upcasters, including builder and property configuration and JSON fixture type resolution. Keep the README, developer guides, and Java and Kotlin agent manuals aligned, and codify that documentation-surface expectation.
Dependency updates
bump org.slf4j:slf4j-api from 2.0.18 to 2.0.19 (
674854a)org.slf4j:slf4j-api: 2.0.18 -> 2.0.19
Code Refactoring
publishing: simplify local-only dispatch (
54576a9)Make LocalOnly mean that only existing local handlers run for every message type. Requests without a local handler fail through their future, while non-requests complete without external publication; package scopes and explicit overrides define the boundary without a separate handler-selection model.
publishing: simplify local-only dispatch (
339767a)Apply the local-only boundary to every message type while retaining the v2 gateway's parallel serialization and model-handler paths. Requests without a local handler fail through their future; non-requests complete without external publication, and package scopes support explicit overrides.
Continuous Integration
ci: remove automatic main repair workflow [skip ci] (
2aea3e2)Failed main builds now remain ordinary CI failures and no longer start Codex, create repair branches, or open pull requests.
release: use source commit timestamps for Maven archives (
e5a3a06)Read the source commit timestamp through the POM for release builds and preserve it when setting the release version. Keep Packages publication before Central.
release: use the dedicated Packages upload endpoint (
3286552)Use /publish/maven for SDK uploads and the GitHub OIDC audience while keeping public Maven downloads at /maven. Preserve signing and publication to Packages before Maven Central.
release: publish SDK to Fluxzero Packages before Central (
bc975a6)Add GitHub OIDC publication to the existing build job and retain Central publication afterward. Share signing through the sign profile while keeping the Central extension optional, so Central can be retired independently.
Build System
java: require Java 25 for SDK v2 (
76e6cd3)Remove older-JDK worker fallbacks while preserving the existing Java 25 execution policy, admission limits and public utility signatures. Align Java and Kotlin consumer builds and documentation with the new baseline.
BREAKING CHANGE: SDK v2 artifacts require Java 25 or newer to compile and run. The SDK 1.x release line is unchanged.
Tests
modeling: await initial cache publication before advancing tracker (
6601a30)Establish the intended current-cache precondition before the asynchronous tracker advances. A load published after that advance correctly needs a fresh proof and must not race this unrelated-update assertion.
Chores
release: integrate SDK RC8 candidate (
4156fcf)Integrate current main and the qualified v2 fixes, including durable Model event protection and replay restoration, for the matching RC8 prerelease.
integration: merge main into SDK v2 (
8e2abe1)Retain v2 compact metadata, byte-range serialization and release defaults while incorporating main's type aliases and publication changes.
Reuse normalized inputs and bound alias detection work to preserve deserialization fast paths.
Changes
merge(v2): integrate latest main updates (
bc9a704)Keep the already ported SDK fixes and v2 Model behavior while incorporating the current packaging guidance and CI changes.
merge(v2): combine main ports with Model hardening (
aaca711)Preserve the main compatibility ports alongside the later Model conflict, routing and graph corrections and Java 25 baseline.