# Changelog

## Score

- CAI 73 → 74 (+1.2)
- Rubric changed (rubric-2026.09.9 → rubric-2026.09.17) — scores are not directly comparable.

## Lenses

- Code Health 90 → 89 (-0.1)
- Architecture 98 → 90 (-8.4)
- Maturity 75 → 75 (-0.0)
- Readiness 63 → 64 (+0.9)
- Security 79 → 85 (+5.6)
- Domain Modelling 100 → 100 (+0.0)
- Performance 100 (new)

## Resolved (21)

- Change coupling: run.rs ↔ system.rs (crates/prek/src/cli/run/run.rs)
- Documentation: no installation or build instructions
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (10 lines × 2) (crates/prek/src/hooks/pre_commit_hooks/fix_byte_order_marker.rs)
- Duplicated block (11 lines × 5) (crates/prek/src/languages/bun/installer.rs)
- Duplicated block (7 lines × 2) (crates/prek/src/languages/bun/installer.rs)
- Duplicated block (9 lines × 5) (crates/prek/src/hooks/pre_commit_hooks/check_json.rs)
- Hotspot: crates/prek/src/archive.rs (crates/prek/src/archive.rs)
- Hotspot: crates/prek/src/cli/cache_gc.rs (crates/prek/src/cli/cache_gc.rs)
- Hotspot: crates/prek/src/config/repo.rs (crates/prek/src/config/repo.rs)
- Hotspot: crates/prek/src/languages/python/uv.rs (crates/prek/src/languages/python/uv.rs)
- Hotspot: crates/prek/src/schema.rs (crates/prek/src/schema.rs)
- Members sharing a duplicated core (4 members, 50+ identical tokens) (crates/prek/src/languages/bun/installer.rs)
- Members sharing a duplicated core (4 members, 50+ identical tokens) (crates/prek/src/languages/docker.rs)
- Members sharing a duplicated core (6 members, 50+ identical tokens) (crates/prek/src/languages/bun/installer.rs)
- TodoComment (crates/prek/src/languages/golang/installer.rs)
- TodoComment (crates/prek/src/languages/node/installer.rs)
- TodoComment (crates/prek/src/languages/node/installer.rs)
- TodoComment (crates/prek/src/languages/python/uv.rs)
- …and 1 more

## New (22)

- Dependency hygiene PARTLY measured — Python dependencies read, no exact pin to grade for currency
- Documentation: no licence statement (docs/security.md)
- Documentation: no project overview (README.md)
- Duplicated block (10 lines × 3) (crates/prek/src/hooks/pre_commit_hooks/fix_byte_order_marker.rs)
- Duplicated block (10 lines × 4) (crates/prek/src/hooks/pre_commit_hooks/check_json.rs)
- Duplicated block (18 lines × 2) (scripts/update-macports-portfile.py)
- Duplicated block (6 lines × 2) (crates/prek/src/languages/bun/installer.rs)
- Duplicated block (8 lines × 4) (crates/prek/src/languages/bun/installer.rs)
- Duplicated block (9 lines × 2) (scripts/update-macports-portfile.py)
- Duplicated block (9–10 lines × 2) (crates/prek/src/hooks/pre_commit_hooks/check_json.rs)
- Hotspot: crates/prek/src/hooks/pre_commit_hooks/check_merge_conflict.rs (crates/prek/src/hooks/pre_commit_hooks/check_merge_conflict.rs)
- Medium vulnerability: RUSTSEC-2026-0285 (Cargo.lock)
- Members sharing a duplicated core (4 members, 50+ identical tokens) (crates/prek/src/languages/docker.rs)
- Members sharing a duplicated core (6 members, 50+ identical tokens) (crates/prek/src/languages/bun/installer.rs)
- Off the main sequence: prek-identify
- Off the main sequence: prek-pty
- Projects may be oversized for their cohesion
- Redundant method exposure across split types. `Pty` splits into `ReadPty` and `WritePty`. Since resizing a PTY is a property of the underlying file descriptor (shared by both ends), exposing `resize` on `WritePty` and `OwnedWritePty` is redundant if `Pty` already exposes it. Furthermore, `OwnedWritePty` duplicates the functionality of `WritePty` (which is likely a reference-counted or borrowed view), creating API surface bloat where `WritePty.resize` should suffice for both owned and borrowed contexts, or `Pty.resize` should be the canonical entry point.
- TodoComment (crates/prek/src/cli/run/filter.rs)
- TodoComment (crates/prek/src/languages/node/installer.rs)
- …and 2 more

## Changes since last survey

- 67 commits — 65 feature/other, 2 fixes

## By area

- crates/prek — 29 commits
- (root) — 25 commits
- .github/workflows — 8 commits
- (repo) — 1 commit
- .config/mise.toml — 1 commit
- crates/prek-identify — 1 commit
- docs/debugging.md — 1 commit
- docs/reference — 1 commit

## Notable commits

- fix: Rebalance CI language tests and fix Windows tool selection (#2758)
- fix: Scan `check-merge-conflict` files in fixed-size blocks (#2781)
- change: Add Nushell completion generation (#2785)
- change: Add `--check` and simplify `end-of-file-fixer` (#2764)
- change: Add `--check` to `file-contents-sorter` (#2765)
- change: Add `--check` to `requirements-txt-fixer` (#2766)
- change: Add `--check` to `trailing-whitespace` (#2763)
- change: Add `include_deleted` to allow hooks to include deleted files (#2733)
- change: Avoid JSON imports when querying Python interpreters
- change: Batch file reads in shebang checks (#2793)
- change: Bump version to 0.5.3 (#2708)
- change: Bump version to 0.5.4
- change: Cache the resolved Git executable on macOS (#2726)
- change: Check cached hook environments concurrently
- change: Clarify display path parameters in builtin hooks (#2783)
- change: Clarify documentation setup and maintenance steps (#2721)
- change: Clarify the flow and scope of usage guides (#2710)
- change: Combine and cache Git repository path queries (#2724)
- change: Expose and document the shell completion command (#2727)
- change: Move `mise.toml` to `.config` subdirectory (#2741)
- …and 47 more
