1.6.0-beta4 October 28th, 2026
Akka.NET 1.6.0-beta4 simplifies source-generated serializer registration, adds three generator diagnostics that catch schema mistakes earlier, and cuts allocations across Artery, TCP and Akka.Streams. Read the v1.6 getting started guide for the full upgrade path.
Serialization V2
- Generated serializers now return core
SerializerDetailsinstead of the removedAkka.Serialization.V2.SerializerRegistration. DeclareCreateSerializerDetails(ExtendedActorSystem)and pass its method group to Akka.Hosting'sWithCustomSerializer, or invoke it insideSerializationSetup.Create. (#8852) - The generator now validates a marked type's shape as soon as
[AkkaSerializable]appears, before any serializer references it. Missing fields, duplicate indices, inaccessible declarations and inaccessible getters report at their source declarations, including on open generic definitions. Malformed types that used to compile silently now fail. (#8860, fixes #8853) - AKKASG046 warns when a marked type declares a public stored property with no
[AkkaField]- that property is not serialized. AKKASG047 warns when a type carries[AkkaField]annotations but no[AkkaSerializable], so the annotations are ignored. Both are warnings, and both fail a warnings-as-errors build. (#8861, fixes #8854; #8862, fixes #8856) - Generated message helper names no longer collide when two message types share a simple name across namespaces. (#8859)
Akka.Remote / Artery (experimental)
- An idle Artery association no longer reconnects to a peer that shut down. A failed stream with no queued traffic or unacknowledged system messages goes dormant instead of retrying forever; channels and reliable delivery state stay intact, and normal sends or
ActorSelection.ResolveOnewake the association with a fresh handshake. (#8858, fixes #8857) - Quarantine notices survive bounded control-stream retries, and quarantined reliable delivery resets before restart replay. (#8863)
- Artery envelope encoding no longer allocates a closure per message, and metadata is written as UTF-8 straight into the frame buffer. (#8804, #8805)
Akka.Streams
Source.Lazilynow surfaces a factory exception through the materialized task instead of losing it. (#8843)- Value-type elements stay typed across fused connections and restart substream ingress, so they no longer box on every hop. (#8807, #8824)
- Async callbacks skip closure allocation when ingress tracing is off. (#8823)
Akka.Cluster.Sharding
- A shard handoff no longer drops the owner's termination signal while handoff acknowledgements are still in flight. (#8865)
Performance
- TCP reads avoid per-read closures and nested async wrappers. (#8825)
- Generated serializers skip counting-writer allocations for known buffer writers, and
IReadOnlyListserialization no longer boxes enumerators. (#8822, #8808)
Dependency updates
- MessagePack 3.1.12, Google.Protobuf 3.36.2, LightningDB 0.23.1, Microsoft.Data.Sqlite, Grpc.Tools 2.84.0, FsCheck.Xunit 3.6.0. (#8803, #8776, #8797, #8801, #8593, #8833)
2 contributors since release 1.6.0-beta3
| COMMITS | LOC+ | LOC- | AUTHOR |
|---|---|---|---|
| 21 | 7970 | 1605 | Aaron Stannard |
| 1 | 61 | 2 | Ariel Fischer |
Changes:
- e4a3e3a Release 1.6.0-beta4: update release notes and version metadata (#8868)
- 86678fd Ensure quarantine recovery tests attempt every shutdown (#8867)
- a885d6d Fix SQLite journal reset test ordering (#8866)
- f52b99d Preserve quarantine semantics across control-stream failures (#8863)
- b57646a fix(serialization): warn about field annotations on unmarked types (#8862)
- 685789a fix(serialization): warn about omitted stored properties (#8861)
- 989c76f fix(serialization): validate message declarations before serializer registration (#8860)
- 8459408 fix(sharding): preserve owner termination during shard handoff (#8865)
- fc1153e fix(serialization): disambiguate generated message helper names (#8859)
- 7510462 Stop idle Artery associations reconnecting after peer shutdown (#8858)
See More
- a4561ff Generate core SerializerDetails and simplify Akka.Hosting registration (#8852)
- decc22c Preserve Source.Lazily factory exceptions in materialized task (#8843)
- 424de91 Avoid TCP read closures and nested async wrappers (#8825)
- bd75318 Keep value payloads typed across restart substream ingress (#8824)
- 6c3430a Avoid async callback closures without ingress tracing (#8823)
- efcb472 Avoid counting-writer allocations for known buffer writers (#8822)
- c092674 Track: remove GHSA-2m69-gcr7-jv3q NuGetAuditSuppress (#8279) (#8844) [ #8278 ]
- 2d16c32 Bump FsCheck.Xunit from 3.4.0 to 3.6.0 (#8833)
- af04369 Bump Grpc.Tools from 2.82.0 to 2.84.0 (#8593)
- 43e94eb docs: add RemotePingPong benchmark README covering all CLI and HOCON options (#8814)
- c32b95b Avoid boxed enumerators in generated IReadOnlyList serialization (#8808)
- db33a53 Avoid boxing value-type elements across fused stream connections (#8807)
- bf038d1 Merge pull request #8806 from Aaronontheweb/feature/artery-boxing-benchmarks
- ec8d0cb Merge pull request #8805 from Aaronontheweb/fix/artery-utf8-literals
- 0de0b3d Record UTF-8 PR integration onto dev after parent merge
- fc01b9c Record stacked Artery UTF-8 allocation and boxing evidence
- 2baaf54 Write Artery metadata UTF-8 directly into frame buffers
- 6659f8a Avoid per-message closure allocation in Artery envelope encoding (#8804)
- 9a131d9 Bump MessagePack from 3.1.11 to 3.1.12 (#8803)
- 23a8566 Bump Microsoft.Data.Sqlite and Microsoft.Data.Sqlite.Core (#8801)
- 96ba3d8 Bump LightningDB from 0.22.0 to 0.23.1 (#8797)
- 04113b8 Bump MessagePack from 3.1.8 to 3.1.11 (#8798)
- 7503bff Bump Google.Protobuf from 3.36.1 to 3.36.2 (#8776)
- ee7e503 Release 1.6.0-beta3 (#8796) [ #8785, #8222 ]
- 60b21af Serialization: SerializerV2 derives from SerializerWithStringManifest (#8785) [ #8784 ]
- e68ba7e Akka.API.Tests: approve the InternalsVisibleTo added by #8783 (#8786)
- a173eb0 Akka.Hosting: MAUI detection must not throw under InvariantGlobalization (#8783)
- fb397a1 Release 1.6.0-beta2 (#8781)
- 7880926 Resolve akka.loggers names before starting any logger (#8778)
- cbdec74 Akka.Persistence.Embedded: SQLite journal, snapshot store and read journal (AOT-compatible) (#8739)
- 4e9606d Persistence.Hosting: start plugin types from code (Native AOT) (#8738)
- 573f4b1 Add Match extension methods for Option (#8774)
- 88da5d9 De-flake DynamicTypeLoadingOffLoggerSetupNamedInHoconSpec (#8773)
- c07de32 Document channel sink behavior and distributed data reads (#8767)
- 6f69b07 Correct serializer loading and supervision documentation (#8766)
- 039ea57 Clarify journal write outcomes and snapshot selection bounds (#8765)
- 58f2a5e docs: replace Streams implementation XML placeholders (#8764)
- 0d8ed39 docs: replace Streams operators XML placeholders (#8763)
- 6cd2626 docs: replace Streams fusing XML placeholders (#8762)
- 45a609d docs: replace Streams framework XML placeholders (#8761)
- 9041a84 docs: replace TestKit XML placeholders (#8760)
- 5715952 docs: replace generated Streams XML placeholders (#8759)
- 4867a87 docs: replace Sharding XML placeholders (#8758)
- 7bcf3cb docs: replace Distributed Data XML placeholders (#8757)
- 26d6fa2 docs: replace Cluster Tools XML placeholders (#8756)
- 29095a1 docs: replace Remote XML placeholders (#8755)
- 1d96821 docs: complete Akka.Persistence XML documentation placeholders (#8750)
- 197b10f docs: replace core XML documentation placeholders (#8752)
- 1e383d4 TestKit: work with Akka.DynamicTypeLoading off (register TestEventListener and CallingThreadDispatcher in code) (#8754)
- 15cdd41 Replace Cluster XML documentation placeholders (#8751)
- d70c03e DistributedData multi-node: de-flake ReplicatorSpec (per-attempt probes for Get reads) (#8749)
- 4fa203e Akka.Streams tests: de-flake ForEachAsync parallelism, SplitWhen materialized-twice and TCP close coalescing (#8747)
- 745f3b3 Remote multi-node: de-flake TestConductorSpec throttle timing (#8748)
- d39d14d Build: point Verify at the repo root so single test projects build on their own (#8737) [ #8725 ]
- 0ad59d3 Akka.Streams: build island-boundary subscribers without runtime generics (Native AOT) (#8732) [ #8731, #8673 ]
- ca27540 Serialization V2 generator: native TimeSpan and small scalars (G-3), stacked on #8726 (#8727) [ #8715, #8725 ]
- 467b4ba Fix dev build: import Akka.TestKit for HexDumpFormatter in WireFormatSnapshotFormatterSpec (#8736) [ #8725, #8726 ]
- 84461de TCK: give each SaveSnapshot spec actor a fresh name (#8734)
- 011eb72 Serialization V2 generator: formatters inside collections (G-1) (#8726) [ #8715 ]
- a838d1b Serialization V2: port test kit (Verify snapshots, port spec base, mixed bindings) (#8725) [ #8676 ]
- 3936302 Serialization: V2 switch is HOCON-only (drop SerializationV2Setup) (#8729) [ #8724, #8713 ]
- dc4abf2 Serialization: global opt-in V2 switch (off by default) (#8724) [ #8676, #8713 ]
- cc75e07 Serialization: delete the built-in serializer rows from module HOCON (#8676, PR 4a) (#8711)
- b49490c Remote: PrimitiveSerializers as a native SerializerV2 (same id 17, same bytes) (#8719)
- 752b104 Serialization V2: fix docs and diagnostics drift; diagnose private nested message types (#8721) [ #8528, #8534, #8537, #8717 ]
- 344cbde openspec: amend internal-serializers-messagepack-v2 for the 2026-10-02 serialization decisions (#8720) [ #8409 ]
- c01ec35 De-flake scheduler cancel test and Hosting AwaitAssert test (#8712)
- e106d15 Release pipeline: publish suffixed tags (betas, RCs) as GitHub pre-releases (#8710)
- 5e88998 Bump coverlet.collector from 10.0.1 to 10.1.0 (#8709)
- 10ec7fc Bump docfx from 2.78.5 to 2.81.0 (#8641)
- d8fe28c Release 1.6.0-beta1 (#8597) [ #8702 ]
- 792fd2d Serialization: register every deployed module's serializers as defaults (#8676, part 3) (#8702)
- de851d4 Fix ReceiveActor regression: Receive(Type, Func<object,bool>) blocks later handlers (#8706) [ #7557 ]
- 882242b De-flake ThrottlerManagerLifecycleSpec: wait for the manager's own Terminated before SetThrottle (#8708)
- 4b7a458 Cluster.Metrics: fix nested selector manifest so remote-deployed adaptive pools deserialize (#8704)
- aefcdfc Audit BREAKING_CHANGES_V1.6.md against v1.5.71 and catch up through #8698 (#8700) [ #8694, #8132, #7456, #7622, #8222, #8465, #7557, #8594 ]
- 05cb1fc Add GETTING_STARTED_V1.6.md beta guide (#8703)
- dd0de31 Docs: update Native AOT support scope for v1.6 (#8701) [ #8667, #8697 ]
- fd9849b DistributedData: remove ReplicatorMessageSerializer's dead cache and its leaked timer (#8643) (#8699)
- 74d8bfd Serialization: module tables carry aliases and bindings (#8676, part 2) (#8698)
- 6565f17 AOT: serializers resolve their own manifests; guard the TypeCache fallback (#8697) [ #8672 ]
- d8d6a4e AOT: module serializer table for Akka.Persistence (#8626, part 4) (#8695)
- cf25db8 Add LoggerSetup for AOT-compatible custom logger registration (#7902) (#8218)
- 3daa5e4 Serialization: built-in serializers declare their ids in code (#8676, part 1) (#8694)
- 1fb112e AOT: Akka.Hosting canary app and CI job (#8668) [ #8667, #8649, #8671 ]
- 1ec9e5e AOT: remove the Akka.Streams stream-ref reflection warnings (#8671) [ #8658, #8667, #8673 ]
- 7516241 De-flake ParallelTestActorDeadlockSpec: wait for the actor, dilate the budgets (#8595) [ #7974, #8016, #8023 ]
- 1f16a3d Hosting samples: use class registry keys; document class keys for IRequiredActor under Native AOT (#8674)
- 37ada27 AOT: module serializer tables for the Cluster contrib family (#8626, part 3b) (#8669)
- 352396b AOT: guard akka.extensions and custom akka.actor.provider reflection behind Akka.DynamicTypeLoading (#8670)
- 5644f71 AOT: module serializer table for Akka.Cluster (#8626, part 3a) (#8666)
- 6e20088 Hosting: register WithExtension through ExtensionsSetup (#8649)
- 51cf0df AOT: ExtensionsSetup and a first-party akka.extensions table (#8648)
- 3d89d29 Akka.Streams: fix a possible lost wakeup in MergeHub (missing memory fence) (#8665)
- 6ef46df De-flake HubsDocTests dynamic merge: async expectation with an explicit 10s timeout (#8664)
- 6c46ee0 AOT: module serializer tables for Akka.Remote and Akka.Streams (#8626, part 2) (#8658)
- c110c5e Akka.IO: wire akka.io.tcp.maximum-frame-size to the pipe segment size (#8663) [ #8132, #8657 ]
- 16359b5 Akka.IO: remove the unimplemented ResumeWriting / WritingResumed / useResumeWriting API (#8660) [ #8646, #8617 ]
- 5bb1f1c Akka.IO TCP: hold back WriteAck until the output pipe's flush completes (#8646) [ #8617 ]
- 4316f71 De-flake TcpConnectionOwnershipDisposalSpec: keep the close from finishing before the rejected write lands (#8661)
- 2c14582 AOT: first-party logger table so Akka.Hosting's LoggerFactoryLogger resolves without reflection (#8654) [ #8613, #8603 ]
- 1e4a82a AOT: core module-serializer table (#8626, part 1) (#8645)
- 33710a3 Akka.Hosting: add missing trimming annotations for Native AOT (#8655) [ #8649 ]
- bea8482 CI: capture hang dumps on unit-test jobs (#8653)
- 0c84d4f Akka.Cluster: a Down node must never be leader, so it can't remove itself and linger outside the cluster (forward-port of #8650) (#8652)
- 1dca4b4 Disassociate the wrapped handle when a throttled association stops (#8637) (#8647)
- f923d5b AOT canary: cover routers, Stash/Become, timers, FSM, DeathWatch, and PipeTo (#8640) [ #8605 ]
- ae8f153 Cleanup after AOT milestone-1 merge (#8639)
- 74d13c2 Bump CsCheck from 4.8.0 to 4.9.1 (#8598)
- a498171 Collapse every BuiltIn* type-name table to one key, widen matching to Type.GetType's rules (#8613)
- be04d6b AOT (7/7): canary in CI with a warning baseline, buildTransitive .targets for automatic AOT/trim opt-in, Native AOT docs (#8608) [ #7246 ]
- ebb0c78 AOT: remove UDP buffer pooling, keep the DNS provider configurable through a built-in table (#8606)
- f69625f AOT (5/7): built-in routers and guardian strategy, guarded dispatcher/executor fallbacks, generic Expression.Lambda in the Props argument parser (#8605)
- 3756123 AOT (4/7): core serializers and bindings from a built-in table; serialization-identifiers matched by name — canary goes green (#8604)
- dcfeaf1 Fix Artery shutdown-flush data loss: wait for streams to actually close (#8628) [ #8636 ]
- b18540f Classic remoting: half-close on disassociate so a Windows peer doesn't lose our last frames to an RST (#8635) [ #8589 ]
- 238b986 De-flake ReplicatorPruningSpec: wait for every replicator to know every node before WriteAll (#8638)
- 0e7dc22 IO: handle Tcp.Close while a ConfirmedClose is draining (#8636) [ #8634, #8630 ]
- a0623e4 De-flake ClusterShardingFailureSpec join phase (DData variant) (#8633)
- 5fa0921 IO: fix Tcp.ConfirmedClose racing the peer's FIN (#8630) [ #8629 ]
- a26b03e AOT (3/7): Props/actor-type trimming annotations, akka.loggers from a built-in table, Akka.DependencyInjection ripple (#8603)
- ef7f9c4 LoggerStartupSpec: gate the slow logger on the test instead of a fixed 1 s delay (#8621)
- 95dd7e7 Cluster.Hosting TestHelper: stop a host that fails to start, allow 60 s for it to join (#8620)
- a4b2383 RemotingTerminatorSpecs: don't depend on the best-effort Terminated from a graceful shutdown (#8622)
- 2d33a57 TransportFailSpec: probe the reconnect with a fresh Identify per attempt and a 15 s budget (#8623)
- 8bc7e44 Hosting SemanticLoggingSpecs/WithContextSpecs: give the logger 10 s, make SemanticTestLogger thread-safe (#8624)
- e88b4f1 AOT (2/7): built-in mailbox types, mailbox requirement map, MailboxType/Mailboxes trimming annotations (#8602)
- 2f4d9d4 Hosting EventFilterTestBase: retry the logger handshake like core; listeners reply OK once per forwarder (#8619) [ #8594 ]
- 3d7cd46 ShardRegionQueriesSpecs: form the cluster in InitializeAsync and stop asking with 1-3 s timeouts (#8618)
- 0ea28f8 De-flake two TestKit timing tests (TestFSMRef state timeout, WaitForRadioSilence reset) in Akka.TestKit and Akka.Hosting.TestKit (#8615)
- ad06084 TcpHelper: give ServerConnection.WaitReadAsync a 10 s default instead of 3 s (#8616)
- 25b82f2 FileSinkSpec: flush until the elements land instead of sleeping a fixed 100 ms (#8614)
- 533064e AOT (1/7): Akka.DynamicTypeLoading feature switch, canary app, built-in tables for formatter/stdout logger/scheduler (#8601) [ #8608 ]
- edf98c6 ReplicatorSpecs: replicate the 20k-element ORMultiValueDictionary with WriteLocal and poll the replicas (#8611) [ #5686, #7899, #5663 ]
- 3a92fde De-flake the scheduler 0-delay tests and ArteryBlackholeQuarantineSpec (#8610)
- cfc11a7 De-flake DispatcherModelSpec: await conditions instead of blocking on fixed deadlines (#8609) [ #8601, #8299, #8600 ]
- 25e1dac De-flake ClusterSingletonRestartSpec: accept the hand-over retry's second HandOverInProgress (#8600) [ #8590 ]
- c6b3bd5 AOT: resolve built-in actor ref providers from constant type names so the trimmer preserves them (#8599)
- 8de1cb9 ClusterSingletonRestartSpec: assert the hand-over confirmation reaches the new oldest, so a lost HandOverInProgress is named instead of timed out (#8590) [ #8588, #8589 ]
- 8463d5c docs: explain record property targets for generated serialization (#8596)
- 8424a98 Forward-port #8591 to dev: Akka.Hosting in the akka.net repository, net10.0 only (#8594)
- 8629e6a Bump Google.Protobuf from 3.35.1 to 3.36.1 (#8577)
- e201662 De-flake StressSpec: leave the cluster before terminating a churn system; run it with 7 nodes on the 2-vCPU hosted agents (#8543)
- 3f966aa TestKit: put the DotNetty batching override under akka.remote, where the transport reads it (re-land of #8546 with the RemoteConfigSpec fix) (#8561)
- 450bebf TestKit.Xunit: implement the async dispose chain so a derived DisposeAsync no longer leaks the ActorSystem; de-flake StreamRefsSpec (#8545) [ #8191, #8217 ]
- 025eb4b Artery: honour the reconnect backoff, return the held control element on stage stop, publish the inbound context before bind, host the materializer under /system (#8554)
- 147a810 De-flake PropsSpec: await the producer latch instead of blocking on it for a flat second (#8587)
- e62aa19 De-flake RemoteDeliverySpec: give the final barrier a budget that covers the loop (#8542)
- 8c41b08 Serialization.V2: ManifestPrefix expansion moves out of the serializer transform into a per-compilation stage (#8538)
- 0d78532 Serialization.V2: referenced-assembly implementor walk; marked union bases; closed-set discovery in the facts stage (Decisions 19 and 21) (#8537)
- d5bcef0 Serialization.V2: closed-generic expansion and adoption; ManifestPrefix; AKKASG034 retired (Decisions 17 and 18) (#8536)
- 9e21298 Serialization.V2: schemas from metadata for referenced-assembly types (Decision 16) (#8534)
- cd444a1 Serialization.V2: diagnostic locations beside the model; report output joins spans (#8533)
- d1cfd05 Serialization.V2: compilation-facts stage; KnownTypes once per compilation; referenced-assembly walk skeleton (#8532)
- 75b2ffd Serialization.V2: typed keys and one schema table; nested-type collision closed (#8530)
- aaf9e66 Serialization.V2: object elements inside collections are envelope-payload boundaries (#8528)
- 3cbdf93 Serialization.V2: cached per-serializer resolve stage; one message edit re-emits one serializer (#8527)
- 2c2a406 Fix Replicator.IsKnownNode to trust members first seen as Leaving/Exiting/Downed (#8582)
- c0600b7 Cluster.Sharding: a coordinator hand-over only stops the local ShardRegion when the node is leaving (#8586) [ #8583 ]
- bef497a De-flake EntityTerminationSpec: anchor on the shard's own entity set and wait out the restart backoff without blocking a pool thread (#8584)
- 1ad1abe De-flake RemoteNodeDeathWatchSpec: barrier after the subject stops, resend-derived bound, identify asserts the actor exists (#8581)
- 9c75211 De-flake ClusterShardingRegistrationCoordinatedShutdownSpec: wait on the spec's own budget instead of a probe's flat 5 s default (#8544)
- 2d8fa21 Cluster.Sharding: arm the remember-entities write timeout with updating-state-timeout, as the config documents (#8574) [ #6479 ]
- 59d5da6 Cluster: route user commands through /system/cluster for the extension's lifetime so their order survives startup; LeaveAsync re-sends its Leave (#8580) [ #8359 ]
- ec983f6 De-flake ClusterSpec leave facts: await MemberUp before leaving so the join is ordered first; one leader pass, then MemberRemoved (#8579)
- 986e473 De-flake NodeChurnSpec: turn off legacy auto-down, widen the heartbeat pause over the measured stall, and make the payload listener match real log messages (#8556) [ #8549 ]
- 8e53c0e De-flake RemoteNodeRestartDeathWatchSpec: probe with Identify before the destructive kill, and let the subject terminate on a sliding timer (#8557)
- 86e479d De-flake ReceiveTimeoutSpec: measure the two timeout cycles with dilated probe waits instead of one flat latch (#8541)
- 408e008 De-flake ClusterShardingLeaseSpec: join the cluster in InitializeAsync instead of blocking a pool worker in the constructor (#8558)
- fe82b52 De-flake UnreachableNodeJoinsAgainSpec: the master waits for the victim to go unreachable before it terminates (#8575)
- 808de09 De-flake ShardingBufferAdapterSpec: re-send the cold messages with a fresh probe per attempt under a sharding-derived budget (#8573) [ #8545 ]
- b2524f6 De-flake ClusterSingletonManagerLeave2Spec: watch the proxy from a dedicated probe, as upstream does; migrate the file to the async TestKit API (#8569)
- 3432d6f De-flake BugFix3724Spec and HubSpec: give the zero-count event filter its own 3 s window instead of the Within's remaining time (#8566) [ #8516 ]
- 989e299 De-flake InboxSpec: receive through ReceiveAsync so a deadline failure surfaces as TimeoutException (#8564)
- a00df61 De-flake ClusterDeathWatchSpec: resolve first's end actor over the return lane before sending End (#8563)
- 91556a0 Akka.Streams: Tcp Unbind completes at once when no connection is awaiting initialization; the counter was seeded at -1 (#8570)
- 2cc9d1e De-flake DistributedPubSubRestartSpec: the restarted node makes first contact, and the survivor waits on it (#8552) [ #8557 ]
- 9705d36 De-flake ClusterSpec: stop passing an already-cancelled token to its WithinAsync block (#8540)
- 97eb9ce Bump FsCheck.Xunit from 3.3.3 to 3.4.0 (#8517)
- 287eb44 Serialization.V2: validation returns diagnostics; one gate ladder shared by both outputs (#8526)
- 846029a Serialization.V2: generator test harness, internal models, incrementality scenarios, baseline benchmark (#8525)
- a16ebf1 Revert "TestKit: put the DotNetty batching override under akka.remote, where the transport reads it (#8546)"
- d88eec8 TestKit: put the DotNetty batching override under akka.remote, where the transport reads it (#8546)
- 78f5cdc De-flake ClusterShardingQueriesSpec: wait for all three regions before allocating shards (#8524) [ #8519, #1012486927, #8310 ]
- 1552bd2 Build: bump Microsoft.SourceLink.GitHub to 10.0.303 to clear NU1902 (CVE-2026-62900) (#8535)
- 94c1949 TestKit: WithinAsync no longer swallows the block's failure when the deadline wins (#8516) [ #8483 ]
- 6cd8884 Serialization.V2: split the generator into phase files (move only, no behavior change) (#8519)
- 8ef02f2 Docs: source-generated serialization guide reflects the object-typed boundary (#8518) (#8520) [ #8384 ]
- 6775212 Serialization.V2: remove [AkkaEnvelopePayload]; a property typed object is the serializer boundary (#8518) [ #8384 ]
- bc6695b Serialization.V2: pin cross-assembly generator behavior, fix AKKASG023 mislabel, add fix-it hints (#8512) [ #8384 ]
- 2ece2c6 MNTR: eliminate the conductor port race - bind port 0 and propagate via stdout sentinel (#8515)
- 0d9deb1 Docs: user guide for source-generated MessagePack serialization (Akka.Serialization.V2) (#8514) [ #8384 ]
- 7cb73d6 Serialization.V2: record boundary decisions 16-20 in the OpenSpec design document (#8513) [ #8384 ]
- 855e8d8 Fix #8508: arm ClusterClient's reconnect deadline per establishing phase, not per message (#8510)
- e340146 Wave-3 de-flake: ReplicatorChaosSpec, ClusterShardingLeavingSpec pin, DistributedPubSubRestartSpec baseline (#8509) [ #8481, #8500, #8498 ]
- e0ab16e Artery: stop dropping the first ordinary message when the peer dialed first (#8504) [ #8496, #7314 ]
- d8e1eea Replace TBD XML doc placeholders in Akka.Event (#3435) (#8118)
- d4f8672 Replace TBD XML doc placeholders in Akka.Serialization (#3435) (#8121)
- e6e014d De-flake ClusterShardingSpec family: re-send Gets that race shard hand-off (#8500)
- 81289e8 Add TestKitBase.ShutdownAsync and adopt it in StressSpec churn teardown (#8499) [ #8497 ]
- 9b0fc9f De-flake ClusterSingletonProxySpec, ClusterSingletonRestartSpec, and DistributedPubSubRestartSpec (#8498)
- 43e9038 Fix Cluster Sharding private replicator recovery (#8480) (#8491)
- ebced6a Artery: flush outbound streams on graceful shutdown (#8486) [ #8474 ]
- c2cbd6a Bump Akka.Persistence.Sql from 1.5.67 to 1.5.70 (#8495)
- b86a6a1 Akka.Cluster: gossip removal tombstones - stop resurrecting removed members (#8484)
- 60a01d0 perf: stop retaining ConsistentHash ring's SortedDictionary (#8293) (#8324)
- 04a7980 MNTR: conductor keeps re-registered nodes; make RemoteReDeploymentSpec deterministic (#8485)
- a918393 Fix: flush graceful Disassociate PDUs before transport force-close on shutdown (#8421)
- e11bb6f MNTR: deterministic fixes for the Artery-lane spec failures (#8475)
- e581901 Wrap single-lane outbound socket in inner restart flow (#8479)
- c1c58f0 Artery: enforce quarantine on the inbound path (#8416)
- f8bcfe5 Artery test-mode: disarm the unknown-origin gate when the last blackhole heals (#8478) [ #8476 ]
- cb3147b CI: non-blocking Artery MNTR stage (#8373) [ #8378 ]
- 503e7f7 fix: update Incrementalist to 1.2.2 for SDK 10.0.4xx compatibility (#8473)
- b2cff22 Use explicit hostname in DotNetty certificate validator (#8465)
- 0cbf8d1 feat: use bounded shard rebalancing by default (#8445)
- 1e12bac Add AutoDilate metadata to TestKit timeouts (#8441)
- 0ec2139 fix: stop blocking the thread in async CircuitBreakerSpec latch waits (#8288)
- 732a17a build(deps): bump actions/setup-dotnet from 5 to 6 (#8388)
- 8dd4cca De-flake MNTR specs: stop inner waits from consuming their enclosing Within budget (#8429)
- dcd9acb MNTR: make barrier failures actually fail the barrier (#8431)
- 1a4caf7 Akka.Remote: stop, don't restart, failed throttler children (#8433, #8434) (#8437)
- f38a78c Fix torn read in PromiseActorRef.GetPath that made Path return null (#8436) [ #1, #2 ]
- 3b76168 Fix double-dilated timeout in ExpectMsgAsync(Func<T, IActorRef, bool>, ...) (#8430)
- d5993ab De-flake ActorSystemSpec.Log_dead_letters: await DeadLetterListener startup (#8428)
- 90ea389 De-flake CircuitBreakerSpec + StressSpec (deterministic) (#8427) [ #8372 ]
- 810c00a Fix ClusterClientDiscovery: preserve contact-point subscriptions across rediscovery (#8426)
- a64827d Fix flaky SpecRunCoordinatorSpec: deterministic EndSpec aggregation (no timeout race) (#8424)
- fc56f7a De-flake cluster-formation race in MNTR specs (0s auto-down + tight FD tolerance) (#8423)
- 5fae4d6 MNTR: pin restarted-system ports for both transports (#8413)
- b603b04 De-flake MNTR suite: DistributedPubSubRestartSpec + ClusterClientDiscoverySpec (bug squash) (#8415) [ #8404, #8413 ]
- 8943f25 Bump Microsoft.Extensions.Http from 10.0.9 to 10.0.10 (#8418)
- 010e0fd Artery: order DaemonMsgCreate ahead of Watch and retry early inbound resolves (#8414)
- 5b025a5 OpenSpec: drop the write-flag, migrate via reference.conf binding flips (supersedes #8403) (#8411)
- 35667df Serialization.V2: cap nested [AkkaEnvelopePayload] depth at 100 (crash guard) (#8412)
- f13a8fa De-flake ClusterShardingSpec recovery phase: keep barriers out of Within (#8406)
- 937c35b openspec: uniform migration - no per-message carve-outs, protobuf exit path (#8408)
- 464d757 DistributedPubSubRestartSpec: restore sender/receiver window ordering (#8405) [ #8400 ]
- 2679bef De-flake RemoteNodeRestartDeathWatchSpec: out-wait the association gate (#8404)
- 67db580 OpenSpec: propose internal-serializers-messagepack-v2 (#8402)
This list of changes was auto generated.