# Changelog

## Score

- CAI 68 → 69 (+0.9)
- Rubric changed (rubric-2026.09.8 → rubric-2026.09.17) — scores are not directly comparable.

## Lenses

- Code Health 78 → 78 (-0.0)
- Architecture 99 → 93 (-6.1)
- Maturity 64 → 65 (+1.1)
- Readiness 97 → 88 (-8.5)
- Security 71 → 78 (+7.3)
- Domain Modelling 100 → 100 (+0.0)
- Event Sourcing 100 → 100 (+0.0)
- Accessibility 62 → 62 (+0.0)
- Performance 100 (new)

## Resolved (66)

- Boundary-crossing change coupling: body.rs ↔ decode.rs (gix-object/src/commit/message/body.rs)
- Boundary-crossing change coupling: decode.rs ↔ decode.rs (gix-actor/src/signature/decode.rs)
- Change coupling: body.rs ↔ parse.rs (gix-object/src/commit/message/body.rs)
- Change coupling: body.rs ↔ ref_iter.rs (gix-object/src/commit/message/body.rs)
- Change coupling: namespace.rs ↔ iter.rs (gix-ref/src/namespace.rs)
- Duplicated block (10 lines × 2) (gix-filter/src/driver/process/client.rs)
- Duplicated block (10 lines × 2) (gix-filter/src/eol/convert_to_git.rs)
- Duplicated block (10 lines × 2) (gix-packetline/src/async_io/read.rs)
- Duplicated block (10 lines × 2) (gix/src/object/impls.rs)
- Duplicated block (11 lines × 2) (gitoxide-core/src/repository/merge/commit.rs)
- Duplicated block (11 lines × 2) (gix-tix/src/edit/rebase.rs)
- Duplicated block (13 lines × 2) (gix-odb/src/store_impls/loose/write.rs)
- Duplicated block (13 lines × 3) (gix/src/repository/attributes.rs)
- Duplicated block (15 lines × 2) (gix-odb/src/store_impls/loose/write.rs)
- Duplicated block (16 lines × 2) (gix-object/src/tree/write.rs)
- Duplicated block (18 lines × 2) (gix-object/src/signature/sign.rs)
- Duplicated block (20–21 lines × 2) (gix-odb/src/store_impls/loose/find.rs)
- Duplicated block (5 lines × 4) (gix-worktree/src/stack/state/attributes.rs)
- Duplicated block (6 lines × 2) (gix-hash/src/prefix.rs)
- Duplicated block (6 lines × 2) (gix-object/src/traits/find.rs)
- …and 46 more

## New (100)

- Boundary-crossing change coupling: decode.rs ↔ decode.rs (gix-actor/src/signature/decode.rs)
- Boundary-crossing change coupling: decode.rs ↔ decode.rs (gix-actor/src/signature/decode.rs)
- Boundary-crossing change coupling: decode.rs ↔ decode.rs (gix-object/src/commit/message/decode.rs)
- Boundary-crossing change coupling: decode.rs ↔ mod.rs (gix-object/src/commit/message/decode.rs)
- Boundary-crossing change coupling: decode.rs ↔ parse.rs (gix-object/src/commit/message/decode.rs)
- Change coupling: cascade.rs ↔ serde.rs (gix-credentials/src/helper/cascade.rs)
- Change-coupling hub: body.rs → decode.rs, parse.rs, ref_iter.rs (gix-object/src/commit/message/body.rs)
- Duplicate output configuration properties with different types. Similar to the status module, `revision.list` exposes both `format` (generic `OutputFormat`) and `text` (specific `Format`). This inconsistency across modules suggests a lack of unified design for how output formatting is handled in context objects versus options structs.
- Duplicate output configuration properties with different types. `output_format` uses the generic `OutputFormat` enum, while `format` uses a domain-specific `Format` enum. This forces users to choose between a generic and a specific formatter for the same operation, creating confusion about which one takes precedence or if they are redundant.
- Duplicated block (10 lines × 2) (gix-filter/src/driver/process/client.rs)
- Duplicated block (10 lines × 2) (gix-hash/src/object_id.rs)
- Duplicated block (10 lines × 2) (gix-packetline/src/async_io/read.rs)
- Duplicated block (10 lines × 2) (gix-protocol/src/handshake/refs/async_io.rs)
- Duplicated block (11 lines × 2) (gitoxide-core/src/repository/merge/commit.rs)
- Duplicated block (11 lines × 2) (gix-diff/src/tree/function.rs)
- Duplicated block (11 lines × 2) (gix/src/clone/fetch/mod.rs)
- Duplicated block (11 lines × 2) (gix/src/worktree/remove.rs)
- Duplicated block (12 lines × 2) (gix/src/config/tree/sections/core.rs)
- Duplicated block (13–15 lines × 2) (gix-merge/src/blob/pipeline.rs)
- Duplicated block (15 lines × 2) (gix-protocol/src/handshake/refs/async_io.rs)
- …and 80 more

## Changes since last survey

- 149 commits — 107 feature/other, 42 fixes

## By area

- (repo) — 27 commits
- (root) — 16 commits
- gix/src — 12 commits
- gix-error/src — 7 commits
- gix-glob/tests — 4 commits
- gix-merge/src — 4 commits
- gix-pack/src — 4 commits
- gix-ref/src — 4 commits
- gix/tests — 4 commits
- gix-object/src — 3 commits
- gix-protocol/src — 3 commits
- gix-transport/src — 3 commits
- .agents/skills — 2 commits
- etc/reports — 2 commits
- gitoxide-core/src — 2 commits
- gix-credentials/src — 2 commits
- gix-date/tests — 2 commits
- gix-fs/src — 2 commits
- gix-odb/src — 2 commits
- gix-path/src — 2 commits

## Notable commits

- fix: Merge pull request #2992 from GitoxideLabs/fix-message-newline
- fix: Merge pull request #2993 from youdie006/fix-blank-space-character-classes
- fix: Merge pull request #2994 from rawsun007/fix-date-offset-range
- fix: Merge pull request #3002 from GitoxideLabs/fix-8bit-date
- fix: Merge pull request #3006 from GitoxideLabs/gix-fs-fix
- fix: Merge pull request #3013 from Mrmaxmeier/fix-gix-bitmap-ewah-usize32-overflow
- fix: Merge pull request #3024 from goldjacobe/fix-tree-merge-keep-dir-on-leaf-removal
- fix: Merge pull request #3026 from GitoxideLabs/status-fix
- fix: fix CI
- fix: fix(gitoxide-core): validate received ref names before writing (#3005)
- fix: fix(gix)!: preserve causes across fallible conversions
- fix: fix(gix): anchor worktree removal paths to the repository CWD
- fix: fix(gix): propagate failed fetch ancestry checks
- fix: fix(gix-bitmap): reject chunk length that overflows 32-bit usize
- fix: fix(gix-command): classify malformed command lines
- fix: fix(gix-date): reject a timezone offset git would not read
- fix: fix(gix-date): reject ambiguous bare numeric dates (#3001)
- fix: fix(gix-dir): keep uninitialized submodules tracked (starship/starship#6881)
- fix: fix(gix-error): keep drained exceptions safe to inspect
- fix: fix(gix-error): preserve classifications in custom I/O payloads
- …and 129 more
