Changelog
- d4c4ef6 activator: fail to start if global config network blocks are unset (#2990)
- 5bd4e91 activator: fix multicast publisher dz_ip leak on user deletion (#3000)
- 4bcc910 bugfix(serviceability): interface updates and ip net validated (#2993)
- 8cb4cfb chore: bump version to 0.8.9 and update changelog (#3010)
- 9d6af25 chore: update CLAUDE.md (#2999)
- d730e62 controller: reject users with BGP martian DZ IPs (#2992)
- 5cb265e doublezerod: fix heartbeat sender broken after first close (#2989)
- c4dd7c2 e2e: default to offchain allocation with dedicated onchain CI shard (#3003)
- a323f6e e2e: fix corrupted SBF platform-tools cache and key SBF caches on Cargo.lock hash (#2994)
- ef06763 e2e: fix flaky DeviceTelemetry metrics timeout (#2998)
- 014302a e2e: fix panic in SDK serviceability test (#2991)
- 6a981a0 e2e: key rust build cache on Cargo.lock hash to fix stale artifact errors (#2984)
- a855ca7 fix: multicast group update (#2826)
- 5858474 geoprobe: fix flaky TestPinger_MeasureAll_LargeScale on CI (#3005)
- eb4c200 serviceability: add per-device unicast and multicast user limits (#2863)