Federation activities are now created at write time via try_publish()
instead of relying on async event handlers. Fixes race condition where
multiple EventProcessors could consume post.published events in apps
that couldn't meaningfully process them.
AP delivery (federation.activity_created → inbox POST) stays async.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>