Repository navigation
2.13.0 – Oct 4, 2026
2.13.0 (2026-10-04)
Features
modeling: expose bounded contract diagnostics (
10206f1)Model read failures now carry useful contract and operation context while retaining their existing exception superclass and original cause. Explicit, bounded, namespace-scoped diagnostics help identify missing or incompatible local contracts without claiming replay compatibility or importing types automatically. Existing functional exception handling remains unchanged.
Bug Fixes
search: preserve stored metadata during document migration (
c7ea923)Higher-revision
@HandleDocumentreplacements now retain the metadata from the exact stored document, including through upcasting. Returning aMessageexplicitly replaces payload and the complete metadata map; document identity and indexed-time rules remain unchanged. Custom serializers can retain source attribution withDocumentMessageReader.retainSource. Metadata-free documents use a lightweight path that avoids rebuilding document entries.
Performance Improvements
search: avoid rebuilding metadata-free document entries (
ceec68d)Scan stored document paths before reconstructing metadata and skip discarded strings without allocating them. Reuse the original parser when metadata exists so duplicate ordering and source attribution remain intact.
Documentation
modeling: define snapshot counts as cleanup targets (
0f158ca)Snapshot count documentation now describes
maxSnapshotCountas a cleanup target: concurrent writes may temporarily retain extra snapshots, which a later bounded write cleans up. Unlimited retention and snapshot durability remain unchanged.search: clarify custom serializer source attribution (
22b89e6)Explain explicit source transfer when serializers reconstruct document envelopes and distinguish replacement payload and metadata from ignored Message envelope fields.
Tests
modeling: wait for reindex contract assertions (
a9aa636)Retry pending projection and cutoff assertions instead of silently accepting them. Propagate unrelated failures so guarded reindex checks cannot proceed before their prerequisites hold.