diff --git a/artifacts/api-server/src/routes/relay.ts b/artifacts/api-server/src/routes/relay.ts index 22f8fdf..3ab2f0e 100644 --- a/artifacts/api-server/src/routes/relay.ts +++ b/artifacts/api-server/src/routes/relay.ts @@ -193,15 +193,17 @@ async function evaluatePolicy( } if (isElite) { - // Elite accounts bypass moderation — inject directly into strfry + // Elite accounts bypass moderation — inject directly into strfry. + // On inject failure, return hard reject so the client knows to retry + // (shadowReject would silently drop the event from the sender's perspective). const rawJson = JSON.stringify(rawEvent); const injectResult = await injectEvent(rawJson); if (!injectResult.ok) { - logger.warn("elite event inject failed — shadowReject as fallback", { + logger.warn("elite event inject failed — returning reject so client can retry", { eventId: eventId.slice(0, 8), error: injectResult.error, }); - return shadowRejectDecision(eventId); + return rejectDecision(eventId, "relay unavailable — please retry"); } return acceptDecision(eventId); }