# Changelog

## Score

- CAI 72 → 75 (+2.0)
- Rubric changed (rubric-2026.09.15 → rubric-2026.10.1) — scores are not directly comparable.

## Lenses

- Code Health 93 → 92 (-0.1)
- Architecture 100 → 91 (-9.1)
- Maturity 89 → 88 (-0.2)
- Readiness 58 → 60 (+2.2)
- Security 80 → 83 (+3.3)
- Performance 100 (new)

## Resolved (9)

- ADR not followed: register_tap owns the tap table's high-water mark (decisions/2026-09-02-register-tap-owns-the-table-high-water-mark.md)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (12 lines × 2) (lib/mob/post_mortem/android.ex)
- Duplicated block (6 lines × 2) (lib/mob/listener.ex)
- Duplicated block (6 lines × 2) (lib/mob/post_mortem/android.ex)
- Duplicated block (7 lines × 2) (lib/mob/post_mortem/android.ex)
- Duplicated block (7 lines × 3) (lib/mob/device.ex)
- Hotspot: lib/mob/screen/server.ex (lib/mob/screen/server.ex)

## New (13)

- ADR not followed: `Mob.DNS.resolve/1` replaces a host's entries instead of appending (decisions/2026-09-30-dns-resolve-replaces-host-entries.md)
- Documentation: contradicts the code (guides/architecture.md)
- Duplicated block (29 lines × 2) (lib/mob/theme/dark.ex)
- Duplicated block (6 lines × 2) (ios/MobRootView.swift)
- Duplicated block (6 lines × 3) (ios/MobRootView.swift)
- Duplicated block (6 lines × 3) (ios/MobRootView.swift)
- Duplicated block (7 lines × 2) (lib/mob/screen/server.ex)
- Duplicated block (8 lines × 2) (lib/mob/listener.ex)
- Duplicated block (8 lines × 2) (lib/mob/post_mortem/android.ex)
- Duplicated block (8 lines × 3) (lib/mob/device.ex)
- Hotspot: ios/MobRootView.swift (ios/MobRootView.swift)
- Projects may be oversized for their cohesion
- TooManyFunctions: Device (lib/mob/device.ex)

## Changes since last survey

- 64 commits — 51 feature/other, 13 fixes

## By area

- (root) — 23 commits
- lib/mob — 21 commits
- (repo) — 8 commits
- test/mob — 6 commits
- android/jni — 2 commits
- decisions/2026-09-14-android-libc-decls-through-mob_zig.md — 1 commit
- guides/background_execution.md — 1 commit
- guides/packages.md — 1 commit
- test/native — 1 commit

## Notable commits

- fix: Bump to 0.9.6 — app config on device, plugin apps started, first-render hook after a real render, Android lifecycle + DNS fixes
- fix: Device boot fixes from the mob_deliver hello-world QA run
- fix: Merge branch 'fix/mob-302-owner-restart' into fix/mob-302-306
- fix: Merge branch 'fix/mob-302-owner-restart' into fix/mob-302-306
- fix: Merge branch 'fix/mob-303-postmortem-journal' into fix/mob-302-306
- fix: Merge branch 'fix/mob-303-postmortem-journal' into fix/mob-302-306
- fix: Merge branch 'fix/mob-304-subscriber-parking' into fix/mob-302-306
- fix: Merge branch 'fix/mob-305-native-input-receipts' into fix/mob-302-306
- fix: Merge branch 'fix/mob-305-native-input-receipts' into fix/mob-302-306
- fix: Merge remote-tracking branch 'origin/master' into fix/mob-302-306
- fix: exqlite NIF symlink in every exqlite-* dir; review fixes for a29b433
- fix: fix(MOB-226): route Android libc decls through mob_zig, drop link_libc dep (#172)
- fix: fix(MOB-310): redact screen and component crashes before they reach the log (#176)
- change: ADR: fold-aware layouts for iPhone Duo (MOB-208) (#182)
- change: Address review: exact class cap, stale-safe health, hot-push adoption, keep start/0
- change: Address second review: one-pass class eviction, infallible legacy adoption
- change: Android: Mob.Device :app lifecycle events via mob_send_app_lifecycle
- change: Bump to 0.9.10 — size class in socket assigns, tappable canvas, Icon/NativeView whitelisted, fold-aware layout ADR
- change: Bump to 0.9.2 — docs-only refresh (plugin catalog + push/background guides)
- change: Bump to 0.9.3 (0.9.2 aborted mid-workflow — packages.md rename missed)
- …and 44 more
