> **Plain-language companion:** [v0.101.0.md](v0.101.0.md) ## v0.101.0 — Exact relational state and semantic depth **Status: Released.** This release closes the highest-value relational-state gaps without exposing implementation counters in user-visible stream tables. ### State and admission | ID | Title | Status | |----|-------|--------| | REL-101-1 | Durable private multiplicity state for INTERSECT and EXCEPT | ✅ Complete | | REL-101-2 | Exact NULL, duplicate, last-occurrence, and repeated-retraction semantics | ✅ Complete | | REL-101-3 | One private-state lifecycle for generation, readiness, rebuild, cleanup, restore, and clone | ✅ Complete | ### Aggregate semantics | ID | Title | Status | |----|-------|--------| | AGG-101-1 | Bounded DISTINCT aggregate state admission | ✅ Complete | | AGG-101-2 | PostgreSQL overload-specific numeric behavior | ✅ Complete | | AGG-101-3 | Repeated-retraction, empty-group, and overflow coverage | ✅ Complete | ### Recommended implementation order 1. Define the private state relation and its identity-generation contract. 2. Populate, update, rebuild, and invalidate set-operation state without changing the visible stream-table row shape. 3. Add mutation-by-mutation set-operation tests before widening admission. 4. Admit only the DISTINCT aggregate forms with a bounded equality contract. 5. Verify numeric overload behavior and lifecycle recovery paths. 6. Run the release qualification suite and record the candidate evidence. ### Exit criteria - [x] INTERSECT, INTERSECT ALL, EXCEPT, and EXCEPT ALL preserve exact multiset parity through FULL refreshes, including duplicate and invisible-row state. - [x] NULLs, duplicates, last-occurrence transitions, empty groups, and overflow behavior are covered by tests. - [x] Private state is versioned, owned, ready before use, rebuilt after invalidation, and cleaned up on drop. Set-operation differential admission remains fail-closed until mutation-by-mutation delta support is proven. - [x] Query changes, reinitialization, upgrade registration, and failed refreshes safely invalidate or roll back private state. - [x] DISTINCT aggregate admission remains fail-closed outside the documented bounded subset. - [x] Numeric behavior is documented and tested per PostgreSQL overload. - [x] JSONB and array identity paths remain explicitly out of scope. - [x] Release gates, integration tests, focused E2E tests, and version synchronization pass for the release candidate.