Deep-dive into using Perfetto/Systrace to identify non-obvious jank sources in Jetpack Compose apps — specifically RenderThread GPU completion fences, recomposition over-invalidation from unstable lambda captures, and the doFrame/choreographer timing gaps that don't show up in standard profiling but destroy scroll smoothness. Includes concrete patterns: stability annotations vs. remember strategies, lazy layout prefetch tuning, and the RenderNode display list batching tricks that keep 99th-percentile frame times under 16ms.