Messenger ingest saves the Attachment row before attaching the blob, so the after_create_commit broadcast bails on file.attached? and the FE never gets the audio bubble until a refresh (or until Whisper finishes, or never if transcription is disabled or returns blank). Re-fire the message update after attach completes.