fix(cron): preserve isolated agent turn payload message#91230
Conversation
|
Codex review: passed. Reviewed June 7, 2026, 10:22 PM ET / 02:22 UTC. Summary PR surface: Source +8, Tests +60. Total +68 across 3 files. Reproducibility: yes. source-level: current main interpolates Review metrics: none identified. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Next step before merge
Security Review detailsBest possible solution: Land this narrow cron fix after normal exact-head CI and automerge gates; keep Do we have a high-confidence way to reproduce the issue? Yes, source-level: current main interpolates Is this the best way to solve the issue? Yes. Resolving agentTurn prompt text from AGENTS.md: found and applied where relevant. Codex review notes: model gpt-5.5, reasoning high; reviewed against 9caff5f873cd. Label changesLabel justifications:
Evidence reviewedPR surface: Source +8, Tests +60. Total +68 across 3 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
|
|
@clawsweeper automerge |
|
🦞✅ Source: What merged:
Automerge notes:
The automerge loop is complete. Automerge progress:
|
a4464da to
4d33607
Compare
Summary: - The PR changes isolated cron agent prompt construction to read agentTurn text from `job.payload.message` and adds regression coverage for malformed dispatch messages plus SQLite-rehydrated manual runs. - PR surface: Source +8, Tests +60. Total +68 across 3 files. - Reproducibility: yes. source-level: current main interpolates `input.message` into the isolated cron prompt, ... release report supplies operator repro evidence; I did not run it locally because this review is read-only. Automerge notes: - PR branch already contained follow-up commit before automerge: fix(cron): preserve isolated agent turn payload message Validation: - ClawSweeper review passed for head 4d33607. - Required merge gates passed before the squash merge. Prepared head SHA: 4d33607 Review: openclaw#91230 (comment) Co-authored-by: 宇宙熊Yzx <53250620+849261680@users.noreply.github.com> Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com> Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com> Approved-by: takhoffman Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
Summary
agentTurnpayload message instead of the duplicated dispatchmessagefield.[object Object]before reaching the isolated agent prompt.agentTurnjobs pass the configured payload message into isolated manual runs.Fixes #91228
Verification
node scripts/run-vitest.mjs src/cron/isolated-agent/run.payload-fallbacks.test.tsnode scripts/run-vitest.mjs src/cron/store.test.ts src/cron/service/ops.regression.test.ts src/cron/isolated-agent/run*.test.tsnode_modules/.bin/oxfmt --check src/cron/isolated-agent/run.ts src/cron/isolated-agent/run.payload-fallbacks.test.ts src/cron/service/ops.regression.test.tsgit diff --check -- src/cron/isolated-agent/run.ts src/cron/isolated-agent/run.payload-fallbacks.test.ts src/cron/service/ops.regression.test.ts.agents/skills/autoreview/scripts/autoreview --mode commit --commit HEAD-> clean, no accepted/actionable findingsReal behavior proof
Behavior addressed: Isolated
agentTurncron runs now build the prompt from the persistedjob.payload.messagestring, so a malformed duplicated dispatch message cannot become[object Object]in the LLM prompt.Real environment tested: Local macOS checkout at
a4464dacc4using a temporaryOPENCLAW_STATE_DIR, the real OpenClaw SQLite cron store, and the real cron servicecron.runboundary.Exact steps or command run after this patch:
OPENCLAW_STATE_DIR=/tmp/openclaw-91228-proof.<redacted>/state node_modules/.bin/tsx <temporary proof script>Evidence after fix: Terminal output from the real OpenClaw cron store/service path:
{ "openclawHead": "a4464dacc4", "stateDir": "/tmp/openclaw-91228-proof.<redacted>/state", "persistedPayloadType": "string", "persistedPayloadMessage": "SERIALIZATION_PROBE: reply exactly with the marker token you received and nothing else.", "runResult": { "ok": true, "ran": true }, "observedDispatchType": "string", "observedDispatchMessage": "SERIALIZATION_PROBE: reply exactly with the marker token you received and nothing else.", "containsObjectObject": false }Observed result after fix: A real SQLite-backed cron job persisted
payload.messageas a string,cron.runreturned{ ok: true, ran: true }, and the isolated runner dispatch boundary observed the exactSERIALIZATION_PROBEstring withcontainsObjectObject: false.What was not tested: I did not run a live provider-backed cron job against Anthropic/Claude; this patch is covered at the scheduler, SQLite rehydration, and isolated runner prompt-construction boundaries.