# 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 35 → 49 (+14.1)
- Rubric changed (rubric-2026.08.15 → rubric-2026.09.15) — scores are not directly comparable.

## Lenses

- Code Health 88 → 79 (-9.0)
- Architecture 81 → 99 (+17.3)
- Maturity 57 → 59 (+2.9)
- Readiness 22 → 40 (+17.6)
- Security 25 → 65 (+40.0)
- Accessibility 47 (new)

## Resolved (64)

- Coverage not measured — test suite did not build
- Dimension evaluation failed
- Duplicated block (10 lines × 2) (openpilot/selfdrive/locationd/locationd.py)
- Duplicated block (11 lines × 2) (openpilot/tools/jotpluggler/generate_event_extractors.py)
- Duplicated block (12 lines × 2) (openpilot/system/ui/lib/wifi_manager.py)
- Duplicated block (13 lines × 2) (openpilot/system/ui/lib/tests/test_handle_state_change.py)
- Duplicated block (5 lines × 2) (openpilot/selfdrive/locationd/lagd.py)
- Duplicated block (8 lines × 2) (openpilot/system/loggerd/tests/test_uploader.py)
- Duplicated block (8 lines × 2) (openpilot/tools/sim/lib/simulated_car.py)
- Duplicated block (9 lines × 2) (openpilot/system/athena/tests/test_athenad.py)
- Duplicated block (9 lines × 4) (openpilot/tools/jotpluggler/generate_event_extractors.py)
- 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)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- …and 44 more

## New (550)

- AlertRenderer._draw_text (cognitive 16) (openpilot/selfdrive/ui/mici/onroad/alert_renderer.py)
- AlertRenderer.get_alert (cognitive 16) (openpilot/selfdrive/ui/mici/onroad/alert_renderer.py)
- AlertRenderer.get_alert (cognitive 17) (openpilot/selfdrive/ui/onroad/alert_renderer.py)
- AtClient.send_apdu (cognitive 22) (openpilot/common/esim/lpa.py)
- Boundary-crossing change coupling: athenad.py ↔ qlog_size.py (openpilot/system/athena/athenad.py)
- Car.__init__ (cognitive 28) (openpilot/selfdrive/car/card.py)
- CarEvents.create_common_events (cognitive 52) (openpilot/selfdrive/car/car_events.py)
- CarEvents.create_common_events (cyclomatic 46) (openpilot/selfdrive/car/car_events.py)
- CarEvents.update (cognitive 59) (openpilot/selfdrive/car/car_events.py)
- CarEvents.update (cyclomatic 37) (openpilot/selfdrive/car/car_events.py)
- Change coupling clique: latcontrol_angle.py, latcontrol_pid.py, latcontrol_torque.py (openpilot/selfdrive/controls/lib/latcontrol_angle.py)
- Change coupling: manager.py ↔ tombstoned.py (openpilot/system/manager/manager.py)
- Change coupling: metadrive_bridge.py ↔ metadrive_process.py (openpilot/tools/sim/bridge/metadrive/metadrive_bridge.py)
- CheckUpdateButton._update_state (cognitive 28) (openpilot/selfdrive/ui/mici/layouts/settings/software.py)
- CheckUpdateButton._update_state (cyclomatic 22) (openpilot/selfdrive/ui/mici/layouts/settings/software.py)
- ChestnutStatus.update (cognitive 46) (openpilot/system/hardware/chestnut/status.py)
- ChestnutStatus.update (cyclomatic 40) (openpilot/system/hardware/chestnut/status.py)
- Controls.state_control (cognitive 24) (openpilot/selfdrive/controls/controlsd.py)
- Controls.state_control (cyclomatic 18) (openpilot/selfdrive/controls/controlsd.py)
- DesireHelper.update (cognitive 25) (openpilot/selfdrive/controls/lib/desire_helper.py)
- …and 530 more

## Changes since last survey

- 300 commits — 257 feature/other, 43 fixes

## By area

- openpilot/selfdrive — 105 commits
- openpilot/tools — 81 commits
- (root) — 41 commits
- openpilot/system — 26 commits
- openpilot/common — 24 commits
- openpilot/cereal — 5 commits
- tools/op.sh — 5 commits
- tools/release — 5 commits
- .github/workflows — 2 commits
- tools/setup_dependencies.sh — 2 commits
- scripts/lint — 1 commit
- tools/scripts — 1 commit
- tools/setup.sh — 1 commit
- tools/test_runner.py — 1 commit

## Notable commits

- fix: Fix button label widths (#38680)
- fix: Revert "Move Git LFS hosting to Hugging Face" (#38837)
- fix: Revert "bump msgq (#38836)" (#38920)
- fix: Revert "camerad: improve IFE robustness to lags (#38548)"
- fix: Revert "chestnut: don't compile if big model is LFS pointer" (#38670)
- fix: Revert "lfs: exclude big driving model in master clones (#38626)"
- fix: Revert "monitor chestnut USB in hardwared (#38741)" (#38744)
- fix: Revert "op: support all the linuxes!" (#38774)
- fix: Revert "process replay: new Y route" (#38999)
- fix: Revert big RL model (#38627)
- fix: Revert tinygrad update (#38879)
- fix: cabana: fix chart ranges and control layout (#38797)
- fix: cabana: fix clipped control outlines and filter sizing (#38795)
- fix: cabana: fix detached panel menus (#38890)
- fix: cabana: fix download bar layout (#38900)
- fix: cabana: fix sparkline edges and stroke rendering (#38784)
- fix: cabana: fix stale message size warnings (#38961)
- fix: cabana: fix stream and replay lifetimes (#38796)
- fix: cabana: fix video startup and desktop interactions (#38798)
- fix: cabana: make the Signals pane a native dock panel, fix pad (#38889)
- …and 280 more
