# Changelog

## Score

- CAI 54 → 55 (+1.1)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

## Lenses

- Code Health 71 → 71 (+0.3)
- Architecture 96 → 97 (+1.2)
- Maturity 60 → 60 (+0.2)
- Readiness 81 → 77 (-4.4)
- Security 62 → 73 (+11.1)
- Accessibility 40 → 40 (+0.0)
- Performance 91 (new)

## Resolved (23)

- Change coupling: eval.rs ↔ train.rs (crates/brush-train/src/eval.rs)
- Change coupling: lib.rs ↔ lib.rs (crates/brush-prefix-sum/src/lib.rs)
- Change coupling: render_aux.rs ↔ train.rs (crates/brush-render/src/render_aux.rs)
- Documentation: no installation or build instructions (crates/rrfd/README.md)
- Duplicated block (10 lines × 2) (crates/brush-sort/src/kernels.rs)
- Duplicated block (12 lines × 2) (crates/brush-loss/src/lib.rs)
- Duplicated block (12 lines × 3) (crates/brush-sort/src/kernels.rs)
- Duplicated block (29 lines × 2) (crates/brush-sort/src/kernels.rs)
- Duplicated block (7 lines × 2) (crates/brush-loss/src/lib.rs)
- Duplicated block (8 lines × 2) (crates/brush-loss/src/lib.rs)
- Duplicated block (9–10 lines × 2) (crates/brush-sort/src/kernels.rs)
- FunctionTooLong: brush_sort::kernels::sort_scatter_kernel (crates/brush-sort/src/kernels.rs)
- Hotspot: apps/brush-app/src/ui/app.rs (apps/brush-app/src/ui/app.rs)
- Hotspot: apps/brush-app/src/ui/scene.rs (apps/brush-app/src/ui/scene.rs)
- Hotspot: crates/brush-loss/src/lib.rs (crates/brush-loss/src/lib.rs)
- Hotspot: crates/brush-render/src/kernels/rasterize.rs (crates/brush-render/src/kernels/rasterize.rs)
- Hotspot: crates/brush-train/src/train.rs (crates/brush-train/src/train.rs)
- Medium CVE: [CVE redacted] (package-lock.json)
- Near-duplicate member pair (31 shared lines) (crates/brush-sort/src/kernels.rs)
- Near-duplicate member pair (61 shared lines) (crates/brush-loss/src/lib.rs)
- …and 3 more

## New (11)

- Change coupling: lib.rs ↔ lib.rs (crates/brush-scan/src/lib.rs)
- Change-coupling hub: train.rs → render_aux.rs, visualize_tools.rs, eval.rs (crates/brush-train/src/train.rs)
- Duplicated block (10 lines × 2) (crates/brush-scan/src/kernels.rs)
- Duplicated block (5 lines × 2) (crates/brush-loss/src/lib.rs)
- Duplicated block (6–8 lines × 2) (crates/brush-render/src/bwd/kernels/project_backwards.rs)
- Near-duplicate member pair (54 shared lines) (crates/brush-loss/src/lib.rs)
- Off the main sequence: brush-async
- Off the main sequence: brush-cube
- Off the main sequence: lpips
- Off the main sequence: rrfd
- Redundant factory methods for creating a RunningProcess. The first method likely defaults to `default_device()`, while the second allows explicit device selection. This creates two entry points for the same logical operation (starting a training process), forcing users to guess which one to use or duplicate logic to handle device selection.

## Changes since last survey

- 3 commits — 3 feature/other, 0 fixes

## By area

- crates/brush-render — 3 commits

## Notable commits

- change: Improve training efficiency (#554)
- change: Let burn fuse the training step, and cubecl do the scans (#546)
- change: Let burn generate the Fusion plumbing (#553)
