What's Changed
🔧 Other Changes
- docs: reconcile published v0.29.1 changelog by @danielmeppiel in #2847
- perf: reuse resolved context optimizer base path by @aryansk in #2587
- perf: reuse dependency names across policy checks by @aryansk in #2588
- test(lifecycle): guard shared diamond instruction survival (#2852) by @danielmeppiel in #2858
- fix(cache): report incomplete cache cleaning (closes #2853) by @danielmeppiel in #2864
- fix(cache): refresh HTTP cache recency on successful hits by @danielmeppiel in #2859
- feat(onboarding): make Homebrew core the primary macOS install path by @danielmeppiel in #2846
- fix(uninstall): retain ownership when package deletion fails by @danielmeppiel in #2860
- fix(cache): retain recently reused Git checkouts during pruning by @danielmeppiel in #2861
- fix(cache): reject negative prune ages (closes #2856) by @danielmeppiel in #2862
- fix(prune): return failure when orphan deletion fails by @danielmeppiel in #2863
- fix(installer): keep Unix installation unprivileged and owner-aware by @danielmeppiel in #2844
- fix(cache): report incomplete prune outcomes by @danielmeppiel in #2865
- fix(installer): verify Unix archive checksums before extraction by @danielmeppiel in #2842
- fix(bootstrap): recover public release lookup after rejected credentials by @danielmeppiel in #2843
- fix(tests): restore Windows cache recency CI coverage by @danielmeppiel in #2869
- fix(ci): run CodeQL on merge-queue commits by @danielmeppiel in #2870
- chore: release v0.30.0 by @danielmeppiel in #2868
- fix(hashing): use explicit SHA-2 policy digests and synthetic fixture IDs by @danielmeppiel in #2872
- fix(tests): prove global uninstall recovery after partial removal by @danielmeppiel in #2873
Full Changelog: v0.29.1...v0.30.0