# Changelog

## Score

- CAI 50 → 54 (+3.9)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

## Lenses

- Code Health 65 → 69 (+3.4)
- Architecture 78 → 79 (+0.3)
- Maturity 76 → 70 (-5.9)
- Readiness 54 → 66 (+12.3)
- Security 46 → 55 (+9.2)
- Accessibility 45 → 45 (+0.2)
- Performance 65 → 64 (-1.2)

## Resolved (215)

- ActivationCollector.ScanAll (cognitive 19) (src/Orleans.Runtime/Catalog/ActivationCollector.cs)
- ArrayCodec.ReadValue (cognitive 17) (src/Orleans.Serialization/Codecs/ArrayCodec.cs)
- ArraySegmentCodec.ReadValue (cognitive 16) (src/Orleans.Serialization/Codecs/ArrayCodec.cs)
- AzureTableTransactionalStateStorage.Store (cognitive 28) (src/Azure/Orleans.Transactions.AzureStorage/TransactionalState/AzureTableTransactionalStateStorage.cs)
- AzureTableTransactionalStateStorage.Store (cyclomatic 19) (src/Azure/Orleans.Transactions.AzureStorage/TransactionalState/AzureTableTransactionalStateStorage.cs)
- Banned license: MySql.Data
- BarePragmaDisable (test/Extensions/Orleans.Azure.Tests/Streaming/DelayedQueueRebalancingTests.cs)
- BarePragmaDisable (test/Orleans.Core.Tests/DurableJobs/LocalDurableJobManagerTests.cs)
- BarePragmaDisable (test/Orleans.GrainDirectory.Tests/GrainDirectory/GrainDirectoryOptionsTests.cs)
- BarePragmaDisable (test/Orleans.GrainDirectory.Tests/GrainDirectory/GrainDirectoryRollingUpgradeTests.cs)
- BarePragmaDisable (test/Orleans.GrainDirectory.Tests/GrainDirectory/GrainDirectoryRollingUpgradeTests.cs)
- BarePragmaDisable (test/Orleans.GrainDirectory.Tests/GrainDirectory/GrainDirectoryShutdownMigrationTests.cs)
- BarePragmaDisable (test/Orleans.Serialization.UnitTests/ISerializableTests.cs)
- BarePragmaDisable (test/Orleans.Serialization.UnitTests/ISerializableTests.cs)
- BareSuppressMessage (src/Orleans.Core/Async/AsyncLock.cs)
- BareSuppressMessage repeated 15 times in 7 files (src/AdoNet/Orleans.GrainDirectory.AdoNet/GlobalSuppressions.cs)
- Boundary-crossing change coupling: ISerializableTypeDescription.cs ↔ Annotations.cs (src/Orleans.CodeGenerator/Model/ISerializableTypeDescription.cs)
- Bounded contexts not declared
- Build status unknown
- Change coupling: ClusterMembershipService.cs ↔ MembershipTableManager.cs (src/Orleans.Runtime/MembershipService/ClusterMembershipService.cs)
- …and 195 more

## New (1379)

- ActivationCollector.DeactivateInDueTimeOrder (cognitive 18) (src/Orleans.Runtime/Catalog/ActivationCollector.cs)
- ActivationCollector.TryRescheduleCollection (cognitive 16) (src/Orleans.Runtime/Catalog/ActivationCollector.cs)
- AzureBlobJournalStorageProvider.ListAsync (cognitive 22) (src/Azure/Orleans.Journaling.AzureStorage/AzureBlobJournalStorageProvider.cs)
- AzureQueueJsonDataAdapter.RemoveUnreferencedIds (cognitive 29) (src/Azure/Orleans.Streaming.AzureStorage/Providers/Streams/AzureQueue/IAzureQueueDataAdapter.cs)
- AzureQueueJsonDataAdapter.RemoveUnreferencedIds (cyclomatic 16) (src/Azure/Orleans.Streaming.AzureStorage/Providers/Streams/AzureQueue/IAzureQueueDataAdapter.cs)
- AzureTableJournalStorageProvider.GetCatalogFilter (cognitive 23) (src/Azure/Orleans.Journaling.AzureStorage/AzureTableJournalStorageProvider.cs)
- AzureTableJournalStorageProvider.ListAsync (cognitive 17) (src/Azure/Orleans.Journaling.AzureStorage/AzureTableJournalStorageProvider.cs)
- AzureTableTransactionalStateStorage.StoreCore (cognitive 27) (src/Azure/Orleans.Transactions.AzureStorage/TransactionalState/AzureTableTransactionalStateStorage.cs)
- AzureTableTransactionalStateStorage.StoreCore (cyclomatic 18) (src/Azure/Orleans.Transactions.AzureStorage/TransactionalState/AzureTableTransactionalStateStorage.cs)
- BarePragmaDisable (test/Orleans.Connections.Security.Tests/CertificateCreator.cs)
- BarePragmaDisable (test/Orleans.Runtime.Internal.Tests/DependencyInjection/GenericRegistrationTests.cs)
- BarePragmaDisable (test/Orleans.Runtime.Internal.Tests/DependencyInjection/GenericRegistrationTests.cs)
- BarePragmaDisable repeated 13 times in 8 files (src/Orleans.TestingHost/InProcTestCluster.cs)
- BareSuppressMessage repeated 13 times in 6 files (src/Azure/Orleans.Clustering.AzureStorage/Utilities/TableStorageErrorCode.cs)
- BatchOperation.Flush (cyclomatic 23) (src/Azure/Orleans.Transactions.AzureStorage/TransactionalState/AzureTableTransactionalStateStorage.cs)
- CassandraClusteringTable.ReadConsistentAsync (cognitive 16) (src/Cassandra/Orleans.Clustering.Cassandra/CassandraClusteringTable.cs)
- Catalog.GetOrCreateActivation (cognitive 18) (src/Orleans.Runtime/Catalog/Catalog.cs)
- Change coupling: ConsistentRingProvider.cs ↔ VirtualBucketsRingProvider.cs (src/Orleans.Runtime/ConsistentRing/ConsistentRingProvider.cs)
- Change coupling: MembershipAgent.cs ↔ MembershipTableManager.cs (src/Orleans.Runtime/MembershipService/MembershipAgent.cs)
- Change coupling: MembershipSystemTarget.cs ↔ SiloHealthMonitor.cs (src/Orleans.Runtime/MembershipService/MembershipSystemTarget.cs)
- …and 1359 more

## Changes since last survey

- 300 commits — 146 feature/other, 154 fixes

## By area

- docs/site — 28 commits
- test/Extensions — 21 commits
- src/Azure — 19 commits
- src/Orleans.Streaming — 17 commits
- src/Orleans.Runtime — 15 commits
- (root) — 14 commits
- src/Orleans.Core — 12 commits
- .github/scripts — 9 commits
- .github/actions — 8 commits
- .github/workflows — 8 commits
- src/AWS — 8 commits
- src/Orleans.TestingHost — 8 commits
- src/Orleans.Serialization — 7 commits
- test/Orleans.Reminders.TestKit.Tests — 7 commits
- test/Orleans.Reminders.Tests — 7 commits
- src/Dashboard — 6 commits
- test/Orleans.Analyzers.Tests — 6 commits
- test/Orleans.Core.Tests — 6 commits
- src/Orleans.DurableJobs — 5 commits
- src/Orleans.Reminders.TestKit — 5 commits

## Notable commits

- fix: ci: fix invalid cfs-npm Dependabot registry configuration (#11079)
- fix: fix(adonet): add missing CleanupDefunctSiloEntriesKey to Oracle clustering (#11246)
- fix: fix(adonet): align PostgreSQL persistence script with its migration (#11247)
- fix: fix(adonet): normalize integer reads (#11283)
- fix: fix(adonet): preserve membership consistency (#11317)
- fix: fix(adonet): return scalar SQLite persistence versions (#11322)
- fix: fix(analyzers): clarify Orleans contract identities (#10910)
- fix: fix(analyzers): create missing Orleans contract manifests (#10915)
- fix: fix(analyzers): enforce CA1062 for Cosmos and S3 (#11171)
- fix: fix(analyzers): enforce disposable field ownership (#11167)
- fix: fix(analyzers): enforce ordinal string comparisons (#11150)
- fix: fix(analyzers): expand CA1062 library coverage (#11160)
- fix: fix(analyzers): expand CA1062 provider coverage (#11157)
- fix: fix(analyzers): validate transaction test kit inputs (#11161)
- fix: fix(aws): bind DynamoDB token and profile options (#11290)
- fix: fix(aws): honor DynamoDB endpoint credentials (#11292)
- fix: fix(aws): preserve DynamoDB membership consistency (#11310)
- fix: fix(aws): redact DynamoDB tokens (#11288)
- fix: fix(aws): use invariant DynamoDB clustering text (#11051)
- fix: fix(aws): use invariant DynamoDB state serialization (#11056)
- …and 280 more

## API surface

- 4 added · 1 removed (a removed endpoint is potentially breaking)

## Added endpoints (4)

- GET /health/live
- GET /health/ready
- GET /health/startup
- GET /hello/{name}

## Removed endpoints (breaking) (1)

- GET /health
