The previous approach read $data->getStatus() which already had the NEW status after API Platform deserialization, making wasAlreadyFinal always true when transitioning to a final status. Now we read the original status from UnitOfWork snapshot. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>