After receive-pack applies a push, GitService publishes one push event per ref it moved, carrying ref, before, after and up to 20 commits. Refs live in the object-storage log, outside the database, so the event is published after the push rather than in its transaction: a crash in between loses the event but never invents one. Webhook endpoints can subscribe to push; the notifier ignores it.