koala73/worldmonitor · error · Error
[resumeRamp] no ramp configured
Error message
[resumeRamp] no ramp configured
What it means
Operator guard in the resumeRamp internal mutation: loadConfig returned no broadcastRampConfig row, so there is no ramp to resume. Same missing-configuration condition as pauseRamp — the deployment has no ramp configured.
Solutions
- Run configureRamp first, then resume
- Verify you are pointing at the intended Convex deployment — the config row exists per environment
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at convex/broadcast/rampRunner.ts:233 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/ef94463eba61cbb8.
Report an issue: GitHub.
Appendix: source
Thrown at convex/broadcast/rampRunner.ts:233
return { ok: true };
},
});
export const pauseRamp = internalMutation({
args: {},
handler: async (ctx) => {
const row = await loadConfig(ctx);
if (!row) throw new Error("[pauseRamp] no ramp configured");
await ctx.db.patch(row._id, { active: false });
return { ok: true, prevActive: row.active };
},
});
export const resumeRamp = internalMutation({
args: {},
handler: async (ctx) => {
const row = await loadConfig(ctx);
if (!row) throw new Error("[resumeRamp] no ramp configured");
if (row.killGateTripped) {
throw new Error(
"[resumeRamp] kill-gate is tripped; clearKillGate first after investigating.",
);
}
await ctx.db.patch(row._id, { active: true });
return { ok: true };
},
});
export const clearKillGate = internalMutation({
args: { reason: v.string() },
handler: async (ctx, { reason }) => {
const row = await loadConfig(ctx);
if (!row) throw new Error("[clearKillGate] no ramp configured");
if (!row.killGateTripped) {
return { ok: true, noop: true };
}View on GitHub (pinned to 7d06c8633d)