# Changelog

## Score

- CAI 50 → 55 (+4.9)

## Lenses

- Code Health 80 → 80 (-0.0)
- Architecture 92 → 92 (+0.1)
- Maturity 60 → 63 (+2.7)
- Readiness 53 → 53 (+0.0)
- Security 66 → 66 (-0.3)
- Event Sourcing 100 → 100 (+0.0)
- Accessibility 36 → 46 (+9.9)
- Performance 70 → 70 (+0.0)

## Resolved (49)

- Boundary-crossing change coupling: guest_env.rs ↔ machine.rs (crates/smolvm-protocol/src/guest_env.rs)
- Client::list_dir (cognitive 29) (crates/smolvm-s3fs/src/s3.rs)
- Duplicate method signatures with identical names and parameter types. Similar to `prune`, the second signature uses underscore-prefixed parameter names, indicating a likely copy-paste error or redundant definition.
- Duplicate method signatures with identical names and parameter types. The second signature uses an underscore-prefixed parameter name, suggesting a copy-paste error or an overloaded method that is functionally identical but syntactically distinct in the public surface.
- Duplicated block (10 lines × 3) (src/agent/manager.rs)
- Duplicated block (11 lines × 2) (src/cli/machine.rs)
- Duplicated block (11–12 lines × 2) (src/artifact_cache.rs)
- Duplicated block (12–14 lines × 2) (src/cli/machine.rs)
- Duplicated block (13 lines × 2) (crates/smolvm-agent/src/main.rs)
- Duplicated block (13 lines × 3) (crates/smolvm-agent/src/live_resources.rs)
- Duplicated block (14 lines × 2) (crates/smolvm-agent/src/main.rs)
- Duplicated block (14–15 lines × 2) (src/cli/pack_run.rs)
- Duplicated block (16 lines × 2) (crates/smolvm-agent/src/main.rs)
- Duplicated block (19–20 lines × 2) (crates/smolvm-agent/src/main.rs)
- Duplicated block (20 lines × 2) (src/cli/vm_common.rs)
- Duplicated block (23 lines × 2) (src/config.rs)
- Duplicated block (26 lines × 2) (src/cli/pack_run.rs)
- Duplicated block (26–35 lines × 2) (src/cli/pack_run.rs)
- Duplicated block (35–45 lines × 2) (crates/smolvm-agent/src/docker_bridge.rs)
- Duplicated block (5 lines × 2) (src/api/handlers/machines.rs)
- …and 29 more

## New (125)

- BlobCache::list_artifacts (cognitive 20) (crates/smolvm-registry/src/cache.rs)
- Change coupling: main.rs ↔ files.rs (crates/smolvm-agent/src/main.rs)
- ClassTooLong: UpdateCmd (src/cli/machine.rs)
- Client::list_dir_snapshot (cognitive 36) (crates/smolvm-s3fs/src/s3.rs)
- Client::list_dir_snapshot (cyclomatic 20) (crates/smolvm-s3fs/src/s3.rs)
- Duplicated block (10 lines × 2) (src/cli/machine.rs)
- Duplicated block (10 lines × 2) (src/cli/machine.rs)
- Duplicated block (11 lines × 2) (src/api/handlers/machines.rs)
- Duplicated block (11 lines × 2) (src/api/handlers/machines.rs)
- Duplicated block (12 lines × 2) (crates/smolvm-agent/src/network/linux.rs)
- Duplicated block (12 lines × 2) (src/api/cache_base_budget.rs)
- Duplicated block (12–13 lines × 2) (crates/smolvm-agent/src/main.rs)
- Duplicated block (13 lines × 2) (crates/smolvm-pack/src/extract.rs)
- Duplicated block (13–14 lines × 3) (src/cli/pack_run.rs)
- Duplicated block (14 lines × 2) (crates/smolvm-agent/src/relay.rs)
- Duplicated block (15 lines × 2) (crates/smolvm-agent/src/storage.rs)
- Duplicated block (15 lines × 2) (src/cli/vm_common.rs)
- Duplicated block (15–16 lines × 2) (src/cli/pack_run.rs)
- Duplicated block (16 lines × 2) (crates/smolvm-agent/src/main.rs)
- Duplicated block (16 lines × 2) (crates/smolvm-agent/src/main.rs)
- …and 105 more

## Changes since last survey

- 223 commits — 203 feature/other, 20 fixes

## By area

- crates/smolvm-agent — 30 commits
- src/agent — 27 commits
- (root) — 26 commits
- src/api — 19 commits
- src/cli — 19 commits
- (repo) — 14 commits
- lib/linux-aarch64 — 12 commits
- crates/smolvm-pack — 9 commits
- .github/workflows — 7 commits
- nix/smolvm.nix — 7 commits
- crates/smolvm-registry — 6 commits
- crates/smolvm-network — 5 commits
- crates/smolvm-s3fs — 4 commits
- src/process.rs — 4 commits
- crates/smolvm-checkpoint — 3 commits
- docs/local-api — 3 commits
- lib/windows-x86_64 — 3 commits
- src/portable_checkpoint.rs — 3 commits
- src/data — 2 commits
- src/embedded — 2 commits

## Notable commits

- fix: Bump libkrunfw with the Android kernel options and the TSI socket fixes (#1993)
- fix: Fix Docker socket forwarding into workload namespaces (#1998)
- fix: Fix Windows pack extraction for read-only entries (#1784)
- fix: Fix dangling resolver links after systemd-resolved installation (#1889)
- fix: Fix flaky branchpoint lease test (#1918)
- fix: Fix frozen-source classification after continuing branches restart (#1737)
- fix: Fix inherited disk-chain compaction (#1933)
- fix: Merge pull request #1904 from smol-machines/fix/rough-edges-2026-10-20
- fix: Merge pull request #1905 from smol-machines/fix/clone-memory-pressure
- fix: Merge pull request #1910 from smol-machines/fix/pack-cache-cap-small-fs
- fix: Merge pull request #1911 from smol-machines/fix/ext4-test-no-file-tool
- fix: Merge pull request #1912 from smol-machines/fix/agent-not-found-classification
- fix: Merge pull request #1913 from smol-machines/fix/stalled-body-test-margin
- fix: Merge pull request #1914 from smol-machines/fix/control-socket-eintr
- fix: Pin libkrun at the balloon free page hint round fix and rebuild every bundled libkrun, since a restored machine's pause waited out a 2 s hint timeout because its balloon device reissued the round id the guest had already run. (#1845)
- fix: Pin libkrun at the hinted free page zeroing fix, so a machine's later checkpoints, restores and branches skip memory the guest freed (2.4 GB to 0.26 GB in one test). (#1800)
- fix: Pin libkrun at the macOS chmod, AMD CPUID and host-full errno fixes (#1907)
- fix: Pin libkrun at the macOS symlink xattr fix, rebuild every bundled libkrun, and test packed symlinks (#1817)
- fix: Pin libkrun at the vsock muxer guard fix and rebuild every bundled libkrun (#1901)
- fix: Test the DNS allow-list helper against a fixed resolver, not the host's (#1665)
- …and 203 more
