Patch release. Bundles fixes and test-coverage additions that landed after the v0.9.6 tag. Contains the E4 hardening work from v0.9.6 plus the changes below.
Added
verify_crdt_concurrent— threaded CRDT law verification harness usingconcurrent.futures(issue #44)- Full unicode normalization test matrix — NFC/NFD/NFKC/NFKD across both keys and values, surrogate pairs, combining characters, zero-width joiners (issue #92)
Fixed
- SQLite accelerator:
# nosecannotations placed inside SQL string literals causedsqlite3.OperationalError: unrecognized token: "#", blockingSQLiteCRDTMerge()instantiation _make_composite_keynow NFC-normalizes string keys, matching the NFC-before-comparison policy already applied to string valuestest_version_consistencyreads the version frompyproject.tomldynamically instead of pinning a literal_resolve_dotted_pathtests aligned with the hardenedcrdt_merge.*namespace allowlist
CI
- Bumped GitHub Actions across all workflows: actions/checkout v4→v6, actions/setup-python v5→v6, actions/upload-artifact v4→v7, github/codeql-action v3→v4
Compatibility
Zero breaking changes. All 6,287 existing tests continue to pass.
Full changelog: https://github.com/mgillr/crdt-merge/blob/main/CHANGELOG.md