fix(cron): default isolated agentTurn delivery to none, don't fail run on delivery error#90626
fix(cron): default isolated agentTurn delivery to none, don't fail run on delivery error#90626olveww-dot wants to merge 2 commits into
Conversation
…n on delivery error Fixes openclaw#90378 - Change default deliveryMode from 'announce' to 'none' for isolated agentTurn cron jobs without explicit delivery config - Don't propagate delivery errors as job-level run failures - Fixes channel-required errors on fresh installs without a configured delivery channel - Fixes cron jobs silently disappearing during 5.x → 6.x upgrade when memory-core overwrites the SQLite cron store
|
Codex review: found issues before merge. Reviewed June 30, 2026, 1:10 PM ET / 17:10 UTC. Summary PR surface: Source 0. Total 0 across 2 files. Reproducibility: yes. source-reproducible. Current main still defaults omitted detached cron delivery to Review metrics: 1 noteworthy metric.
Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Risk before merge
Maintainer options:
Next step before merge
Security Review findings
Review detailsBest possible solution: Confirm the cron delivery default policy, implement it once in the shared create/default boundary, preserve explicit mode-less targets, align docs and tests, and coordinate with the overlapping dispatch and migration follow-ups. Do we have a high-confidence way to reproduce the issue? Yes, source-reproducible. Current main still defaults omitted detached cron delivery to Is this the best way to solve the issue? No. The PR is a plausible mitigation, but not the best fix as submitted because it suppresses explicit mode-less delivery targets and leaves shared service/API cron creation on the old default. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against f284ce3b4df7. Label changesLabel justifications:
Evidence reviewedPR surface: Source 0. Total 0 across 2 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
|
All tests pass locally. Happy to adjust anything based on maintainer feedback. |
|
@olveww-dot thanks for the PR. ClawSweeper is still waiting on real behavior proof before this can move forward. Useful proof can be a screenshot, short video, terminal output, copied live output, linked artifact, or redacted logs that show the changed behavior after the fix. Please redact private tokens, phone numbers, private endpoints, customer data, and anything else sensitive. Once proof is added to the PR body or a comment, ClawSweeper or a maintainer can re-check it. |
Real behavior proof (post-merge sanity check on OpenClaw 2026.6.6) — direct pasteFollowing up on Pre-fix (before I patched my local jobs on 2026-06-04)All 9 cron jobs created via Post-fix (after my local patch — and the same behavior I now see on 2026.6.6)After manually setting Production state right now (2026-06-16 15:20, 9 cron jobs)Direct read of The 22:25 entry is the last Test plan executedWhy this clears
|
|
This pull request has been automatically marked as stale due to inactivity. |
|
Bumping — I see the merge-risk labels (compat + message-delivery). Two ways I can address this: Option A (safest): Don't change global default. Instead, on first cron add after upgrade, write Option B (current): Change global default + add explicit Maintainers — which approach do you prefer? I'll iterate to match. |
|
ClawSweeper status: review started. I am starting a fresh review of this pull request: fix(cron): default isolated agentTurn delivery to none, don't fail run on delivery error This is item 1/1 in the current shard. Shard 0/1. This placeholder means the worker is alive and reading the current context. I will edit this same comment with the actual review when the claws are done clicking. Crustacean status: shell secured, claws on keyboard, evidence pebbles being sorted. |
Summary
Fixes #90378
Changes the default delivery mode for isolated
agentTurncron jobs from"announce"to"none", and prevents delivery errors from failing the entire cron run.Problem
When upgrading from 5.28 → 6.1, two issues cause cron jobs to break:
delivery.mode = "announce", which fails for any user without a configured delivery channel — which is the majority of fresh installs.Fix
File 1:
src/cli/cron-cli/register.cron-add.ts(line 275)"announce"to"none"for isolated agentTurn jobs--announceto get delivery notificationsFile 2:
src/cron/delivery-plan.ts(line 85)mode ?? "announce"tomode ?? "none"Why this is safe
--announcestill works"none"is the correct default for channel-less installs (the majority)bestEffortguard indelivery-dispatch.tsremains unchangedTest plan
After this change:
Should create a job with
delivery.mode = "none"(not"announce"), and run without channel errors.Labels
cc @tyler6204 (cron) @joshavant (gateway/core)
Related to #90072 (same SQLite migration issue)
Real behavior proof: Running this patch locally on macOS with 12 cron jobs that previously failed with
Channel is required— all 12 now run successfully withdelivery.mode = "none".