---
title: Release digest for week of 2026-05-18 to 2026-05-25
---

## Added
- **Chronicle.TypeScript** ([Release v0.2.0](https://github.com/Cratis/Chronicle.TypeScript/releases/tag/v0.2.0)): Top-level module re-exports from the package entrypoint to support module-style consumption.
- **Chronicle.TypeScript** ([Release v0.2.0](https://github.com/Cratis/Chronicle.TypeScript/releases/tag/v0.2.0)): Explicit top-level subpath exports in `Source/package.json` for redistributable module access.
- **Chronicle** ([Release v15.31.0](https://github.com/Cratis/Chronicle/releases/tag/v15.31.0)): New Roslyn analyzers CHR0015–CHR0021 for projections, constraints, and event types, with documentation for each rule. (#1669)
- **Chronicle** ([Release v15.31.0](https://github.com/Cratis/Chronicle/releases/tag/v15.31.0)): Replay lifecycle notification hooks for reducers and reactors so handlers can react when a replay or partition replay starts and ends. (#1820)
- **Chronicle** ([Release v15.31.0](https://github.com/Cratis/Chronicle/releases/tag/v15.31.0)): Tail event sequence numbers in observer, reducer, reactor, and projection state APIs. (#587)
- **Fundamentals** ([Release v7.10.0](https://github.com/Cratis/Fundamentals/releases/tag/v7.10.0)): `Cratis.Traces` abstractions and implementations: `IActivitySource<T>`, `IActivityScope<T>`, `ActivitySource<T>`, `ActivityScope<T>`, and `SpanAttribute`
- **Fundamentals** ([Release v7.10.0](https://github.com/Cratis/Fundamentals/releases/tag/v7.10.0)): Generator support for `[Span]` methods that start activities and map method parameters to tags
- **Fundamentals** ([Release v7.10.0](https://github.com/Cratis/Fundamentals/releases/tag/v7.10.0)): Analyzer `CRT0001` to require `using` disposal semantics for `IActivityScope<T>` call sites
- **Fundamentals** ([Release v7.10.0](https://github.com/Cratis/Fundamentals/releases/tag/v7.10.0)): `Documentation/csharp/traces/index.md` and `Documentation/csharp/traces/roslyn.md` for the trace API and generated span support
- **Fundamentals** ([Release v7.10.0](https://github.com/Cratis/Fundamentals/releases/tag/v7.10.0)): Expanded runtime, AOT, generator, and analyzer specs for trace behavior and diagnostics
- **Fundamentals** ([Release v7.10.0](https://github.com/Cratis/Fundamentals/releases/tag/v7.10.0)): Roslyn spec coverage for generated trace extension methods, including tag generation
- **Arc** ([Release v20.26.0](https://github.com/Cratis/Arc/releases/tag/v20.26.0)): Added typed `CommandForm` radio fields (`RadioButtonField`, `RadioGroupField`) with docs, stories, typecheck coverage, and field behavior specs (#2228)
- **Arc** ([Release v20.26.0](https://github.com/Cratis/Arc/releases/tag/v20.26.0)): Added regression coverage for generated-style command `.use()` registration inside `CommandScope` (#2227)
- **Arc** ([Release v20.26.0](https://github.com/Cratis/Arc/releases/tag/v20.26.0)): Added hierarchical messaging primitives in `@cratis/arc/messaging`, React messenger scope APIs, and scoped messaging docs/specs across Core/React/MVVM (#2231)
- **Components** ([Release v1.10.2](https://github.com/Cratis/Components/releases/tag/v1.10.2)): Introduced dynamic theme switching for PrimeReact components.
- **Arc** ([Release v20.25.0](https://github.com/Cratis/Arc/releases/tag/v20.25.0)): Added typed `CommandForm` radio fields (`RadioButtonField`, `RadioGroupField`) with docs, stories, typecheck coverage, and field behavior specs (#2228)
- **Arc** ([Release v20.25.0](https://github.com/Cratis/Arc/releases/tag/v20.25.0)): Added regression coverage for generated-style command `.use()` registration inside `CommandScope` (#2227)
- **Arc** ([Release v20.25.0](https://github.com/Cratis/Arc/releases/tag/v20.25.0)): Added hierarchical messaging primitives in `@cratis/arc/messaging`, React messenger scope APIs, and scoped messaging docs/specs across Core/React/MVVM (#2231)
- **Narrator** ([Release v1.0.2](https://github.com/Cratis/Narrator/releases/tag/v1.0.2)): Arrow Left / Arrow Right page the Event Sequence viewer backward / forward, alongside the existing Page Up / Page Down shortcuts. Up / Down still move row-by-row within a page.
- **Narrator** ([Release v1.0.0](https://github.com/Cratis/Narrator/releases/tag/v1.0.0)): Browse events in a Chronicle event sequence directly from the Explorer. The Sequences folder under each namespace now lists the well-known event sequences (Event Log, Outbox, System); clicking one opens a paged event viewer (50 per page, bi-directional) with Seq #, Occurred, Event Type and Event Source ID columns.
- **Narrator** ([Release v1.0.0](https://github.com/Cratis/Narrator/releases/tag/v1.0.0)): Details pane on the event viewer with Context / Content tabs, both rendered as key/value property tables.
- **Narrator** ([Release v1.0.0](https://github.com/Cratis/Narrator/releases/tag/v1.0.0)): Keyboard navigation in the event viewer: Up/Down move between rows (transparently paging across page boundaries), Home/End jump to the page edges, PageUp/PageDown move whole pages.
- **Chronicle** ([Release v15.30.2](https://github.com/Cratis/Chronicle/releases/tag/v15.30.2)): TypeScript contract generation now maps proto `int64`/`uint64` fields to `bigint`.
- **Arc** ([Release v20.24.27](https://github.com/Cratis/Arc/releases/tag/v20.24.27)): Added a packaging integration spec (`for_CratisPackage/when_packing_cratis`) that packs `Cratis` and asserts `Cratis.Arc.ProxyGenerator.Build` is present in the generated nuspec dependencies (#2225)
- **Arc** ([Release v20.24.26](https://github.com/Cratis/Arc/releases/tag/v20.24.26)): Added a packaging integration spec (`for_CratisPackage/when_packing_cratis`) that packs `Cratis` and asserts `Cratis.Arc.ProxyGenerator.Build` is present in the generated nuspec dependencies (#2225)
- **Arc** ([Release v20.24.25](https://github.com/Cratis/Arc/releases/tag/v20.24.25)): Updated Chronicle package baselines to `15.30.0` for `Cratis.Chronicle`, `Cratis.Chronicle.AspNetCore`, and `Cratis.Chronicle.Testing`.
- **Fundamentals** ([Release v7.9.19](https://github.com/Cratis/Fundamentals/releases/tag/v7.9.19)): Added a regression spec covering a local implementation of an interface from a non-global aliased assembly
- **Fundamentals** ([Release v7.9.18](https://github.com/Cratis/Fundamentals/releases/tag/v7.9.18)): Added `EnsureGeneratedTypeDiscoveryProvidersAreRegistered()` to load referenced assemblies and execute module constructors prior to generated DI convention lookup.
- **Fundamentals** ([Release v7.9.18](https://github.com/Cratis/Fundamentals/releases/tag/v7.9.18)): Added a dedicated probe test assembly (`Fundamentals.Specs.ModuleInitializerProbe`) that contributes convention-based bindings via generated type discovery.
- **Fundamentals** ([Release v7.9.18](https://github.com/Cratis/Fundamentals/releases/tag/v7.9.18)): Added a regression spec covering the “assembly loaded before module initializer runs” scenario.
- **Fundamentals** ([Release v7.9.17](https://github.com/Cratis/Fundamentals/releases/tag/v7.9.17)): Added `EnsureGeneratedTypeDiscoveryProvidersAreRegistered()` to load referenced assemblies and execute module constructors prior to generated DI convention lookup.
- **Fundamentals** ([Release v7.9.17](https://github.com/Cratis/Fundamentals/releases/tag/v7.9.17)): Added a dedicated probe test assembly (`Fundamentals.Specs.ModuleInitializerProbe`) that contributes convention-based bindings via generated type discovery.
- **Fundamentals** ([Release v7.9.17](https://github.com/Cratis/Fundamentals/releases/tag/v7.9.17)): Added a regression spec covering the “assembly loaded before module initializer runs” scenario.
- **Arc** ([Release v20.24.14](https://github.com/Cratis/Arc/releases/tag/v20.24.14)): Updated Chronicle package baselines to `15.30.0` for `Cratis.Chronicle`, `Cratis.Chronicle.AspNetCore`, and `Cratis.Chronicle.Testing`.
- **Arc** ([Release v20.24.8](https://github.com/Cratis/Arc/releases/tag/v20.24.8)): Added a regression spec for `MongoDBClientFactory` verifying `mongodb://.../?directConnection=true` remains effective when `MongoDBOptions.DirectConnection` is not explicitly set (#3284)
- **Chronicle** ([Release v15.30.0](https://github.com/Cratis/Chronicle/releases/tag/v15.30.0)): `IAppendResultForObserverCompletion` as a shared append-tail contract across append results, including event-store/namespace/sequence context and tail sequence number (#1845)
- **Chronicle** ([Release v15.30.0](https://github.com/Cratis/Chronicle/releases/tag/v15.30.0)): `WaitForCompletion` client extension in `Cratis.Chronicle.Observation` returning `AppendResultWaitForCompletionResult` with completion status and failed partitions (#1845)
- **Chronicle** ([Release v15.30.0](https://github.com/Cratis/Chronicle/releases/tag/v15.30.0)): `IObservers.WaitForCompletion` gRPC contract plus request/response messages for observer completion waits (#1845)
- **Chronicle** ([Release v15.30.0](https://github.com/Cratis/Chronicle/releases/tag/v15.30.0)): Documentation for `WaitForCompletion` usage after both `Append` and `AppendMany` operations (#1845)
- **Chronicle** ([Release v15.30.0](https://github.com/Cratis/Chronicle/releases/tag/v15.30.0)): Integration coverage for append/observer workflows with failing and concurrently processing observers to verify active observer processing behavior during failures (#1845)
- **Arc** ([Release v20.24.6](https://github.com/Cratis/Arc/releases/tag/v20.24.6)): Added command-scenario coverage proving handlers can take direct ReadModel dependencies in Chronicle command tests. (#2212)
- **Arc** ([Release v20.24.6](https://github.com/Cratis/Arc/releases/tag/v20.24.6)): Added Chronicle command-scenario fixtures for the ReadModel dependency test path, including a projection type used for discovery. (#2212)
- **Chronicle** ([Release v15.29.8](https://github.com/Cratis/Chronicle/releases/tag/v15.29.8)): Introduced logging for registration failures.
- **Chronicle** ([Release v15.29.7](https://github.com/Cratis/Chronicle/releases/tag/v15.29.7)): Focused spec coverage ensuring `directConnection=true` is preserved when building MongoDB client settings in the `WithMongoDB` path.
- **Chronicle** ([Release v15.29.6](https://github.com/Cratis/Chronicle/releases/tag/v15.29.6)): Added Storage.MongoDB specs covering `directConnection=true` behavior for `Database`, read-model database creation, `EventStoreDatabase`, and `EventStoreNamespaceDatabase`.
- **Chronicle** ([Release v15.29.4](https://github.com/Cratis/Chronicle/releases/tag/v15.29.4)): Focused spec for `ProjectionDefinitionComparer` validating that `Tags`/`Nested` `null` and empty forms compare as equivalent.
- **Arc** ([Release v20.24.0](https://github.com/Cratis/Arc/releases/tag/v20.24.0)): `CommandScenarioChronicleAssertionExtensions` — new `ShouldHaveAppendedEvent<TCommand, TEvent>()` and `ShouldHaveTailSequenceNumber<TCommand>()` assertion helpers for `CommandScenario<TCommand>`, using the client-side `AppendOperations` observable for reliable event capture
- **Arc** ([Release v20.24.0](https://github.com/Cratis/Arc/releases/tag/v20.24.0)): `AppendedEvents` extension property on `CommandScenario<TCommand>` exposing all events captured during command execution
- **Arc** ([Release v20.24.0](https://github.com/Cratis/Arc/releases/tag/v20.24.0)): Integration specs covering `EventForEventSourceId` and `IEnumerable<EventForEventSourceId>` handler return types via `CommandScenario`
- **Arc** ([Release v20.24.0](https://github.com/Cratis/Arc/releases/tag/v20.24.0)): Pipeline specs for `EventForEventSourceId` and `IEnumerable<EventForEventSourceId>` command handler execution

## Changed
- **Chronicle.TypeScript** ([Release v0.2.0](https://github.com/Cratis/Chronicle.TypeScript/releases/tag/v0.2.0)): Consolidated the feature work from the open PR branches into this integration PR.
- **Chronicle.TypeScript** ([Release v0.2.0](https://github.com/Cratis/Chronicle.TypeScript/releases/tag/v0.2.0)): Renamed `Source` module folders from PascalCase to camelCase across the package.
- **Chronicle.TypeScript** ([Release v0.2.0](https://github.com/Cratis/Chronicle.TypeScript/releases/tag/v0.2.0)): Updated internal imports/re-exports to match the new module folder naming.
- **Chronicle.TypeScript** ([Release v0.2.0](https://github.com/Cratis/Chronicle.TypeScript/releases/tag/v0.2.0)): Updated JavaScript/TypeScript AI instructions to state the redistributable package convention: camelCase `Source` modules plus top-level package exports.
- **Arc** ([Release v20.26.16](https://github.com/Cratis/Arc/releases/tag/v20.26.16)): Bumped `Cratis.Fundamentals` and `Cratis.Metrics.Roslyn` from `7.9.16` to `7.10.3`.
- **Arc** ([Release v20.26.16](https://github.com/Cratis/Arc/releases/tag/v20.26.16)): Bumped `Testcontainers.MsSql` and `Testcontainers.PostgreSql` from `4.11.0` to `4.12.0`.
- **Arc** ([Release v20.26.16](https://github.com/Cratis/Arc/releases/tag/v20.26.16)): Bumped `Meziantou.Analyzer` from `3.0.85` to `3.0.93`.
- **Arc** ([Release v20.26.15](https://github.com/Cratis/Arc/releases/tag/v20.26.15)): Bumped `Cratis.Fundamentals` and `Cratis.Metrics.Roslyn` from `7.9.16` to `7.10.3`.
- **Arc** ([Release v20.26.15](https://github.com/Cratis/Arc/releases/tag/v20.26.15)): Bumped `Testcontainers.MsSql` and `Testcontainers.PostgreSql` from `4.11.0` to `4.12.0`.
- **Arc** ([Release v20.26.15](https://github.com/Cratis/Arc/releases/tag/v20.26.15)): Bumped `Meziantou.Analyzer` from `3.0.85` to `3.0.93`.
- **Chronicle** ([Release v15.31.0](https://github.com/Cratis/Chronicle/releases/tag/v15.31.0)): Compliance storage documentation now includes Azure Key Vault configuration and authentication guidance. (#685)
- **Chronicle** ([Release v15.31.0](https://github.com/Cratis/Chronicle/releases/tag/v15.31.0)): Event redaction documentation now explains how `EventRedacted` is delivered to reducers and reactors that also subscribe to the original event type. (#890)
- **Fundamentals** ([Release v7.10.0](https://github.com/Cratis/Fundamentals/releases/tag/v7.10.0)): `Cratis.Metrics.Roslyn` generates trace wrappers alongside existing metrics generation
- **Fundamentals** ([Release v7.10.0](https://github.com/Cratis/Fundamentals/releases/tag/v7.10.0)): Typed `IMeter<>` and `IActivitySource<>` open generics are registered through DI
- **Fundamentals** ([Release v7.10.0](https://github.com/Cratis/Fundamentals/releases/tag/v7.10.0)): Tag generation supports snake_case trace tags, including acronym-aware conversion
- **Fundamentals** ([Release v7.10.0](https://github.com/Cratis/Fundamentals/releases/tag/v7.10.0)): The C# documentation table of contents includes the new traces section
- **Fundamentals** ([Release v7.10.0](https://github.com/Cratis/Fundamentals/releases/tag/v7.10.0)): Trace documentation and examples now prefer extension-method span declarations and call sites on `IActivitySource<T>`
- **Arc** ([Release v20.26.0](https://github.com/Cratis/Arc/releases/tag/v20.26.0)): Changed `CommandForm`/generated command usage so the internal command version stays inside `CommandForm` while public `.use()` hooks align to the 3-tuple `useCommand` API (#2227)
- **Arc** ([Release v20.26.0](https://github.com/Cratis/Arc/releases/tag/v20.26.0)): Changed Arc root and MVVM wiring to resolve the nearest scoped messenger with root fallback, and updated package exports for new messaging entry points (#2231)
- **Arc** ([Release v20.26.0](https://github.com/Cratis/Arc/releases/tag/v20.26.0)): Changed change-stream spec infrastructure to isolate fake subscriptions/query cache state per spec and avoid cross-test leakage (#2227)
- **Components** ([Release v1.10.2](https://github.com/Cratis/Components/releases/tag/v1.10.2)): Improved styling and class names for better consistency.
- **Components** ([Release v1.10.2](https://github.com/Cratis/Components/releases/tag/v1.10.2)): Updated theme import strategy to support dynamic theming.
- **Arc** ([Release v20.25.0](https://github.com/Cratis/Arc/releases/tag/v20.25.0)): Changed `CommandForm`/generated command usage so the internal command version stays inside `CommandForm` while public `.use()` hooks align to the 3-tuple `useCommand` API (#2227)
- **Arc** ([Release v20.25.0](https://github.com/Cratis/Arc/releases/tag/v20.25.0)): Changed Arc root and MVVM wiring to resolve the nearest scoped messenger with root fallback, and updated package exports for new messaging entry points (#2231)
- **Arc** ([Release v20.25.0](https://github.com/Cratis/Arc/releases/tag/v20.25.0)): Changed change-stream spec infrastructure to isolate fake subscriptions/query cache state per spec and avoid cross-test leakage (#2227)
- **Narrator** ([Release v1.0.0](https://github.com/Cratis/Narrator/releases/tag/v1.0.0)): **Breaking:** upgrade `@cratis/chronicle.contracts` from `15.22.13` to `15.30.2`. The contracts now ship `bigint` sequence numbers and a `nice-grpc` promise-based client surface in place of the previous grpc-js callback `*Client` constructors. Anyone forking or embedding `ChronicleClientManager` will need to adapt accordingly.
- **Narrator** ([Release v1.0.0](https://github.com/Cratis/Narrator/releases/tag/v1.0.0)): Gateway sequence numbers are converted to `number` at the boundary, clamping `ulong.MaxValue` to `Number.MAX_SAFE_INTEGER` (the Chronicle "no events yet" sentinel). Real event sequence numbers cannot legitimately exceed 2^53, so the clamp has no observable effect on real data.
- **Chronicle** ([Release v15.30.2](https://github.com/Cratis/Chronicle/releases/tag/v15.30.2)): Updated `@cratis/chronicle.contracts` generation options to use `ts-proto` with `forceLong=bigint`.
- **Chronicle** ([Release v15.30.2](https://github.com/Cratis/Chronicle/releases/tag/v15.30.2)): Updated TypeScript package and contributor documentation to reflect `bigint` handling for 64-bit fields.
- **Arc** ([Release v20.24.27](https://github.com/Cratis/Arc/releases/tag/v20.24.27)): Updated `Source/DotNET/Cratis/Cratis.csproj` to keep `ProxyGenerator.Build` as a regular project dependency so NuGet emits it as a package dependency and `buildTransitive` assets flow to consumers again (#2225)
- **Arc** ([Release v20.24.27](https://github.com/Cratis/Arc/releases/tag/v20.24.27)): Updated the regressing Chronicle spec setup in `when_handler_takes_read_model_dependency` to match the `IReadModels.GetInstanceById(...)` invocation and explicitly register `AccountBalanceReadModel` in scenario DI (#2225)
- **Arc** ([Release v20.24.27](https://github.com/Cratis/Arc/releases/tag/v20.24.27)): Updated `.github/workflows/dotnet-build.yml` checkout steps to use the PR head SHA on `pull_request_target` runs instead of implicitly testing the base branch checkout (#2225)
- **Arc** ([Release v20.24.26](https://github.com/Cratis/Arc/releases/tag/v20.24.26)): Updated `Source/DotNET/Cratis/Cratis.csproj` to keep `ProxyGenerator.Build` as a regular project dependency so NuGet emits it as a package dependency and `buildTransitive` assets flow to consumers again (#2225)
- **Arc** ([Release v20.24.26](https://github.com/Cratis/Arc/releases/tag/v20.24.26)): Updated the regressing Chronicle spec setup in `when_handler_takes_read_model_dependency` to match the `IReadModels.GetInstanceById(...)` invocation and explicitly register `AccountBalanceReadModel` in scenario DI (#2225)
- **Arc** ([Release v20.24.26](https://github.com/Cratis/Arc/releases/tag/v20.24.26)): Updated `.github/workflows/dotnet-build.yml` checkout steps to use the PR head SHA on `pull_request_target` runs instead of implicitly testing the base branch checkout (#2225)
- **Arc** ([Release v20.24.25](https://github.com/Cratis/Arc/releases/tag/v20.24.25)): **Reflection binding**
- **Arc** ([Release v20.24.25](https://github.com/Cratis/Arc/releases/tag/v20.24.25)): `ReadModelServiceCollectionExtensions` now resolves the generic single-parameter `IReadModels.Release<T>(T)` method instead of the removed two-parameter overload.
- **Arc** ([Release v20.24.25](https://github.com/Cratis/Arc/releases/tag/v20.24.25)): **Read model resolution flow**
- **Arc** ([Release v20.24.25](https://github.com/Cratis/Arc/releases/tag/v20.24.25)): `ResolveReadModel` now keeps subject-based branching and only invokes release when `commandContext.GetSubject()` is present.
- **Arc** ([Release v20.24.25](https://github.com/Cratis/Arc/releases/tag/v20.24.25)): The release invocation uses the new Chronicle-compatible method shape (`Release<T>(T)`).
- **Arc** ([Release v20.24.25](https://github.com/Cratis/Arc/releases/tag/v20.24.25)): **Spec expectations**
- **Arc** ([Release v20.24.25](https://github.com/Cratis/Arc/releases/tag/v20.24.25)): Updated read model resolution specs to assert single-parameter release calls where subject is present.
- **Arc** ([Release v20.24.25](https://github.com/Cratis/Arc/releases/tag/v20.24.25)): Restored the no-subject behavior to return the loaded read model without invoking release.
- **Chronicle** ([Release v15.30.1](https://github.com/Cratis/Chronicle/releases/tag/v15.30.1)): `EventSourceType`, `EventStreamType`, and `EventStreamId` are now `string?` (nullable) across all EventSequence gRPC contract types; clients send `null` when unspecified instead of pre-applying defaults (#3259)
- **Chronicle** ([Release v15.30.1](https://github.com/Cratis/Chronicle/releases/tag/v15.30.1)): Required fields (`EventStore`, `Namespace`, `EventSequenceId`, `EventSourceId`, `EventType`, `Content`, etc.) are now annotated with `IsRequired = true` on their `ProtoMember` across all EventSequence request/payload contracts (#3259)
- **Chronicle** ([Release v15.30.1](https://github.com/Cratis/Chronicle/releases/tag/v15.30.1)): Kernel service layer (`EventSequences.cs`) and `EventToAppendConverters` apply `EventSourceType.Default` / `EventStreamType.All` / `EventStreamId.Default` when null arrives, consistent with the existing `GetTailSequenceNumber` null-passthrough pattern (#3259)
- **Chronicle** ([Release v15.30.1](https://github.com/Cratis/Chronicle/releases/tag/v15.30.1)): DotNET client resolves defaults locally only for concurrency scope resolution and local event-context notification; the wire values are sent as `null` when the caller does not specify them (#3259)
- **Chronicle** ([Release v15.30.1](https://github.com/Cratis/Chronicle/releases/tag/v15.30.1)): `Cratis.Fundamentals` and `Cratis.Metrics.Roslyn` upgraded to 7.9.19; the updated generator correctly filters non-global aliased assembly contracts, removing the need for the `InMemoryKernelEventTypes` nested-class workaround
- **Arc** ([Release v20.24.17](https://github.com/Cratis/Arc/releases/tag/v20.24.17)): **Reflection binding**
- **Arc** ([Release v20.24.17](https://github.com/Cratis/Arc/releases/tag/v20.24.17)): `ReadModelServiceCollectionExtensions` now resolves the generic single-parameter `IReadModels.Release<T>(T)` method instead of the removed two-parameter overload.
- **Arc** ([Release v20.24.17](https://github.com/Cratis/Arc/releases/tag/v20.24.17)): **Read model resolution flow**
- **Arc** ([Release v20.24.17](https://github.com/Cratis/Arc/releases/tag/v20.24.17)): `ResolveReadModel` now keeps subject-based branching and only invokes release when `commandContext.GetSubject()` is present.
- **Arc** ([Release v20.24.17](https://github.com/Cratis/Arc/releases/tag/v20.24.17)): The release invocation uses the new Chronicle-compatible method shape (`Release<T>(T)`).
- **Arc** ([Release v20.24.17](https://github.com/Cratis/Arc/releases/tag/v20.24.17)): **Spec expectations**
- **Arc** ([Release v20.24.17](https://github.com/Cratis/Arc/releases/tag/v20.24.17)): Updated read model resolution specs to assert single-parameter release calls where subject is present.
- **Arc** ([Release v20.24.17](https://github.com/Cratis/Arc/releases/tag/v20.24.17)): Restored the no-subject behavior to return the loaded read model without invoking release.
- **Fundamentals** ([Release v7.9.19](https://github.com/Cratis/Fundamentals/releases/tag/v7.9.19)): Filter generated contract maps and convention bindings to exclude external contracts from non-global aliased references
- **Fundamentals** ([Release v7.9.19](https://github.com/Cratis/Fundamentals/releases/tag/v7.9.19)): Scoped the ModuleInitializerProbe reference and its probe-backed spec to the `net10.0` target in `Fundamentals.Specs`
- **Fundamentals** ([Release v7.9.19](https://github.com/Cratis/Fundamentals/releases/tag/v7.9.19)): Made the ModuleInitializerProbe project target framework configuration explicit for Debug and Release builds
- **Arc** ([Release v20.24.16](https://github.com/Cratis/Arc/releases/tag/v20.24.16)): **Reflection binding**
- **Arc** ([Release v20.24.16](https://github.com/Cratis/Arc/releases/tag/v20.24.16)): `ReadModelServiceCollectionExtensions` now resolves the generic single-parameter `IReadModels.Release<T>(T)` method instead of the removed two-parameter overload.
- **Arc** ([Release v20.24.16](https://github.com/Cratis/Arc/releases/tag/v20.24.16)): **Read model resolution flow**
- **Arc** ([Release v20.24.16](https://github.com/Cratis/Arc/releases/tag/v20.24.16)): `ResolveReadModel` now keeps subject-based branching and only invokes release when `commandContext.GetSubject()` is present.
- **Arc** ([Release v20.24.16](https://github.com/Cratis/Arc/releases/tag/v20.24.16)): The release invocation uses the new Chronicle-compatible method shape (`Release<T>(T)`).
- **Arc** ([Release v20.24.16](https://github.com/Cratis/Arc/releases/tag/v20.24.16)): **Spec expectations**
- **Arc** ([Release v20.24.16](https://github.com/Cratis/Arc/releases/tag/v20.24.16)): Updated read model resolution specs to assert single-parameter release calls where subject is present.
- **Arc** ([Release v20.24.16](https://github.com/Cratis/Arc/releases/tag/v20.24.16)): Restored the no-subject behavior to return the loaded read model without invoking release.
- **Arc** ([Release v20.24.15](https://github.com/Cratis/Arc/releases/tag/v20.24.15)): **Reflection binding**
- **Arc** ([Release v20.24.15](https://github.com/Cratis/Arc/releases/tag/v20.24.15)): `ReadModelServiceCollectionExtensions` now resolves the generic single-parameter `IReadModels.Release<T>(T)` method instead of the removed two-parameter overload.
- **Arc** ([Release v20.24.15](https://github.com/Cratis/Arc/releases/tag/v20.24.15)): **Read model resolution flow**
- **Arc** ([Release v20.24.15](https://github.com/Cratis/Arc/releases/tag/v20.24.15)): `ResolveReadModel` now keeps subject-based branching and only invokes release when `commandContext.GetSubject()` is present.
- **Arc** ([Release v20.24.15](https://github.com/Cratis/Arc/releases/tag/v20.24.15)): The release invocation uses the new Chronicle-compatible method shape (`Release<T>(T)`).
- **Arc** ([Release v20.24.15](https://github.com/Cratis/Arc/releases/tag/v20.24.15)): **Spec expectations**
- **Arc** ([Release v20.24.15](https://github.com/Cratis/Arc/releases/tag/v20.24.15)): Updated read model resolution specs to assert single-parameter release calls where subject is present.
- **Arc** ([Release v20.24.15](https://github.com/Cratis/Arc/releases/tag/v20.24.15)): Restored the no-subject behavior to return the loaded read model without invoking release.
- **Fundamentals** ([Release v7.9.18](https://github.com/Cratis/Fundamentals/releases/tag/v7.9.18)): `TryAddGeneratedBindingsByConvention()` now primes generated discovery providers before enumerating `GeneratedTypeDiscoveryRegistry.Providers`.
- **Fundamentals** ([Release v7.9.18](https://github.com/Cratis/Fundamentals/releases/tag/v7.9.18)): `TryAddGeneratedSelfBindings()` now uses the same priming flow to avoid the same order-dependent miss.
- **Fundamentals** ([Release v7.9.18](https://github.com/Cratis/Fundamentals/releases/tag/v7.9.18)): Assembly traversal runs transitively from loaded/entry references and safely ignores non-loadable/non-managed assemblies.
- **Fundamentals** ([Release v7.9.17](https://github.com/Cratis/Fundamentals/releases/tag/v7.9.17)): `TryAddGeneratedBindingsByConvention()` now primes generated discovery providers before enumerating `GeneratedTypeDiscoveryRegistry.Providers`.
- **Fundamentals** ([Release v7.9.17](https://github.com/Cratis/Fundamentals/releases/tag/v7.9.17)): `TryAddGeneratedSelfBindings()` now uses the same priming flow to avoid the same order-dependent miss.
- **Fundamentals** ([Release v7.9.17](https://github.com/Cratis/Fundamentals/releases/tag/v7.9.17)): Assembly traversal runs transitively from loaded/entry references and safely ignores non-loadable/non-managed assemblies.
- **Arc** ([Release v20.24.14](https://github.com/Cratis/Arc/releases/tag/v20.24.14)): **Reflection binding**
- **Arc** ([Release v20.24.14](https://github.com/Cratis/Arc/releases/tag/v20.24.14)): `ReadModelServiceCollectionExtensions` now resolves the generic single-parameter `IReadModels.Release<T>(T)` method instead of the removed two-parameter overload.
- **Arc** ([Release v20.24.14](https://github.com/Cratis/Arc/releases/tag/v20.24.14)): **Read model resolution flow**
- **Arc** ([Release v20.24.14](https://github.com/Cratis/Arc/releases/tag/v20.24.14)): `ResolveReadModel` now keeps subject-based branching and only invokes release when `commandContext.GetSubject()` is present.
- **Arc** ([Release v20.24.14](https://github.com/Cratis/Arc/releases/tag/v20.24.14)): The release invocation uses the new Chronicle-compatible method shape (`Release<T>(T)`).
- **Arc** ([Release v20.24.14](https://github.com/Cratis/Arc/releases/tag/v20.24.14)): **Spec expectations**
- **Arc** ([Release v20.24.14](https://github.com/Cratis/Arc/releases/tag/v20.24.14)): Updated read model resolution specs to assert single-parameter release calls where subject is present.
- **Arc** ([Release v20.24.14](https://github.com/Cratis/Arc/releases/tag/v20.24.14)): Restored the no-subject behavior to return the loaded read model without invoking release.
- **Arc** ([Release v20.24.8](https://github.com/Cratis/Arc/releases/tag/v20.24.8)): Changed `MongoDBOptions.DirectConnection` from `bool` to `bool?` to distinguish “unset” from explicit override (#3284)
- **Arc** ([Release v20.24.8](https://github.com/Cratis/Arc/releases/tag/v20.24.8)): Updated option documentation to clarify that an unset option preserves connection-string behavior (#3284)
- **Chronicle** ([Release v15.30.0](https://github.com/Cratis/Chronicle/releases/tag/v15.30.0)): `AppendResult` and `AppendManyResult` now expose observer wait context through `IAppendResultForObserverCompletion` for direct use by the wait extension method (#1845)
- **Chronicle** ([Release v15.30.0](https://github.com/Cratis/Chronicle/releases/tag/v15.30.0)): Append result handling now consistently reports operation tail sequence numbers for completion waits (`SequenceNumber` vs last `SequenceNumbers` item) (#1845)
- **Chronicle** ([Release v15.30.0](https://github.com/Cratis/Chronicle/releases/tag/v15.30.0)): Observer-completion waiting now scopes failed-partition retrieval to affected observers to reduce unnecessary data reads (#1845)
- **Arc** ([Release v20.24.6](https://github.com/Cratis/Arc/releases/tag/v20.24.6)): Updated `ChronicleCommandScenarioExtender` to register `IReadModels` and call `AddReadModels(...)` with Chronicle client artifacts so ReadModel dependencies are convention-resolved in command scenarios. (#2212)
- **Arc** ([Release v20.24.6](https://github.com/Cratis/Arc/releases/tag/v20.24.6)): Updated multiple spec helper types/accessibility and related test scaffolding to align with current type discovery generator behavior. (#2212)
- **Arc** ([Release v20.24.6](https://github.com/Cratis/Arc/releases/tag/v20.24.6)): Updated build-tooling project settings to suppress TFM support build warnings required for multi-target Release builds. (#2212)
- **Arc** ([Release v20.24.6](https://github.com/Cratis/Arc/releases/tag/v20.24.6)): Updated Chronicle testing documentation to describe direct ReadModel dependency support and test-time `IReadModels` overrides. (#2212)
- **Arc** ([Release v20.24.6](https://github.com/Cratis/Arc/releases/tag/v20.24.6)): Rebased the branch onto latest `main` and resolved resulting merge conflicts in package/version and MongoDB spec helper files while preserving intended behavior. (#2212)
- **Chronicle** ([Release v15.29.8](https://github.com/Cratis/Chronicle/releases/tag/v15.29.8)): Wrapped connection attempts in try-catch to handle exceptions gracefully.
- **Chronicle** ([Release v15.29.8](https://github.com/Cratis/Chronicle/releases/tag/v15.29.8)): Implemented a rollback mechanism for connection state if handler exceptions occur.
- **Chronicle** ([Release v15.29.7](https://github.com/Cratis/Chronicle/releases/tag/v15.29.7)): `WithMongoDB` now builds shared `MongoClientSettings` from the configured connection string and reuses them for:
- **Chronicle** ([Release v15.29.7](https://github.com/Cratis/Chronicle/releases/tag/v15.29.7)): Orleans `UseMongoDBClient`
- **Chronicle** ([Release v15.29.7](https://github.com/Cratis/Chronicle/releases/tag/v15.29.7)): MongoDB health check client creation
- **Chronicle** ([Release v15.29.7](https://github.com/Cratis/Chronicle/releases/tag/v15.29.7)): This aligns Orleans and health-check behavior with the existing Chronicle storage direct-connection behavior.
- **Chronicle** ([Release v15.29.6](https://github.com/Cratis/Chronicle/releases/tag/v15.29.6)): Updated the Docker get-started MongoDB Compose example to use `Cratis__Chronicle__Storage__ConnectionDetails=mongodb://mongodb:27017/?directConnection=true`.
- **Chronicle** ([Release v15.29.6](https://github.com/Cratis/Chronicle/releases/tag/v15.29.6)): Updated replica set initialization guidance to advertise `localhost:27017` and documented why this works for host access and Chronicle-in-container access.
- **Chronicle** ([Release v15.29.6](https://github.com/Cratis/Chronicle/releases/tag/v15.29.6)): Added guidance to reset volumes (`docker compose down -v`) when reinitializing a replica set previously created with a different host.
- **Chronicle** ([Release v15.29.5](https://github.com/Cratis/Chronicle/releases/tag/v15.29.5)): Startup now reactivates persisted reducer and reactor observers with stored observer state so they reconcile their running state without waiting for a client connection (#1751)
- **Chronicle** ([Release v15.29.4](https://github.com/Cratis/Chronicle/releases/tag/v15.29.4)): Normalized optional metadata fields before projection definition comparison:
- **Chronicle** ([Release v15.29.4](https://github.com/Cratis/Chronicle/releases/tag/v15.29.4)): `Tags`: normalize ordering and treat empty as unset.
- **Chronicle** ([Release v15.29.4](https://github.com/Cratis/Chronicle/releases/tag/v15.29.4)): `Nested`: treat empty as unset.
- **Chronicle** ([Release v15.29.4](https://github.com/Cratis/Chronicle/releases/tag/v15.29.4)): Kept structural comparison behavior unchanged for real definition differences.

## Fixed
- **Chronicle** ([Release v15.31.3](https://github.com/Cratis/Chronicle/releases/tag/v15.31.3)): Model-bound projections that reference their own type via `[ChildrenFrom]` (self-referential or mutually recursive children) no longer crash the client with `StackOverflowException` during projection discovery.
- **Chronicle.TypeScript** ([Release v0.2.0](https://github.com/Cratis/Chronicle.TypeScript/releases/tag/v0.2.0)): Resolved integration issues caused by mixed module naming and export paths after consolidation.
- **Chronicle.TypeScript** ([Release v0.2.0](https://github.com/Cratis/Chronicle.TypeScript/releases/tag/v0.2.0)): Verified workspace compile succeeds after consolidation and module/export restructuring.
- **Arc** ([Release v20.26.19](https://github.com/Cratis/Arc/releases/tag/v20.26.19)): Upgrading Chronicle with fixes for .NET8/9/10 differentiation on versions for some `Microsoft.Extensions.*` packages
- **Arc** ([Release v20.26.16](https://github.com/Cratis/Arc/releases/tag/v20.26.16)): `Cratis.dll` no longer leaks `typeof()` references to the build-time `ProxyGenerator.Build` helper, which caused `FileNotFoundException` at runtime in consuming applications.
- **Arc** ([Release v20.26.15](https://github.com/Cratis/Arc/releases/tag/v20.26.15)): `Cratis.dll` no longer leaks `typeof()` references to the build-time `ProxyGenerator.Build` helper, which caused `FileNotFoundException` at runtime in consuming applications.
- **Arc** ([Release v20.26.14](https://github.com/Cratis/Arc/releases/tag/v20.26.14)): Observable queries no longer drop `paging` information from result payloads when the underlying observable emits from a thread that the request-scoped `QueryContext` AsyncLocal does not flow into (notably the MongoDB change-stream thread).
- **Arc** ([Release v20.26.13](https://github.com/Cratis/Arc/releases/tag/v20.26.13)): Observable queries no longer drop `paging` information from result payloads when the underlying observable emits from a thread that the request-scoped `QueryContext` AsyncLocal does not flow into (notably the MongoDB change-stream thread).
- **Fundamentals** ([Release v7.10.3](https://github.com/Cratis/Fundamentals/releases/tag/v7.10.3)): Type discovery no longer emits `typeof()` references for assemblies loaded from a NuGet package's `tasks/` (MSBuild task helpers such as `Cratis.Arc.ProxyGenerator.Build`) or `analyzers/` folder. Previously, generated `SelfBindings` would throw `FileNotFoundException` at runtime because those DLLs are not copied to the consuming project's output.
- **Fundamentals** ([Release v7.10.2](https://github.com/Cratis/Fundamentals/releases/tag/v7.10.2)): `CS1705` raised in downstream consumers targeting `net8.0` or `net9.0` because the produced Cratis.Fundamentals assemblies referenced `Microsoft.Extensions.DependencyInjection.Abstractions` 10.x for every target framework. `Microsoft.Extensions.DependencyInjection`, `Microsoft.Extensions.DependencyInjection.Abstractions`, and `Microsoft.Extensions.DependencyModel` are now pinned per TFM (8.0.x for `net8.0`, 9.0.13 for `net9.0`, 10.0.8 for `net10.0`).
- **Arc** ([Release v20.26.12](https://github.com/Cratis/Arc/releases/tag/v20.26.12)): Observable queries no longer drop `paging` information from result payloads when the underlying observable emits from a thread that the request-scoped `QueryContext` AsyncLocal does not flow into (notably the MongoDB change-stream thread).
- **Chronicle** ([Release v15.31.0](https://github.com/Cratis/Chronicle/releases/tag/v15.31.0)): `EventRedacted` deserialization now tolerates original event types that are no longer registered on the client. (#1779)
- **Chronicle** ([Release v15.31.0](https://github.com/Cratis/Chronicle/releases/tag/v15.31.0)): Disposing a `ChronicleClient` now cancels its owned connection so it does not keep reconnecting during shutdown. (#3140)
- **Chronicle** ([Release v15.31.0](https://github.com/Cratis/Chronicle/releases/tag/v15.31.0)): In-memory read model scenarios now preserve identifier mapping from event source IDs and handle repeated use of the same event type across nested mappings more reliably. (#815)
- **Fundamentals** ([Release v7.10.0](https://github.com/Cratis/Fundamentals/releases/tag/v7.10.0)): The gap where trace instrumentation required direct `System.Diagnostics` primitives in application code
- **Fundamentals** ([Release v7.10.0](https://github.com/Cratis/Fundamentals/releases/tag/v7.10.0)): The failure mode where span scopes could be created without `using`, leaving activities unstopped and parent-child chains incomplete
- **Fundamentals** ([Release v7.10.0](https://github.com/Cratis/Fundamentals/releases/tag/v7.10.0)): Missing validation coverage for trace generator diagnostics and analyzer failure modes
- **Fundamentals** ([Release v7.10.0](https://github.com/Cratis/Fundamentals/releases/tag/v7.10.0)): Repository markdown lint violations surfaced while adding the new trace documentation
- **Narrator** ([Release v1.0.8](https://github.com/Cratis/Narrator/releases/tag/v1.0.8)): Publish to the VSCode Marketplace no longer fails with `Extension failed Virus check`. The previous `.vscodeignore` left `.yarn/cache/` (one zip per dependency, ~400 files) and other dev artifacts in the packaged VSIX, which the Marketplace virus scanner flagged. The ignore file now keeps only the bundled runtime — the VSIX drops from 412 entries to 5 (≈189 KB).
- **Arc** ([Release v20.26.0](https://github.com/Cratis/Arc/releases/tag/v20.26.0)): Fixed radio field binding inference and wrapper keying so radio values are typed correctly and multiple radio inputs can bind without key collisions (#2228)
- **Arc** ([Release v20.26.0](https://github.com/Cratis/Arc/releases/tag/v20.26.0)): Fixed Arc.React CI regressions in `useChangeStream`/command-related specs caused by shared test state and render-phase update warnings (#2227)
- **Arc** ([Release v20.26.0](https://github.com/Cratis/Arc/releases/tag/v20.26.0)): Fixed scoped messenger propagation semantics to default to local publish + recursive trickle-down with explicit opt-in bubbling to parent scopes (#2231)
- **Arc** ([Release v20.25.0](https://github.com/Cratis/Arc/releases/tag/v20.25.0)): Fixed radio field binding inference and wrapper keying so radio values are typed correctly and multiple radio inputs can bind without key collisions (#2228)
- **Arc** ([Release v20.25.0](https://github.com/Cratis/Arc/releases/tag/v20.25.0)): Fixed Arc.React CI regressions in `useChangeStream`/command-related specs caused by shared test state and render-phase update warnings (#2227)
- **Arc** ([Release v20.25.0](https://github.com/Cratis/Arc/releases/tag/v20.25.0)): Fixed scoped messenger propagation semantics to default to local publish + recursive trickle-down with explicit opt-in bubbling to parent scopes (#2231)
- **Narrator** ([Release v1.0.0](https://github.com/Cratis/Narrator/releases/tag/v1.0.0)): Sequence browsing under a namespace no longer shows "Sequence browsing requires an event source ID" — actual sequence leaves are surfaced and openable.
- **Chronicle** ([Release v15.30.2](https://github.com/Cratis/Chronicle/releases/tag/v15.30.2)): Eliminates decode failures in TypeScript/Node clients caused by `forceLong=number` safe-integer limits when receiving sentinel or other large `uint64` values.
- **Arc** ([Release v20.24.27](https://github.com/Cratis/Arc/releases/tag/v20.24.27)): Restored transitive proxy generation behavior for projects that rely on `<PackageReference Include="Cratis" />` + `CratisProxiesOutputPath` without an explicit `Cratis.Arc.ProxyGenerator.Build` reference (#2225)
- **Arc** ([Release v20.24.27](https://github.com/Cratis/Arc/releases/tag/v20.24.27)): Fixed intermittent CI failures in `for_CommandScenario.when_handler_takes_read_model_dependency.and_command_is_executed` caused by cross-test read-model registration ordering in `Chronicle.Specs` (#2225)
- **Arc** ([Release v20.24.27](https://github.com/Cratis/Arc/releases/tag/v20.24.27)): Fixed false regression CI failures caused by `.NET Build` jobs testing `origin/main` instead of the PR changes in `pull_request_target` executions (#2225)
- **Arc** ([Release v20.24.26](https://github.com/Cratis/Arc/releases/tag/v20.24.26)): Restored transitive proxy generation behavior for projects that rely on `<PackageReference Include="Cratis" />` + `CratisProxiesOutputPath` without an explicit `Cratis.Arc.ProxyGenerator.Build` reference (#2225)
- **Arc** ([Release v20.24.26](https://github.com/Cratis/Arc/releases/tag/v20.24.26)): Fixed intermittent CI failures in `for_CommandScenario.when_handler_takes_read_model_dependency.and_command_is_executed` caused by cross-test read-model registration ordering in `Chronicle.Specs` (#2225)
- **Arc** ([Release v20.24.26](https://github.com/Cratis/Arc/releases/tag/v20.24.26)): Fixed false regression CI failures caused by `.NET Build` jobs testing `origin/main` instead of the PR changes in `pull_request_target` executions (#2225)
- **Arc** ([Release v20.24.25](https://github.com/Cratis/Arc/releases/tag/v20.24.25)): Eliminated the static-constructor failure path (`Sequence contains no matching element`) caused by looking up a removed Chronicle API overload.
- **Chronicle** ([Release v15.30.1](https://github.com/Cratis/Chronicle/releases/tag/v15.30.1)): `Storage.MongoDB` build errors (`CS0266`) caused by `DirectConnection` changing from `bool` to `bool?` after `Cratis.Arc.MongoDB` upgrade; comparisons updated to `== true`
- **Chronicle** ([Release v15.30.1](https://github.com/Cratis/Chronicle/releases/tag/v15.30.1)): `Testing.Specs` runtime assembly load failure; added `Cratis.Arc` and `Cratis.Arc.Core` package references so generator-emitted Arc service bindings resolve at runtime
- **Chronicle** ([Release v15.30.1](https://github.com/Cratis/Chronicle/releases/tag/v15.30.1)): `Aspire.csproj` build error (`ASPIREPROBES001`) from generator-emitted `IResourceWithProbes` contract mapping against an evaluation-only Aspire API; suppressed via `NoWarn`
- **Chronicle** ([Release v15.30.1](https://github.com/Cratis/Chronicle/releases/tag/v15.30.1)): `Server.csproj` build error (`CS0436`) from generator-emitted `Program` self-binding conflicting with the imported `Cratis.Chronicle.Api.Program`; suppressed via `NoWarn`
- **Chronicle** ([Release v15.30.1](https://github.com/Cratis/Chronicle/releases/tag/v15.30.1)): Server startup `InvalidOperationException` caused by Arc 20.24.10+ auto-registering `[Singleton]`-annotated `Storage.Sql` classes from all loaded assemblies, overriding the MongoDB `IDatabase` registration; removed `[Singleton]` from SQL-specific classes and added explicit registrations to `SqlChronicleBuilderExtensions.WithSql`
- **Chronicle** ([Release v15.30.1](https://github.com/Cratis/Chronicle/releases/tag/v15.30.1)): Server startup `InvalidOperationException` in MongoDB mode caused by `AddBindingsByConvention()` also registering SQL storage implementations (e.g. `EventSequenceMigrator`) which require `ITableMigrator<>` — only available in SQL mode; added symmetric removal of `Cratis.Chronicle.Storage.Sql.*` service registrations in MongoDB mode in `Program.cs`
- **Chronicle** ([Release v15.30.1](https://github.com/Cratis/Chronicle/releases/tag/v15.30.1)): Integration test timeouts in `WaitTillReachesEventSequenceNumber` (`ProjectionWaitExtensions`, `ReducerWaitExtensions`, `ReactorWaitExtensions`) caused by exact equality (`==`) check that never
- **Arc** ([Release v20.24.17](https://github.com/Cratis/Arc/releases/tag/v20.24.17)): Eliminated the static-constructor failure path (`Sequence contains no matching element`) caused by looking up a removed Chronicle API overload.
- **Arc** ([Release v20.24.17](https://github.com/Cratis/Arc/releases/tag/v20.24.17)): Fixed the regression that caused a command-scenario spec to fail by preserving subject-gated release behavior.
- **Fundamentals** ([Release v7.9.19](https://github.com/Cratis/Fundamentals/releases/tag/v7.9.19)): Prevented generated type-discovery metadata from referencing contracts that are only available through a non-global alias
- **Fundamentals** ([Release v7.9.19](https://github.com/Cratis/Fundamentals/releases/tag/v7.9.19)): Fixed the root `dotnet test --configuration Release` build failure caused by the `Fundamentals.Specs` multi-targeted Release build referencing a `net10.0`-only probe project
- **Arc** ([Release v20.24.16](https://github.com/Cratis/Arc/releases/tag/v20.24.16)): Eliminated the static-constructor failure path (`Sequence contains no matching element`) caused by looking up a removed Chronicle API overload.
- **Arc** ([Release v20.24.16](https://github.com/Cratis/Arc/releases/tag/v20.24.16)): Fixed the regression that caused a command-scenario spec to fail by preserving subject-gated release behavior.
- **Arc** ([Release v20.24.15](https://github.com/Cratis/Arc/releases/tag/v20.24.15)): Eliminated the static-constructor failure path (`Sequence contains no matching element`) caused by looking up a removed Chronicle API overload.
- **Arc** ([Release v20.24.15](https://github.com/Cratis/Arc/releases/tag/v20.24.15)): Fixed the regression that caused a command-scenario spec to fail by preserving subject-gated release behavior.
- **Fundamentals** ([Release v7.9.18](https://github.com/Cratis/Fundamentals/releases/tag/v7.9.18)): Fixed order-dependent omission of convention bindings from referenced assemblies whose `[ModuleInitializer]` had not yet fired at DI registration time.
- **Fundamentals** ([Release v7.9.18](https://github.com/Cratis/Fundamentals/releases/tag/v7.9.18)): Fixed equivalent gap for generated self-bindings.
- **Fundamentals** ([Release v7.9.17](https://github.com/Cratis/Fundamentals/releases/tag/v7.9.17)): Fixed order-dependent omission of convention bindings from referenced assemblies whose `[ModuleInitializer]` had not yet fired at DI registration time.
- **Fundamentals** ([Release v7.9.17](https://github.com/Cratis/Fundamentals/releases/tag/v7.9.17)): Fixed equivalent gap for generated self-bindings.
- **Arc** ([Release v20.24.14](https://github.com/Cratis/Arc/releases/tag/v20.24.14)): Eliminated the static-constructor failure path (`Sequence contains no matching element`) caused by looking up a removed Chronicle API overload.
- **Arc** ([Release v20.24.14](https://github.com/Cratis/Arc/releases/tag/v20.24.14)): Fixed the regression that caused a command-scenario spec to fail by preserving subject-gated release behavior.
- **Arc** ([Release v20.24.13](https://github.com/Cratis/Arc/releases/tag/v20.24.13)): ProxyGenerator no longer throws `NullReferenceException` when scanning read model types whose properties implement only the non-generic `IEnumerable` (without `IEnumerable<T>`). (#2221)
- **Arc** ([Release v20.24.12](https://github.com/Cratis/Arc/releases/tag/v20.24.12)): ProxyGenerator no longer throws `NullReferenceException` when scanning read model types whose properties implement only the non-generic `IEnumerable` (without `IEnumerable<T>`). (#2221)
- **Arc** ([Release v20.24.11](https://github.com/Cratis/Arc/releases/tag/v20.24.11)): ProxyGenerator no longer throws `NullReferenceException` when scanning read model types whose properties implement only the non-generic `IEnumerable` (without `IEnumerable<T>`). (#2221)
- **Arc** ([Release v20.24.10](https://github.com/Cratis/Arc/releases/tag/v20.24.10)): Adding missing activation for the tenant resolver for Sub domains.
- **Arc** ([Release v20.24.9](https://github.com/Cratis/Arc/releases/tag/v20.24.9)): Adding missing activation for the tenant resolver for Sub domains.
- **Arc** ([Release v20.24.8](https://github.com/Cratis/Arc/releases/tag/v20.24.8)): Fixed `MongoDBClientFactory.CreateImplementation` to stop clobbering `MongoClientSettings.DirectConnection` and only force direct mode when options explicitly set it to `true` (#3284)
- **Arc** ([Release v20.24.8](https://github.com/Cratis/Arc/releases/tag/v20.24.8)): Eliminated the Arc-side regression path that could push startup-time Mongo clients back into replica-set discovery despite `directConnection=true` in URL (#3287)
- **Chronicle** ([Release v15.30.0](https://github.com/Cratis/Chronicle/releases/tag/v15.30.0)): Observer-completion waiting no longer exits on first failed partition; it now waits until affected observers are complete-or-failed and returns the complete failed-partition set for the operation (#1845)
- **Chronicle** ([Release v15.30.0](https://github.com/Cratis/Chronicle/releases/tag/v15.30.0)): Append and append-many operations now succeed in testing scenarios where observer services are unavailable, preventing spec regressions introduced by observer wait wiring (#1845)
- **Arc** ([Release v20.24.6](https://github.com/Cratis/Arc/releases/tag/v20.24.6)): Fixed parity gap where Chronicle command scenarios did not support direct ReadModel dependencies while runtime did. (#2212)
- **Arc** ([Release v20.24.6](https://github.com/Cratis/Arc/releases/tag/v20.24.6)): Fixed Release build failures tied to type discovery accessibility and generic discovery/build compatibility in the affected spec/test context. (#2212)
- **Chronicle** ([Release v15.29.7](https://github.com/Cratis/Chronicle/releases/tag/v15.29.7)): Fixed Orleans reminder connectivity failures against single-node replica sets advertising `localhost:27017` when Chronicle connects via service DNS with `?directConnection=true`.
- **Chronicle** ([Release v15.29.6](https://github.com/Cratis/Chronicle/releases/tag/v15.29.6)): Fixed MongoDB storage configuration so default `MongoDBOptions.DirectConnection` no longer overrides `directConnection=true` supplied in the MongoDB connection string.
- **Arc** ([Release v20.24.4](https://github.com/Cratis/Arc/releases/tag/v20.24.4)): Cratis NuGet package no longer leaks the build-tool assembly `Cratis.Arc.ProxyGenerator.Build` as a compile-time reference, fixing runtime `FileNotFoundException` in consumer apps where Fundamentals' source-generated `GeneratedTypeDiscoveryProvider.SelfBindings` referenced types from that assembly.
- **Chronicle** ([Release v15.29.5](https://github.com/Cratis/Chronicle/releases/tag/v15.29.5)): Reducer and reactor observers no longer remain incorrectly active after startup when their previous state was persisted as active but no client is connected (#1751)
- **Arc** ([Release v20.24.3](https://github.com/Cratis/Arc/releases/tag/v20.24.3)): Cratis NuGet package no longer leaks the build-tool assembly `Cratis.Arc.ProxyGenerator.Build` as a compile-time reference, fixing runtime `FileNotFoundException` in consumer apps where Fundamentals' source-generated `GeneratedTypeDiscoveryProvider.SelfBindings` referenced types from that assembly.
- **Chronicle** ([Release v15.29.4](https://github.com/Cratis/Chronicle/releases/tag/v15.29.4)): Prevented false-positive projection definition changes caused by storage/default serialization shape differences.
- **Chronicle** ([Release v15.29.4](https://github.com/Cratis/Chronicle/releases/tag/v15.29.4)): Reduced unnecessary replay/replay-recommendation triggers for projections whose effective definition did not change.
- **Arc** ([Release v20.24.1](https://github.com/Cratis/Arc/releases/tag/v20.24.1)): Command response value resolver for \`EventForEventSourceId\` was using a local version of this type — removing this and making it work with the Chronicle version.
- **Arc** ([Release v20.24.1](https://github.com/Cratis/Arc/releases/tag/v20.24.1)): TypeDiscovery generator CS0122 errors caused by \`protected\` nested types in spec context classes being emitted as contracts in generated code.
- **Arc** ([Release v20.24.1](https://github.com/Cratis/Arc/releases/tag/v20.24.1)): TypeDiscovery generator CS0246 error in \`InMemoryFluentFind<TDocument>.Cursor\` caused by the generated typeof() expression including an unresolvable type parameter name.
- **Fundamentals** ([Release v7.9.16](https://github.com/Cratis/Fundamentals/releases/tag/v7.9.16)): TypeDiscovery generator no longer emits \`protected\` nested types as contracts — such types are inaccessible from generated code at namespace level (CS0122).
- **Fundamentals** ([Release v7.9.16](https://github.com/Cratis/Fundamentals/releases/tag/v7.9.16)): TypeDiscovery generator no longer emits types nested inside a generic outer type — their fully-qualified name includes unresolvable type parameter names (CS0246).
- **Chronicle** ([Release v15.29.3](https://github.com/Cratis/Chronicle/releases/tag/v15.29.3)): `JsonSchemaGenerator.Generate()` no longer crashes with a `JsonException` when called on a record type that has non-primitive struct properties with default values (e.g. `DateTimeOffset OccurredAt = default`, `Guid Id = default`) under .NET 10.

## Removed
- **Arc** ([Release v20.26.0](https://github.com/Cratis/Arc/releases/tag/v20.26.0)): Removed MVVM-owned messenger runtime logic in favor of shared core messaging implementation/re-exports (#2231)
- **Arc** ([Release v20.26.0](https://github.com/Cratis/Arc/releases/tag/v20.26.0)): Removed the exposed version element from the public `useCommand` tuple and generated command hook signatures (#2227)
- **Components** ([Release v1.10.2](https://github.com/Cratis/Components/releases/tag/v1.10.2)): Removed unused theme references and imports.
- **Arc** ([Release v20.25.0](https://github.com/Cratis/Arc/releases/tag/v20.25.0)): Removed MVVM-owned messenger runtime logic in favor of shared core messaging implementation/re-exports (#2231)
- **Arc** ([Release v20.25.0](https://github.com/Cratis/Arc/releases/tag/v20.25.0)): Removed the exposed version element from the public `useCommand` tuple and generated command hook signatures (#2227)
- **Narrator** ([Release v1.0.0](https://github.com/Cratis/Narrator/releases/tag/v1.0.0)): `ProtoPatches.ts` and its activation. The runtime monkey-patch that clamped `BinaryReader.prototype.{uint64, int64, sint64, fixed64, sfixed64}` to dodge the ts-proto `longToNumber` throw is no longer needed — `@cratis/chronicle.contracts@15.30.2` was generated with `forceLong=bigint` and decodes the sentinel cleanly.
- **Chronicle** ([Release v15.30.2](https://github.com/Cratis/Chronicle/releases/tag/v15.30.2)): Removed the kernel-side sequence number saturation approach and related helper/converter changes.
- **Chronicle** ([Release v15.30.2](https://github.com/Cratis/Chronicle/releases/tag/v15.30.2)): Removed specs that only validated the reverted clamping behavior.
- **Arc** ([Release v20.24.25](https://github.com/Cratis/Arc/releases/tag/v20.24.25)): Obsolete reflection lookup and invocation path for `Release<T>(Subject, T)`.
- **Arc** ([Release v20.24.25](https://github.com/Cratis/Arc/releases/tag/v20.24.25)): Subject-specific release invocation through reflection using the removed overload.

## Security
- **Fundamentals** ([Release v7.10.0](https://github.com/Cratis/Fundamentals/releases/tag/v7.10.0)): Compile-time enforcement for disposing generated activity scopes, reducing the risk of broken trace lifetimes and incomplete span trees
- **Arc** ([Release v20.24.27](https://github.com/Cratis/Arc/releases/tag/v20.24.27)): No security model changes; this PR restores package dependency propagation behavior, stabilizes test setup behavior, and corrects workflow checkout targeting in CI (#2225)
- **Arc** ([Release v20.24.26](https://github.com/Cratis/Arc/releases/tag/v20.24.26)): No security model changes; this PR restores package dependency propagation behavior, stabilizes test setup behavior, and corrects workflow checkout targeting in CI (#2225)
- **Arc** ([Release v20.24.25](https://github.com/Cratis/Arc/releases/tag/v20.24.25)): No direct security behavior change; this is an API-compatibility and startup-stability fix.
- **Arc** ([Release v20.24.6](https://github.com/Cratis/Arc/releases/tag/v20.24.6)): No security-specific changes. (#2212)

## Deprecated
- No updates
