From 9797ae35caa776bfcfd07dc00dfdd901e3db26f7 Mon Sep 17 00:00:00 2001 From: Ayaan Zaidi Date: Sat, 2 May 2026 19:10:53 +0530 Subject: [PATCH] fix(cron): polish wake-now retry PR --- CHANGELOG.md | 2 +- src/cron/service/timer.ts | 6 +----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8fa41138696..9c82a03015d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,7 +33,7 @@ Docs: https://docs.openclaw.ai ### Fixes -- Cron: retry recurring wake-now main-session jobs through temporary heartbeat busy skips before recording success, so queued cron events no longer appear as ok ghost runs while the main lane is still busy. Fixes #75964. +- Cron: retry recurring wake-now main-session jobs through temporary heartbeat busy skips before recording success, so queued cron events no longer appear as ok ghost runs while the main lane is still busy. Fixes #75964. Thanks @kshetrajna12 and @xuruiray. - Control UI: contain the standalone iOS PWA viewport with safe-area-aware document locking, so Add-to-Home-Screen launches cannot scroll past the device bounds. Refs #76072. Thanks @kvncrw. - Agents/restart recovery: match cleaned transcript locks by exact transcript lock paths plus the canonical session fallback, so interrupted main sessions using topic-suffixed transcripts resume after gateway restart. Refs #76052. Thanks @anyech. - Agents/runtime: cache the stable system-prompt prefix and reuse prompt-report tool schema stats during dispatch prep, reducing repeated CPU work before streaming starts. Fixes #75999; supersedes #76061. Thanks @zackchiutw and @STLI69. diff --git a/src/cron/service/timer.ts b/src/cron/service/timer.ts index 5476f05e41d..48ca49f36ea 100644 --- a/src/cron/service/timer.ts +++ b/src/cron/service/timer.ts @@ -1396,11 +1396,7 @@ async function executeMainSessionCronJob( break; } if (heartbeatResult.reason === HEARTBEAT_SKIP_CRON_IN_PROGRESS) { - // A cron-in-progress skip is caused by this job's own active marker, so - // direct wake-now cannot succeed until the cron job returns and clears - // it (#50773). Other retryable busy reasons can clear while this job is - // still active, so let the bounded retry loop observe a real heartbeat - // run before recording recurring jobs as successful (#75964). + // The active cron marker blocks direct wake-now until this job returns. state.deps.requestHeartbeatNow({ reason, agentId: job.agentId,