ReadonlynetworkReadonlysignerDelivers a Welcome to many recipients, one deliver call each.
This is the shared fanout D-06/D-07 puts on the class whose job is
Welcome delivery — reached by both GroupRuntime (ordinary invite)
and GroupFactory (founding create), so exactly one implementation
exists that cannot drift.
Never throws and never aggregates: each recipient's settled result maps to exactly one WelcomeDeliveryOutcome entry, in the order the recipients were supplied. A Welcome failure is a normal per-recipient outcome, not an error — see refs/marmot/protocol-core/publish-lifecycle.md lines 66-78 ("succeeds or fails independently and does not affect canonical group state").
A fulfilled publish is only classified succeeded when the shared
hasAck helper (src/utils/nostr.ts) reports at least one acknowledging
relay — the same required-ack rule GroupRuntime applies to group
events. A fulfilled publish where no relay acknowledged is classified
failed (CR-02, 10-VERIFICATION.md), so an unacknowledged invitee stays
visible to pendingWelcomes and retryable (FOUND-04).
Owns Nostr/NIP-59 Welcome wrapping and inbox publication.