# Changelog

## Score

- CAI 48 → 71 (+22.6)
- Rubric changed (rubric-2026.08.15 → rubric-2026.09.15) — scores are not directly comparable.

## Lenses

- Code Health 93 → 86 (-6.4)
- Architecture 94 → 99 (+5.3)
- Maturity 46 → 60 (+14.5)
- Readiness 28 → 86 (+58.3)
- Security 80 → 72 (-8.2)

## Resolved (34)

- Coverage not measured — test suite did not build
- Dimension evaluation failed
- Duplicated block (11 lines × 2) (scio-core/src/main/java/com/spotify/scio/util/RemoteFileUtil.java)
- Duplicated block (13 lines × 2) (scio-smb/src/main/java/org/apache/beam/sdk/extensions/smb/SortedBucketIO.java)
- Duplicated block (14 lines × 2) (scio-examples/src/main/java/org/apache/beam/examples/complete/game/LeaderBoard.java)
- Duplicated block (14 lines × 2) (scio-grpc/src/main/java/com/spotify/scio/grpc/GrpcBatchDoFn.java)
- Duplicated block (15 lines × 3) (scio-smb/src/main/java/org/apache/beam/sdk/extensions/smb/SortedBucketSource.java)
- Duplicated block (177 lines × 3) (scio-examples/src/main/java/org/apache/beam/examples/common/ExampleUtils.java)
- Duplicated block (19 lines × 2) (scio-elasticsearch/common/src/main/java/org/apache/beam/sdk/io/elasticsearch/ElasticsearchIO.java)
- Duplicated block (21 lines × 2) (scio-smb/src/main/java/org/apache/beam/sdk/extensions/smb/JsonSortedBucketIO.java)
- Duplicated block (21 lines × 2) (scio-smb/src/main/java/org/apache/beam/sdk/extensions/smb/TensorFlowBucketIO.java)
- Duplicated block (27 lines × 2) (scio-smb/src/main/java/org/apache/beam/sdk/extensions/smb/ParquetBucketMetadata.java)
- Duplicated block (28 lines × 2) (scio-smb/src/main/java/org/apache/beam/sdk/extensions/smb/SortedBucketSink.java)
- Duplicated block (30 lines × 2) (scio-examples/src/main/java/org/apache/beam/examples/subprocess/kernel/SubProcessKernel.java)
- Duplicated block (46 lines × 2) (scio-smb/src/main/java/org/apache/beam/sdk/extensions/smb/AvroSortedBucketIO.java)
- Duplicated block (5 lines × 2) (scio-examples/src/main/java/org/apache/beam/examples/complete/game/GameStats.java)
- Duplicated block (5 lines × 2) (scio-examples/src/main/java/org/apache/beam/examples/subprocess/kernel/SubProcessKernel.java)
- Duplicated block (5 lines × 2) (scio-smb/src/main/java/org/apache/beam/sdk/extensions/smb/SortedBucketIO.java)
- Duplicated block (6 lines × 2) (scio-examples/src/main/java/org/apache/beam/examples/complete/TfIdf.java)
- Duplicated block (6 lines × 2) (scio-examples/src/main/java/org/apache/beam/examples/snippets/Snippets.java)
- …and 14 more

## New (345)

- ClassTooLong: ElasticsearchIO (scio-elasticsearch/common/src/main/java/org/apache/beam/sdk/io/elasticsearch/ElasticsearchIO.java)
- ClassTooLong: SortedBucketIO (scio-smb/src/main/java/org/apache/beam/sdk/extensions/smb/SortedBucketIO.java)
- ClassTooLong: SortedBucketScioContext (scio-smb/src/main/scala/com/spotify/scio/smb/syntax/SortMergeBucketScioContextSyntax.scala)
- ClassTooLong: SortedBucketSink (scio-smb/src/main/java/org/apache/beam/sdk/extensions/smb/SortedBucketSink.java)
- ClassTooLong: SortedBucketSource (scio-smb/src/main/java/org/apache/beam/sdk/extensions/smb/SortedBucketSource.java)
- ClassTooLong: SortedBucketTransform (scio-smb/src/main/java/org/apache/beam/sdk/extensions/smb/SortedBucketTransform.java)
- ConverterProvider.fromAvroInternal (cyclomatic 22) (scio-google-cloud-platform/src/main/scala/com/spotify/scio/bigquery/types/ConverterProvider.scala)
- Duplicated block (10 lines × 16) (scio-smb/src/main/scala/com/spotify/scio/smb/util/SMBMultiJoin.scala)
- Duplicated block (10 lines × 2) (scio-core/src/main/scala/com/spotify/scio/util/FunctionsWithWindowedValue.scala)
- Duplicated block (10 lines × 2) (scio-core/src/main/scala/com/spotify/scio/values/PairHashSCollectionFunctions.scala)
- Duplicated block (10 lines × 2) (scio-examples/src/main/scala/com/spotify/scio/examples/complete/game/GameStats.scala)
- Duplicated block (10 lines × 2) (scio-smb/src/main/scala/com/spotify/scio/smb/syntax/SortMergeBucketScioContextSyntax.scala)
- Duplicated block (10 lines × 2) (scio-smb/src/main/scala/com/spotify/scio/smb/syntax/SortMergeBucketScioContextSyntax.scala)
- Duplicated block (10 lines × 2) (scio-snowflake/src/main/scala/com/spotify/scio/snowflake/SnowflakeIO.scala)
- Duplicated block (10 lines × 26) (scio-smb/src/main/scala/com/spotify/scio/smb/util/SMBMultiJoin.scala)
- Duplicated block (10 lines × 4) (scio-core/src/main/scala/com/spotify/scio/util/MultiJoin.scala)
- Duplicated block (10 lines × 6) (scio-smb/src/main/scala/com/spotify/scio/smb/util/SMBMultiJoin.scala)
- Duplicated block (10–11 lines × 19) (scio-smb/src/main/scala/com/spotify/scio/smb/util/SMBMultiJoin.scala)
- Duplicated block (11 lines × 2) (scalafix/rules/src/main/scala/fix/v0_14_0/FixAvroCoder.scala)
- Duplicated block (11 lines × 2) (scio-examples/src/main/scala/com/spotify/scio/examples/complete/TrafficMaxLaneFlow.scala)
- …and 325 more

## Changes since last survey

- 29 commits — 24 feature/other, 5 fixes

## By area

- (root) — 18 commits
- .github/workflows — 3 commits
- project/plugins.sbt — 3 commits
- integration/src — 1 commit
- project/build.properties — 1 commit
- scio-extra/src — 1 commit
- scio-managed/src — 1 commit
- scio-parquet/src — 1 commit

## Notable commits

- fix: Fix IcebergIOIT implicit ambiguity; compile integration tests on PR builds (#6001)
- fix: Fix ambiguous implicit for RowField[Instant] in IcebergIOIT
- fix: Fix concurrent Sparkey closure cleaning (#6004)
- fix: Fix fat jar merge failure from Beam 2.76 envoy proto collision (#6002)
- fix: Fix/publish gh site workflow (#6005)
- change: Bump actions/checkout from 6 to 7 (#5947)
- change: Bump actions/setup-java from 5 to 6 (#5995)
- change: Expand IcebergIO write API to cover all write options (#5986)
- change: Generate scaladoc for scio-managed (#6006)
- change: Update caffeine to 3.2.4 (#5961)
- change: Update circe-core, circe-generic, ... to 0.14.16 (#5967)
- change: Update cloud-sql-connector-jdbc-sqlserver, ... to 1.28.6 (#5963)
- change: Update elasticsearch-java to 8.19.18 (#5960)
- change: Update jedis to 7.5.3 (#5980)
- change: Update jna to 5.19.1 (#5969)
- change: Update magnolify to 0.9.8; adopt portable Timestamp encoding for IcebergIO (#6000)
- change: Update metrics-core to 4.2.39 (#5968)
- change: Update munit to 1.3.3 (#5975)
- change: Update mysql-connector-j to 9.7.0 (#5964)
- change: Update neo4j-java-driver to 4.4.26 (#5972)
- …and 9 more

## Architecture

- Containers 0 added · 0 removed · contexts 2 added · 0 removed · edges 2 added · 0 removed

## Added bounded contexts (2)

- repository
- scalafix

## Added dependency edges (2)

- repository → scalafix
- scalafix → repository (coupling)
