Skip to content

Fluxzero 2.0.0-RC5

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 02 Sep 14:03
· 65 commits to main since this release
aa948d3

Fluxzero 2.0.0-RC5 is a focused stabilization and API-coherence release for the new Model platform. It makes Model storage intent explicit, adds direct relationship-ID search, and closes correctness gaps around document-only Models, recursive deletes, and cache invalidation.

Model persistence says what is stored

Persistence and public search are now separate choices:

@Model(
        persistence = {
                ModelPersistence.EVENT_SOURCED,
                ModelPersistence.DOCUMENT
        },
        document = @DocumentProjection(searchable = false))
public record Task(
        @EntityId TaskId taskId,
        @Parent(pathInParent = "tasks") ProjectId projectId,
        TaskDetails details) {
}

persistence selects the durable representations and authoritative load path. DocumentProjection.searchable only controls whether the current document is exposed through an unrestricted typed search. A reference-only document remains available for direct loads, relationships, and Graph composition.

Search by known parent or ancestor identity

A known typed ID can now start directly from Fluxzero's durable relationship index. The related parent or ancestor does not need a public document:

List<Task> projectTasks = Fluxzero.search(Task.class)
        .whereParent(projectId)
        .fetch(100);

List<Task> organisationTasks = Fluxzero.search(Task.class)
        .whereAncestor(organisationId)
        .fetch(100);

Content-based whereParent and whereAncestor searches remain available when the related identity is not known.

Correctness and runtime parity

RC5 also strengthens the less visible paths that matter in production:

  • Document-authoritative Models can be created, repeatedly updated, deleted, and recreated without reconstructing nonexistent event history.
  • Recursive owned-descendant deletes validate the complete closure before mutation in both TestFixture and the Runtime.
  • Deep cascade conflicts rebase from the actual missing descendant boundary.
  • Hard deletes release cache-refresh waiters independently of asynchronous eviction notification timing.
  • Self-tracking and automatic Model handlers reject unrelated payload types before deserialization.
  • README navigation and the Model persistence guidance have been refreshed.

Compatibility

Use SDK 2.0.0-RC5 together with Runtime 2.0.0-RC5. This remains a release candidate intended for validation before the final 2.0 release.

Compare RC4...RC5