The download progress indicator passed a deferred lambda
`progress = { progress!! }` reading UpdateState.downloadProgress
(MutableState<Float?>). Material3 invokes the lambda during
layout/draw, outside the composition snapshot that guarded it, so it
re-read the live state. ApkDownloader sets the value to null when the
response has no content length (total <= 0), and it can also flip while
the screen is being torn down, causing the `!!` to throw NPE.
Capture the value into an immutable local before branching so the
lambda closes over a non-null Float instead of re-reading live state.