Почему при откате восстанавливается серия постов, а не один пост?
Что проверяют
Понимаете ли вы, что гранулярность отмены задаётся не интерфейсом, а тем, что записано в историю. Вопрос про проектирование: чем оперирует ваш откат, снимком состояния или обратной операцией, и знаете ли вы, что это ваш выбор, а не данность.
Как отвечать
Назвать причину прямо: откат возвращает ровно ту единицу, которую вы сохранили. Кладёте в историю снимок всего списка, вернётся весь список, вместе с чужими изменениями, сделанными после. Кладёте обратную операцию для конкретного поста, вернётся один пост.
Дальше разобрать типовые источники серии.
Оптимистичное обновление кеша: перед мутацией сохраняется предыдущее значение целого запроса, при ошибке кеш возвращается целиком. Единицей отката оказывается страница списка, а не элемент, и это видно как воскрешение сразу нескольких постов.
Склейка действий: история объединяет правки в окне времени, чтобы набор текста не порождал сотню шагов. Окно слишком широкое, и в один шаг попадают правки разных постов.
Инвариант предметной области: посты связаны очередью публикации, нумерацией или тредом, частичный откат оставил бы несогласованное состояние, поэтому единицей сделали группу осознанно.
Затем предложить решение под требование: у каждого изменения свой идентификатор транзакции, в журнал пишутся обратные патчи, откат идёт по этому идентификатору. Нужна отмена одного поста, значит одна правка это одна транзакция. Нужна отмена публикации серии, значит группа помечается общим идентификатором.
Где спотыкаются
Отвечают про пользу для пользователя и целостность, но не называют механизм. Спрашивают причину, а причина в структуре истории изменений.
Хранят снимки всего состояния и считают это бесплатным. Память и трафик растут с длиной истории, а при совместной работе такой откат затирает правки других людей, потому что снимок не знает, что именно менял автор отмены.
Забывают про побочные эффекты. В интерфейсе карточки вернулись, а на сервере публикация уже ушла подписчикам, и локальная история разъехалась с реальностью. Отменять нужно и серверное действие, либо честно показывать, что откат невозможен.