Skip to content

failureAlert (after=1) never fires on 2026.6.5 — every errored run stuck at delivery_status 'not-requested' #92058

Description

@chrislro

Summary

On 2026.6.5 (5181e4f), per-job failure alerts configured with failureAlert.after = 1 never fire. Every errored cron run ends with delivery_status: "not-requested" in cron_run_logs, and every job's state shows lastFailureNotificationDeliveryStatus: "not-requested" — no notification is ever requested, let alone delivered.

Environment

  • OpenClaw 2026.6.5 (5181e4f), macOS (darwin), gateway under launchd
  • This install went through the 2026.6.5 legacy-JSON → SQLite cron-store migration (and separately hit the frozen-scheduler state after upgrade, cleared via doctor --fix + restart)

Evidence (one day, 2026-06-10)

7 errored runs across 3 jobs, all of which have failureAlert.after = 1 with a messaging channel target configured:

Job (type) Errors Error text
isolated sweep job (Sonnet pin, claude-cli runtime) 4 execution timed out, last phase: process-spawned, 1× stalled before execution start
weekly report job 2 stalled before execution start
daily report job 1 stalled before execution start

Zero alerts were delivered for any of them. In SQLite:

select status, delivery_status, count(*) from cron_run_logs
where status='error' and ts > (strftime('%s','now')-86400)*1000
group by 1,2;
-- error | not-requested | 6   (plus one earlier row with delivery_status = 'unknown')

All affected jobs' persisted state shows lastFailureNotificationDeliveryStatus: "not-requested".

Expected

An errored run on a job with failureAlert.after = 1 should request and deliver a failure notification to the configured channel after the first consecutive failure.

Notes / possibly related

Repro

  1. On 2026.6.5, configure any cron job with failureAlert.after = 1 and a channel target.
  2. Force the run to error (e.g. a payload that exceeds timeoutSeconds).
  3. Observe: no notification; cron_run_logs.delivery_status = 'not-requested'.

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1High-priority user-facing bug, regression, or broken workflow.clawsweeper-recovery-stuckclawsweeper:linked-pr-openClawSweeper found an open linked pull request for this issue.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.impact:message-lossChannel message delivery can be lost, duplicated, or misrouted.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions