# Changelog

> **This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.**

## Score

- CAI 72 → 52 (-20.0)
- Rubric changed (rubric-2026.08.18 → rubric-2026.08.15) — scores are not directly comparable.

## Lenses

- Code Health 76 → 100 (+24.1)
- Architecture 99 → 96 (-3.2)
- Maturity 78 → 58 (-19.9)
- Readiness 85 → 34 (-51.1)
- Security 62 → 62 (-0.1)

## Resolved (153)

- AvgDecimalGroupsAccumulator::merge_batch (cognitive 17) (native/spark-expr/src/agg_funcs/avg_decimal.rs)
- AvgDecimalGroupsAccumulator::update_batch (cognitive 18) (native/spark-expr/src/agg_funcs/avg_decimal.rs)
- AvgGroupsAccumulator::update_batch (cognitive 18) (native/spark-expr/src/agg_funcs/avg.rs)
- Boundary-crossing change coupling: jni_api.rs ↔ CometExecIterator.scala (native/core/src/execution/jni_api.rs)
- Boundary-crossing change coupling: planner.rs ↔ CometNativeShuffleWriter.scala (native/core/src/execution/planner.rs)
- Boundary-crossing change coupling: shuffle_writer.rs ↔ CometNativeShuffleWriter.scala (native/shuffle/src/shuffle_writer.rs)
- Change coupling: CometSparkSessionExtensions.scala ↔ DataTypeSupport.scala (spark/src/main/scala/org/apache/comet/CometSparkSessionExtensions.scala)
- Change coupling: covariance.rs ↔ stddev.rs (native/spark-expr/src/agg_funcs/covariance.rs)
- Change coupling: scan.rs ↔ arrow_array_stream.rs (native/core/src/execution/operators/scan.rs)
- Change coupling: stddev.rs ↔ sum_decimal.rs (native/spark-expr/src/agg_funcs/stddev.rs)
- CheckOverflow::evaluate (cognitive 29) (native/spark-expr/src/math_funcs/internal/checkoverflow.rs)
- ColumnarToRowContext::write_column_fixed_width (cognitive 17) (native/core/src/execution/columnar_to_row.rs)
- ColumnarToRowContext::write_column_fixed_width (cyclomatic 18) (native/core/src/execution/columnar_to_row.rs)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- FileTooLong: agg_funcs/sum_int.rs (native/spark-expr/src/agg_funcs/sum_int.rs)
- FileTooLong: conversion_funcs/cast.rs (native/spark-expr/src/conversion_funcs/cast.rs)
- FileTooLong: conversion_funcs/numeric.rs (native/spark-expr/src/conversion_funcs/numeric.rs)
- FileTooLong: conversion_funcs/string.rs (native/spark-expr/src/conversion_funcs/string.rs)
- FileTooLong: execution/columnar_to_row.rs (native/core/src/execution/columnar_to_row.rs)
- …and 133 more

## New (15)

- Coverage not measured — test suite did not build
- Dimension evaluation failed
- High IaC: DS-0002 (benchmarks/Dockerfile)
- High IaC: DS-0002 (benchmarks/tpc/infra/docker/Dockerfile.build-comet)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- Low IaC: DS-0026 (benchmarks/Dockerfile)
- Low IaC: DS-0026 (benchmarks/tpc/infra/docker/Dockerfile)
- Low IaC: DS-0026 (benchmarks/tpc/infra/docker/Dockerfile.build-comet)
- Low IaC: DS-0026 (kube/Dockerfile)
- Medium IaC: DS-0013 (benchmarks/Dockerfile)
- No tests found

## Changes since last survey

- 59 commits — 42 feature/other, 17 fixes

## By area

- spark/src — 32 commits
- native/spark-expr — 12 commits
- docs/source — 6 commits
- .github/workflows — 3 commits
- native/core — 3 commits
- dev/diffs — 1 commit
- native/Cargo.lock — 1 commit
- native/shuffle — 1 commit

## Notable commits

- fix: docs: drop compatibility notes for bugs that are now fixed (#5154)
- fix: fix: codegen dispatcher null short-circuit swallowed ANSI errors, plus two latent TIME-type gaps (#5219)
- fix: fix: count ReusedSubquery and CometSubqueryBroadcast correctly in extended explain (#5206)
- fix: fix: disambiguate Iceberg scans that share a metadata_location (#5180)
- fix: fix: honor fail_on_error in native make_decimal (#5080)
- fix: fix: make native cast from float/double to decimal compatible with Spark (#5136)
- fix: fix: match Spark's whitespace trim semantics for casts from string to boolean, integral, float/double and decimal (#5150)
- fix: fix: normalize nested field nullability in ShuffleScanExec and ExpandExec (#5138)
- fix: fix: raise REMAINDER_BY_ZERO for Float/Double under ANSI mode (#5081)
- fix: fix: round on Int64 with scale <= -19 now overflows correctly (#5082)
- fix: fix: seed native Parquet scan reader options from session config (#5107)
- fix: fix: skip null slots when checking overflow in unary negation (#5162)
- fix: fix: surface next_day and make_date ANSI errors as Spark exceptions (#5167)
- fix: fix: throw ARITHMETIC_OVERFLOW for Long.MinValue div -1 under ANSI mode (#5084)
- fix: fix: use per-expression eval mode for decimal promotion (#5171)
- fix: fix: work around DataFusion 54.1.0 Parquet page-index regression (#5132)
- fix: refactor: rename pyarrowUdf config to pyarrowUDF and fix stale config docs (#5197)
- change: add docs about run-iceberg-tests. (#5247)
- change: adjust logging levels on frequent callsites (#5155)
- change: chore(deps): bump actions/stale from 10.4.0 to 11.0.0 (#5163)
- …and 39 more
