-
-
Notifications
You must be signed in to change notification settings - Fork 80.7k
[Feature]: Cron should distinguish execution success from delivery failure and show warning instead of error #49190
Copy link
Copy link
Open
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:linked-pr-openClawSweeper found an open linked pull request for this issue.ClawSweeper found an open linked pull request for this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper 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 does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.enhancementNew feature or requestNew feature or requestimpact:message-lossChannel message delivery can be lost, duplicated, or misrouted.Channel message delivery can be lost, duplicated, or misrouted.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.
Description
Metadata
Metadata
Assignees
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:linked-pr-openClawSweeper found an open linked pull request for this issue.ClawSweeper found an open linked pull request for this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper 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 does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.enhancementNew feature or requestNew feature or requestimpact:message-lossChannel message delivery can be lost, duplicated, or misrouted.Channel message delivery can be lost, duplicated, or misrouted.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.
Type
Fields
Priority
None yet
Summary
Add a cron run status model that distinguishes successful execution with failed delivery from true execution failure, so Control UI can show
warninginstead oferrorin these cases.Problem to solve
Currently, isolated cron jobs can be marked as
erroreven when the task itself executes successfully and produces a valid summary, if the finalannouncedelivery step fails.Example case:
sessionTarget: "isolated"payload.kind: "agentTurn"delivery.mode: "announce"delivery.channelIn this case, the job completes successfully, but the run is still recorded as
errorbecause delivery fails with:Channel is required (no configured channels detected). Set delivery.channel explicitly or use a main session with a previous channel.This makes Control UI misleading because the task execution succeeded, but the UI shows a failed run.
Proposed solution
Introduce a first-class
warningstate for cron runs, or an equivalent execution/delivery split that surfaces aswarningin UI.Desired behavior:
successwarningerrorSuggested implementation details:
lastDeliveryStatuslastDeliveryErrorlastDeliveredwarninginstead oferrorThis would make cron status more accurate for jobs like audits, reports, health checks, and update checks.
Alternatives considered
Keep current behavior and rely only on
lastDeliveryStatusTreat all delivery failures as execution errors
Only fix this in Control UI without changing the cron status model
Impact
announcedelivery, especially in Control UI monitored workflows such as audits, reports, health checks, and update checksdelivery.channelEvidence/examples
Weekly smart update check completed.
Result
But the run status was still recorded as error because delivery failed with:
Channel is required (no configured channels detected). Set delivery.channel explicitly or use a main session with a previous channel.
Observed run metadata:
status = error
deliveryStatus = unknown
summary was present and valid
OpenClaw already appears to persist delivery-related fields separately, which suggests the data model is close to supporting this distinction.
Additional information
Environment:
2026.3.13This should remain backward-compatible with existing cron jobs and delivery config.
A minimal acceptable fix would be:
warningwhen execution succeeds but delivery failsA fuller fix would be:
warningas a first-class cron run status across storage, API, and UI