bug: reward updates to ml/serving silently swallowed on failure #75

Closed
opened 2026-04-16 15:24:28 +00:00 by alvis · 0 comments
Owner

Problem

recommender.ts:308-318 sends reward to ml/serving with .catch(() => {}). If ml/serving is down or slow, the bandit never learns from that feedback. No retry, no queue, no logging.

Over time this causes model state to diverge from actual user behavior.

Fix

  1. Route rewards through the event bus (signals.tip.reward)
  2. Add a consumer that retries failed ml/serving calls (exponential backoff, max 3 attempts)
  3. Log failed reward deliveries for observability
  4. Consider buffering rewards and batch-sending on ml/serving recovery
## Problem `recommender.ts:308-318` sends reward to ml/serving with `.catch(() => {})`. If ml/serving is down or slow, the bandit never learns from that feedback. No retry, no queue, no logging. Over time this causes model state to diverge from actual user behavior. ## Fix 1. Route rewards through the event bus (`signals.tip.reward`) 2. Add a consumer that retries failed ml/serving calls (exponential backoff, max 3 attempts) 3. Log failed reward deliveries for observability 4. Consider buffering rewards and batch-sending on ml/serving recovery
alvis added this to the M2 — AI tips + multi-source signals milestone 2026-04-16 15:24:28 +00:00
alvis closed this issue 2026-04-17 13:34:45 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: alvis/oO#75