Что означает однонаправленный поток данных?Состояние идёт к отображающему UI, действия — к владельцу логики; обновлённое состояние снова отображается. Это правило взаимодействия, а не название библиотеки. Архитектура Android.
Почему reducer не должен делать сетевой запрос?Чистый переход можно воспроизвести с теми же аргументами и получить тот же результат. Эффект имеет собственные ошибки и срок жизни; его результат приходит отдельным действием.
Как не дать ответу A перезаписать более новый B?Связать результат с ID запроса и проверить, что он всё ещё активен. Сравнение только текста запроса недостаточно, если тот же текст отправлялся повторно.
Противоречит ли UDF архитектуре MVVM?Нет. ViewModel может принимать действия и выдавать неизменяемое состояние. Противопоставление «MVVM всегда много источников, MVI всегда один» слишком грубо. Архитектура Android.
Как подтверждение старого сообщения может скрыть новое?Если операция просто сбрасывает общий флаг. Передавайте ID подтверждаемого сообщения и очищайте только совпадающее актуальное сообщение. Это применение модели явного состояния. UI events.
Достаточно ли SharedFlow(replay = 1) для подтверждения оплаты?Нет. Replay описывает доставку значения, а не долговременность операции и не факт её обработки. Важный результат должен иметь состояние и понятный протокол восстановления. UI events.