Нужно ли при любом state-изменении повторять все фазы?Нет. Это зависит от того, где состояние прочитано. Изменение чтения в draw может потребовать только перерисовки. Фазы Compose.
Почему индекс — плохой ключ строки при вставке в начало?Он описывает позицию, которая теперь принадлежит другой записи. Стабильный ID связывает состояние с сущностью при перестановках. Ключи lazy-списков.
Всегда ли unstable-параметр запрещает skipping?Нет при strong skipping, включённом по умолчанию с Kotlin 2.0.20. Restartable composable может быть пропущен при той же ссылке на unstable-параметр. Strong skipping.
Исправит ли @Stable обычный изменяемый список?Нет. Аннотация — обещание компилятору о поведении типа, не механизм наблюдения мутаций. Нужны корректная модель snapshot-state или новые значения. Strong skipping.
Почему произвольный объект не подходит как key для rememberSaveable в LazyColumn на Android?Для сохранения состояния ключ должен поддерживаться Bundle. Предпочтите стабильный String или Long; уникальность сама по себе недостаточна. Ключи lazy-списков.
Когда оправдан derivedStateOf для прокрутки?Например, когда индекс первого элемента часто меняется, а флаг показа кнопки меняется лишь при переходе через порог. derivedStateOf.