Skip to content

Wire a live, scheduled trigger for evaluateEscalation so an escalation reaches a human automatically #6349

Description

@JSONbored

Problem: #4806's own closing PR (#5806) shipped only the decision core: evaluateEscalation() (in packages/loopover-engine/src/loop-escalation.ts) decides whether a loop needs a human, and buildFleetSummary() (packages/loopover-engine/src/loop-fleet-summary.ts) can summarize a fleet's escalation status on demand. Neither is ever called automatically today -- the only ways to see an escalation decision are the manually-invoked loopover_evaluate_escalation MCP tool, or a human proactively calling buildFleetSummary() themselves. Nothing runs on a schedule, and nothing notifies anyone. #4806's own acceptance criteria ("a simulated escalation reaches a human-reviewable state within a defined target time") is not actually met end-to-end.

Area: Platform / Ops

Proposal: Add a scheduled sweep (reusing this repo's existing cron infrastructure, e.g. the pattern in src/review/sweep-watchdog.ts) that periodically evaluates the active rented-loop fleet's escalation status and pushes a notification (reusing src/services/notify-discord.ts's existing webhook pattern, or src/review/alerts.ts's throttled-alert pattern) when something needs a human.

Deliverables:

  • A scheduled job that periodically calls the fleet's escalation evaluation and fires a real notification (not just a queryable status) when shouldEscalate is true.

Acceptance criteria:

  • A simulated escalation-worthy loop produces a real notification within a defined target time, with no manual polling required.

Boundaries:

  • Not in scope: changing evaluateEscalation's decision logic itself (already shipped, correct) or building a new notification channel (reuse notify-discord.ts / alerts.ts's existing pattern).

Found while researching #4810's real blocking chain (the launch-readiness pilot's own acceptance criteria requires every milestone item to be confirmed working end-to-end, not just individually merged -- this is exactly the kind of gap that check exists to catch). Part of #4778.

Metadata

Metadata

Assignees

No one assigned

    Labels

    gittensor:featureGittensor-scored feature linked to a feature issue — scores a 0.25x multiplier.

    Projects

    Status
    Done

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions