- PostRow::update(id, columns, failure) / ::save(): the slashed wp_update_post of
internal row writes, refusals as RuntimeException '<failure>: <why>'. Used by
ContentUpdate::restoreRow, PostCloner::updateRow, MediaMetaWriter apply/restore.
- PostGuard::assertNoMissedSchedule(postId, message) replaces the re-read + check in
ContentUpdate::restoreRow, PostCloner and DiviSaver::restore (DiviSaver keeps its
own kses window; M4).
- PostCloner::restore uses Rollback::attempt.
Log messages unchanged.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>