Table of Contents

Release 2026-08-15

This page is part of the documentation for Orleans.Lattice 9.9.0 (release line 9.9), built 2026-10-04. It is also published as markdown, with every table and list, at 2026-08-15.md, and llms.txt lists every page.

Part of the changelog.

A same-day per-package patch advances Orleans.Lattice to 9.0.2 (see Fixed); all other packages remain at their 9.0.x/9.0.0 versions.

Fixed

  • The WAL GC no longer trims committed-but-not-yet-checkpointed data for a WAL partition whose protective block pin was overwritten on another partition's first checkpoint. The durable-materialiser pin offset -1 is overloaded: it means both "empty partition, safe to trim" and "partition holds committed WAL data never durably checkpointed, so it depends on the whole WAL from offset 0". On the first checkpoint of any partition the leaf upgraded every partition's pin to (clock, checkpoint), replacing a data-bearing un-checkpointed partition's protective (Zero, -1) block pin with (clock, -1); because the WAL GC skips -1 offsets when computing the cross-partition offset floor, the global-min floor from the checkpointed partitions then authorised trimming that partition's live low-offset entries, silently losing them on the leaf's next cold rebuild (no restart needed, since foreground writes never checkpoint). Both pin-reporting branches now route through a leaf-side resolver that keeps the (Zero, -1) block pin when a partition is un-checkpointed and still holds live cache data (detected via a single WalPartitionHash.Compute pass, tombstones counting as live); genuinely empty partitions still report (clock, -1) so normal trim proceeds. Distinct from and complementary to the 9.0.1 offset-floor fix. (Orleans.Lattice 9.0.2, #1489, #1490)