# 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 60 → 62 (+2.0)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

## Lenses

- Code Health 70 → 70 (-0.2)
- Architecture 99 → 99 (+0.1)
- Maturity 86 → 86 (-0.1)
- Readiness 56 → 56 (+0.0)
- Security 53 → 64 (+11.9)
- Domain Modelling 91 → 88 (-2.8)
- Performance 73 → 62 (-10.5)

## Resolved (39)

- Change coupling: backend.rs ↔ backend.rs (core/services/cloudflare-kv/src/backend.rs)
- Change coupling: backend.rs ↔ backend.rs (core/services/cloudflare-kv/src/backend.rs)
- Change coupling: backend.rs ↔ backend.rs (core/services/mysql/src/backend.rs)
- Change coupling: backend.rs ↔ backend.rs (core/services/mysql/src/backend.rs)
- Change coupling: lib.rs ↔ lib.rs (core/layers/concurrent-limit/src/lib.rs)
- Change coupling: lib.rs ↔ lib.rs (core/layers/concurrent-limit/src/lib.rs)
- Change coupling: lister.rs ↔ lister.rs (core/services/azblob/src/lister.rs)
- Change coupling: lister.rs ↔ lister.rs (core/services/azblob/src/lister.rs)
- Change-coupling hub: backend.rs → backend.rs, backend.rs, backend.rs, backend.rs (core/services/azblob/src/backend.rs)
- Change-coupling hub: backend.rs → uri.rs, backend.rs, backend.rs, backend.rs, backend.rs, backend.rs (core/services/s3/src/backend.rs)
- Documentation: no usage examples (website/README.md)
- High: security finding (details withheld)
- High: security finding (details withheld)
- Hotspot: core/core/src/layers/correctness_check.rs (core/core/src/layers/correctness_check.rs)
- Hotspot: core/core/src/layers/simulate.rs (core/core/src/layers/simulate.rs)
- Hotspot: core/core/src/raw/oio/list/flat_list.rs (core/core/src/raw/oio/list/flat_list.rs)
- Hotspot: core/layers/fastmetrics/src/lib.rs (core/layers/fastmetrics/src/lib.rs)
- Hotspot: core/layers/metrics/src/lib.rs (core/layers/metrics/src/lib.rs)
- Hotspot: core/layers/observe-metrics-common/src/lib.rs (core/layers/observe-metrics-common/src/lib.rs)
- Hotspot: core/layers/otelmetrics/src/lib.rs (core/layers/otelmetrics/src/lib.rs)
- …and 19 more

## New (81)

- Change coupling: backend.rs ↔ backend.rs (core/services/cloudflare-kv/src/backend.rs)
- Change coupling: backend.rs ↔ backend.rs (core/services/cloudflare-kv/src/backend.rs)
- Change coupling: backend.rs ↔ backend.rs (core/services/mysql/src/backend.rs)
- Change coupling: backend.rs ↔ backend.rs (core/services/mysql/src/backend.rs)
- Change coupling: lib.rs ↔ lib.rs (core/layers/concurrent-limit/src/lib.rs)
- Change coupling: lib.rs ↔ lib.rs (core/layers/concurrent-limit/src/lib.rs)
- Change coupling: lister.rs ↔ lister.rs (core/services/azblob/src/lister.rs)
- Change coupling: lister.rs ↔ lister.rs (core/services/azblob/src/lister.rs)
- Change-coupling hub: backend.rs → backend.rs, backend.rs, backend.rs (core/services/azblob/src/backend.rs)
- Change-coupling hub: backend.rs → uri.rs, backend.rs, backend.rs, backend.rs, backend.rs (core/services/s3/src/backend.rs)
- Critical CVE: [GHSA redacted] (.github/scripts/weekly_update/uv.lock)
- Documentation: no contributor guidance (bindings/go/README.md)
- Duplicated block (10 lines × 2) (bindings/go/copier.go)
- Duplicated block (10 lines × 2) (bindings/go/reader.go)
- Duplicated block (10 lines × 3) (bindings/go/metadata.go)
- Duplicated block (10 lines × 4) (bindings/go/reader.go)
- Duplicated block (10 lines × 6) (bindings/go/copier.go)
- Duplicated block (11 lines × 2) (bindings/go/stat.go)
- Duplicated block (12 lines × 2) (bindings/go/presign.go)
- Duplicated block (12 lines × 2) (bindings/swift/OpenDAL/Sources/OpenDAL/Operator.swift)
- …and 61 more

## Changes since last survey

- 28 commits — 17 feature/other, 11 fixes

## By area

- core/services — 5 commits
- .agents/skills — 4 commits
- .github/workflows — 4 commits
- bindings/python — 4 commits
- .github/services — 3 commits
- bindings/dotnet — 3 commits
- core/core — 2 commits
- scripts/release_impact.py — 1 commit
- scripts/release_lifecycle.py — 1 commit
- scripts/verify.py — 1 commit

## Notable commits

- fix: fix(ci): mount repository root for Dart cross builds (#8305)
- fix: fix(ci): publish dotnet packages only from final release tags (#8311)
- fix: fix(core): disable prefetch for concurrent writes and copies (#8327)
- fix: fix(release): enable automatic resolution and deduplicate failure notices (#8303)
- fix: fix(release): include unlabeled PRs and preserve version titles (#8308)
- fix: fix(release): publish approved source before optional distributions (#8304)
- fix: fix(release): sync lifecycle through discussion comments (#8297)
- fix: fix(release): validate declarations and published state correctly (#8322)
- fix: fix(scripts): show release verification build output (#8317)
- fix: fix(services/goosefs): reject unknown write_type instead of defaulting to MUST_CACHE (#8294)
- fix: fix(services/oss): prefer OIDC credentials over ECS metadata (#8339)
- change: Add `BufferCursor`, an implementation of `Read` + `Seek` for `Buffer` (#8320)
- change: chore: sync released versions for 0.59.2 (#8307)
- change: chore: sync released versions for 0.59.3 (#8334)
- change: ci(s3): set MinIO anonymous policy via aws instead of mc (#8295)
- change: ci: classify current issues and pull requests with Qwen (#8312)
- change: ci: prepare weekly releases on Thursday UTC (#8335)
- change: ci: use an allowed 1Password action version (#8299)
- change: docs: add Anaconda main installation for Python (#8328)
- change: feat(bindings/dotnet): add Exists and Check (#8337)
- …and 8 more

## Architecture

- Containers 0 added · 0 removed · contexts 3 added · 0 removed · edges 1 added · 0 removed

## Added bounded contexts (3)

- opendal
- opendal-spring
- python

## Added dependency edges (1)

- opendal-spring → opendal
