koala73/worldmonitor · error · Error

[recoverFromPartialFailure] no ramp configured

Error message

[recoverFromPartialFailure] no ramp configured

What it means

Operator guard in the recoverFromPartialFailure internal mutation: loadConfig returned no broadcastRampConfig row, so there is no partial-failure state to recover from — the ramp was never configured on this deployment.

Solutions

  1. Run configureRamp to create the ramp configuration before recovery
  2. Double-check the Convex deployment target — a missing config row usually means wrong environment
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at convex/broadcast/rampRunner.ts:371 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of koala73/worldmonitor@7d06c8633d (2026-08-21). Data as JSON: /api/errors/6080f96fc3098d9a. Report an issue: GitHub.

Appendix: source

Thrown at convex/broadcast/rampRunner.ts:371

export const recoverFromPartialFailure = internalMutation({
  args: {
    recovery: v.union(
      v.literal("manual-finished"),
      v.literal("discard-and-rotate"),
    ),
    reason: v.string(),
    // For recovery==='manual-finished'. Fall back to persisted pending*
    // markers when omitted; sentAt is ALWAYS operator-supplied (no progress
    // marker captures send-completion time).
    broadcastId: v.optional(v.string()),
    segmentId: v.optional(v.string()),
    sentAt: v.optional(v.number()),
    assigned: v.optional(v.number()),
    waveLabel: v.optional(v.string()),
  },
  handler: async (ctx, args) => {
    const row = await loadConfig(ctx);
    if (!row) throw new Error("[recoverFromPartialFailure] no ramp configured");
    if (row.lastRunStatus !== "partial-failure") {
      return {
        ok: true as const,
        noop: true as const,
        currentStatus: row.lastRunStatus,
      };
    }

    const clearPending = {
      pendingRunId: undefined,
      pendingRunStartedAt: undefined,
      pendingWaveLabel: undefined,
      pendingSegmentId: undefined,
      pendingAssigned: undefined,
      pendingExportAt: undefined,
      pendingBroadcastId: undefined,
      pendingBroadcastAt: undefined,
    } as const;

View on GitHub (pinned to 7d06c8633d)