Skip to content

JasperFx 2.69.0

Choose a tag to compare

@jeremydmiller jeremydmiller released this 12 Sep 23:56
· 105 commits to main since this release

Compliance suites

#818 — ProjectionStatusCompliance, and a ruling on what ShardStatus means. Three stores had independently decided what the same five fields meant. ShardStatus.State is now a fact about the running daemon: a store that can reach one reports what it says, a store that cannot reports Unknown, which is distinct from Stopped. The inventory is projections, not shards. Reading statuses never starts a daemon, and EventStoreSequence is the head of the store rather than the high-water row. New ShardStatusState vocabulary. Downstream: marten#5383, polecat#589, fisher#243.

#819 — GuidOptimisticConcurrencyCompliance. There was no shared suite for Guid optimistic concurrency on any store, and two stores shipped the same field broken in two different ways (fisher#245, marten#5372). Five paired facts, plus DocumentComplianceConfig.UseOptimisticConcurrency<T>() / UseNumericRevisions<T>().

#810 — multi-database arms for the explorer reads. DatabasePerTenantExplorerCompliance pins that a store-global read on a multi-database store is not a silent partial answer; ShardedTenancyExplorerCompliance pins the tenant_id predicate on a store where many tenants share a database. New seams: ComplianceStoreConfig.TenantDatabases, SupportsMultipleDatabases, DatabaseForTenantAsync.

Event Modeling

#823 — EventModelDescriptor.Links. Cross-slice cause→effect relationships, computed on read from the roles slices already stamp and never accepted as input. The join is public and pure (EventModelLinks.Compute) so consumers share one rule rather than keeping copies.

#824 — ConsumedEvents, ReadsFrom, Chapter. The vocabulary recorded what a slice produced and never what it read, so the State View arrow and the Automation input edge could not be drawn at all.

#825 — ProjectionEventModelSource. The store-derived rung: one View slice per registered projection, read out of IEventStore — so a View slice no longer appears on a canvas only when a human wrote one down. Store-agnostic; merges by document-type name with a spec-declared slice.


Validated before release by packing locally and building against Marten, Polecat and Fisher.