From f5c2c7e8c2f8a457627ee938963eca50dc4da59a Mon Sep 17 00:00:00 2001 From: alexpaynex <55271826-alexpaynex@users.noreply.replit.com> Date: Thu, 19 Mar 2026 20:38:51 +0000 Subject: [PATCH] Improve handling of failed moderation bypasses for elite accounts Update relay.ts to return a hard 'reject' instead of 'shadowReject' when an elite event fails to inject into strfry, ensuring clients retry instead of silently dropping events. Replit-Commit-Author: Agent Replit-Commit-Session-Id: 418bf6f8-212b-4bb0-a7a5-8231a061da4e Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Event-Id: ddd878c8-77fd-4ad2-852d-2644c94b18da Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/9f85e954-647c-46a5-90a7-396e495a805a/418bf6f8-212b-4bb0-a7a5-8231a061da4e/Q83Uqvu Replit-Helium-Checkpoint-Created: true --- artifacts/api-server/src/routes/relay.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) 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); }